Codecamp România organized last week in Iași an interesting talk together with the local university. They have invited Mark Richards to talk about “Will There Be Software Jobs When You Graduate? AI, Hiring Trends, and the Future of Software Careers”. The original talk was supposed to be held by James Coplien but his flight was canceled so Mark stepped in to help.
Mark Richards is an important worldwide software architect who published important books on software architecture: ‘Fundamentals of Software Architecture: A Modern Engineering Approach’, ‘Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures’, ‘Head First Software Architecture’, ‘Architecture as Code: Specifying Architecture for Humans and Agents’, ‘Software Architecture Patterns, Antipatterns, and Pitfalls: Understanding Trade-Offs‘(just released). Please see https://developertoarchitect.com/books.html for all the books he has written.
He has been in this industry since 1983. And he is still coding almost every day.
I made a post on LinkedIn that evening about the talk and I felt the need to extend a little bit more because it was an interesting presentation: https://lnkd.in/p/dF6FcAvB
Seeing such an important person from IT going to the heart of Romanian education, a Romanian school, touched in me a sensible cord. And I told this to Mark.
So, here are the main ideas that I recall from his talk which I think are very important:
Time
He said that he had a lot of time to prepare for his career, a lot of time. He started as a programmer and gradually over 12 years he got his first job as a software architect.
Then he said to the students that maybe they will not have those 12 years, but perhaps 2 or 3 years at most, in order to get a comparable experience because things are so accelerated now.
Karma
He quoted an idea from Venkat Subramaniam. The fact that programmers write bad code. He also admitted to writing bad code. Well … we all wrote bad code. But, AI is trained on code written by programmers. Then programmers complain that AI writes bad code. “Guess what? This is karma”.
Dreyfus Model for Knowledge Acquisition

The Dreyfus model is being used to describe stages of knowledge acquisition. And he centered the discussion around this.
He said that a novice applies recipes and follows step-by-step instructions.
The next level in the Dreyfus model is the advanced beginner. In this stage an advanced beginner is applying more complex recipes, but they are still recipes.
The next level is competent. The competent are still following recipes and still doing analytical thinking but they begin to be more creative with their thought process. If something is not ok they can apply other techniques to fix that particular problem.
He then went to describe the proficient and expert stages. He mentioned that the experts create the recipes.
In the context of AI this Dreyfus model is important because it helps to show where, most probably, AI agents are now: at the border between advanced beginner and competent. These agents are recipe followers with no creative thought.
But Mark also spoke about RSI (Recursive Self Improvement). It is about agents recursively starting to improve themselves. He thinks that, because of RSI, AI might get to the competent level. But he also expressed his skepticism when he invited us to think about all the problems that can pop up while AI will do its learning via the RSI.
Picasso Quote

Mark liked this quote because it shows the importance of good new questions, ideas.

Then he mentioned the fact that computers are deterministic, and that LLMs have non-deterministic responses. And that LLMs can help with good questions.
He mentioned that AI is and should be seen as a tool. Is a tool that accelerates code generation and that also gives great questions and great ideas.
Behaviour and Capabilities

For Mark, behaviour is about design. In the image it can be seen that usually when trying to design for the behaviour, programmers start from something simple and then gradually arrive at the desired thing. In the image it can be seen that the truck is the goal.
He said that the AI can write code regarding the behaviours, and he also says that it is bad code. And even if it is bad code, it will still work.
But there is another important detail, which is about the capabilities that architecture must provide. In the example from the image it can be deduced that the capabilities needed for a truck will for sure not map at all to the ones needed for roller skates.
Here are some examples of capabilities provided via some questions by Mark: Do we need to scale to 100,000 users? Do we have to have response times in our systems of under 200 milliseconds? Does our system have to be highly maintainable?
Then, on the next slide he provided a long list of all the capabilities that can be considered for a system:

And it is in these capabilities, Mark says, where the opportunity for programmers lies. Because the AI is not good at these, even though the AI is good at producing code.
You can emerge design, but you cannot emerge architecture.
Gall’s Law

