Programmers should stop celebrating competence
Disclaimer: This blog post will be a bit different than my usual posts. Mind you, I’m just writing as I go, and most times I have my craft in mind, which is Software Testing and Test Engineering.
I recently saw a good colleague of mine mentioning a post made by some human being and the post went around the lines:
it’s kind’of bad if we programmers “as a community” incentivize or celebrate the living instances of the meme of “I have no idea what I’m doing”, we’re just copying and pasting bits of information here and there and assume that as our identity. Folks need to go deeper, world needs great programmers, hurr-durr, look at me sneaky virtue-signaling, oh captain my captain.
Or the charismatic version:
“We need now more than ever to pursue celebration of competence, the aspiration to improve, and all the greatness of a career, each of us has tremendous capacity to become good at what we do if only we’re really serious about our career… The world needs great programmers now!”.
To be very frank I don’t think I understand the post. But I’ve been thinking about it for a while. There’s an underlying oddity to it all. It all sounds like a trap.
I believe this uneasiness comes from the fact that I do spend a lot of time every day searching the web and I search for answers that likely a lot of great programmers already know. Especially on StackOverflow and DuckDuckGo, hunting for stuff like:
- How do we do this really simple embarrassing thing in this mainstream programming language again?
- How does something supposedly easy really work?
- How do I handle this cryptic error message?
- How did a person from 2003 solve the cryptic error message?
- How does some obscure library or system detail work?
- Sorry, how do we do this really simple embarrassing thing in this mainstream programming language again?
- What are the newest “kids in the block” to solve this specific problem?
- Yeah… that simple thing on the programming language, can you kindly remind…
Personally, I don’t really mind if an engineer has to “dig around trash like a racoon” every day to find an answer to their problems, and if, and when, the planets align, finds an answer that they can copy paste and edit a bit into a solution they are trying, because I do it myself all the time, and through time I’ve become faster at it.
I would think of this as an ever-expanding skill: how to ask / search / forage for meaningful information to a problem. I wouldn’t necessarily oversimplify it to “mastering the skill looking shit up online” or label it as incompetence.
Let’s stop for a moment and consider:
- Our self worth as human beings has nothing to do with how much information we can memorize at a job.
- Our labor relationship with a corporation or a software craft will likely mean nothing once we die.
- In order for us to best serve a software project from a Testing and Test Engineering perspectives, we don’t necessarily need to be great “keepers infinite amounts of deep knowledge”.
On the other hand, I’ve observed that influential programmers or testers who get lost in “pursuing greatness and competence” achieve quite a lot:
- They can breeze through any sort of technical interview that involves your typical coding challenge hazing rituals.
- They can withstand a Wrestlemania of intricate software system design problems of how we could potentially scale something to galactic levels.
- They are religiously certified in that, once they get a job, they can maintain some abstruse garbage and navigate a buggy codebase with 100% automated test coverage.
But, in almost all cases, and I don’t mean to put everyone in the same bag, Causality doesn’t do its magic.
For all the deep and obscure technical details many of those colleagues were able to regurgitate on demand, you’d think that these would contribute to the production of well tested software projects and be followed by intelligent feats of test engineering and deep realizations around quality software. This is never the case.
On point: almost all pieces of software we use everyday, built by many of these bright minds are riddled with embarrassing bugs, sometimes are structurally wrong, other times are conceptually predatory, and make up a software shit soup that we have unconsciously learned to live with every day. Need a few examples?
- When was the last time you were trying to read something to be met with five different dialogs that block your view of the screen?
- When was the last time a Google, Amazon, Facebook, … app failed weirdly for you?
- What were you doing when a software tool or a webpage or some web API you pay money for let you down and surprised you in a negative way?
- For the gamers out there, what was the last time you played a AAA game that wasn’t shipped with game breaking bugs and poorer quality than some early access indie games… and somehow still got 7 or 8 out of 10 in reviews?
All of it was built by great programmers and testers. Shit software. Software that does nothing new. Software that preys on human behavior. Etc.
And yet, this still tells me nothing about the programmers and testers’ competence, personal and professional worth, how great they are, …
It would be an immense folly of me to make any oversimplification about that, and to go around and judge folks, telling them they are practically inadequate/incompetent and dumb while presenting them a positive message that they have so much potential to fulfill if only they would take their career more seriously. That is just cruel, misleading and wrong.
What turns out to be the case:
- Pursuing greatness for the sake of pursuing greatness is as destructive and seductive as a suicide cult. Steer clear of that crap.
- You don’t need to know everything yet and right now.
- You don’t need to memorize everything about everything.
- The one thing that is guaranteed to help you and your project from a Testing perspective 99.999% of the time will be a mix of your internal Map of knowledge and how well you can navigate problems that don’t show up on the map.
The last point, our internal Map of knowledge is key. The only difference between myself and another Tester starting their career today is just that my Map has more drawings and more details and juicy notes on a variety of parts of the map.
Deepening my knowledge in building this Map still doesn’t change the fact that I regularly need to use a search engine for both trivial and complex searches at a job. No, I don’t know what I’m doing. No, that is not the same as celebrating incompetence. And yes, it is perfectly fine to be this lost and have no idea what we’re doing.
So… why is it that some people seem to hold a, masked as a charismatic, “go-getter” positive message like the fellow human criticizing folks identifying with the “no idea what I’m doing meme” meme? Why?
So we can build more elegant unoriginal software while the world around us sinks into chaos?
None of us truly “knows what we’re doing”, most of the time. This is not the same as celebrating incompetence.
And frankly, I’d be dishonest if I ever said I knew what I was doing.
If you read this far, thank you. Feel free to reach out to me with comments, ideas, grammar errors, and suggestions via any of my social media. Until next time, stay safe, take care! If you are up for it, you can also buy me a coffee ☕