A Better Hammer?

Darko Bozhinovski - Oct 2 - - Dev Community

It hasn't replaced us. Not yet. But I'm finding ways to make my work easier and faster. Yes, I'm talking about AI.

We can probably agree that the “untimely death” of the software development profession has, in fact, been grossly exaggerated—no wonder - the hype cycle's gonna hype cycle. I still write software, by every definition of the concept imaginable. I'm using an editor, CLI, and searching through docs. But what changed is that I'm now using another tool to help me out. AI—often a glorified intellisense, sometimes a contextual snippet machine, and infrequently a decent debugger.

Things have improved since we first considered integrating an LLM into an IDE (or text editor), but, is it good enough to fully replace a developer? Not by a long shot. This approach has many nuances and caveats, so let's dig in.

...And along came the influencers

Instead of writing on how influencers made it worse, I can leave this pic and call it a day:

The AI hype replacing the Crypto hype

Sarcasm aside, if I see one more post on how AI will replace me tomorrow, I swear... Here's what's NOT going to happen:

  • You won't just be replaced with AI (no matter what the hottest new AI startup claims)
  • AI won't fully write code instead of you (yep, that includes agents. Fight me.)

To be honest, I looked forward to AI being able to migrate a Next 11 app over to 14 by itself. I'm talking about an app with a couple tens of thousands of lines of (not particularly pretty) code. To date, it hasn't happened, and I don't think it will happen for a while.

That begs the question, - is it going to? Or better yet, will it replace us as software developers in our lifetimes?

The grossly exaggerated death of the software development profession

I think statements that include "replacing" developers or "killing the entire profession" are just sensational headlines. I don't think software development, as a craft, trade, or whatever you want to call it, is going anywhere, but it will change.

Before elaborating further, let me ask you a few questions - has the invention of CAD software replaced engineers and architects? Not really, but it did make them more efficient. Has the invention of tractors replaced farmers? You can tell where I'm going with this. My thesis is - AI will make us more efficient, but much like tractors haven't replaced farmers, AI, as we currently know it will not replace developers. Barring an AGI breakthrough, I don't think anyone's getting replaced with anything. Quite frankly, LLMs feel like they have peaked (I might have to eat those words, but we'll see), given the decreasing hype in the last few months.

However, it will change the way we work—in fact, I'd say it already has.

A new way of interacting with code

Crossroads

Up until a few weeks ago, I was a content user of VSCode. I like that it's FOSS and has a huge ecosystem, and I was okay with paying for Copilot. Additionally, it works on Linux, so I can't complain. That setup was already good—at the very least, it had a better autocomplete than what we previously had. Better autocomplete = more time saved, which in turn means more time available for other pursuits.

It all changed when I decided to sit in on an engineering weekly we had at SuperTokens one day. I'm not a part of the team, but I have to be up to date with what they do, so I listen in on their weeklies when I can. The exciting thing discussed there was https://cursor.sh. Rishabh, our CTO, was going on about how good it was making things more productive, so I thought, fine, I'll bite. It wasn't the first time I was told Cursor was really good. I have a friend who's been going on about Cursor for months (hi Vlad), and I was kinda skeptical. So, Vlad, you were right. Cursor is… well, pretty impressive.

From the get-go, it was obvious that it's different from how VSCode works with AI. While both aim to enhance productivity, Cursor takes several steps further in its AI features:

  1. Multi-line Auto-completions:
    Unlike VSCode's Copilot, which typically offers single-line suggestions, Cursor provides more extensive multi-line auto-completions. This feature can significantly speed up coding by suggesting larger blocks of relevant code.

  2. Contextual Awareness:
    Cursor's AI seems to have a deeper understanding of the project context. It considers not just the current file, but also related files and project structure, leading to what feels like more accurate and relevant suggestions.

  3. Enhanced Chat Functionality:
    The chat feature in Cursor feels more robust compared to Copilot in VSCode. It can handle more complex queries, provide explanations, and even assist with debugging.

  4. Composer Mode:While I haven't had much luck with it, Cursor's Composer mode is a unique feature not present in VSCode. It aims to assist with project-wide tasks such as:

    • Generating entire files or file structures
    • Performing large-scale refactoring
    • Creating boilerplate code for new projects

What I had luck with, however, was having Cursors generate a front-end app for an invoice generation CLI I had. The CLI itself is a fairly simple idea:

  • You feed it JSON.
  • You run a script.
  • It outputs nicely formatted PDFs to be used as invoices (source here).

To test it's merit, I did two experiments:

  1. Interactive CLI—Basically, I asked Cursor to make me an interactive CLI from the really simple one in which I wrote JSON files by hand. It managed to do it pretty smoothly, with a single intervention from my part—styles, which, for some reason, it omitted. Otherwise, my utility suddenly became one that you can run in the CLI, input your data, and get a PDF on the other end. It is certainly an improvement over the initial manual JSON version.
  2. Web App - after that, I asked Cursor to make me a web app based on the CLI. It started off by generating a non-denominational React app, but I had something different in mind - I asked it to make it using Astro and SolidJS instead. While the end result wasn't turnkey, it was really close to being usable. I may have gotten lucky, but I'll repeat the experiment several times to determine whether the experience is consistent. Either way, it was pretty impressive - and stay tuned, that invoicing app is going FOSS very soon 😉

But Cursor itself aside, these interactions made me realize something else—I'm still creating software. With some more advanced tooling, generated code, and, overall, a better hammer at my disposal—or perhaps a multi-tool of some kind?

Is AI a better hammer? Or a new tool entirely?

Question mark neon sign

In its current state? absolutely. The more I think about it, the more I realize that "hammer" might be a misnomer. It's more of a multi-tool, a Swiss army knife of sorts. It helps you with:

  • Better auto-completions
  • Contextual hints
  • Scaffolding things better
  • Debugging stuff
  • Being a sounding board for your ideas
  • ...

So, yes, it's a smart tool that helps with multiple modalities of your work. More importantly, it affects how we interact with code. We used to write stuff by hand, now, hitting tab a few times amounts to the same result. It's more efficient, but given the amount of weird or downright wrong suggestions I've had, we're very far from the tool replacing the operator.

But here's the kicker - you still have to understand what's going on to make good use of even the smartest tool. LLMs, given they're primarily statistical machines, can make mistakes, and hallucinate... it's still up to the operator to fix that.

Can a tool fully replace the operator?

Following the examples throughout history, it certainly hasn't been the rule. Better tools reduce the amount of people needed to perform a task. Farmers, for one, still exist, and we've had huge technological advancements in agriculture since we started growing things from the ground.

Starting from that point of view, no - AI, as a tool, won't replace programmers. But, given AI's theorized potential, we can't say for sure. Time will tell 😁

Instead of a takeaway

As much as AI is a tool, code is, too. As software professionals, our primary function is solving problems via automation. If a better tool came along, it feels fairly irrational to ignore it in the name of preserving the status quo. My point is—learn the new tool and get better at your craft. I, for one, can't wait to NEVER have to write another form validation.

. .
Terabox Video Player