Posted by senko 1 day ago
"Code was never the hard part" in my opinion is more about the actual writing and making it compile and fit together. The hard part is one level above: figuring what to write, not only on the architectural level, but also implicitly during the writing itself. LLMs tackle a part of it, but not the whole problem, thus "the code was never the hard part" is about "how to make the already-present plan compile", not "knowing the system underneath is not hard actually"
compare with something automotive: the process for changing an intake gasket and installing a turbo is roughly the same, but if you screw up the compression on your engine in the second case, you ruin everything - saying "installing was never the hard part" means that installation is the final step, however someone still might be upset, because he or she implicitly thinks "installing" means more than just the physical process of bolting the intake on.
Is it an insult to all mechanics to say that "installing stuff was never the hard part"? No, because context here naturally points to a narrow definition which excludes cases requiring engineering, i.e. adding a part in a tight space, drilling the block to make a new auxilliary installed, machining a bracket etc
Real engineering has always been about talking with the multiple parties, organising architecture meetings, taking down requirements, if no infra team available setup the whole CI/CD pipeline, and so on.
Programming could be done in whatever language, or low code/no code tool, solved the business problem.
Now what will remain to humans is a big question.
https://www.nair.sh/guides-and-opinions/communicating-your-e...
Then naturally seniority teaches office politics, and what to actually invest time on.
This is more of a rant from my side, but I believe "Coding is the easy part, Programming and Designing an efficient system" is where true grasp of Programming is checked.
The way I would define it, coding is to software development as cutting is to open heart surgery. It is the final part of the process after 99% of the decision making and application of experience has already been done. There is still some craft or "surgical technique" to it, but the hard part was surely everything that came before (requirements, architecture, design, etc, etc) that got you to the point where all you had left was a bunch of classes and fully specced out modules (and implied test cases) to code up.
I feel that some people, maybe including a lot of the people working at the AI companies, think that the software development job mostly consists of "coding", and perhaps in machine learning (not much code in an LLM!) it mostly does, but if you are a developer and define coding as the final "sit down and implement it" phase, then surely that is the easy part.
Probably is a question of terms: there is two things: -design- and -coding- (but could be anything as: building, drilling, turning, traveling..) so to make things without a good design is the regal way to problems, many times is a problem left by others, and in a world more and more complex and fast-changing can only be more and more worst. Hard to say what part is really the hardest, but starting with a bad design is no good.
And now probably LLM will solve some problems, but for sure these tech will create more and more new ones.
Edit: Although the current job market is heavily distorted, there used to be distinction b/w developer and engineer in the past. As the mainstream development model shifts from waterfall to iterative models, it became necessary for everyone to be engineering-capable -- only up to a certain point. So, every developer now carries a certain amount of engineering knowledge, but now they started to misunderstand and underestimate the value of engineering, and this is what you would get at the very end.
Currently I'm reading the Software Wasteland and The Data-Centric Revolution books by software industry veteran Dave McComb [2],[3].
The books also addressed AI aspects but since it's published around 2018 before LLM, the information probably a bit dated on the issues. Hopefully the third book sequel in the trilogy can cover that aspect very well.
Some key takeaways from [2].
1) Almost all Enterprise Information Systems now cost vastly more to implement than they should
2) Most of the excess cost can be attributed to complexity
3) When you have hundreds or thousands of complex applications, you are completely stuck in what we call the Application Centric Quagmire
4) More large firms spend most of their IT budget on integration (without achieving more than ad hoc interfaces)
5) The fix is to become truly data-centric, where an integrated core model precedes the addition of functionality
References:
[1] A Tale of Two Projects:
https://www.semanticarts.com/a-tale-of-two-projects-healthca...
[2] Q&A on the Book Software Wasteland:
https://www.infoq.com/articles/book-review-software-wastelan...
[3] Software Wasteland and The Data-Centric Revolution:
I'm not sure I follow the logic here. Wouldn't this mean that product design is hard?
That said, yeah, coding is hard. I suspect that those who claim that coding is not hard are high-level ICs. For better or for worse, as the size of a company grows and as one's career progresses, engineers will often tranform to professional box drawers, expert meeting goers, seasoned report writers, fierce gatekeepers...Anything but deep coders. Over time, they lose touch of the actual building and think that any code can be handled by people under them.
People like Jeff Dean, who still codes and optimizes things like TPU kernel code, is very rare.