Posted by senko 2 days ago
It always comes out of the mouth of no-coders, vibe-coders and people who misunderstood coding.
It's like saying 'Lawyers write documents!' for their job ... no, that's just an artifact.
Architecture, Systems, State, Integration, Algorithms, Pipelines, Platforms, Ops, Design, Communicating with other Eng, Working on a Team, Understanding Product/Product Marketing Requirements ... and of which the 'code' is just a small bit of the written part.
Honestly ...
Code, is written in a language. Language is opinionated. Things written in that language are also opinionated. LLMs often have horrible opinions.
In order to reduce the complexity of eventually coding something, you use modeling and code probes to validate the business model and then write the code.
This has been around since the days of batch programming and evolved through domain driven design principles.
The reality is the business can’t see that so they don’t invest in it and have no patience for it.
Agile wasn’t embraced because it was better. It was embraced because it was cheaper and faster.
Planning and modeling are the levers of complexity.
Structure, design patterns, software architecture, systems engineering, optimization (not of the LoC but the system), data accessibility (in structure as in implementation like indexes etc)... those are the hard ones that require engineers to design and implement properly.
And that’s only going to be more as it’s not the 20 medior SWEs that throw together a full stack application in two days but the untangling of AI slop as the architecture wasn’t built for hundreds of concurrent users
I still read TAOCP occasionally as a hobby. The combinatorial algorithms and data structures are just fascinating. That said, this argument seems irrelevant to majority of the programming jobs. I doubt most engineers will ever need to implement anything mentioned in TAOCP, thanks for all kinds of powerful abstractions.
Shipping a working service or product matters and theres a lot of ways you can get there. The upside of good code is usually in maintenance and extensibility but theres a limit to how much those matter in the grand scheme.
That doesn't make it inherently easy, but it is the easiest part to automate.
A modern LLM is perfectly capable of maintaining decent code quality and architecture (provided you ask for it) up to a few thousand lines of code, but after that it very quickly loses the plot if you're not designing your documentation right and keeping a hand on the architectural tiller.
Architecture is about staving off chaos for as long as possible given the maximum functionality you expect it to achieve. That's hard enough for a human, with a deep understanding of your business, to do. Architectures that endure is a hard problem, dwarfing the difficulty of writing the actual code. Choosing what product to build is also a hard problem if you expect to meet any success. What it does, what it specifically doesn't do. Sounds easy on paper, and if all you're doing is Sunday prototypes it feels almost trivial. But once you're doing a real product with real consumers, it's a very different thing.