2024-03-21 Thoughts on the Future of Software Development

Large Language Models (LLMs) caused a huge stir in the creative circles when they were able to generate images, text and code. Initially the results were quite hilarious with drawings of people with messed up hands, hallucinating incorrect facts and code.

But things are slowly and steadily getting better.

Before the advent of these models, the main argument against automating these tasks was that machines can’t think creatively.

Now this argument gets weaker by the day. Where do we go from here?

The downside of trying to think about some vague problem like predicting future is that your thoughts get muddled and it’s hard to think clearly.

So we need to come up with frameworks and analogies for us to lean on.

Framework: Software Development Capability Level

Software development is not just about writing code .

The image people have of programmers is a person sitting in a dark room looking at computers and furiously typing code. Though coding all day sounds very appealing, most of software development time is spent on communicating with other people or other admin work instead of just writing code:

  • Gathering requirements from business users

  • Refining these requirements so they can be modeled as code

  • Talking with other team members like Designers and Product Managers to visualize the solution and coming up with a plan of attack

  • Working with other developers to come up with a technical design and refining it

  • Setting up infrastructure, configuration, boilerplate etc.

  • Actually writing some code

  • Debugging, trying to understand other people’s code, writing documentation, etc.

  • Deploying to production

  • Firefighting production issues

  • … and so many more tasks

So saying things like “AI will replace Developers” requires “AI” to be competent in all the above tasks and not just writing code.

So saying things like “AI will replace Developers” requires “AI” to be competent in all the above tasks and not just writing code.

But looking at the list above, it looks like some of these tasks can also be automated in future but not yet. How do we frame this thought ?