kvch.me

Sofware engineering fundamentals in the age of AI

The tools are changing fast. The fundamentals that make a great engineer stay the same. In this post I cover the basics required to be excellent. I also share my tips on how to leverage AI tools in each area where it makes sense.

What does it take to be a great software engineer in this era?

Software engineering is solving problems using code that runs on computers. The computer can be your local machine, a customer's phone, or across multiple machines in the cloud. It might be written by you. It might be generated by an LLM. The problems still come from humans; that part hasn't changed. But more and more code is generated by machines.

The question is no longer whether these tools are here to stay. They have become an integral part of most engineers' day-to-day work. The question right now is: what does it take to be a great software engineer in this era?

Before we answer it, let's think about how great craftsmen operate. They focus on fundamentals. Hacks may come and go, but the fundamentals stand the test of time. Great engineers become exceptional by mastering the basics and experimenting with new tools.

This is my pyramid of software engineering fundamentals:

                            /\
                           /  \
                          /    \
                         /      \
                        /        \
                       /  review  \
                      /------------\
                     / architecture \
                    /----------------\
                   / tools, workflows \
                  /--------------------\
                 /     communication    \
                /------------------------\
               /        ownership         \
              /----------------------------\
             /          judgement           \
            /--------------------------------\
           /             vision               \
          /------------------------------------\

Now let's look at each layer.

Vision

It is your business to care about the business. Understand why your company or employer exists. What is its public promise? It could be "we provide the world's best billing solution to SMBs" or "the easiest way to do your shopping online." That vision dictates every decision: product direction, prioritization, and trade-offs.

Listen to the vision the leadership is communicating publicly. Resources for learning about your company include marketing materials and landing pages.

Frequently ask yourself questions like:

Furthermore, build relationships with your colleagues in product management, marketing, and sales to learn more about the business. Even better, if you have a chance to talk to users directly, analyze everything they say. Think like a product manager.

Focus on work that creates the most value for the business. Contribute meaningfully to mission-critical areas. Try your best to create something that aligns with what the company is promising.

AI TIP

If your employer provides you the autonomy to work on your own ideas, create proof-of-concepts using a coding agent. It is a low-cost method to test your ideas before committing serious time to developing something new.

Judgement

Your judgement is your biggest asset at your job. Its foundation is your world model, shaped by your experiences. Good judgement can set you apart from your colleagues. You need good judgement to select projects and tasks that bring business value to your company. Your judgement also helps in solving technical and human problems at work. There is no productivity hack or tool that can help you if you constantly make bad decisions. Those tools are just going to magnify your shortcomings.

You can improve your judgement in two ways. You can increase the possibility of making good decisions on a daily basis with simple habits and a little self-awareness:

Monitor yourself to see when you make the best decisions. If you have the best judgement in the morning, make decisions in the morning. When you feel mentally drained, switch tasks. You can do research for a project, collect information for a decision, attend meetings, write reports, and so on.

The second way to improve your judgement is to improve your world model. Read widely; read books from all fields, both fiction and non-fiction. Follow current events not just in tech, but in politics and economics as well. Get familiar with cognitive biases to avoid falling victim to them. The most important biases to look out for are anchoring bias, first-conclusion bias, practicality bias, confirmation bias, and legacy bias. Discover more about how these affect your thinking.

Ownership

If you are aware of the business context and have good judgement, you are in a good place to take ownership of things. Ownership can sound abstract. What does it mean in practice?

You solve problems and deliver value without being asked. I do not mean doing your colleague's job. Find an unaddressed problem that affects many people in your organization. If it is critical to the business and no one is working on it, take it on.

Showing initiative on valuable problems shows that you are a well-rounded engineer. Once you pick up something, take end-to-end responsibility. Own the outcome of the project. Stick around when problems show up or when others have questions. Do everything to the best of your abilities. (It can be a major source of professional and personal fulfillment.)

