Software Generalists vs. Specialists and the Instant Reference

I’ve been working on a number of software projects, the most notable of which is podiobooks 2.0. is a very popular site for downloading free audiobooks.

Many of the books offered first for free on have gone on to become NYT bestsellers.

We’re building this project using the Python web development framework “Django“.

But like any modern web project, the “main” development is only part of the story.

There’s also Cascading Style Sheets version 3 (CSS3), Hypertext Markup Language version 5 (HTML5), JavaScript, the jQuery JavaScript framework, SQL, the Apache and NGINX webservers, unix scripts to start and stop things, and the Hudson continuous integration server to help us test and release code with some degree of quality.  Not to mention doing most of that across multiple browsers targeting multiple end-user devices (Desktops, iPads, iPhones, etc.)

Building a modern web application is a lot like building a house – it’s not just a bunch of wood nailed together.  There’s drywall, paint, windows, a foundation, a roof, plumbing, electrical, and a whole lot more.

In construction, it’s often broken out into speciality trades, who work on a given house only long enough to get the electrical in, and then move on to the next project.

Because applications need constant tweaking, and because the standards for building them are evolving at an incredible rate (the 2×4 for home construction hasn’t materially changed for 30 years – I haven’t built a web app will the same components for more than a year in a row).

So it means that if you are an experienced web developer, your brain has to be split across a whole lot of different “trades”, each with their own nuances.  And, just like a “general contractor” isn’t going to be as good an electrician as a guy who is a Master Electrician, your “general web developer” isn’t going to be as good at any one of the parts of web development.

So when someone asks me to write out a piece of code for them, it’s unlikely I’ll be able to do so without the handy reference of Google to look up the fine details.

On the other hand, I have more than enough experience to know what I need to look up.

It’s interesting to me that the more you do work in the real world, the broader your world becomes, and the harder it is to do just one thing.

It’s also interesting that the power of the instant reference makes it possible to learn new things and actually use them, because you don’t have to rely on being able to hold 100 different bits in pieces in your mind, or to thumb through a set of tomes for each new tool.

That’s not to say there’s no room for specialists – quite the opposite.  At some point, there’s a whole different personality needed to do certain tasks.  Database work that has no UI tends to appeal to different people than art-intensive layout and design.

So on big teams, I definitely rely on the guidance and work of specialists, but someone (usually me) has to be able to hold the big picture in their head, and make sense of it all…otherwise you end up with a bunch of excellent pieces that don’t work together at all.

I think we are starting to get to the point where companies hire generalists, and then contract out specialties.  Which is much the same way that the house construction industry works.

The difference in my mind though is not that this has happened through the emergence of lasting standards (although that has helped a bit), but through the power of the instant reference…

Comments are closed.