Why Software Engineers Must Think Beyond Code
One of the important things that, as a programmer or software engineer, we must know and do is that instead of jumping straight into software design, we first go for designing the system itself.
Start with the manual system
Imagine you want to design a software for course registration at a university. One of the tasks of a software engineer is to design that automation and system without using any technology. The database is replaced with a binder, the in-app form is replaced with a paper form, online payment and receipts are replaced with cash payment and paper receipts, and so on.
If this paper system cannot run cleanly, software will only automate the chaos.
Layer technology gradually
Once we can design and set up this system and make it work flawlessly, then we reach the stage where we can improve parts of it—or all of it—with technology to increase speed, efficiency, security, etc.
For instance, instead of cash, you can go one step further and use a POS machine, or bank payment to the university account with a payment receipt. Or instead of a binder in the office, you can use Excel to make searching faster.
Ultimately, the ideal is for all these steps to become fully computerized and integrated with other parts of the university.
Why This Matters in the AI Era
If we cannot create a non-computerized version of software for every need, we are ultimately not software engineers but just coders.
In today’s world, where AI has come to handle part of our work and everything is becoming AI-powered, this skill becomes even more important. Because as a software engineer, I need to be able to plan, so that I can then give smaller parts of that plan to AI to write for me.
This is where, the more skilled we are at this fundamental engineering ability, the better and more effectively we can use AI in our work, or even have AI-powered tools.
At the current level, AI may be able to write a function much better than me as a senior, but it cannot judge whether it makes sense for the overall program solution to use that function or not, which makes the role of a software engineer even more important.
In programming editor copilots, we also constantly see that it’s the software engineer who plans and converts user prompts into simpler tasks for the AI tool, so it can do more and bigger work.
Key Insight
The general point is whenever we want to understand any technology or concept, like AI, blockchain, etc., we must first imagine and understand it in a completely non-computerized world.
System Design