#229: Portal Gun Development
Gone are the days of map-and-compass development, now if we can imagine it and see a line of sight to it we can build things nearly instantly. Which totally changes the cognitive and structural tradeoffs we need to make in our development process…and how we take care of ourselves in that.
Transcript
Lightly edited from the audio for readability: filler words and false starts removed.
00:00 So I'm a big fan of hiking. Anyone who knows me knows that I love hiking. I love being out in the wilderness, walking around, climbing mountains and just generally enjoying being outdoors.
00:12 And so I tend to end up with these analogies or metaphors in my mind as I'm kind of working through my work recently that involve that kind of thing, that involve metaphors and thoughts about what it's like to be outside. And recently, this has taken the form of kind of an idea that I'm calling portal gun development, which will make sense in a moment, but that's sort of generally where I'm going to go and what we're going to talk about today. So let's get started.
00:38 So when you're out hiking, if you're going on a journey, you're walking around, very often you need to know where you want to go. Sometimes you're just out stravaiging, looking any which way you'd want to go, and you're just wandering. But most of the time you have a destination in mind. You have a place you're trying to get to, and so you're gonna walk in that way.
00:58 And traditionally, the way that one would navigate to do that is you'll reach a junction, a point, there'll be some decision that you have to make, and you pull out your map...in the old days your map and compass, now maybe more your map on your phone. But anyway, you'd reach a point where you'd have, let's just say, your map and compass, and then you would be deciding, where am I gonna go next? What is my next move from here? And you'd think and you'd look and you'd look at the weather and you'd decide, oh, this is what I feel like. Do I want to go up this hill or do I want to go around the mountain? What am I thinking of?
01:35 And then once you'd reach that point, you would decide, OK, I'm gonna go this way, and then you'd walk, then you'd hike, you'd climb the mountain, you'd go up the slope, you'd go down the hill, whatever it is, you're gonna walk through the bog, you're gonna do the journey from where you were, where you made that decision, to the destination that you chose, hopefully, unless you got lost. But generally you're deciding, I'm gonna go from here to there.
01:51 That, in some ways, is a very good analogy for what I feel like traditional software development has felt like for the last 20 years. There's an element of you would be treated with a problem, whatever that is: a bug you're trying to solve, a feature you're trying to build. And at many points throughout the day or throughout the week, you would say, I want to get from here to there, what is my next segment of this journey? And then you would go and decide which segment you're gonna work on, and then you would go and build that. You would walk that road in the metaphor between where you started and where you ended.
02:28 And that was just sort of this process that you would repeat over and over and over again. You would make a decision, walk a path and then make another decision. And the whole process of developing something was a continuous collection of these segments that you're working on.
02:45 Well, now with agentic development and this new approach that we find ourselves having to navigate and work through, instead, it's kind of like if you've ever played the game Portal, where anything you have line of sight to, you can get to essentially instantaneously. So in that context, it's like you point your portal gun where you want to go, you make a portal over there, you step through your current one and appear instantaneously at the other end.
03:13 And obviously, you're not actually instantaneously appearing there. You write a prompt, you set it off, and it may take, whatever, a few minutes until you actually arrive. But functionally, it is instantaneous compared to what it was before. There is this difference. Used to, you would decide the direction and then have to walk the road between those two points. Now you're much more deciding the direction and then appearing at some point, functionally instantaneously, compared to the old days, where these things that would take days or weeks to build are now measured much more in minutes and maybe hours for a particularly long, challenging prompt.
03:56 And I think the result of that has had some really interesting effects on my own life and the way that I both work functionally as well as the way I feel about my work. Because it's a meaningful difference. The end result is the same. I'm still going from segment start to segment finish, segment start to segment finish, over and over and over again. But rather than walking that path, now I'm sort of magically appearing at the next segment end and the next segment end. And that just has a lot of impacts, I think, on what it feels like.
04:27 And the first, and probably most significant in some ways, the thing that I really noticed, is this form of development is just mentally, and to some degree physically, but mostly mentally exhausting. And it took me a while to kind of work out why that was the case. Because in some ways that seems slightly counterintuitive, that in the old days, I was having to walk the path. I was having to climb the mountain. I was having to put in the effort to wade through the bog to get to where I wanted to go. And so that seemed like that was a lot of effort, right? That's a lot of work that I am now not having to do.
05:03 But functionally, I think, and why I found it so much more mentally exhausting, is that I'm now doing the hardest part of that old job constantly throughout the day. In the old days, you would do the hardest part, which was making the decision of where you wanted to go, and then the walking part, honestly, as someone who enjoyed software development, that was in some ways the fun part. That was the part where you get to go kind of into the flow state and you're working through it and it's engaging in different parts of your brain and you're problem solving, and it was enjoyable in a certain way cognitively.
05:38 And it had different variable intensity. It wasn't this high intensity all the time that having to make the hardest decision, the where are you going decision, constantly leads to. Instead, you just had this feeling of, sometimes you're going uphill, sometimes you're going downhill, sometimes things are going well and sometimes they aren't. But there's a variance to that that I found very cognitively reassuring and comfortable, which you just don't have now.
06:02 And it's a weird thing that I find now where I will come home from work at the end of the day, and my brain will just feel like mush. And I think it is because I am making the hardest part of the hardest decisions that I used to have to make constantly. Whereas it used to be maybe I was making, I don't know, 20 of those a week. Now I'm making 20 of those a day, where you're having these kind of really tricky...and that's the crux of the job now, is making good choices at each of these junction points, making thoughtful, intelligent, sort of intentional choices that lead you ultimately to the right decision, because in some ways they matter more now.
06:41 And part of that is because you're no longer walking the road, you don't learn as much along the way as you used to. You didn't have all this time while you were developing something, while you're working on a feature, to be exploring it and thinking about it in quite the same way. You have the idea, you have the implementation, and now you have to decide, was that the good thing to do? Was it the right thing? You don't have quite as much space in between.
07:08 And that's a sort of a blessing and a curse. It means that you don't learn as much, which is probably not good, but you also get the benefit of being able to be sort of more ambitious. You can try more things than you would have been able to previously, because if you have to walk every path you want to explore, then you have to physically go and walk them in the old days. And I feel like now, it's the benefit of you can really explore anything with very little risk, because if you decide you went down a wrong path, if you went down towards a destination that is actually not the best place, the cost of turning around and going back is not very substantial.
07:50 Essentially you just turn around, point your portal gun back at the start and off you go, and you're just immediately back there. You haven't wasted the effort and time to get there, but maybe you haven't learned as much on the way, and that's certainly a trade-off that we have to deal with.
08:04 The other thing that's also tricky about this is I feel like you can now work on multiple things at once. In the old days, you could only walk one path at a time. Functionally, if you were going to get something done, multitasking would destroy your productivity, or at least it would destroy my productivity. I was not able to build multiple things concurrently because the nature of what this is, is I would load my brain with all of the knowledge and thoughts and the code base and where I'm going and my implementation details and my algorithms and all the various parts of what I was doing into my brain, and then I would work with that.
08:43 And that was great in terms of my ability to get the work done, and I had a bit of a reputation for being good at that part, because once I loaded my brain with all the information, I could then just run with it and do it quickly. Well, now, in the time you have when you're kind of working, while the model is working on whatever direction you last gave, you can sort of context switch and go to another one and another one.
09:08 I think yesterday I was working on three projects concurrently for most of the day, and it's exhausting in that same way, but it's productive as well. I was able to get meaningful progress done on three different things by working concurrently. It's almost like I'm now projecting myself into this alternative dimension in three different places, and so rather than climbing one mountain, I'm climbing three mountains at once. That's really cool, but similarly kind of exhausting.
09:36 And I do find that I need to pay attention to when I'm doing those kinds of things, when I'm not working on one project at once, that I need to be really careful and kind of be writing things down on a notebook as I'm going, or to kind of reset where I was, or just generally, I have to really pay attention more, which is lots of cognitive effort in exchange for productivity. And that is just a trade-off I have to deal with.
10:00 Something else, though, that is probably also worth saying is that this approach also, in addition to allowing you to work on multiple things, it can also make it easy for you to get sort of sucked down into rabbit holes or unfruitful paths that... On the one hand it's great that you can explore so many things, but on the negative side of that is it means you could explore so many things, and it is easy to lose sight of what is really the destination you were aiming at. You have these ideas and you're like, oh, what about this? What about that? What about this?
10:36 And particularly I've noticed this recently, as I feel like we've crossed a threshold with, I guess, token budgets or things like that, where there was a period where you had to be really thoughtful about what you would burn tokens on or burn your usage quotas or whatever model you want to look at on. And increasingly, I would say in the last, maybe even just a few weeks particularly, but just generally, that has become less and less of a thing that I think about, and I am more able then to do exploratory things, and that's exciting, it's fun.
11:01 I've definitely built some cool features that I think I wouldn't have done if I felt like they were...my confidence in them was low enough that I just wasn't worth the relative cost of them. But now I can try those things, but I just need to make sure, I think, too, that I'm not getting sort of sucked down a rabbit hole that is distracting from the main thing, that is actually not being productive, or I'm building features because I can, not because I should. Maybe that's one way of saying it.
11:32 I think one of the best things about building quality software is about making things that are thoughtfully designed and intentionally built so that they serve a purpose and serve it with a sense of perspective, with a sense of this is what is the best way to solve this problem. And I think a lot of modern software development means that you don't have to be as selective. In the old days, if you wanted to build the thing, you had to build it. You had to commit weeks or whatever of development time to that project. And if now you don't, it may be a bit easy and tempting to just start throwing the kitchen sink at the problem, because why not? Maybe it'll be useful.
12:19 So I need to, getting back to the hardest part, make those hard decisions. I have to make the tough calls between, is this actually a good feature, or is it just something that I could make really quickly? Is it actually going to be impactful? Does this app have a sense of a point of view and a perspective that is still meaningful? There's a sense of authorship behind it, or am I just sort of blindly hitting the tab completion in my agentic coder and letting it just keep going down whatever path the LLM is saying is the highest probability outcome? If I'm doing that, that's really not taking advantage of this opportunity.
12:54 Because I will say overall, I enjoy this form of development. Not as much, I would say, from a recreational perspective of the old days, the sense of flow state, productivity, the sense of...some of my best days I've ever had in my job were those days where you tackled a really interesting problem, where you climbed that really tricky path up the mountain, and then you got to the end, and you got to the end as a result of your own labor, effort, creativity, intuition, whatever those things were. Those days are amazing, and I do kind of miss them sometimes.
13:30 But I'm also excited for what this kind of portal gun development...that as long as I have line of sight to something, I can make it. My limit is my imagination and creativity, not the amount of time I have, not the amount of resources I can apply to a particular problem. It is really a question of productivity, of allowing myself to make those hard decisions, learning how to do that in a productive way that isn't just spinning my wheels or going in lots of directions or just burning myself out cognitively, but allowing me to then use the advancement that that gives me to build cool and awesome things and to build them in a way that I just wouldn't have been able to otherwise.
14:10 And so I guess these are just assorted thoughts on the difference from map and compass development to line of sight, kind of portal gun transportation development, but it is a weird time to be a developer, but I'm enjoying it.