Friday, July 18, 2008

Software Development Values

Software is amazing.  People have studied software development since the dawn of the computing age, and yet we still continue to struggle to get it exactly right.  There is even controversy over "when is it right?".  This is one of the things that makes software development so much fun for me.  There is no prescribed best way to do almost anything, so you've gotta rely on your gut feeling on so much... well, that and the hard knocks you endure along the way. 

How can we know that we're making the right decisions and building the best software that we can?  While reading over the Agile Manifesto tonight it became a little more clear to me.  If we define our values before making any decisions, we can allow those values to guide us in any decision we make; and in the end we're going to be better off for it.  Here is the manifesto, in all it's glory:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.

To take that a step further, here are some things that I as a developer value:

  1. Readability and maintainability over development speed.
  2. Object oriented principles over procedural coding styles.
  3. Providing business value over implementing new technologies.
  4. Testable code over faster development.
  5. Thinking/Designing over writing code.
  6. Communicating over assuming.
  7. Clarity over cleverness.
  8. Development speed over code performance.

1 comments:

Jon Kruger said...

#8 is exactly why we use ORMs and why DBAs don't like them!

When people disagree with #8, I always say that since I'll have the code done faster, I'll have time to go back and optimize it if I need to, and it most cases I won't have to.