While coding tools let designers build without coding, knowing how to code is still relevant
I've recently been building a few websites and iOS apps using Claude Code, and I've been beginning to wonder about all the considerations that come with using AI to write code. One topic that has stood out, and which I tried to write about on SwiftUI Prototyping, is just how much Swift designers should know in order to prototype (and ship code). I'm not sure I have the answer yet.
There are several ways of approaching Claude Code and getting the results to match the design. I have two SwiftUI apps that were nearly there—the design implementation might not be perfect but it's getting very close. With a shape sort game the design was interpreted a bit too much—noticeability different from the screens. The most recent app is a flash card app for practicing French vocabulary, a much simpler app concept with only 4 screens, however Claude almost completely matched the design.
Almost.
In fact of the handful of problems, one is likely an issue with SwiftUI and another issue is actually related to the content Claude choose. I would say there are only 4 obvious but minor places where the implementation diverges from the design—a button width, a fade effect used instead of a solid overlay, the search box appearance and the list item row height. Are those changes. deal breakers? No. But to fix them there's two paths, ask Claude to make the fix or change the SwiftUI code myself.
Let's take a step back. With the shape sort game, I haven't yet touched the code. It's much more complex and detailed. Claude Code created the project and all the Swift files, all I had to do was build and run the app—you know, click the "play" button in Xcode. (Oh, and go through the steps of finding where in Settings I can mark the developer as Trusted—it must only be me that doesn't understand why this is located under "VPN & Device Management"). In this case I didn't need to know how to code, only how to use Xcode and set up my iPhone. The only problem has been that Claude Code has been less than perfect with understanding how I describe the fixes needed to align the design. So the game is maybe 90-95% there. Is it pixel perfect to the design? No. Does it work and look good? Yes. So in that regard it's almost as good as the first pass by most developers.
If I'm going to make it pixel perfect and match the design, I'll need to tweak the SwiftUI code, and I can likely do this myself. But what would I do if I didn't know SwiftUI? Well I could leave it as is. I could ask Claude to explain the code, and walk through how to change it—this means I'll learn how SwiftUI works and how to fix it. Or I could describe to Claude Code how to fix the issue—previously this has had mixed results and could make things worse.
With the flash card app the issues are even less important—I'm the only one using the app and most of the tweaks are minor. Some changes will be minor. Adjusting the vertical padding of the list row is as simple as increasing the value from 2 to 4. Fixing the button width might require some extra thinking—shouldn't maxWidth: .infinity make the button full width? I can easily spend an hour tweaking the SwiftUI just enough to get the design an extra 5% there, and ask Claude to explain how to address the other issues. So while I know enough SwiftUI to understand how the view is built, if I didn't know how to fix the code in the past I would have spent a lot more time Googling for the answer.
As it turns out I missed a major mistake by Claude Code. I used the default system fonts for my app, including New York (.serif) and Claude Code used Georgia instead. And I wouldn't have noticed had I not looked at the code. Claude Code used a more complicated method to achieve the wrong typeface, and I genuinely feel embarrassed for not seeing the difference!
I'm going to remain on the fence here. Not all designers need to know how to code. LLMs now allow us to prototype and ship code, but we're placing a lot of trust in AI to deliver the exact design as spec'd. However this is a great opportunity to learn just enough code (Swift, Java, HTML/JS) to be able to at least understand what has been built and make minor changes.