Another excuse to stay up until 3 AM.

Smarts vs Skills in the Discipline of Software Development

In a previous life, some of the most senior developers in the company I was working at felt they were smart. They wrote code that worked, and it made them good money. In fact, they felt software developers who couldn’t understand their code weren’t fit to call themselves such, and certainly shouldn’t be working at the same company. What the code actually looked like or how well it was designed made little difference. This left me feeling resentful and frustrated, but not in a good position to argue.

Now, with more experience and authority, I feel like I’m in a place where I can better articulate why that’s not enough. There are plenty of smart people out there who can write clever code that works. But it takes skill to craft code- code that is clean, flexible, easy to maintain and easy to understand. Smart can only take you so far.

Using carpentry as an analogy, I could, with smarts but no real skill, put together a wooden stool to stand on to reach the higher shelves in my kitchen. I could hardly use the word “craft” in this case, since I have no experience with the discipline of carpentry and the skills that are necessary for its mastery. I’m reasonably confident that the stool would last for at least one standing-on, maybe even a few. Maybe it lasts a whole month. Maybe, through trial and error, I build myself a chair and a table. And perhaps for my own use, as rickety as they are, these things that I’ve built are good enough. But they’re not good enough for me to have guests use, much less sell to customers.

Likewise, software development is a discipline that requires the command of skills. This discipline allows us to craft software, not merely slap it together like a few blocks of wood barely held in place by loose nails. And in the end, it’s the mastery of this discipline that truly determines who is fit to be called a software developer.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">