since the rise of LLM models and agentic workflows, a lot of business-grounded takes were predicting that software engineering is now obsolete and that we no longer need software engineers to build software systems.. I feel like I have a good take on this opinion that I want to share today.
rather than starting from 2022 when ChatGPT was released or even 2017 when "Attention is all you need" was published, I want to start my story on the 60s of the last century, when the craft of software engineering started to get popular.
back then, computation was a very primitive and immature field both at the hardware and software level, there was no academically grounded and rigorous framework on how to write good software or even a definition of what "good" software is?
this led to what we now call "the software crisis", a lot of software systems that are build on a very messy foundation that gets worse and worse everyday and whenever they faced a new bug they just patched it rather than solving the core problems: unstructured and unmanaged code
this crisis bloated software systems and made them horribly slow and inefficient, unmaintainable, unreadable and every bad trait of a software system you could imagine.
then, what we now call the pioneers of computer science (Dijkstra, Donald Knuth, Lamport, Hoare. etc...) made a lot of revolution that shaped our current reality of technology and software engineering, they invented and founded structured programming, formal logic, distributed systems, algorithm analysis, OOP, etc..
these revolutions combined together shaped the rigorous, academic foundation we now study in universities and defined SDLC (software development lifecycle).
I believe that we live in now is software crisis v2, but this time it's not by the primitiveness of the field but rather by the massive amounts of code LLMs produce by a single prompt that no human can review and audit, it (in appearance) works, but no one know how and why!!
if we wanted to rigorously evaluate LLMs's code, we'll see a massive crap of unstructured code, leaky abstractions (actually, nonsense abstractions), hacks built on top of each others to fix bugs instead of structurally solving them... it looks very cool from a business perspective, but it's pure madness for an engineer!
I think we're now in a transition phase in our field, and that we need new pioneers like Dijkstra and the others that'll define what software engineering even is in the era of AI and how it is done reliability as an engineering discipline.
it'll take a lot of time to reach a stable stage when we really comprehend LLMs and understand how we can effectively, reliabely and efficiently use them.
No comments:
Post a Comment
any inappropriate comments will be deleted and the commenter will get blocked permanently unless I'm free to fuck him.