ChatGPT already knows - Part 6
In the previous post, we discussed what it needs to become a “full-range engineer” and have seen that this is quite different from what software engineers often strive for today. However, the idea of a full-range engineer is focused on creating more value in a highly complex, uncertain and ambiguous environment and thus also improving our value.
In this post, we will explore why we need to be a bit rebellious to take this road and discuss if a changed positioning of software engineers is sufficient for the future of our industry.
Be a bit rebellious regarding pressure from the outside
While I think, becoming a full-range engineer is the way to preserve our value as software engineers, in most places such a person will not be welcomed with open arms.
The hyper-specialization habits are strong in our industry:
- Job ads look for cogs in the feature development machine (calling them “full-stack engineers” or alike).
- Recruitment is set up and optimized for it.
- Career paths and incentive systems are aligned with hyper-specialization.
- Product vendors and software consulting companies subsist on it.
- The whole media, event and training industry would basically collapse without ongoing hyper-specialization.
This means, trying to become a full-range engineer means swimming against the predominant current. It is much easier to go with the flow and become a feature coding machine. Hence, I would perfectly understand if you hesitate – or even refuse – to take this route.
What is in it for me, you may ask. Well, your job, for starters.
Remember: If we want to preserve our value as a software engineer, competing against modern AI solutions in their area of strength is futile. The AI solutions can learn at a much bigger scale, faster and more accurate than we ever could. This is a battle we will lose over time for sure – maybe not today, but in the next years. Instead, we need to emphasize the parts of software engineering where we can differentiate ourself from AI solutions and make a real difference, even if it means to swim against the current.
I wrote a blog series about leaving the rat race, discussing the continuous fear of missing novel tools, trends and technologies, fueled by an industry that subsists on exactly this fear and what you can do about it. This blog series might give you some ideas how to position yourself differently.
When I wrote that blog series, the recent developments of AI solutions were not yet foreseeable. Nevertheless, the blog series points in the same direction: Position yourself in a way that fosters your human strengths instead of your weaknesses and resist the pressure of an industry that grew fat on hyper-specialization on now wants to keep its status at all costs, with your fear being their ticket to their next sales.
Do not be that ticket. Find your own way. Be a bit rebellious.
Be a bit rebellious regarding pressure from the inside
It is one thing to resist the pressure of your outer environment, the encompassing industry, its habits and expectations. It is something very different to resist the pressure of your peers.
The current nerd culture defines the (substitute) value systems for many ambitious software engineers and self-acclaimed “hardcore developers”. They want to excel in what is considered “cool” 1 in nerd culture:
- Knowing arbitrary many details about an arbitrary small area of technology expertise: “cool”.
- Broad knowledge: not “cool”.
- Coding all day: “cool”.
- Communicating with non-IT people: not “cool”.
- Using “1337 H4X0R” speak (see Leet): “cool”.
- Explaining IT concepts in an understandable way to non-IT people: not “cool”.
- Radically calling for arbitrary in-group rules and rituals, often related to coding idioms and alike: “cool”.
- Pondering the business value of one’s work: not “cool”.
- And so on …
If you want to belong to that in-group, if you yearn for recognition of other ambitious, nerdy software engineers, you need to follow the rules of nerd culture. Unfortunately, trying to be “cool” at those terms drives you directly into the hyper-specialization trap. It puts you at risk of being perceived as an easily replaceable cog in a machine by decision makers and lets you directly compete with modern AI solutions in their area of strength.
This mean if you want to preserve your value as a software engineer in the upcoming years, you also need to re-evaluate your position regarding the software engineering in-group and its nerd culture. You need to find your own position. You do not need to reject all habits and rituals. But you need to make up your mind which of them you consider valuable regarding your future value and which of them you do not consider valuable.
Do not blindly follow the rituals and rules. Find your own way. Be a bit rebellious.
Walking outside the well-trodden paths
You need to find your own way which is neither the in-group nerd culture way nor the out-group way of the encompassing industry. Both groups drive you into becoming a feature implementation machine. Their motivations and intentions differ but the result is the same.
Preserving your value as a software engineer requires a different way.
This means you need to walk outside the well-trodden paths. You will need to find your own path. Sometimes, you will feel like being in nowhere land, not belonging anywhere. The default reward and career systems do not work for you. People may feel you create value but they do not understand you and your way because it does not fit into their scheme. No in-group left.
In such a situation, it often is best to be your own in-group, to not blindly accept the rules and rituals of the other groups if they do not work for you and go your own way. Be the “lonesome rider”. Feel like a “rebel”. While it may sound a bit silly, it can really help when you feel alone.
It also can help to not give in prematurely because after a while you will see that other people recognize the value you create. You still feel “strange” to them. But they start to accept you – not as part of their in-group, but as someone who does something right.
And if it should come to a “you or the AI” decision, you will be in a much better position than those who did not leave their comfy chairs and did not become a bit rebellious.
Note that not all software engineers are like this. While many software engineers more or less deliberately follow the well-trodden paths, there are quite some software engineers who left those paths and follow different value systems.
Some of them already took a road similar to the one I described here. If you are one of those: Congratulations! I think you positioned yourself in a good way for the future and I doubt taking this road was always easy for you. And thanks a lot for reading this blog series up to here, even if I had nothing new to offer to you besides maybe some confirmation regarding the path you chose.
The path ahead
We came a long way from the challenges modern AI solutions pose to software engineers, over the past and present of the software industry, the tasks we actually need to solve, the strengths and weaknesses of humans and modern AI solutions, how to position ourselves as a software engineers to preserve our future value instead of competing with AI solutions in their area of strength, to the observation we need to be a bit rebellious to do so.
We learned we need to focus more on the parts of software engineering that aim at navigating successfully in a highly complex, uncertain and ambiguous environment which is the norm for most companies to preserve our value as software engineers.
The remaining question is: Is that all?
Is it sufficient if we change our focus, oftentimes fighting the external forces that want to squeeze us in a tighter and tighter hyper-specialization corset?
Personally, I think: No, it is not sufficient.
I think, we need to fundamentally rethink IT, the predominant habits and value creation models.
Currently, the whole industry focusses on squeezing the last cent out of the reign of hyper-specialization. New tools, technologies and paradigms are developed at breathtaking speed, not solving any of the problems they claim to solve, just adding more and more complexity – to sell more licenses, more consulting, more trainings, more magazines, more conference tickets, and so on.
This is not sustainable. For me, it feels like a dance on a volcano. Deep inside, (hopefully) everyone feels this approach will collapse eventually but nobody wants to leave the party as long as good money can be made by feeding the frenzy.
We need to change our course as an industry. We need to leave our industrial-thinking, hype-driven, hyper-specialization focus behind. We need to adjust the incentives. We need to adjust the job and hiring model. We need to adjust our training, consulting and product approaches.
We need to stop our efficiency focus and focus on becoming effective again instead, after having lost our effectiveness more than 30 years ago, now spending most of of our time and efforts doing idle or even value-reducing work with ever-increasing efficiency. 2
Or to take it one step further: We need to become resilient to be able to cope successfully with an increasingly unpredictable world.
This would mean a higher focus on the strength of humans. This would mean less (pointless) cognitive load and stress for the people involved. Skills shortage would not be such a big issue anymore. And. And. And. There is a lot to be won by rethinking IT.
But this would also mean less easily sold hyped products, consulting hours, trainings, conference tickets, magazines and so on. This does not fit the current business models of most players in our industry. And old habits die hard.
Nevertheless, for a sustainable and resilient IT that supports, enables and fuels a successful business, we need to change direction. This would also create the needed incentives for our future software engineering careers and pave the path for a constructive coexistence of software engineers and AI solutions.
In this post, we explored why we need to be a bit rebellious to take this road towards a full-range engineer as the out-group and in-group forces try to push us in a different direction – not because of malice but because of short-term thinking, habit and “culture”. It takes some willpower to resist those forces and being a bit rebellious can be helpful on that way.
We also discussed that it is not enough for our industry if software engineers change their positioning. The current efficiency-obsessed approaches, being remains from an industrial world we left behind decades ago in most domains, steer (not only) our domain towards an abyss. Being sustainable (in its general meaning) in an increasingly complex, unpredictable and ambiguous world requires different approaches focused on effectiveness and resilience.
This goes far beyond the question how to position oneself as a software engineer in the face of modern AI solutions. However, the rise of modern AI solutions painfully highlights our deficiencies and our madness as an industry. We also need to tackle this problem. But this is beyond the scope of this blog series. Here, I only wanted to point out that it is not enough if software engineers change their positioning.
In the next and final post of this series, we will put everything together, we have discussed so far and sum it up. Stay tuned …
I am not a particular friend of the term “cool” in the context of professional software engineering. We are not a bunch of high school kids down at the beach with their surfboards. We are grown-ups doing a highly critical job regarding the people who are affected by the software we develop. If we screw up, other people suffer. I think this is not an environment where people should strive to be “cool” including its connotations. That is why I always quote the term “cool” in the context of software engineering. ↩︎