Software Engineering Is Not Over; It's Only Just Beginning
What’s In a Name?
My grandfather was a plumber. Correction: my grandfather was the best damn plumber in his North Jersey suburb of New York City, and everyone in town knew it. He had ten kids, six of them boys, and as my father and his five brothers grew up they all, at one point or another, ended up being employed by my grandfather as plumbers. Most of my uncles eventually moved on to other professions. One of my uncles still runs Ballanco Plumbing. Then there is my father, who left the plumbing business but not the plumbing industry. He would go on to university and get a degree in Mechanical Engineering, eventually specializing in Plumbing Engineering and becoming a world authority in the subject (more on that a bit later).
Growing up I had always wanted to be a scientist. When I was 12 years old or thereabouts, I asked my father about the difference between scientists and engineers. He told me that, “scientists discover, while engineers build.” When I entered university as a Chemistry major, the same university my father attended for his Engineering degree, I remember he told me that, “Any fool can build a bridge. It takes an Engineer to build it on time, under budget, using the least amount of materials possible.” Eventually, I would return to the same university, this time as a graduate student, and received my Ph.D. in Evolutionary Dynamics. By the time I graduated, though, I had already been simultaneously employed for a number of years at Apple as a “Software Engineer”.
If I’m honest, that title has always bothered me a little bit. I graduated with peers who went on to become Chemical or Mechanical or Electrical or Civil Engineers. After they graduated they had to take a six hour exam1, then gain at least four years of professional experience, then take an eight hour exam2 before they could call themselves an “Engineer”. All I had to do was pass an interview demonstrating that I knew how to code. For this reason, I’ve never really known how to respond when people ask me what it is that I do for work. Usually I’ll stammer something about how I’m a coder, but my title is “Software Engineer”. In my own mind, I always thought of myself as a “hacker”, but of course as a professional title that carries unwarranted baggage.
Over the years my title has changed from “Software Engineer” to “Senior Software Engineer” to “Staff Software Engineer” and eventually “Senior Staff Software Engineer”, but always that term, “Engineer”, was attached, and always it felt unearned. This wasn’t imposter syndrome, but rather an unease with the relative lack of rigor that the “Software Engineering” world practiced as compared to all the other kinds of “Engineer”, and a concern that someday that might actually matter.
Software Craftsmanship
Growing up with a father who is a Master Plumber3, I of course learned a thing or two about plumbing. I was still in Middle School when I learned how to solder a copper pipe, and how to make it look good. I helped replace water heaters, and learned how to seat a toilet on a wax ring. (Those last two skills came in especially handy during the COVID pandemic lock-downs when I had to do both on my own.) I did all of this with my father not out of necessity, but rather out of his earnest desire to instill in me the skills his father instilled in him. In his job as a Plumbing Engineer, the one thing he was pretty much never asked to do, ironically enough, was plumbing.
-
The Fundamentals of Engineering exam ↩
-
The Principles and Practice of Engineering exam ↩
-
That’s his actual title, not a subjective note of praise. Plumbers, like many of the other skilled trades, still maintain the guild system of Apprentice, Journeyman, and Master ranks. ↩