Re: Is the IDE dead? Agentic coding, SwiftUI pitfalls, and the golden age of shareware
Hi everyone,
Agentic coding seems to be the dominant theme for development these days. We’re seeing a shift from traditional IDEs to agentic workflows that understand intent rather than just keystrokes.
Does this mean the IDE is dead?
I don’t think so. IDE literally means “Integrated Development Environment”, and what we’re seeing with agentic coding is more of an evolution of the IDE rather than a replacement. If you’re old enough to remember that Xcode once used to be a collection of separate tools (Project Builder, Interface Builder, etc.) that were later integrated into a single IDE, you’ll know what I mean.
I won’t be surprised to see IDEs evolving from “Editor + Debugger” to “Agent control center + Editor + Debugger”, with the agent control center becoming the primary interface for developers to interact with their code base, and the editor and debugger being tools that you can dive into when you need to.
On the Swift and Apple front, I’ve included an excellent talk highlighting five common pitfalls to watch out for as a SwiftUI developer and a neat macOS Alt-Tab window switcher built entirely in Swift.
Finally, we’ll take a trip down memory lane. I was reminded of my own early days writing software when I read a fantastic piece on the history of shareware and how the “try before you buy” model revolutionized the software industry. It’s an interesting contrast to today’s AI-driven, subscription-based ecosystem!
As always, let me know what you think by hitting reply!
Natalia has worked on the SwiftUI team at Apple, and now works as an independent developer and consultant, which gives her a unique perspective on SwiftUI.
In this talk, she shares 5 pitfalls you need to watch out for as a SwiftUI developer.
The Firebase API Council discusses and decides on API design and evolution. For every API change and every new API, you have to write an API proposal that will then get reviewed by a group of people who are experts on the language(s) used, the platform itself, and the product area.
The most valuable feedback from that council was never “you have a bug in this spec.” It was “this API implies a mental model that contradicts what you shipped last quarter” or “this deprecation strategy will cost more trust than the improvement is worth” or simply “a developer encountering this for the first time won’t understand what it does.”
I love reading about how people use tools to improve their workflows. Vova shares firsthand insight into his experience being the lead iOS engineer on Anytype, an open source productivity app.
One aspect that really stood out to me is this quote here.
The code that ships is the same quality it was before agents. In some areas better, because now I have way more mental energy and less resistance to fix a small bug or refactor something pesky.
From my own experience, I can say that the risk of wanting to do more in the same amount of time is pretty substantial when using agentic coding. I feel that you need to make a deliberate choice to not overload yourself with too much work.
Agentic coding not only changes how we make changes to our code base (by expressing intent rather than making granular changes), it also changes where and how we make those changes (in the agent window rather than the text editor of our IDE).
Addy argues that this moves IDEs out of the center of the developer workflow, but they’re still required - at least while agents don’t get it right 100% of the time.
What’s the right skill for my code base? And is there maybe a skill that is more powerful? Should you install skills for all the languages that you might be working on or ruthlessly eliminate the ones that are not required for the job at hand?
If these are some of the questions you are asking yourself, this article by Esther Lloyd is a must-read.
Esther discusses how she built a dynamic skills discovery agent that provides the right skills at the right time.
Portless does away with port collision on port 3000 or others by mapping ports to subdomains using a reverse proxy. Super useful for agentic workflows that use git worktrees to work in parallel.
One of the things I missed the most when I switched from Windows to macOS in 2007 was ALT-Tab window switching.
I only learned many years later that you can use command + backtick to switch between individual windows of the currently active app. But that’s not the same as ALT-Tab.
Sergio replicated ALT-Tab window switching purely in Swift.
The first substantial piece of software I wrote was a vocabulary trainer I named “Turbo Trainer” (fun side note: I wrote it using QuickBASIC and assembly (for the performance critical parts of the text-based windowing system), and not - like you might think TurboPascal or TurboBASIC).
At the time, I was 15 and needed something to help me learn my English, Latin, and French vocabulary. Scratching your own itch definitely helps to build something that works well.
It was the year 1989, and the internet as we know didn’t exist. We didn’t even have a dial-up modem. The only way to distribute software was mailing floppy disks to your customers, and advertising in computer magazines (which was prohibitively expensive). Or, find a shareware distributor who would do this for you.
This article explains what shareware is and how it worked.