00:00:00 ◼ ► Welcome to Under the Radar, a show about independent iOS app development. I'm Marco Arment.
00:00:05 ◼ ► And I'm David Smith. Under the Radar is usually not longer than 30 minutes, so let's get started.
00:00:09 ◼ ► So for today, I wanted to, in some ways, I guess, follow out to a discussion that was in the overtime segment of ATP about two weeks ago,
00:00:20 ◼ ► where you were talking about vibe coding and the rise of AI coding tools and some of the implications for that
00:00:26 ◼ ► and the way in which it might adjust, limit, or change the career trajectories of programmers.
00:00:33 ◼ ► And as a pair of programmers, it was something certainly that I imagine we have a lot of opinions on.
00:00:38 ◼ ► And specifically, talking about it, just there's some of the ways that I've been, you know, as someone who's a programmer,
00:00:44 ◼ ► anytime a automation comes up that replaces or improves or in any way kind of changes your role in doing your job,
00:01:01 ◼ ► So in episode 309 of Under the Radar, we talked about how you and I are using AI tools and code automation and these kinds of things.
00:01:10 ◼ ► But more generally, in kind of taking a step back, I think there is something more fundamental going on here that was worth unpacking.
00:01:17 ◼ ► And specifically, the thing that really kept coming back to me was how several years ago, I feel like there was a movement called sort of the like the everyone can code.
00:01:32 ◼ ► Apple was big on it for a while that it was that they had all the learn to learn, you know, learn Swift things.
00:01:37 ◼ ► And there was this sort of the general vibe that in some ways the next step for like middle class white collar work was going to be coding.
00:01:47 ◼ ► And that was a big thing that everyone should try and get into because it's a great career with good stability.
00:01:52 ◼ ► And at the time, I would say that is one of those things that is it was both true but unhelpful.
00:01:57 ◼ ► You know, saying that everyone can code is a bit like saying everyone can sing, which is true.
00:02:03 ◼ ► But it's not particularly helpful for basing life decisions on that just because you have the ability to sing doesn't mean you're going to be able to make a career out of singing.
00:02:11 ◼ ► And in the same way, I think code and AI have kind of fallen into this place where the type of coding that you could easily, say, have learned in a 12-week boot camp, which would be a front-end developer, which is like a thing that existed.
00:02:30 ◼ ► Like there was a window where you potentially could learn to code in a quick way and be able to have a reasonable job from it.
00:02:37 ◼ ► But the challenge now, I suspect, you know, not being someone who's doing this myself, but in terms of I can expect that there is a – the tools like Cursor or, you know, Resplit or all these – I don't know, they change every day.
00:02:51 ◼ ► But even just ChatGPT, like those tools' ability to create a lot of that basic entry-level straightforward code kind of eliminates a lot of the reason why someone would hire that person.
00:03:04 ◼ ► Like that's a challenging thing if you wanted to go down that road because I think there's a large group of people who were doing coding because they thought it was a good career path, not necessarily because they had the interest and aptitude necessary to be like that next-level-up coder.
00:03:22 ◼ ► And I'm not trying to be like selective or gatekeepy in that way, but I think with any career, you know, same thing with singing and use that example.
00:03:29 ◼ ► Like there is a difference among people that some people are going to be better at that thing and have a different aptitude and interest and ability to sustain their interest in those things.
00:03:40 ◼ ► And if you are only in it because you think it might be a reasonable career and you don't have that interest and aptitude, it's going to be very difficult now, I would expect.
00:03:58 ◼ ► But weirdly, on the flip side, and this was the positive take that I thought was interesting, is I was thinking about as an indie how the biggest impact for most AI tools is, I think, in sort of automating some percent of the work.
00:04:14 ◼ ► And the logical impact of that is going to be that there will be places where a company may have had five developers before, and now they have four, or they had 20 developers, and now they have 15, or whatever that ratio is.
00:04:28 ◼ ► Like, I don't know what it is, but the sort of available, the velocity of each, or the productivity, I think is the economics word, the productivity of each developer increases such that you need fewer of them.
00:04:39 ◼ ► But the funny thing about being an indie is that I can't really reduce the size of my team, because right now my team is one, the programming side, and it can't really go to zero, because then no programming happens.
00:04:51 ◼ ► And so the nice thing about being an indie is it's actually, you are entirely kind of insulated by the advent of AI in terms of it eliminating your job, because you can't eliminate a job that can't go to zero, because then nothing will happen.
00:05:06 ◼ ► It's a wonderful, like these tools, in some ways, the upside is huge for developers, because if I can become 20% more productive, then that's huge and beneficial for me, and it isn't eliminating my job.
00:05:17 ◼ ► So as indies, potentially an upside for the people who are trying to get a job in a bigger team, much more of a challenging sort of scenario and context to find themselves.
00:05:27 ◼ ► Yeah, and I think that's, you know, like many other, you know, accelerating tools, you know, the fear, which does happen, is that when you make like the good people more productive, you have a lot fewer jobs for the people who are less good, or whose skills are less unique, or are less necessary.
00:05:49 ◼ ► Yeah, you might be cutting the team down from, you know, 20 people to 15 people or whatever.
00:05:53 ◼ ► And, you know, what happens is that you don't need as many, like, okay, or very junior programmers, if the senior or good programmers can be more productive with some of the, you know, some of the more tedious stuff.
00:06:07 ◼ ► Over time, we have always developed, you know, major improvements to programmer productivity, with different styles of apps, different advances in compiler technology, different programming language techniques and concepts, you know, having more and more safety checks, and, you know, dynamism and different things.
00:06:30 ◼ ► You know, you know, the fear is always, again, like that you will, you will lose the jobs for the, the kind of lower, lower tier programmers.
00:06:38 ◼ ► But what has actually happened so far, mostly, is that the market for programmers has not gone down.
00:06:47 ◼ ► Usually, by making software much cheaper to make, the actual outcome is people just start demanding more software in more places to do more things.
00:07:01 ◼ ► And so, what ends up happening is, whenever we make programmers more productive, so far, we have just actually increased the demand for programmers.
00:07:17 ◼ ► There are things that we will still be able to do, even in a world where AI tools might be writing a huge amount of code.
00:07:32 ◼ ► But, you know, someone, someone's got to, like, you know, plug in the server, at least.
00:07:45 ◼ ► And, you know, like, in that ATP Overtime, one of the things that John Syracuse has said was, like, defining what to do is harder than it seems.
00:08:06 ◼ ► And all of that, like, if a lot of the drudgery of the code writing gets automated away, those jobs still don't disappear.
00:08:17 ◼ ► You know, every time we have made programmer productivity better, like, we still, that just becomes more tools for programmers above them to use.
00:08:28 ◼ ► You know, in the same way, like, we've made art easier to create over time, but there's still huge demand for artists and designers.
00:08:41 ◼ ► Like, these are huge fields that keep growing, even as we're making things easier to make for, like, you know, non-artists.
00:09:01 ◼ ► It gives the artists greater tools for their own brainstorming and automation of drudgery.
00:09:07 ◼ ► And then it gives, you know, potential customers, here's a bunch of, like, things to try.
00:09:12 ◼ ► You can have, you know, you can have some AI tool generate you, like, give me 10 different logo concepts.
00:09:24 ◼ ► What you get out of that is then something you can, like, you can go to a designer and say, here's the direction I'm thinking.
00:09:34 ◼ ► So, like, these are just, you have all these tools that they are, like, if you look on the surface, you might think they are getting rid of jobs.
00:09:51 ◼ ► You know, as programming has gotten easier and these tools, and, you know, tools like safe, like memory safety languages and autocomplete and stuff, you know, what has happened is programming has gotten easier.
00:10:11 ◼ ► You have to actually decide, you know, I'm going to direct these tools to do this, to do what.
00:10:23 ◼ ► They still need the person to say what to do and to take their output and know what the heck to do with it.
00:10:36 ◼ ► It's almost like everyone can make apps now in a way that, like, you're moving up the stack another level, that the code itself is less something.
00:10:49 ◼ ► And I think it's like, what is it, the term people have been throwing around a lot, Jevon's paradox, I think, which is as efficiency increases, demand increases.
00:10:56 ◼ ► And so you don't end up, like, destroying the market in a way that you potentially could.
00:11:04 ◼ ► It isn't necessarily that if you make programming, in this case, more accessible, there will be more demand for programming because more people can do it.
00:11:15 ◼ ► The other outcome is that there will be a certain fixed amount of it that is sort of reasonably possible or does exist.
00:11:31 ◼ ► But it's definitely an interesting aspect in all of this where you can get a lot farther than you could without previous, like, deep knowledge previously.
00:11:42 ◼ ► But that isn't a guarantee that everyone will be able to do that or that there will be more sort of demand and jobs for this.
00:11:50 ◼ ► Because it's like there are other examples you can think of which I think line up reasonably well.
00:11:56 ◼ ► And, like, specifically, I was thinking recently about how in, like, carpentry, so, like, building a house, in some ways, this is the sort of increase that you get in productivity, say, between a hammer and a nail gun.
00:12:11 ◼ ► That they are both ultimately just things that, you know, affix two pieces of wood together by driving a nail into it.
00:12:17 ◼ ► But it dramatically changes the kind of nature and relationship of that thing where now it doesn't – you don't just have the challenge of putting the pieces of wood together.
00:12:29 ◼ ► That's essentially, like, free and instantaneous, that a nail gun is massively more efficient.
00:12:38 ◼ ► I've fallen down the home building YouTube rabbit hole recently, and, like, watching people build houses is super interesting to me.
00:12:45 ◼ ► And I think the thing that was fascinating and reminds me a lot of programming is how you get the impression that the actual challenge – like, the amount of time people spend sticking pieces of wood together in a day's work is relatively small.
00:12:58 ◼ ► What they spend a lot of time doing is working out which piece of wood goes where and how to frame it and how to structure it and how it's going to be – like, all – dealing with the constraints and the rules and the code and all the stuff that goes around it.
00:13:14 ◼ ► And, like, that's – you know, it used to be much harder if you had just nail and hammers.
00:13:24 ◼ ► The other 80 percent is the knowing which two pieces of wood to combine in which shape, in which configuration, using what fastener.
00:13:36 ◼ ► It's like there potentially are certain laborers, you know, in this metaphor who would not be employed now, who would have been employed previously.
00:13:48 ◼ ► And that is, I think, like, fundamentally, it's almost like in the way that we used to think of – what is it?
00:14:02 ◼ ► It makes me think in some ways how, like, I've never really loved being called – like, I don't think programming is really what I do.
00:14:10 ◼ ► You know, if someone asks me sort of what – a job description or I'm filing in my taxes and I have to, like, give myself a name.
00:14:14 ◼ ► It's like software engineering feels much more true to what I do in the sense of it is this multidisciplined thing of combining around.
00:14:26 ◼ ► And that small part of it, that programming part, potentially is becoming less and less specific knowledge and much more just something that you can deal with at a much higher level in the same way that you don't need to have a person who's actually doing the computation before.
00:14:46 ◼ ► But my job is now moving up to the engineering aspect of it and knowing which – you know, what's the actual structure?
00:14:56 ◼ ► What are the constraints that are beyond just now that I have a prompt of, like, give me a thing that takes – you know, these fields and stores them in a database.
00:15:06 ◼ ► And then, you know, a thing that takes them out of the database and displays them in a table view or whatever that might be.
00:15:13 ◼ ► But the actual knowing what parts to put together, like, that is still the – you know, it's like the instruction book of the Lego is still the part that is very difficult and challenging to build.
00:15:30 ◼ ► Sentry are the people who help you avoid your mobile app being the one that gets deleted next.
00:15:35 ◼ ► From getting deep context into crashes to seeing full insights into performance issues, Sentry is here to make sure your code doesn't suck.
00:15:42 ◼ ► You can fix what's broken faster with Sentry and keep your app running smoothly with application monitoring built for mobile developers just like us.
00:15:50 ◼ ► You know, it's so important that your app not, like, have weird bugs or slowdowns out in the field.
00:15:56 ◼ ► And it can be really hard to know what's going on when your users are – you know, they're using your app.
00:16:10 ◼ ► The great news is Sentry is totally free to use, so there's no reason not to check it out.
00:16:15 ◼ ► And even better, as an under-the-radar listener, you can get six months of the team plan for free.
00:16:28 ◼ ► Yeah, I think the deciding what to do is underrated as a skill for any business, honestly, but especially for software and especially for indie developers.
00:16:48 ◼ ► You know, we see in software all the time, like, we are not usually limited by typing speed.
00:16:56 ◼ ► Like, if an AI tool can type a bunch of code for us, that's usually not our limiting factor.
00:17:02 ◼ ► Usually our limiting factor is, first of all, debugging tricky problems, which I don't think the AI tools are likely to be massively helpful with.
00:17:13 ◼ ► They can find probably small errors, like, you know, typos, syntax errors, you know, really obvious logic errors.
00:17:24 ◼ ► But programming, like, when you look at, like, the amount of time in a day that you spend as a professional programmer, most of that time is not spent typing new code.
00:17:34 ◼ ► It's usually, like, debugging, trying stuff out, like, moving stuff around, thinking about, like, what's the best way to do something, trying to keep track of all the complexity in your head.
00:17:56 ◼ ► And that's great in certain contexts, in certain sizes, and, you know, in certain types of code.
00:18:02 ◼ ► But what you then have is a whole bunch of code you didn't write, and you're integrating it into a product.
00:18:14 ◼ ► Sometimes you'll actually, you know, you won't be coming out ahead trying to integrate that kind of code rather than writing it yourself or using something that you already know.
00:18:30 ◼ ► And it is still on you to take those pieces it's giving you and figure out, first of all, do they work?
00:18:39 ◼ ► And you'll probably have to do, like, a lot of testing and validation and everything around them.
00:18:54 ◼ ► Because the other major time sink of professional software development, again, it's not typing.
00:19:14 ◼ ► If you look around the software business, look around your own apps, your own life, how much time we spend doing the wrong work, building the wrong feature, building the entirely wrong product.
00:19:31 ◼ ► And as indies, the most important skill that an indie developer can have is that kind of product sensibility of, like, what is the right thing to build?
00:20:00 ◼ ► But it's popular because it was, like, the right products to the right people at the right time.
00:20:43 ◼ ► Yeah, and I think a lot of the things you're describing in some ways come to, like, I think combined in my head as, like, intuition.
00:20:53 ◼ ► There's a sense that, like, over the years of being a professional programmer, I have developed a sense of intuition on the technical side in terms of when I'm debugging, which you're 100% right.
00:21:03 ◼ ► So I probably, like, I spend two-thirds of my programming time debugging code, not writing code.
00:21:13 ◼ ► Running and testing and debugging that code that I've created, far, far more, far, far more of my time.
00:21:20 ◼ ► And I think that requires a sense of intuition, both to know how to fix it, so, like, when something isn't working, and then perhaps even more subtly, and I think this is the fundamental part that I think is going to be much longer horizon before I would be able to tell you, is, is it working correctly?
00:21:39 ◼ ► Right, like, and this gets into, like, the halting problem of, like, these deep challenges, things in computer science of, like, knowing if a program is doing the thing that it's supposed to be doing requires this, like, this paradox of knowing what it should have been doing.
00:21:55 ◼ ► And you can't know what it should have been doing until you know what it's supposed to be doing.
00:22:02 ◼ ► And so a lot of that, you know, as a developer is about understanding that you have to develop this intuition, that be like, ooh, that doesn't look right.
00:22:09 ◼ ► And then knowing that it doesn't look right is the first problem, and then knowing what it should look like is the other problem.
00:22:14 ◼ ► And so that is an intuition that I think just comes with time and with taste and with aptitude and with ability.
00:22:20 ◼ ► Like, I don't know why I know that something isn't right or like, ooh, when this kind of bug happens, I've developed, like, the sense of, like, ooh, I know where I need to go to look.
00:22:30 ◼ ► And very often, like, I think the speed, my speed as a programmer, my ability to do a good job at what I do is that I'm a fast debugger much more than I'm a good programmer.
00:22:41 ◼ ► Like, that is, I think, something I've learned over the years that I'm not actually a particularly good programmer.
00:22:47 ◼ ► I don't under, like, as a, from a computer science perspective, there are huge swaths of things that I'm just not very good at and I don't really understand.
00:22:54 ◼ ► Like, I still, to this day, do not understand Swift, like, async concurrency stuff properly.
00:23:05 ◼ ► But, like, some of the stuff when it gets, like, when is this isolated and what is an actor and when I should use my own actors?
00:23:10 ◼ ► Like, I don't know, but I'm very good at, like, making something and then working out, sort of, reliably working out how it isn't working the way it's supposed to and then how to fix it.
00:23:21 ◼ ► And so, like, rather than maybe, like, the, you know, measure twice, cut once, I'm, like, measure once and then, like, duct tape together four times.
00:23:30 ◼ ► And, like, that works in the sense of, like, I end up with something that works, but it's not as, you know, it's a different approach.
00:23:37 ◼ ► And, like, that works for me and I'm good at debugging and that's allowed me to have a good career because I think that is the part that is ultimately the essential.
00:23:49 ◼ ► And that's even just, like, to say that there's one, this is even just a small sliver of our work that you and I do.
00:23:55 ◼ ► Like, being a successful indie developer, like, there's so many parts of it that have nothing to do with, you know, code or apps or software at all.
00:24:03 ◼ ► Like, dealing with App Store Connect, getting a Dun & Bradstreet number, dealing with your accountant, getting paid, filing paperwork.
00:24:10 ◼ ► Like, these things are the essential parts of being an indie that AI isn't going to help you with.
00:24:16 ◼ ► Like, I don't think there's any AI in the world, even with AGI, would be able to get a Dun & Bradstreet number.
00:24:30 ◼ ► Yeah, because, like, what the AI tools, like, the way they work, what they are best at is brainstorming.
00:24:47 ◼ ► Like, when you're doing something where, like, there is really not, like, one right answer, but you're looking for, like, hey, give me some ideas for whatever.
00:25:00 ◼ ► If you say, give me some ideas or draft me some concepts for this, you know, there is, like, hallucination doesn't matter.
00:25:08 ◼ ► You know, you're asking it to hallucinate, you know, it's like you're asking it to generate.
00:25:14 ◼ ► And, like, I find as creative brainstorming tools, they're great because I don't, like, I don't have that kind of creativity where, like, I can just have a blank sheet of paper and come up with something.
00:25:25 ◼ ► Like, I need, like, prompts or I can, like, I can riff on something someone else says, but I can't come up with the first original thing, you know.
00:25:32 ◼ ► And so it's great for stuff like that, but what you then need to do is be able to take the, like, to look at the BS that it's generating for you and be able to say, oh, you know what, that one, that's something.
00:25:56 ◼ ► Or if you're doing, like, a design with it, you can say, you know what, get rid of this.
00:26:03 ◼ ► And it's great for that kind of, like, you know, brainstorming generation kind of thing.
00:26:10 ◼ ► Like, if you use the output, like, we were, for the restaurant, we were looking at, like, different logo ideas for, like, how we can put certain shapes together.
00:26:35 ◼ ► There's, like, conceptual things where, like, oh, that goes behind this in a way that wouldn't really make sense.
00:26:50 ◼ ► But we can, like, we can then use a human who's good at these skills with this, like, brainstorming input and say, we like this.
00:27:13 ◼ ► And you have to be the one with the skill and the discipline and the product sensibility to be able to put those together into an actual product that people want to use.
00:27:23 ◼ ► And then, as you were saying, like, to then be able to do everything else about, like, I would love if an AI could automate getting a John and Bradstreet number.
00:27:31 ◼ ► I would love if an AI could automate negotiating with AppReview to get through basic problems.
00:27:37 ◼ ► But, you know, that's still going to be – those are still going to be very human problems.
00:27:44 ◼ ► Like, the tools can do a lot more of the work for you, but they still need a director who knows what they're doing.
00:27:50 ◼ ► Yeah, and I think maybe the positive way to end this is, like, if you are someone who is starting out thinking if you want to be an indie or trying to develop in this sort of line of work, is understand that I view these tools as a way to develop your intuition and taste and your ability to direct them.
00:28:10 ◼ ► In the way that, like, I think I am good at making apps now because I've made so many apps.
00:28:22 ◼ ► And I think these tools, like you're saying, are great for getting you to a place that you can learn, to getting you over the kind of awkward, just rote spoiler plate code that you have to write that is not particularly helpful or interesting, to the place that is interesting and useful and you can learn from.
00:28:39 ◼ ► And I love the thought of someone who kind of wants to be an indie developer but isn't of a huge programming background, their ability to potentially get to that place much sooner now and to start failing and to start learning and then start succeeding.
00:28:53 ◼ ► And, like, I think that flow and that ability that these tools potentially allow, that's exciting.
00:28:58 ◼ ► Like, that's cool and interesting and is far more compelling in some ways than trying to teach everyone, you know, how Swift concurrency works.