My Development Philosophy

Since I'm writing this, I though I should start by talking about my approach to software development since it is the basis for much of the content of the site and certainly effected the choice of topics for this section. This is what I call my "Development Philosophy"

I only have a few basic tennents about software development...

Keep it simple

Anybody can build complex software. Creating simple software that can accomplish the same task is much more difficult. In the end though, the simpler it is, the easier it is to test, which makes it easier to maintain, and easier to extend.

Quality is the Only Job

Ford had the slogan "Quality is Job 1". However, I believe that with software, quality is the only job. At it's core software is boolean - 1's or 0's. A function works correctly, or it does not. Our job as developers is to ensure that as much as possible our software works correctly. Simplicity helps.

Just Enough Design

Although there is no specific formula for how much is enough, you get to know it over time. I don't like spending a lot of time on documents things which do not push the software forward, and many rigorous development processes produce a lot of impressive reports, but little functional software. Read the section on Software Design for some ideas on what really works.

Use the Right Tools

I'm a huge believer in using the right tools for the job, as they can save you a mountain of time and effort. While there are notepad and vi die hards around, no matter how great a developer you are, you would be better if you learned to leverage the power of an Integrated Development Environment (IDE)

Here's a list of the minimum tools every developer should have

  • IDE with intellisense or similar
  • Unit Testing Framework
  • Version Control System
  • Code Generation Tools

These basic items (all of which can be found for free) can greatly improve the quality of your code, and improve your productivity.

That about covers it - everything else flows from these ideas.

On to Object Thoughts...