12 (+1) Steps to Better Code

Posted on Categories Business, Startup, Technology, Uncategorized

Joel Spolsky is a respected software developer turned business owner runs Fog Creek software – a software development shop where his goal is to:

“Build the kind of software company where we would want to work, one in which programmers and software developers are the stars and everything else serves only to make them productive and happy. The theory, which has proven itself over and over again, is that this kind of thinking would allow us to attract the super-talented software developers who would do great things and make us successful”

Taking the best practices from a small shop like this is great for a startup because you can implement these relatively easily, whereas the large companies (google, etc) have a lot more monetary resources (free breakfast, lunch, dinner and apartments) which can not be replicated.

Joel wrote a post on 12 things you need within your development shop to ensure that you have:

1) Better code

2) A better place for developers to work and,

3) Ultimately happier customers

Below is a summary of the 12 items:
The Joel Test

  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?
  8. Do programmers have quiet working conditions?
  9. Do you use the best tools money can buy?
  10. Do you have testers?
  11. Do new candidates write code during their interview?
  12. Do you do hallway usability testing?


Here is the full article explaining the details of each step

I wanted to add a 13th step – which is to allow for creative time. I have said before, that developers are like artists and they need to be creative. Therefore  it is very important for developers to be inspired and do new things. Giving them time to explore these in the work environment does 3 things:

1) Fosters new ideas and approaches to problems

2) Work with other team members you would not normally work with (team bonding)

3) Come up with interesting ideas that get incorporated into the main product line (that otherwise would not be thought of because of the constant day to day tasks)


I have incorporated this into Viafoura and I have been very pleased with the results so far!