Reflecting on AI Dev Tools in 2024
The last couple of years have been a magical time for AI fans, with new tools, AI models, services, or apps popping up every other week. As someone who was very skeptical at the start, I thought it would be interesting to reflect on how AI has changed my workflow and review what I’m currently using.
A quick disclaimer: I’m not a fan of the term “AI” since nothing we have right now deserves to be called “artificial intelligence.” These are just machine learning data models. But for the sake of consistency, I will refer to them as “AI” since it is now the accepted way to refer to machine learning.
Coding
I recently moved off GitHub’s Copilot and adopted Cursor with the Claude data model, and I really enjoy the new workflow.
With Copilot, my usage was mostly limited to the code auto-complete feature, which helped my coding a little. I would switch between turning it on and off because it was slow to respond to my changes and often disrupted my workflow.
Cursor has been a big enough improvement that I decided to pay the monthly subscription. The difference isn’t world-shattering, but it is significant enough for someone like me—who hates subscriptions—to bite the bullet. For one, the Claude model is much better than Copilot, which is based on ChatGPT. And secondly, Cursor’s AI editor-level features are much more intuitive to use than VS Code.
After using Cursor + Claude for two weeks, I noticed myself reaching out for AI assistance more frequently, and my productivity has gone up as a result. I would even dare to say my developer experience has improved because boring, repetitive tasks now feel less of a drag.
Problem Solving
When I’m stuck on an issue now, I open up the side panel, add the right context (tag files, etc.), and see what Claude comes up with. There have definitely been times when it was able to give me a solution right away, although that is rare. Even if it doesn’t give me the answer, I find that the back-and-forth conversation makes the debugging process more bearable.
Maybe I’m a bit old-school, but I still prefer to tackle the problem myself and only reach for AI’s help when I feel like I’m not making any progress. I want to maintain and practice my problem-solving abilities—both to keep myself employed and because this is why I do this for a living.
Just a side note: I still Google things most of the time. Especially for simple questions, Google can often give me an answer in a few seconds (search + click a couple of links) faster than the generative AI can. Maybe I just hate waiting for the text to be generated and want to feel like I’m doing something, but I find using Google is still less taxing when I’m in the zone.
Rubber Ducking
As software engineers, we all know too well the feeling of being stuck on a problem for hours, if not days, only to have someone jump on a call and find the solution before we finish explaining the problem. This is known as rubber ducking or rubber duck debugging.
It’s very common to get so deep into a problem that we lose sight of the bigger picture and forget to step back. This is why many people swear by pair programming. Personally, I prefer to pair-program intentionally; blindly pairing on all tasks is a waste of engineering time. It’s often frustrating both when I’m in the zone and the constant interruptions cause extra context switching, and when I need help but can’t find anyone to pair with. AI solves this problem.
When using Claude to debug issues, it’s the perfect rubber duck. It has no context, so I have to explain the problem. And while explaining the problem, I get a chance to reset and look at the issue again more holistically.
Code Complete
This is probably what most people think of when AI coding comes up. I still use it, and it’s nice when it helps me finish writing a function or a line. It would be a lie to ignore the time saved here, but for me, this isn’t the most useful part, which is why I would turn off Copilot sometimes out of frustration. Personally, I find the ability to have a conversation about a problem, with the AI understanding the context, much more useful.
Writing
For software engineers, written communication is often part of the job, especially as they move up in seniority. This could be writing documentation for other engineers, communicating architecture or design changes to wider engineering communities, presenting technical analysis to non-technical stakeholders, or simply writing a good PR description. Whatever the scenario, my experience has been that the majority of developers lack strong writing skills (myself included). I’ve seen some beautifully written documents from senior engineers I’ve worked with in the past, but I wouldn’t expect that level of writing from everyone.
Polish And Refine Text
One thing I’ve noticed myself doing more over the last year or so is leaning on ChatGPT to polish what I’ve written. I’ll brain dump what I want to say, then paste it into ChatGPT and ask it to consolidate and reword it. The result is often better than what I had initially. It does have a tendency to reword things in a more formal or even academic tone, which then requires further refinement, or I’ll just manually update them myself if there isn’t much to change.
Generating Ideas
One of the things I struggle with in writing is getting started. When preparing an analysis document, for example, there might be several angles to tackle the topic. In this situation, I write down some key points I want to cover, then use ChatGPT to generate a skeleton document and see what points I might have missed. Once I have a list of points to cover, it becomes easier to structure and present them.
Summarising Text
I’ve started using ChatGPT to summarise text more recently. That said, I still prefer to read through the original text. It’s the same reason I read books instead of book summaries—I find a lot of valuable information is lost in the summarisation process. Maybe I’ll change my mind as AI models improve, but for now, I’ll keep this usage to a minimum.
Final Words
There has been a lot of hype around AI in recent years—just look at all the money thrown at AI startups. Not surprisingly, there has also been fear around AI taking over jobs, especially software engineering jobs. I have no doubt that as AI models get better, the number of software engineering jobs will plateau and maybe even slowly decrease over time.
As I mentioned at the start of the article, “AI” has no intelligence; these are just machine learning models. So no matter how good they become, they won’t directly “replace” a skilled engineer. Even if they could, in the short to medium term, the compute costs would be so high that companies might as well hire a person to do the job—although this could change as AI chips become more powerful. In the near future, AI tools will likely improve engineers’ efficiency, so fewer team members will be needed to accomplish the same amount of work. Junior engineers will suffer most during this transition, as we’re already seeing.
I don’t have a crystal ball, so I am not sure which direction things will go in the future. But at least in the short term, I’d advise all engineers to start leveraging these AI tools and get comfortable adopting them into their daily workflows to improve efficiency. From my experience, I’d estimate that using AI tools like ChatGPT and Claude with Cursor has increased my work efficiency by more than 20%.
I wrote an article called A web dev engineer's review: Learning Swift using ChatGPT back in April 2023. It might be an interesting read also.
PS: I only used AI to fix some grammar mistakes in this article.