Since AI became mainstream, I have been very reluctant to rely on it. Mostly, I used it as a search engine and as a last step to polish my writing. But lately, with the advances in code generation and so-called Agentic AI, I started realizing that I might be missing out. After a handful of experiments with some of those tools, I found that they are capable of completing many of the everyday tasks with a decent performance. It felt so heavy to accept this fact. And this made me question the value of my work and skills. Trying to educate myself with the opinions of industry experts only made it feel worse. For example, Kent Beck was tweeting about the value of 90% of his skills going to zero and 10% of his skills multiplying by 100x. He elaborated on this by saying that the biggest leverage is focusing on big-picture thinking, understanding domains, abstractions, and architectural decision-making.
This made me wonder, what is the point of working on my craft as an engineer if AI could do so many things already?
Let’s step back from the domain of software engineering for a while. I want you to think, my dear reader, of the experience of reading any of the great classics of the world. If your experience is anywhere close to mine, you might read them a couple of times. You might even memorize a few quotes here and there to impress your friends. Then, one interesting day, you meet someone, or watch a random YouTube video, who would explain this book. And you will see it in a totally different light. And even those lines that you proudly memorized, you might realize that you have been entirely missing their original point. I always leave those experiences with a deeper appreciation of those books. Why does this happen? It happens because, previously, you were unaware of so much background information that was needed for you to be able to understand and appreciate the work at hand.
You might already know where this is going. I am now thinking of education as a means of understanding and appreciating the engineering outcome, regardless of whether it was produced by a skilled colleague or an AI Agent. Education is about understanding the language of a domain. It’s about knowing what is possible. I suppose that it would be very difficult for one to understand the big picture without understanding the implementation details at some point in their career. Further, without a deeper understanding of core technologies, the outcome of promoting is guaranteed to be suboptimal. Assume that you are working on a C++ project, and you would like to optimize the CMake build process. How is it even possible for you to prompt the AI tool if you don’t understand the language of CMake. Similarly, from the web development domian, if you never read or wrote Vue code, how are you going to tell if this code is idiomatic or not? All of this is considering the sunny day scenario, and don’t get me started on the deep mess one would be facing when bugs show up (as they definitely always do).
So, what am I proposing here? Basically, I am writing this as a reminder to myself that there is no escape from putting effort into the craft of engineering if one aims to be a decently good one. We still need to study the basics, design patterns, and idioms of different programming languages. We still need to study our domains and experiment with engineering practices. We still need to work on our communication skills to collaborate with both humans and “Agents”.
What if I am wrong? What if those skills are on their way to being obsolete? What if knowledge of programming languages is irrelevant? What if no-code and GenAI tools are going to dominate the industry? Those are very valid concerns. I didn’t claim that we should abandon AI tools or that we shouldn’t use them. The point I am trying to make is that we can’t use AI tools if we don’t know our domain. So, instead of promoting the message that everyone should focus on their prompting skills, talk about the basics first. And while working on side projects, instead of looking up the answers at the first sign of discomfort, maybe one should struggle with the problem a little bit more.
To conclude, AI tools are useful. But don’t delegate all your thinking to them.
—
This is an opinion piece where I am trying to make sense of the current status of the software industry. And, if you have a different opinion on the subject, feel free to reach out and educate me.