Smoll AI ramble
Are we being gaslit about Software Development? Was writing the code the biggest bottleneck? Perhaps the AI hype and adoption has made us forget about what is Software Development, perhaps I should ask ChatGPT…
Is writing code the biggest bottleneck?
Ask ChatGPT I did and here is the answer:
Writing code is rarely the main bottleneck in software development; it usually represents only a small fraction of the overall effort. The real challenges come from understanding and clarifying requirements, making sound architectural decisions, coordinating across teams, ensuring quality through testing, and dealing with dependencies, technical debt, and deployment processes. In fact, much of the time is spent not on typing new code but on debugging, refactoring, reviewing, and keeping systems running smoothly. In other words, the hardest part of software development isn’t writing code quickly—it’s turning complex, evolving human needs into reliable, maintainable, and scalable software. - ChatGPT
You can stop reading now, as the rest of the blog is the same as the answer given by ChatGPT but longer.
So even the tool that is 1 year past, 6 months away from replacing Software Engineers according to AI boosters “thinks” that writing code isn’t the bottleneck generally. So then why such emphasis on producing code?
Just wanted to throw it out there that I am not an AI doomer nor a booster, rather I am interested in the actual use cases and see it as another tool in my toolbox. This is all within the context of Software Development, I don’t want AI to do art, music etc
Maybe this might sound anecdotal or perhaps showcases my lack of experience in working in various environments but so far whether it has been small or big organisations what I found being the bottleneck it rarely is writing the code! Instead its everything around it, otherwise know as the Software Development Life Cycle, we all go through some phase of gather understanding of what needs to be done (even ask why and whether do we need it!), think about how we would design it or fit it into our current software estate, embark on implementing it, test it and ensure it integrates well then finally maintain it. I would like to think that we are all working on very novel problems that rarely anyone has come across but it is safe to say that most software projects are not novel and aren’t pushing the current boundaries of software, if you do then lucky you! So with that it means most projects use familiar patterns and trying to solve some business problem. You will be surprised how far you can go with a CRUD app, the point here is that when coding in such scenarios the complexity didn’t come from the code itself but whether are we building the right thing? Are we making it easier for us to maintain it? Will it scale or work within the constraints we set it? Before even writing code we have to think and assess whether writing code is worth our time! So with experience and an understanding of software development principles we built an intuition to guide us through those decisions, what intuition does the LLM have?
Sure if we use similar patterns and not everything we do is novel isn’t that what AI is good for!?! Well I guess? We are still early on and we see even now that most LLMs currently rely on tooling and infrastructure to be in place for them to be effective (MCP, RAG, .md files etc) and not hallucinate. I will say that LLMs have been helpful in producing code, not necessarily just the code they generate but how they can act as a rubber duck or a pair programmer who is there to bounce some ideas off to, I know I have used them for those reasons but also knew enough to recognise the limits of the LLMs knowledge. Again another tool in my toolbox, not a replacement. What I would like to see for LLMs to do is automate the boring stuff. What do I mean by that?
Here is a list of ideas:
- Help in on-boarding a new team member (Ironically relies on good docs)
- Generate documentation from code (I am sure many are currently doing this, also how bad will this affect the above?)
- Better tooling around debugging and testing (Improve troubleshooting and diagnostics)
- Give insights using the observability and monitoring data available for my services. (Hey AI are my services about to explode?)
The list can go on but these were few in my head, some already exist some need tooling/infrastructure around them but you get the idea, being a productive developer was never about just writing code fast (although that helps up to a certain point!), making the software development life cycle as short as possible will help not only to deliver faster but with the new AI powered tools unlock a whole new tooling and infrastructure (perhaps even workflows).
Don’t forget, just another tool in your toolbox.