Software carpentry
A couple of weeks ago, I listened to an episode of the Corecursive podcast featuring Greg Wilson. I remember coming across some of his books on software architecture, years ago. The episode covers a lot of topics related to the field of software development and teaching. It’s well worth a listen.
This podcast is where I first heard of The Carpentries. It’s a non-profit organization and community, focused on teaching foundational programming and data science skills to researchers and other professionals who are not primarily trained in computer science.
The idea of “carpentry” as a set of practical skills, that anyone can learn and apply effectively, it really speaks to me. Specifically, it’s the contrast between carpentry and engineering that I find so eloquent. On the podcast, Greg says:
We called it software carpentry because it isn’t software engineering. Most of us aren’t designing a hydroelectric dam, but we should all know how to do a few home repairs because it puts the power back in our hands. And teaching people how to design software means that they can finish that and then go back to whatever the original problem was.
I think this resonates with me because the title of “software engineer” never did. I don’t use it, for a few reasons. First, I just can’t do it, legally speaking. Did you know that the title of engineer is protected in Canada? I didn’t graduate from a proper engineering program, nor am I a licensed member of any engineering organization. But secondly, if I’m being honest, I’m not sure that what I do daily can be described as engineering.
Don’t get me wrong, I’m really fascinated by software engineering as a discipline. And on paper, I guess there is a lot of overlap in the job descriptions. After all, I design, build and maintain software. So, what do I call myself? Developer? Designer? Programmer? Coder? That’s the idea, I think I have a problem with titles.
Developer is pretty much a safe space for overthinkers like me. It’s vague, but it sounds like something. It slips by easily in a casual conversation. For the past 5 years or so, I’ve been using “software developer” or “full-stack developer”, depending on the context.
I don’t think I’ll ever be completely comfortable with the “full-stack” qualifier. Some people aren’t, with good reasons. But I’ve stopped caring so much. Or more accurately, I’ve changed how I think about it. More than anything else now, I’m using this term as a measure of interest. I’m having a lot of fun bouncing around in the context of a team. I’m lucky to get to help out my colleagues on very specific issues, and to work on my weak spots along the way. This is why I show up to work every day, figuratively.
Calling myself a web designer kinda feels like a lie, because I don’t have a strong background in design. The funny thing is that actual graphic designers and others are occasionally referring to me as a web designer. This is encouraging.
Programmer is still not very specific, but it’s probably the most accurate. Indeed, most of my work day is not spent writing lines of code, but that’s usually why I’m getting hired. I’ve recently updated my home page to use this term.
Coder just... meh.
So, carpenter then? Yeah, why not. As cliché as it is for a knowledge worker to try to pass as an artisan, I’d be lying if I said that I don’t identify with the vocabulary. The craft, the tools, the sawhorses and the shims. The glue that holds everything together. (And a lot of duct tape.)