An Updated Joel Test for 2017

It’s been over 16 1/2 years since the Joel Test was published. Feel free to take some time to read up on the test if you haven’t already, it’s a great read.

The software development landscape has changed a lot in that time, but time-honored principles remain so. Here’s my take on an updated Joel Test for 2017, based on my career experience and how we build software at VidiGuard.

1. Is your source control effective for the disconnected programmer?
2. Can you make a build in one step?
3. Do you build, test, and deploy (somewhere) on every commit?
4. Do you have a bug database?
5. Do you fix bugs before writing new code?
6. Does your source have a stable trunk from which releases can be cut at any time?
7. Can all of a product's features be verified in one step?
8. Do programmers have access to a door that can be closed for uninterrupted work?
9. Do programmers have the freedom to choose the best tools for the job?
10. Is testing the team's responsibility?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

For those who prefer it in almost-unified diff form:

-1. Do you use source control?
+1. Is your source control effective for the disconnected programmer?
2. Can you make a build in one step?
-3. Do you make daily builds?
+3. Do you build, test, and deploy (somewhere) on every commit?
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?
+6. Does your source have a stable trunk from which releases can be cut at any time?
-7. Do you have a spec?
+7. Can all of a product's features be verified in one step?
-8. Do programmers have quiet working conditions?
+8. Do programmers have access to a door that can be closed for uninterrupted work?
-9. Do you use the best tools money can buy?
+9. Do programmers have the freedom to choose the best tools for the job?
-10. Do you have testers?
+10. Is testing the team's responsibility?
11. Do new candidates write code during their interview?
12. Do you do hallway usability testing?

Without a doubt, some of my changes draw from Agile methodologies (a good idea, but a terrible religion). The unaltered items from the original Joel Test still stand, or could use such little modification that I didn’t want to touch them. Discussion of the rest follows. Remember: The internet has made defensive writers of us all.

1. Is your source control effective for the disconnected programmer?

There’s a popular programming story, paraphrased badly, “If you ask 5 developers for input on a 5-line diff, you’ll get 5 opinions. If you ask 5 developers for input on a 500-line diff, you’ll get 5 OK’s.”

There’s significant value in small, incremental commits, for both the developer and the people reviewing the developer’s code. There is limited place for a developer tool that can’t at least commit locally on an airplane in 2017.

3. Do you build, test, and deploy (somewhere) on every commit?

Continous Integration is the goal here. Deploying to production with every commit may be overkill or not fit a business’s requirements, but building and testing against every commit can and should be done without team member intervention.

6. Does your source have a stable trunk from which releases can be cut at any time?

Following on the heals of #3, make your software always-deployable or always-shippable. Releases become a business decision, not a developer schedule to strive to follow and cut corners on.

7. Can all of a product’s features be verified in one step?

Better than a spec is a product that can be verified and tested for regression at any time. There’s a huge value in a comprehensive test suite, regardless of whether it’s written before or after the code. This also fits with #3.

8. Do programmers have access to a door that can be closed for uninterrupted work?

In an ideal world, open offices would be banished with the likes of Six Sigma. In the real world, not every company can afford that, and some still believe the cacophony of tens or hundreds working in an open air space is a boon to productivity. Interruptions are a killer to developer progress, and getting back into focus after an interruption can take real time. If a company can’t afford or find offices for programmers, at the very least they need to offer quiet areas with doors than can be closed for significant stretches of time without no interruptions allowed.

9. Do programmers have the freedom to choose the best tools for the job?

Money doesn’t buy the best tools in 2017. Additionally, giving the team the ability to define its tooling requirements will improve development pace, feeling of ownership, and maybe even quality.

10. Is testing the team’s responsibility?

At first glance, this items appears to suggesting throwing out anyone with QA in their job title. That’s far from the truth. Quality should be the responsibility of the entire team, whether it’s exclusively developers or developers, QA engineers/testers, and DevOps engineers. Throwing software over the wall for testing is fraught with peril. Don’t do it!

Does VidiGuard score 12/12?

Nope. But, it’s important to have goals. I would say right now we are a solid 11. We have hardware requirements in our build-test-deploy loop that make the updated item #3 more difficult than an exclusively-software product. But we’ll get there.


An Updated Joel Test for 2017 was originally published in Austin Startups on Medium, where people are continuing the conversation by highlighting and responding to this story.

#URLinkedUp AustinStartup https://austinstartups.com/an-updated-joel-test-for-2017-31560b109bcb?source=rss—-9504c035b990—4

#Austin Check out URLinkedUp > http://www.urlinkedup.com

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s