With all Magento development I try and split my code into modules. This allows for reusable code that is very easy to understand. It makes future code changes easier and in the long term saves on development time.
I always use best practices for Magento module development. The main benefits of using best practices is that the code is kept in a state which is updateable. This is very important in the long term especially for security.
One way to keep the code updateable and to avoid conflicts with other modules is to use Observers to inject logic changes into certain parts of the code. This is a way to customise Magento in a way which should break other modules or future updates.
Portability of code is very import with Magento module development. It would be very inefficient to recreate every modules each time I do a Magento build and that's why I make sure modules are portable and can be used in multiple projects.
Coding standards are a very important part of development. For one it makes code much easier to read and more easily maintainable.
As well as full Magento site builds I work on standalone modules. I would build a module for a default Magento site build and you would install it yourself.