Do you know how capable your technology team is? How do you assess its capabilities? What do you look for?

When I was asked these questions recently, my first thought was “The Joel Test of course!”. After all, it’s short, easy to understand, and it quickly gets to the root of the matter: can your team reliably ship product?

Well, The Joel Test is also 12 years old. While the principles behind his questions remain relevant, some of the specifics have evolved. The baseline for how a technology team should operate has risen, as has the state of the art.

And so, to answer the question of how to assess a technology team today, I’ve put together a few thoughts below.

So You Say You Can Ship

A technology team is only as good as its ongoing ability to ship product. What does that entail?

First, let’s talk about building software. Probably the fastest way to understand how good the team is at this is to look at their engineering practices. There are, of course, the basics:

Once the basics are covered, the next thing to consider is how stringent their development machinery is. In other words, are there steps embedded into the build system / delivery pipeline to keep the team honest and the code base clean? Some questions to ask:

But wait, there’s more. Note that I qualified “ability to ship” with “ongoing”. This was intentional because the team has to keep the cost of change low and constant. In other words, shipping quickly by piling on technical debt without ever addressing it is not a sustainable strategy.

Therefore, you have to look at the development culture for signs of good stewardship of the code base:

Related to this is the culture the team has around defects. In particular:

Finally, we need to consider how the software is actually being delivered to customers.

Please note that the questions above are not comprehensive. I’m certain that there are other very important things to look for. In fact, if you have other ideas, I’d love to hear them.

High Technology

Being able to consistently ship great product is crucial to every technology team. However, for some it may not be enough. Depending on the business they’re in, some technology teams may also need deep expertise in a particular area of what I’d call “high technology”.

By “high technology” I mean the type of skill not typically found in your garden variety devs (even great ones). This includes things like expert knowledge in semantics, machine learning, NLP, signal processing, and so on. Some might even put skills needed for advanced performance optimizations or extreme scalability into the same bucket.

Again, though not every team needs such expertise, some do. And for those teams, this additional capability is certainly worth highlighting.

 

References

http://www.joelonsoftware.com/articles/fog0000000043.html
http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html
http://www.slideshare.net/noahsussman/continuous-improvement-16013422

You may also like:

Did you love / hate / were unmoved by this post?
Then show your support / disgust / indifference by following me on Twitter!

Comments are closed.