Gall’s law can be applied to software architecture and is a very needed skill to have as a programmer. We need to start with a simple system, but we have to plan. Because it is not that we can just simply add an architecture. He gave the example of building a very simple system that will scale to 100,000 users and that we will continuously verify it. Now that there is a simple system that works, the emergence of the design starts.
So, AI is currently lacking architecture. And it will be onto us to teach the agents architecture, and for doing this we need to know architecture.
He has also shown some examples of Architecture Definition Language (ADL). The ADL’s are a new way to describe architecture through a pseudo-code language.(1) He is using ADL and the generated code after it, with AI, in order to validate architectures. There are great advantages in using this language in connection with LLMs.
I recall that he used an example from his class regarding a ticketing system and how he used ADL’s to describe its architecture and how actual code can be automatically generated with Claude.
So, ADL can be used to describe the architecture, but also to validate it with code via agents. And programmers can play a very important role here.
He mentioned that the traditional role of a programmer is moving from writing source code toward architecture and design.
Increase your technical breadth of knowledge

At a certain moment he explained a hypothetical scenario where a programmer said that is an expert in micro-services but is struggling to find work. And is asking Mark why it is hard to find a job. And Mark’s answer was: The problem is you are an expert in microservices. And the same for a lot of other people that are competing with each other for 3 or 4 open positions. It is about how a programmer will differentiate herself/himself in the industry, and architecture is a differentiator and can help.
Communication and collaboration skills also matter a lot. His book ‘Fundamentals of Software Architecture: A Modern Engineering Approach’ addresses all of the people skills needed for a programmer.
In the previous image Mark is showing a triangle. He is using it as an analogy that represents all the knowledge in the world. On top are the things we know and we are experts in. In the middle of the triangle is about the things we know we do not know. At the bottom of the triangle is about the stuff we do not know that we do not know. It is about the things we never heard of.
He insists on increasing the breadth of our technological knowledge. He advises to place our focus in the middle of the triangle. And that we can do this by investigating various resources like infoq.com or https://www.thoughtworks.com/radar. He advises to spend at least 20 minutes per day in the morning, but before opening email and MS Teams or the social media, and after the ‘blessed’ coffee or tea.
Increasing our technical breadth is a differentiator in this new state of the industry.
Advice
Do not take as face value all the code that is being generated. Trust, but verify. The code might work, but once modified the behavior might change and it will no longer work.
As developers we will need to deeply verify the code that we did not write.
Ethics
No one talks about it. Who is teaching our agents about ethics?
After his talk, I made the following question and comment on which he agreed:
– Isn’t, in a way, that this AI triggered us to return to the essentials, for what it meant for us to be programmers? Because it was never about just knowing C++ or Angular syntax, tips and tricks. It was about solving some problems. So, it seems to me that the good thing about AI is that it triggered this aspect.
When answering my question he said so nicely that it’s not about the syntax of the languages. It never has been. It’s about how to program, how to think about algorithms, and how to solve a particular problem. That it really is getting us back to some of the essentials. Rather than focusing on all the languages and the problems of code syntax, we are solving problems.
Then he did an interesting thing. He said that initially he programmed in assembly language, then C and C++ , then Java, and then he had to handle the cloud. And suddenly he made me think about the leaky abstractions and how important it is to be careful at them. Because we have abstractions over abstractions, for example cloud environments abstract us from the infrastructure. We have no idea where the code is running.
– It seems to me that AI has raised the bar. It doesn’t mean we shouldn’t know things. It’s related to the time it took you to become an architect, 12 years. It raises the bar and it also pushes and hurries us to learn things faster. It doesn’t make us abdicate on knowing those things.
And he exclaimed: Bingo! And then asked how many bits in a byte? How many bytes in a word? Like an invitation to realize that we need to know our craft as computer scientists.
We are living interesting and challenging times. And Mark’s talk is helping, I believe, us navigate uncertainty whether we are students, juniors or experts.
Important note: The images were used with permission of Mark Richards.
(1) Lesson 210 – Architecture Definition Language – (August 4, 2025) – https://developertoarchitect.com/lessons/lesson210.html
