Coding Horror

programming and human factors

What is "Modern Software Development"?

Joel Spolsky came up with a twelve-item checklist in August, 2000 that provides a rough measure of-- in his words-- "how good a software team is":

  1. Do you use source control?
  2. Can you make a build in one step?
  3. Do you make daily builds?
  4. Do you have a bug database?
  5. Do you fix bugs before writing new code?
  6. Do you have an up-to-date schedule?
  7. Do you have a spec?

Steve McConnell enumerated Software's Ten Essentials in 1997, ten things that every software project should have:

  1. A product specification
  2. A detailed user interface prototype
  3. A realistic schedule
  4. Explicit priorities
  5. Active risk management
  6. A quality assurance plan
  7. Detailed activity lists
  8. Software configuration management
  9. Software architecture
  10. An integration plan

These are great lists. But Spolsky's list is 6 years old; McConnell's is almost 10 years old! Does your software project meet all these criteria?

The lists are still highly relevant and definitely worth revisiting today. But I wonder if the field of software development has advanced far enough that we can take any of the items on this list for granted. I also wonder if any new practices have emerged in the last 6 years that aren't accounted for on either list.

So here's my question to you: what core set of practices constitutes modern software development in 2006?

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror