Learning to Code
I’ve been a massive fan of AI to build apps, but nothing beats understanding the code.
In the last few months, I’ve depended on AI - specifically Codex and OpenAI models - to build a big app that I use daily for the day job. But, as with any app that I use, there are constant little papercuts that come from daily use.
‘Easy’ I’ve thought in the past ‘I’ll just ask the AI to correct the bits that annoy me, and voila! New app, new features!’ In principle, that’s great - I can move from idea to delivery as fast as I like. But I have a sense of growing unease with this massive app that spans over 30k lines of code, in that I don’t have any chance of being able to review what’s been written and understand it from the ground up.
Normally that wouldn’t matter. Normally I wouldn’t care what goes on under the hood, as long as the app is doing what I say it should. There is a big caveat with that, though, and that comes with the ongoing development; as I get deeper into the codebase and features, I’m finding that the tools are starting to struggle as they are losing context on why previous decisions are made, and the codebase is so large and complex that the AI tools are spending more and more tokens digging through code in order to build a new feature without destroying the previous work - or undermining previous decisions.
I’ve got to the point where I want to rebuild and refactor the app, but the mental overhead in shepherding a tool to get it to the point I want requires that I build out a big design doc, explain exactly how I want each feature to work, and how it should be separated from the others.
Recently I found myself wondering what it would be like to just learn to code and build v2 myself.
I’ve spent a little time tinkering with Next JS and the app is largely built in that, but for v2 I have been considering using Laravel, and I’ve decided to learn the basics of PHP and Laravel to take advantage of the built in features, build a better app, and also understand what’s going on underneath.
So that’s the journey. It’s a long and complex one, but I’m finding that the experience of building a previous app and the multiple code courses I’ve taken in the past have given me a basic set of experience that helps me understand more complex topics more easily - by no means to the level that an experienced software engineer does, but enough for me to grasp the basics and understand how features can be designed better.
And I’m finding that I’m enjoying myself. At last, I have a project that’s worth the effort to learn coding for, and I have a series of milestones that I can cover, step by step, as I learn to code and see real results.
Am I going to abandon AI entirely? Hell no. In fact, I’m using it to supplement my learning by expanding on topics and helping me get to grips with topics or specifics that are glossed over during the course as ’not important’ or ‘beyond the scope at the moment’, so I understand the context behind the decisions that are made. This is just the way I learn - and AI helps me dive down a rabbit hole to test a particular way of thinking while I learn, which adds immensely to my sense of understanding.
So here’s to learning to do things the hard way, when everybody is heading in the direction of ‘Automate all the things’. I am going to battle inevitable ADHD traits as things get hard and I start to lose interest, but hopefully having a large project as the goal will help me stay on track.
Perhaps I’ll keep this updated on my progress. Perhaps you’ll see nothing from me in the future as I quietly abandon my progress for some ‘reason’. We shall see.