Back in 2023 I wrote a document titled "The Future of Engineering". Let's have a read through and see how it stacks up today
The Future Of Engineering.odt
What to do in the future with AI
Before my career ends, I expect to see the use of AI systems become the predomenant methodology for developing computer software. Since my current career is based on being a good software engineer, this is bad. There are two options:
- Become a master of the emerging AI systems, and stay “ahead of the trend”
- Find a role that isn’t going to become deprecated by AI in the near future
What are the near-term capabilities of AI systems
I expect to see the following development order:
- (starts today (Feb 2023)) AI’s used to write code on a daily basis
- (starts 2-3 years) Software developers become predomonantly problem-describers-and-code-reviewers
- (starts 4-5 years) The emergence of closed loop testing and model verification converts all software developers into problem-describers as now the solution can be tested to an arbitrary degree of certainty without human input. The “software developer” only ever specifies what
- (starts 6-7 years) The intermediatary of human-readable-code is abstracted away and the AI directly spits out machine code. The code is unreviewable by humans, but who cares!
At level 3, it starts influencing other industries massively. No more do people have to be experts in a particular software package. A user can literally ask a computer to do things – probably via voice. Initially you need a lot of skill in asking the right question, but the level of technical expertiese and domain knowledge drops over time.
At about point 3 or 4, Robotics becomes fairly easy as the computer can design complex control systems we can’t. This starts increasing investment in actually useful robots. They start taking the place of (initially) simple roles, and later more and more complex ones.
By level 4, even embedded systems are predomonantly “AI” built systems.
The types of Engineering
- Builder – Welders, fitters, construction workers. Understands solution-space very well.
- Technician – Like below, but with technical knowledge in some domain allowing them to evaluate designs and do some implementation from problem specification. Great knowledge of solution space, and some knowledge of problem-space.
- Engineer – Uses established literature to solve problems. Consults books on how to structure things etc. Good understanding of problem-space, but possibly not much of solution-space.
- Artisian – Implements unique one-off-solutions requiring extensive domain knowledge and understanding of both probem and solution space. Can attempt things that have little or no existing literature.
- I currently tend to operate at Level 2 or 4: I have a good understanding of solution space, and some understanding of problem-space.
Things that will not change:
-
Humans will still have problems
- Lack of time
- Social Interactions
- Wars
-
The world will still be facing disasters of one (or many) forms:
- Environmental
- Social
- Resource Scarecity
-
New Science will still be being discovered
- Space, Geology, Biology, Chemistry etc.
-
Some jobs will always exist:
- Barkeeper, guy who digs holes
- Skilled Dancers, Musicians and Artists
What is the problem with software engineering?
It operates in a problem space that is purely virtual. It exists as an intermediatary between human problems and the real world. As the field gets more established it will likely get smaller. It doesn’t directly interact with the world.
My take today
Seems on track. The prediction was that in 2025-2026 software developers would become preominantly problem describers and code reviewers. At work we're using Cursor and Claude Code to do a bunch of the small tickets nearly completely autonomously - our Account Managers describe what they want, we copy paste it into the AI, and then review the output. I'm currently fiddling with a way where we can integrate claude code directly with Slack so we can just review the change requests as code change requests.
And of course, AI isn't going to get worse.