Day 4: Systems Are the Easy Part?

A few days ago, I came across a LinkedIn post where someone said that systems were the easy part. That struck me as a strange statement, especially based on my own experience over the past year and a half of working with AI in software development.

A brief background

Software development is still a relatively new journey for me, but I have taken the time to learn the basics. Because of that, I would not describe myself as a vibe coder in the strictest sense of the word. I am not simply prompting my way into an app without understanding what is happening underneath.

Learning the fundamentals has helped me understand the different parts that go into an application, the architecture behind it, and how code needs to be structured so that the result is reliable and does not immediately fall apart. But although I’ve learnt the basics of software development, I don’t dare to call myself a prolific coder. Probably ‘AI-augmented’ software development and systems design would be a better way to describe what I do now. 

The key idea

That is why I disagree with the idea that systems are the easy part. AI has made it much easier to turn an idea into an app or an automation. In many cases, you can prompt your way into something that works surprisingly quickly.

Consider these highly specific, slightly absurd but totally buildable apps:

๐—ง๐—ต๐—ฒ ๐—ฃ๐—ผ๐˜„๐—ฒ๐—ฟ๐—ฃ๐—ผ๐—ถ๐—ป๐˜ ๐—–๐—ผ๐—ป๐˜๐—ฟ๐—ฎ๐—ฑ๐—ถ๐—ฐ๐˜๐—ถ๐—ผ๐—ป ๐—›๐˜‚๐—ป๐˜๐—ฒ๐—ฟ

Compares decks from Finance, Marketing and Operations, then flags where departments are working from incompatible numbers or assumptions. 

๐—ง๐—ต๐—ฒ ๐—–๐—ผ๐—ฟ๐—ฝ๐—ผ๐—ฟ๐—ฎ๐˜๐—ฒ ๐—ฅ๐—ถ๐˜๐˜‚๐—ฎ๐—น ๐—”๐—ฟ๐—ฐ๐—ต๐—ฎ๐—ฒ๐—ผ๐—น๐—ผ๐—ด๐—ถ๐˜€๐˜

Searches calendars, agendas and meeting notes to identify recurring meetings whose original purpose nobody remembers. 

๐—ง๐—ต๐—ฒ โ€œ๐—ช๐—ต๐—ผ ๐—”๐—ฐ๐˜๐˜‚๐—ฎ๐—น๐—น๐˜† ๐—ข๐˜„๐—ป๐˜€ ๐—ง๐—ต๐—ถ๐˜€?โ€ ๐— ๐—ฎ๐—ฝ๐—ฝ๐—ฒ๐—ฟ

Analyses emails, chats and approvals to distinguish the official project owner from the person everyone actually depends on. 

๐—ง๐—ต๐—ฒ ๐—™๐—ผ๐—ฟ๐—ด๐—ผ๐˜๐˜๐—ฒ๐—ป ๐—ฃ๐—ฟ๐—ผ๐—บ๐—ถ๐˜€๐—ฒ ๐—ง๐—ฟ๐—ฎ๐—ฐ๐—ธ๐—ฒ๐—ฟ

Extracts commitments such as โ€œIโ€™ll send it tomorrowโ€ from conversations and quietly tracks whether they were fulfilled. 

๐—ง๐—ต๐—ฒ ๐—ข๐—ณ๐—ณ๐—ถ๐—ฐ๐—ฒ ๐—™๐—ฟ๐—ถ๐—ฑ๐—ด๐—ฒ ๐—ก๐—ฒ๐—ด๐—ผ๐˜๐—ถ๐—ฎ๐˜๐—ผ๐—ฟ

Identifies abandoned food, estimates when it became unsafe and drafts increasingly firmโ€”but diplomatically wordedโ€”removal notices.

I digress. ๐Ÿ˜‚ Anyway, back to the main point: the part that needs to be thought through is everything underneath that holds the software or workflow up. 

The harder questions:

How to structure what you create so that it does not become a mess?

How should the database be designed?

How should data be stored and retrieved?

How do you authenticate users properly, prevent leaks, keep the application secure, avoid unnecessary bloat, and make sure every connection point is not creating an opening for hackers or malicious actors?

In other words, the boring parts. The non-sexy parts. Yet very crucial.

All of those things are part of building systems, and they require thought. When something breaks, AI can certainly help fix it, but I still believe the human should understand what is being built and remain in control of the process.

What I Learned

I think systems is where many people underestimate the work involved. AI should be a partner, almost like an employee helping us do the work, but we still need to apply systems thinking to direct it well and judge whether what it produces actually makes sense.

This is a lesson I want to keep with me as I continue learning AI and software development: generating something is not the same as engineering it well.