Sunday, March 25, 2007

Ten Things You Should Know As A Developer

Andres Taylor gives us his top ten things he's learned about software development.  The list is insightful and definitely worth reading.  Here are my two favorites and my interpretation of them:

  • It all comes down to working software - People pay you for what software does, not how it does it.  No one is paying you to be clever.  They're paying you to get some job accomplished.  Thus, only be clever when you need to be.  This hearkens back to previous discussions on the idea of tradeoffs in software.

  • Your colleagues are your best teachers - In my words, it is better to be a little fish in a big pond than a big fish in a little pond.  One of the things I really enjoy about working at Microsoft is all the smart people I get to work with.  There's always someone who knows more than me on any subject.  We have a culture where people are willing to teach too so there's always something to learn.


  1. I agree, those are two best ones for sure. Some of the others I flat out disagree with, especially number 5. In my experience I've seen at least an order of magnitude more schedule slips caused by not doing sufficient investigation and design up front than by delaying the start of coding to iterate on the design some more. Andrés seems to equate more design time to a more complicated design, the opposite has usually been true in projects that I've been involved with!
    As Rob Short put it in his recent Channel9 video, you don't start building a house by getting somebody to nail together a bunch of 2x4s while the architect is still working on the plans, yet we seem to do this all the time in software.

  2. Good point.  If you look at Andres' bio you'll see that he's heavily involved in the agile software movement.  While Agile has a lot of good ideas, some can be taken too far.  Not enough planning is one of those that's often taken farther than it should be.