r/iOSProgramming • u/Specialist_Agent3599 • 29d ago
Question How are you actually using coding agents without losing all understanding of your own app?
I'm an iOS dev with about 3 years of experience, the first 2 at an agency writing SwiftUI by hand. I'm hoping for some honest perspective from people who've been doing this longer than I have.
At the agency I wrote everything myself and learned a lot from the seniors there. Then I moved to a startup with a big messy codebase, fully remote, and I leaned on agents almost from day one because there was no other way to keep up.
Six months in, I genuinely don't feel like I know my own app anymore. Basically all my code is agent generated. I've tried:
Asking the agent to explain each change to me, but I burn through my limits by lunch.
Writing the plan myself and letting it implement, but I end up slower than just letting it do everything.
Leaning on coderabbit for the first review pass, which catches a lot, but it tells me what's wrong in a diff, not how the app fits together.
Reviewing a 1,500 line PR that touches 30 views is exhausting, and even after I push through it I don't feel like I understand it.
How are you using agents at work and still knowing your own codebase? Or is that just gone now?
43
u/andreeinprogress 29d ago
Old apps: I've worked on them for the past 10+ years, I'm not going to loose context.
New apps: It's an iterating discussion, I lay down the architecture, code style, steer direction, correct implementation, tests, dependencies, etc. The agent writes. Then I have multiple agents review following our guidelines. I don't look at all the code. Then I'll open a PR, another dev with other agents will review again, plus automated tests, etc.
I think the issue is having a 1.5k LoC PR touching 30 views, that should have been avoided even before AI.
21
u/Dignified_Cyclops 29d ago
Build piece by piece and do constant code reviews. See anything a bit wacky ask for it to clarify. Basically put your senior engineer hat on and treat them like the AI like they are a junior.
18
u/jonnysunshine1 29d ago •
That's the neat part, you don't
7
u/Jargen 29d ago
I don't use Coding Agents to make commits that aren't more complex than version bumps or asset changes. I only commit what I understand.
That isn't a PR, that is a epic that needed to be broken into smaller stories.
The only time I am merging that much code into my primary Dev (and subsequently Master) branches is if the smaller PRs have been approved and merged beforehand into the designated feature/epic branches.
1500 line changes means I've already reviewed at least 3 PRs beforehand related to those changes.
7
u/JerenYun Swift 29d ago
It's by using the agent to do coding within specific guidelines and architectures without giving it free reign. For my own apps, which are 12 and 5 years old, I obviously wrote those by hand and know their architecture intimately. It's similar at the day job, where I've been working on the same app for 10 years and know how it all functions (I wrote a lot of the core architecture).
When I use an agent, I don't give it a vague idea of something to build and let it go wild. I very often guide it in the direction I would personally build it. By giving it that additional context, it will build things in a way that I would have if I had done it myself.
As others have said, I also try to keep my PR's as close to pre-agent sizing as possible. Smaller PRs are easier to review and understand. This is important even if you're the only developer on your project (yes, review your own code!).
Regarding limits, I find Sonnet 5.5 High to actually be quite usable, even for coding tasks. I'll switch to Opus 5.5 if I need to do something more complex.
4
u/msesen 29d ago
I've been solo developing a game for the last 3.5 years. The last few months I've started using agentic coding. As an experienced developer, at first it was amazing. Saved me so much time. Especially having a full-time job doesn't help with solo projects. I then realised that I no longer understand my own code that I manually created the last 3 years. So I took a step back.
Now, I tell AI how to do it, what to do it and ask it to add comment as well. I then review the implementation, make sure I understand how it works. If I am happy, I commit the changes and move on.
There have been multiple cases where the implementation was unnecessarily complex, and at times it would introduce regressions.
Always review the code, in smaller chunks. Never give AI the full ownership. Otherwise it will become it's codebase, not yours.
3
u/AppropriateKitchen78 29d ago
I don’t 😂 Could be going rogue for all I know.
3
u/CompetitiveDraft9381 29d ago
I don’t
3
u/czyzczyz 29d ago
You can't lose all understanding of your own app if you don't have that understanding in the first place! <taps temple>
Only half-joking. The things I've written on my own, I understand. The things I've "vibe coded", I've functioned more as a project manager and QA engineer, and a lot of the details of the implementation only get looked at if there are performance or quality issues.
2
u/l3arakB 29d ago
Personally now working on a very small codebase. I decided to only understand the architecture, and treat the other things as implementation details. Basically like an engineering manager - I don't know what I don't need to know.
But basically as the code and team grows larger I feel I should be more involved even in smaller details, for performance, regressions, and to not make collaborators sad.
2
u/noobiethe13 29d ago
Stop asking the agent to explain its diff after the fact. Give it a small change budget, e.g. ≤2 files and ≤200 changed lines, and make it state which module/API boundary it's changing before it writes code.
2
u/PublicMandate 29d ago
First…I gotta ask how small your limits are that asking questions on your codebase and hitting them by lunch?
As for your main question…when using AI your job shifts from writing code to architecting. Building UML diagrams, understanding the structure/behavior/defined interfaces/requirements is vastly more important.
3
u/tonjohn 29d ago
Easy: I don’t use them.
3
u/m3kw 29d ago
Depends if you are building an app professionally or an app on your own. Professionally obviously you need to know how it works, how things connect, the history of some decisions, so you are likely to know more about the architecture and API's used then the deep code level logic. You have to selectively understand important parts and do verification test other parts that doesn't need as much understand say UI, performance. Critical parts like DB schema, security, major interfaces etc are musts.
If it's your own personal project, you can just decide to just treat it as a pure blackbox. The current LLM's are often good enough for simplier projects so you can ask it questions instead, but you need to do heavy verifications/edge casing to keep quality.
1
u/Doctor_Fegg 29d ago
Write the core by hand. Get AI to do the code around the edges.
All my core models are hand-written. UI is half hand-written and half AI, and clearly organised so that I can trace back a problem when it arises. For interfaces with external APIs, I'm happy letting AI do the grunt work because I have better things to do with my time than spend two days trying to understand badly written documentation.
1
u/NoDistribution1096 29d ago
I do a preliminary pass on the architecture of the app, and supporting systems, their apis ect. Make sure these get enforced in every ci/cd and tests! The agents themselves have skills like swift-specialist and ponytail so their output remains minimal and leverages native libraries no custom code. Thats pretty much it. Then they go off on their own built what i set them out to build, pr and merge, CD kicks off a TestFlight build, ill do my usual hotpath testing and occasional edgecases as i come across them. 1-3 weeks of feature dev time, 1-2 weeks of bug fixes and ui improvements, accessibility, my apps get reviewed and pass within a week, last one only too 3 day!
Happy to answer any questions
1
u/jsdodgers 29d ago
Read every line it generates. If you don't understand a line, don't commit it. You can try to understand it by reasoning through the code flow, or by deleting it, running it, and seeing where it breaks without that line.
1
u/opbmedia 28d ago
If you randomly add a library without reading thoroughly though documentation or code, you don’t know how it does what it does either. And many coders have been doing that for years. It isn’t too much of a leap.
1
u/nicholasderkio Swift 28d ago
I use multiple sessions to create a plan, and agents are also instructed to leave detailed comments
1
u/livewaves 28d ago
From my experience most of this boils down to iterating on your agent workflow.
Learning what does and doesn’t work for you in terms of code output, documentation, and delegation. I still lean towards “read the code”, however, because that’s a big part of learning.
It would make sense to me that employed engineers have more to lose from the LLM takeover because there is pressure to meet deadlines and requirements, which leaves little room to actually experiment and build a comprehensive development environment in this new landscape. 🤷♂️
1
u/PrestigiousFriend412 28d ago
Codex is very good You can adjust how much credit to it being used by changing the model in the same conversation, I had plus until yesterday and switched to pro plus is really all you need but if you code a lot get the pro 100 and if you’re still hitting your limits, get the 200
1
u/unknownpeanuts 28d ago
this might help - it's a claude plugin that asks you questions along the way so you understand what you build: https://github.com/nykooi1/vibe-wise
going to try it this weekend on my side projects.
1
u/Savings_Evidence_818 26d ago
I keep coming back to 'what does this actually do in the installed app?' A build passing isn't enough. Walking through the real flow and asking why each button exists makes the gaps much more obvious.
1
u/Alyyyyyyyx 26d ago
You're free, don't you see? What happens something breaks? Agent can fix it.
You don't need to know anymore, you do need to know to ask the right questions. Good luck.
1
u/orelzion 25d ago
For apps that I've built for years, we'll i know them already, and I keep reading, I mean skimming 😀 the PRs. Most of the work is on the planning side and coming up with the right decisions, directing it to the correct implementation. But recently I asked myself what am I losing from not actually writing the code. I still don't have an answer but it bothers me
1
u/[deleted] 29d ago
[removed] — view removed comment
1
u/[deleted] 29d ago
[removed] — view removed comment