4/17/2025

How to Ride the AI Wave

The AI revolution is coming, but the train hasn't left the station yet. Jump on now to maximize your potential in a post-AI world of software development.
BBjarki Sigurðsson
Hi, I'm the author of this blog! I hold a M.Sc. in Robot Systems Engineering and have been working as a full-stack developer for 6 years, specializing in React and TypeScript.

AI hype comes in waves, rising and falling as excitement, potential, risk, and reality take turns consuming the minds of tech enthusiasts everywhere. Regardless of how disruptive and how fast its trajectory ends up being in reality, it's clear that some AI tooling has come to stay. It's also clear that getting comfortable with this tooling will give you a competitive advantage over your peers, sooner or later. This is not to say that an experienced developer will lose his job to a fresh graduate with a Cursor Pro subscription (he may or may not), but rather that he'll fall behind if he refuses to learn new tricks.

On a side note; AI tooling may not be as useful for beginners as it might seem. Relying on generated code will (assuming it's of reasonable quality) make you very productive compared to writing it from scratch, but what you're missing out on is understanding the problems this code aims to solve. Yes, you can ask your AI to explain that code back to you, but hallucinations will often lead to factual inaccuracies which will be hard for a beginner to spot. For this reason and many others, AI is not ready to be a drop-in replacement for a real developer. A developer's job is to understand real-world problems and create working software systems which answer those problems. So far, AI can only do one part of this job well: Writing code.

Understanding Real Problems

This notion of "understanding real problems" is described in practical terms by the following sarcastic quote:

In order for AI to replace programmers, product managers need to know what they want

This quote mostly lends its popularity to the strained professional relationship between product manager and programmer. A product manager's job is using his expert knowledge on a problem to enable programmers to create an effective solution. The product manager might say: I'm sick of finding parking around here, please construct an office building so I can park in the garage. An AI might say "sure, let me generate an office building for you" and forget about windows, doors, electrical outlets, elevators, fire exits, etc. A programmer's job is to read between the lines and say: "you have problems finding parking? I could add a gate to keep strangers from parking in our lot and keep your spot free". This example may sound contrived, but in the real world, the programmer is the only one of the three who can parse the problem and choose the right-sized option from a broad range of technical solutions.

Continuing on this example, now the product manager knows what he wants, so he goes back to the AI and says: "Build me a gate to keep strangers out of the parking lot". The AI says: "Sure, let me generate a gate for you" and installs a gate made out of two metal doors with a doorbell on the side. If the product manager wants to get into the parking lot, he now needs to step out of the car, ring the doorbell, and ask a receptionist to open the gate. Realizing the ineffectiveness of the situation, he says to the AI: "I want to be able to open the gate myself from inside the car". The AI says: "Sure, here's a remote controller for the gate which you can hang onto your rear-view mirror". While the product manager continues to nudge the AI in the right direction, let's go back to the programmer.

The programmer comes up with a solution and leaves the implementation to the AI. He says: "Build me two gate arms, one for incoming and one for outgoing cars. The incoming one should have a pole on the driver's side with an RFID receiver to raise the arm when the product manager scans his key card. The outgoing one should have a motion sensor to raise the arm whenever a car is waiting to leave". The AI says: "Sure, here you go".

Notice how the programmer is able to turn what could have been a multi-year, multi-million dollar project into something hundreds of times cheaper by understanding not only what the product manager wants, but also what he needs. Once he understands the problem, he uses his technical experience to identify the nuances of the gate solution up-front. Again, he focuses not on what the product manager says he wants ("an office building with a parking garage"), but the implicit wants hidden in his request (a free parking spot). In order to further translate this emotional want into a functional need, he starts by looking at the root cause of the product manager's want: The company parking lot is being used by strangers. Instead of creating a new parking spot (which is easier said than done if you don't have any space for it), he decides to fix the problem at the root. This answers the product manager's functional need (keep parking spots free until he arrives). Having accurately identified this need, the programmer uses his technical knowledge to design a systems which takes into account the functional nuances of the solution.

Using AI for What It Does Well

Understanding the Strengths and Weaknesses of AI will maximize the benefits it has for you.

In its current form, some of AI's biggest strengths are pattern recognition and high output, whereas its many weaknesses include nuance and quality control. As all good teams do, the AI and the programmer should split up their responsiblities according to their strengths. Writing code is a complex task, but it's also repetitive and follows a strict set of rules, so the AI can help here. Since AI can't handle nuance and quality control, the developer will have to take care of those for now.

Here's the cool part: experienced developers are already working under these exact conditions! Many software teams are already focused on builing processes and pipelines to avoid human errors. These errors occur frequently due to either a lack of experience, knowledge, focus, or time—and we've already built up vast toolkits to try to mitigate them. Having your code written by AI is like having it written by a beginner (except AI is already familiar with the syntax of all programming languages). This means if you can accurately predict, identify, and mitigate errors made while writing code, then AI is your new superpower. An AI code generation tool is like 100 junior-level programmers in your back pocket. If you can ensure the quality of its output, then your productiveness will skyrocket.

Quality Control

Mature development teams should be using most of the following tools to ensure the quality of their own outputs (this list includes my recommendations for JavaScript projects):

Combining all of these will help you identify and mitigate errors in AI-generated code, ensuring it's fit for use in the real world. Your aim should be to insert these into your workflow as early as possible. This helps you catch mistakes early and iterate towards a more accurate solution.

Here are my recommendations for creating small feedback loops while writing code:

The list above is based on some assumptions about the performance of your quality tooling. In general, I'd recommend the following rules of thumb:

If you find your tools overstepping these limits, you should consider simplifying or optimizing them to avoid disrupting the flow of your work. If you find yourself skipping these steps, that's a good sign for you to re-evaluate your setup.

Nuance

A common mistake software developers make is to create solutions which technically solve the problem, but don't consider functional details like the product manager having to leave his car to ring the doorbell. Since AI operates on pattern recognition, it has little chance to correctly evaluate the functional quality of its solutions in the real world. This is where a human developer has the advantage of being able to imagine themselves using their own solution and identifying such nuances before committing to it.

Domain-Driven Design offers various tools to model these functional requirements into a technical solution with the help of a "domain expert". For domains that don't require expert knowledge (such as parking a car), the developer can act as the expert and make accurate assumptions about which solutions are a good fit. For other domains, either the product manager may be required to fulfill this role or the team will conduct user testing interviews with the target consumers of their software. In any case, this analysis of nuances in a solution to a specific problem requires a level of cognitive awareness which is difficult for current AI to emulate.

Conclusion

Current AI solutions excel at a specific subset of tasks, such as writing code, but fall short when it comes to complex cognitive tasks, such as understanding the nuance of real-world problems and of their solutions.

Software developers should use AI tools for repetitive tasks with clear rules while utilizing their own skills to supplement the outputs. These skills exist to enhance software solutions with the quality and nuance required by the real world.

Output quality can be controlled using existing tooling for collaborative software development and quality control. These tools are essential enablers for developers looking to integrate AI into their workflows and maximize their output without compromising on quality.

Developers should prioritize using their critical thinking skills to analyse problems and solutions, allowing them to predict problems in potential technical solutions before committing to them.

All in all, writing code is a fantastic use case for LLM-based AI due to the abundance of strict rules and existing processes to avoid common errors. Since writing code is only a small part of a software developer's skillset, AI poses no threat to the existence of our profession nor to our job security. On the contrary, it's a powerful new tool which will enable developers to become more and more productive as it continues to improve and mature.

The AI wave has already started rising. I hope you brought your surfboard.

Glossary

Tags:

Career Growth
AI
Tooling