The Evolution of Craft: How I Embraced AI in Software Development
One Sunday morning after a church service I was enjoying a cup of tea, cake and warm conversations with fellow parishioners. One of the conversations with a particular individual shifted to work and I learned that he works in the energy sector. More specifically, he is an engineering manager for an organization specializing in renewables where he oversees a number of solar arrays and other supporting infrastructure crucial for operational efficiency.
He told me he was actively recruiting to in-source the development of their software systems in an effort to reduce costs. I recommended that he seek individuals who have experience with AI code assistants or at least are open to working with them, citing my own significant productivity gains with such tools.
I know some may find it paradoxical that someone who has earned a living writing code for years would now advocate for tools widely predicted to render such a profession obsolete in the near future. And, to be fair, I was initially quite skeptical of the tools myself. But after some time, I’ve grown to embrace them, and have found great value in using them in my everyday work life.
My Initial Skepticism
My initial skepticism stemmed from having witnessed so many technology hype cycles that delivered little to nothing, so I was easily dismissive of the resurgence of AI. There were early claims of productivity gains of up to 50%. However, reports have since challenged that claim and some tests have revealed a more realistic picture of 10-15%.
I also had a deeper concern, one that went far beyond being made redundant by AI. It was a concern and, quite frankly, a fear about the potential loss of a cherished craft that I and many others have devoted their time to perfecting, only to have it suddenly taken over by a machine.
Becoming Curious
To work through my emotions, I began exploring hobby projects. Many software engineers engage in such endeavors for a myriad of reasons, including addressing an area not covered by our professional work or with the grand ambition of pursuing them full-time.
While I find developer work enjoyable most of the time, there are aspects of it that can be drudgery. What I find most dull are the routine tasks that I’m required to complete before I get to the interesting parts. Nothing can put out my fire of excitement over an idea faster than this sort of plodding.
To help combat the drudgery, I decided to try “vibe coding”, which was one of the many concepts that initially elicited a lot of skepticism from me. I guess my initial reaction wasn’t to vibe with it, but then, one fateful Tuesday evening my whole world changed.
With some free time on my hands, I downloaded one of the tools, not having any expectations and thinking that I would probably be done with it in a few minutes. But several hours later, I was having an experience I had not expected. Usually, I’m dozing off at that point in the evening, but I was having the opposite experience. I was incredibly alert and energetic. I felt like I could go on for another couple of hours. I wondered, “What is happening to me?” And then it hit me; what I was experiencing was excitement! Maybe that’s how I had felt when I wrote my first “Hello world” program.
The experience made me realize how much I had been yearning for a true paradigm shift in the industry, something beyond the familiar cycle of iterating on established ideas. What I experienced that Tuesday evening was something genuinely revolutionary.
Embracing AI Evolution
You may be asking, “Do you not dread the future of coding in the age of AI?” On the contrary, I’m looking forward to the possibilities. I’m a builder at heart. I take great pleasure in the process — the careful thought, planning, and execution, all to finally have the product in the hands of someone for their delight and use. The ability to execute faster because of these tools is a welcome development in my work.
I truly believe that AI tools at the hands of an already capable engineer are a superpower. For example, AI can help address the type of concerns my fellow parishioner mentioned to me, particularly regarding slow turnaround times for features and defect resolution. They offer substantial benefits for engineers, including immediate code insights, refactoring suggestions, and test name generation from untested components. However, their use demands careful oversight due to inherent imperfections. AI assistants can be overly zealous, generating unrequested artifacts or fabricating non-existent ones during refactoring, which necessitates thorough output review. Despite these drawbacks, the advantages significantly outweigh the disadvantages.
As engineers, our roles are evolving. With these new and evolving AI tools, we have the opportunity to tackle more intriguing problems. I, for one, say, "bring it on."
Engineering Use-Cases for AI Tools
While there are numerous areas where I’ve found value with these technologies, I want to highlight my top three.
1. Generating Boilerplate Code
My experience with AI assistants has shown me that, with a few well-crafted instructions, it’s easy to generate a functional starter application in a short time frame. My preferred method involves providing a thorough description of my objective and then prompting the assistant to create an implementation document. This document then serves as a constant reference point, allowing me to steer the assistant back on track if it deviates.
- Here's a breakdown of my process: Detailed Task Description and Implementation Plan: I begin by giving the assistant a comprehensive overview of the task I want to achieve. I then instruct it to generate a markdown document outlining all the necessary implementation steps. I carefully review and refine this document as needed.
- Phased Implementation: The assistant I primarily use tends to divide implementations into distinct phases with subsections. I guide the assistant to implement each phase sequentially (e.g., "Please implement Phase 1").
- Regular Review and Course Correction: As noted previously, assistants can sometimes be overly enthusiastic and produce unintended artifacts. To counteract this, I periodically prompt the assistant to re-read the implementation document and review the progress of a specific phase.
- Thorough Verification: It is crucial to scrutinize the assistant's output with the same rigor you would apply to any human developer's work. Never blindly assume that the generated code is accurate or meets expectations.
2. A Superior Alternative to Web Searching
Before AI assistants, I spent a lot of time searching the web for a solution to a development problem. Fortunately, in most cases, assistants can quickly identify these types of problems and provide a detailed explanation for how to solve them.
In terms of value, this one is probably at the top of my list.
3. Creating Commit Messages
Another significant benefit to AI assistants is in generating informative commit messages, which is particularly helpful after I've made changes to multiple files. The assistant creates a well-worded list of changes that I made for my review. I can then use this list as a starting point, modifying it to fit my preferences before creating a commit message that summarizes my changes, saving me time.
An Evolving Craft
Despite my initial skepticism, AI assistants have become one of my favorite tools to use when developing software. They simplify the routine and “boring” parts of my work, giving me more time to do the things I enjoy most. Taking the time to experiment and adopt new technologies has changed everything about my work and I wouldn’t have it any other way.
As you work to embrace the evolving landscape of software development in your own work, take time to experiment with AI tools. Invest in training and resources that equip you and your team members with the skills to leverage these tools effectively. Explore how integrating AI-powered development tools can significantly enhance your team’s productivity and accelerate project delivery. By doing so, you’ll be better prepared to foster innovation and efficiency within your organization.
If you’re hesitant to embrace AI in software development, contact us for a consultation and we can help you find the best way to adopt these transformative technologies into your workflows.
Already embraced AI? Share your experiences with AI in software development! Join the conversation and discuss how these tools are shaping the future of the industry.