Include others in the process. Working alone might seem more efficient in the short term, but you will burn out quickly. You will build stronger relationships and gain supporters if you include your colleagues.

Communication

If your technical skills are a 10 but your communication is a 4, people will perceive your overall ability as a 4, or a 6 at best. Your effectiveness will be limited by your communication skills. Your colleagues are not going to value your insights if you cannot articulate them.

Being right does not matter if you cannot convince others. It is your responsibility to present your points in a way everyone understands.

Strong communication skills can increase your reach and impact at your company. When you have an idea, you need to get buy-in from many people so you can work on your project. Also, there is no need to do everything by yourself. You can recruit people to your team who can multiply your output and increase its quality.

AI TIP

When writing to others, stay away from generating text using an LLM. These tools tend to make you sound too boring. Instead show your personality (while remaining professional), and your unique take on ideas. Obviously, you can leverage LLMs for correcting your grammar, suggesting synonyms for words, maybe improving the clarity of your message. Use it in moderation.

Tools, Workflows

Masters know the ins and outs of their tools. Maximize your tools by learning their strengths and weaknesses.

Audit your daily workflows frequently. You do the basics every day, so removing friction can increase your productivity. Notice when you get slightly annoyed with something or do the same thing for the 100th time. These are excellent candidates to be eliminated, optimized, or automated.

AI TIP #1

Generate scripts for your common manual workflows.

AI TIP #2

Review your configurations using AI, ask for recommendations on improving your existing tools.

Architecture

GenLLMs can solve many problems for you. But you must be careful, especially if you are building software that is meant to last. At the moment, AI agents might produce too many unnecessary abstractions, and they do not always understand the layers of your software. Master system design and design patterns. Without strong design skills, you cannot tell whether the code is unnecessarily complex.

General patterns I have noticed when working with AI:

I am not saying it produces bad code. Do not accept blindly everything your loyal coding companion puts in front of you, especially if you are giving vague prompts. Rely on your architecture skills to build simple and elegant software.

AI Tip

Let your AI assistants generate the boilerplate under your guidance.

Review

GenLLMs can generate a massive amount of code. Thus, reviewing code has never been more important. Think about the changes carefully. You might be tempted to skim the code because the tests pass, and the LLM generated working code. However, you must understand the code and its abstractions deeply enough to know whether it is correct, not just working. You must build a mental model that connects the business context with the long-term sustainability of the solution. Just like you have always done it in the past. The principles of reviewing code changes have not changed.

Submitting a huge code change is usually not the sign of engineering excellence. We should prefer short and concise solutions. The more complex the codebase, the harder it is to maintain in the long run.

AI Tip #1

Use an AI collabolator as a linter to save your colleagues time by eliminating obvious problems, similar to how golangci-lint, cpplint, and clippy can highlight minor issues. Now you can assign them to a pull request, and they generate a report and add comments to your changes. It does not mean human reviewers should be eliminated. You are simply helping fellow-engineers save time by removing obvious issues.

AI tip #2

When you feel you have extracted all the insight you can from the code, you can ask your AI companion for help. Ask it to review whether there are missing use cases in testing or whether a bug fix was comprehensive enough.

Definition of greatness

Who is going to win in this era?

It is not the person who generates the most code.

It is not the person who can automate the most things.

It is not the person who adopts the latest, greatest AI tool.

The recipe for success has not changed since the birth of software engineering. People who find problems worth solving will continue to dominate. It is the engineers who can align with their company, have sound judgement, hone their workflows, and do their jobs to the best of their abilities.

Contrary to what AI visionaries are saying, coding agents are not going to take your job. Modern tools just speed up code generation. They are going to amplify your engineering skills or your lack of them. If you have been a weak engineer before, GenLLM will make you worse. You are going to drown your colleagues in low-quality code. If you have been a great engineer, your coding companion will make you stronger.

If you want to get notified when I publish a post, subscribe to my blog via email or RSS feed.

#genllm #llm #software engineering