Artificial Intelligence (AI) is here and boy has it spread like a wildfire over the last few years. AI is not just in the software people use, it’s practically stapled to almost every tech headlines these days. I sometimes wonder how people separate actual substance/signal from the noise around AI. There is lot to unravel with AI, but as a software engineer I will keep this post around the impact AI has had in our field which has been quite remarkable. Needless to mention there is also a lot of noise which I will try to address as well.

First things first, why is there so much discussion, so many AI coding tools, startups surround automating software engineering ? Well, there are many reasons and below are some of them,

  • As it turns out, a lot of modern software is a bunch of text (code) writeen by humans (well, at least until now). And Large Language Models (LLMs) have become really good at generating various forms of text including code. I am not saying software engineering is just about generating code (more on that later), but that’s a big part of it.

  • Software Is Eating The World: World (Countries, Companies) is in need of enormous software in order to stay competent (and in many cases relevant). It’s no surprise that software companies are valued in the trillions—digital empires are booming, and there’s no slowdown in sight. Now imagine even if a small percentage of it can be taken over by AI. 1 2

The Journey So Far

Code Completion

I remember from early days of using ChatGPT to generate code and then using Github Copilot, it was quite an interesting phase. Of course the quality of code with the initial models were mediocre at best, as the models got better, the quality of code improved quite significantly. This was the initial wow moment and definetly felt like AI was indeed helping with writing code with a few lines of clear instructions provided in english. But that basically was all it could do, i.e. churn out code without a lot of context. This was still useful and removed some drudgery work from engineers. I have had a decent experience with auto code completion, although code generated by the copilot required thorough review and testing.

Edit Mode

I am using Edit mode for the lack of better term. But this was an advancement to just churning out code based on simple instructions. You could provide context (more on this later) to the LLM, so the code generated would understand the surrounding context and would generate more meaninful code. For e.g. let’s say I have some existing code and I want to generate unit tests for the same, or I want to generate documentation for existing code, or I want to generate code in a certain style based on the current repostory etc. This definetly felt like an improvement from just code completion and AI was already getting helpful in improving existing codebases along with generating new software. And also because now it had the context, it was helpful in understanding complex codebases where once could ask copilot to summarize, ask questions etc. Personally, I did use some of the features in production codebases to improve test coverage, documentation in addition generating code. Code quality felt better in this phase (as compared to previous), yet it still required scrutiny and proper test coverage. I used the code generation aspect in limited capacity, where I would give specific instructions with examples where possible and in some cases provide the definition of function in terms of parameters etc. vs asking the LLM to generate entire classes/ files. I got better results with my approach which also took some inspiration from Simon Willison’s blog.

Agent Mode

Enter the agent mode and this feels like a whole new beast. So far, we had only seen the code generation ability of the LLMs, and although definition of agent mode is different depending on who you ask, in general this felt like the next phase where LLMs could not only meaningfully generate/ explain code, but now could could use other tools/scripts to solve more complex tasks. For e.g., create/ scaffold new APIs, write & execute tests, find and fix issues, even generate complete application etc. Other important thing to note here is, not only the tools such as copilot, claude code are getting better in generating software, the underlying LLM models are also getting better in terms of quality of inference which is great! I will share more detailed thoughts based on my experience with new way of creating software with agentic AI.

Overall

Overall, I must say it’s been a great experience and even though there is a lot of hype & false promises surrounding this topic, it does feel like in general we are heading in the right direction when it comes to software engineering. Here are some thoughts,

  • I do feel a lot more productive when it comes to using AI in software engineering. And that is based on my experience so far using these AI tools both professionaly and personally. I also think (if it hasn’t already), AI is going to transform the field of software engineering.

  • I do feel a lot comfortable these days using AI to generate more of the code, generate unit tests, integration tests, write documentation etc. I do want to add that it’s very important that the content that is generated by AI is thorougly verified.

  • I try to be methodical in using these tools for serious work. For e.g. when it comes to code generation, I provide releveant context, descriptive comments, documentation, in some cases blueprint (pseudo code), examples etc so I get better quality. One of the challenges here (specially with agents) is letting AI do too much work (modifying too many files or generate too much code) where it becomes too much for me to review and cleanup. That brings to my next point, that generated code still requires thorough review. At the core, it’s still the LLMs that is generating text. While LLMs are really good at generating semantically meaningful text, it’s still inferenced text based on data that it is trained on (which is largely internet data).

  • I also try to use agents iteratively and not use features such as auto-save (or YOLO) for serious work and I have had satisfying results from this approach. Using agent to review what’s it written as a first pass, also specifically giving instructions (prompt) to follow certain rules, break down large tasks into phases etc. helps. For e.g. once I was working on a large file and asked agent to refactor something, it deleted a lot of code (which was scary!), so now I specifically give instruction to not delete code and so on.

  • I will write a more in depth article about some of these topics, but two really important skills one’s got to develop with using these tools are prompt-engineering and context-engineering.

  • On YOLO mode - while YOLO mode is super fun, I think it’s best suited for fun/ toy projects. For e.g. building a full stack app with a bunch of features with basically a large instructions document and let agent go at it doing all kind of auto-save, delete files, run scripts etc. So deftinelty be careful while using this.

  • I feel one’s got to learn a way to work with these tools and the techniques that work for me may not work for someone else.

  • Software engineering becoming more accessible - I think this is a great win. Today if you have an idea, bringing that idea to life is much more achievable, thanks to AI and this just doesn’t apply to software. “Solopreneur” is already the trend word! Hoping to see some great ideas come to life, even solve real world problems.

What Next

Impact of AI in software engineering has been huge and what’s crazy is it still feels like we are just getting started. I may be biased, but I can’t think of any other field with such an impact or may be we software engineers are the early adopters to have embraced AI with both hands, not sure. No wonder companies (big & small techs alike) are spending so much time, money & energy into creating AI tools for software engineering. It’s been quite a journey so far, at times even overwhelming given how quickly things are changing. But, as with any technology trend, things will calm down, the dust will settle, and the outliers will quietly vanish.

Here is what I think we are headed next,

  • World will see a lot of software - I read somewhere that SaaS is mostly non-existent in some of the countries because it’s cheaper for companies to make their own software due to cheap labor than paying someone else. While I don’t think that will be largely true for rest of the world, there may be some use case where creating your own sofware instead of paying for one might be cost efficient for companies. For e.g. think of a chat application. Fairly easy to build (now with AI given how many chat applications there are), low risk. I am not saying all companies will now build their own software, but it may make sense economically for some.

  • Proprietary vs Open source software - I am a big fan of open source software. We were already seeing big tech companies promoting, supporting, cotributing to open source. I think the trend will get even stronger with AI in software engineering. We will likely see more open source software as it becomes cheaper creating software. And moreover it will benefit all parties involved (including AI agents!)

  • Proprietary LLM models - While there was and to some extent still is a lot of excitment around open source LLM models, I get a feeling, industry as a whole is moving towards proprietary LLM models. Not thrilled about this trend — feels like we’re handing all the cards to a few giants, and we know how that game is played. I hope I turn out to be wrong on this.

  • Programming Languages - Although not immediately, but as more & more software will be written by AI, I wonder if programming language features will be developed keeping AI as the primary user. Same applies for all the tooling surrounding software such as build tools, packaging tools, CI/CD pipelines