Discussions around Software engineering as a profession is often framed as objective, focused around absolute truths, rules, and hard guidelines. Don’t repeat yourself, You ain’t gonna need it, the SOLID principles. All of these are discussed as absolute truths, and when a dissenting opinion is voiced people rush in to either disagree or point out how actually the claimed dissenting opinion is some sort of fringe case is only relevant to absolute experts. The vast majority of mortal programmers should still adhere strictly to the rule.
I find that claim fascinating. For more than half of my life I’ve been programming. I’ve written code for microprocessors, I’ve written code for Linux, Win32, and Android, Code for the web, and code for the desktop. For the past 5 I’ve even written code professionally, yet the discussion of my peers still seem trapped at this beginner level and that all must follow the one true style of clean code or whatever you choose to call it.
I want to share with you one of my favourite live performances of all time. The Tallest Man On Earth playing The Dreamer with Gordi. I happen to love the specific song, but you don’t have to. The performance on the other hand I believe to be undeniably great. The love of performing is radiating from both. Gordi, with her rocking around and broad brazen smiles, looks love being a part of the performance. While TMOE himself seems almost lost in the music at time, only surfacing to appreciate his co-performer and her performance of a song that is still undeniably his style. I find the same unadulterated joy in software engineering.
To me software development shares a great with of characteristics with music. I think it’s clear that both performers in the video are absolute experts at their craft. The song, although still clearly The Dreamer, barely resembles the original from 2010. Yet it would be foolish to suggest the performance would be better if he only played the song correctly. Yet that’s exactly what we do in software engineering. Not only do we not discuss individual style, we actively try to undermine them. Instead of discussing how different approaches to the same problems can create beautiful unique and useful solutions, we argue about which style therefore must be superior, and in which cases that must be true. We eschew the complex beauty of the substrate to establish artificial truisms.
That’s not to say there is nothing to do science about, or that clean code isn’t worth learning. If you just slam the guitar it’s not going to make music, and just hammering in code isn’t going to produce something beautiful. As a musicians try to evoke some emotion or tonality, so are we trying to solve a problem. We must know how to direct our style towards that problem. Knowing the rules guides us to where we need to break them, and so they are worth learning. Only by mastering The Dreamer from 2010 can TMOE and Gordi perform this unique rendition.
What does this mean for engineering? I believe it teaches humility. All too often I see people object to surface level stylistic differences in software. They’ll look at your work and say something like “You didn’t use x, everybody knows x is best practice”. To me that’s like someone in the audience claiming the above performance isn’t The Dreamer, because Gordi wasn’t in that song. Instead we must engage with the work as a performance, we must observe it in its totality and appreciate it for what it is. We must be humble in our appreciation for what others produce, and curious in understanding how they produce it.
I also think it has a lot of teach about collaboration. The song is clearly The Dreamer by TMOE. It’s clearly a TMOE performance with a guest artist. Yet Gordi seems to enjoy performing in his style. The song hasn’t been changed to fit her style, it’s not a mashup. Although they appear as equals, they have agreed to a style, and neither artist seem annoyed by that fact.
I believe we should do the same in engineering. When faced with a style that differs from our own, we shouldn’t scoff at it. We should instead curiously appreciate what it means for this work, and how we can perform alongside it. When somebody maintains something, when a work is by somebody, their style should be the dominant one and we should defer to them for guidance. Conversely it also asks something of us on the other side cooperative relation. We must accept that collaborators will have their own style and that although they may try and approach ours, they won’t be us. They’ll apply their interpretation of our style, and we must accept that. We must allow them to bring a little of themselves in as well. Finally, we must observe what our position is. Sometimes we will be The Tallest Man On Earth, performing with a guest, and sometimes we will be the guest. It’s paramount that we discuss and agree who is headlining, and who is supporting. Not because there’s any shame in being the guest, but because two headliners don’t make a cohesive show.