Two years ago, I saw myself as a really good Python engineer. Now I'm building native mobile apps, desktop apps that talk to Slack, APIs in Go, and full web apps in React, in hours or days!
It feels like I've got superpowers. I love it. I feel productive, fast, creative. But at night, there's this strange feeling of sadness. My profession, my passion, all the things I worked so hard to learn, all the time and sacrifices, a machine can now do most of it. And the companies building these tools are just getting started.
What does this mean for the next generation of engineers? Where's it all heading?
Do you feel the same?
Very well written and a joy to read.
Yes, IDEs of the future will not look like those we have today. I too started with Cursor and similar VS Code enhanced IDEs. And ended up using Claude Code. And realised my terminal is more important for me now. So I migrated from iTerm to Ghostty (faster, lighter, more modern), Tmux and Tmuxinator, and NeoVim! Because I just cat/bat files and occasionally edit a file, if at all. Claude Code does the heavy lifting, I write specs and prompts, in NeoVim or Emacs. And I am loving my workflow.
I too use Claude Code for more then just generating code. Whenever I need to rewrite a config file (for zsh, neovim, ghostty, etc), I start Claude code and assign the task to do it. It will do the changes and even refactor my settings file in a few minute.
Lastly, I use it to ask questions about my codebase, refactor code, let it document my code, even make meaningful commits.
Pure awesomeness.
A year or two ago I had a pretty simple thought. The idea was that LLMs make a great assistant for a skilled developer, a bad replacement for a skilled developer, and a dangerous assistant for an unskilled developer. That idea has mostly seemed to hold true as I have gotten more experience with LLMs.
I think I would revise it now to allow that LLMs can be really useful teachers for unskilled developers, however I don’t get the sense that that’s how they’re being used in many cases. It seems that it’s more common that unskilled developers using LLMs just vibe code their way through issues that they run into, never really gaining insight into why the thing they’re working on failed, and just push through until it seems like it isn’t failing anymore.
And that more or less reinforces my idea that they’re dangerous assistants in those cases where the developer is unskilled. It’s pretty much inevitable that this will introduce problems that make it through the process of creation not only unnoticed, but problems that the developer is incapable of understanding even if they are noticed.
I've been doing this recently; I don't really know swift, and I wanted to see how well I could use almost 100% LLM to do my coding. For the most part, I have been able to get a pretty substantial app going, but once it gets to a certain size, things start to become hairy.
For instance, I am adding bluetooth capabilities to my app, and the bluetooth manager can be quite large, to the point where the LLM context window starts to become an issue.
When it gets to that point, the LLM can start making suggestions that don't make sense; it's starts forgetting what you had already done, it can start making architectural suggestions that contradict what you had been doing before. So if you follow them, you end up in this weird state mired in conflicting decisions. Almost like design by committee without the committee.
It's important to recognize this when it's happening rather than just blindly following what it suggests, so some expertise at engineering is still necessary even though the LLM can write okay Swift code.
Terminal + Claude Code + a project folder
it's all you need! Who knew?!
I never really enjoyed using full blown ide's anyway, setting them up was a chore, configuring QT to cross compile for various platforms was a project in itself, I always found that using a text editor and terminal the most logical combination for editing. Adding another terminal window with claude code to perform my requests while i debug, edit, test, review, i feel like i have graduated from coder-editor to project leader and there are no employee associated problems to deal with. All or my shelved side projects are complete as i wanted them and all in just a few months since March when Claude went big.
> I've been building software for the Mac since 2008
Ok, so they knew where Claude went wrong and could correct for it.
Love this conclusion about how reduced friction from LLM assistance helps with that last 20% of actually shopping a side project:
> The most exciting thing about this entire journey for me is not the app I built, but that I am now able to scratch my coding itch and ship polished side projects again. It's like I found an extra 5 hours every day, and all it cost me was $200 a month.
I've been doing this for little utilities and it's been great.
I created one utility to show my launchctl/launchd tasks with status indicators for what is loaded/unloaded/running/failed (very much like the menu icon you get for OrbStack) and it works great. With claude it only took a couple of hours to get workig and dial it in the way I wanted.
Soon, someone will duplicate MacOS entirely using LLMs!
I only used chatGPT seldomly. So I don't have much experience with LLM and with different tools.
So ... "how" does one use Claude to make a Mac App? The blog post left me not wiser here.
I’ve found that building a custom tool for yourself is now much more accessible using things like Windsurf and CLI tools - pretty interesting times!
I got a crude 6DOF wireframe renderer to boot as a system 6 (classic mac) app using c++ and retro68 a couple weeks ago using LLM tooling.
Has anyone tried this for command line applications? This could be a great way to develop some very specific/corner-case tools.
I'll just have Claude read the tutorial to learn.