I’ve spent the past week building my own software. It’s the first personal tool I’ve built that I use on a daily basis. The process has been enlightening so I figured I’d share a few reflections.
A little over a month ago I wrote “Reflections on using AI to code” - the task was speed-running Replit’s learn to code course using AI to see how fast I could do it / what the process was like. One of my conclusions from the process was:
Demos are easy - solid programs are hard:
Writing a prompt to get AI to make a simple demo is trivial. Getting AI to write robust code that has tests, is easy to understand, is well designed and modularized to your liking is much harder…
Now that I’ve spent making a more “solid program” that I use every day I want to qualify this slightly: Demos are easy - solid programs are a harder but still pretty easy if you know how to code.
AI-coding with good tools like Cursor is still in its infancy but it’s pretty obvious that we’ll look back on non-AI coding as something shocking to contemplate.
To give you a sense for what I built, I created a language learning tool customized to my needs: it serves me AI-generated sentences using vocabulary I’m learning. One of the main problems I’ve had with language apps/services is they use the same sentences and often just text, which means I never internalize the new vocabulary since I haven’t heard it in enough contexts. The app I built (I call it “Tatsumaki”) solves both of these problems, giving me GPT-generated sentences on demand that help me internalize vocabulary much better & faster.
This software is very niche (at least the way I’ve built it so far). It’s catered perfectly to my needs but is missing many things that would make it easy for others to use. But that’s the thing, with AI one can build these super niche tools in just a matter of hours and solve your personal / niche problems.
For most of my life being OK but not great at programming made this type of work prohibitive; if I didn't program constantly I'd forget programming language details and it would take too long to get meaningful work done. If a project would have taken me a few months of nights and weekends it was not worth the ROI. Additionally, pre-GPT I’d get stuck debugging arcane problems using stack overflow / google and hoping for the best - often this yak shaving would sap my will to continue.
With AI-coding this has all changed: my non-professional programming skills are now good enough to actually get things done. Using Cursor I can add new features in minutes vs. what would have taken me days/weeks before and would have been time-prohibitive. Adding big features takes on the order of hours vs. weeks/months. This difference is transformative.
In my prior post I wrote that knowing how to code will only grow in value. I am now way more convinced that is true. Learning to program is now exponentially more valuable than it was a year ago.
What it means to “learn to program”, however, is changing. Instead of being the creator of the code with AI you’re much more the editor: you need to read the code and know if it’s in the right direction. Additionally, you need to know "what to code." For instance, for my project I added caching to speed up vocab locading, I added some auto-scrolling features to improve the UX, and keyboard shortcuts to make things faster. The AI built these really quickly but how would I know to add those if not by playing with things myself? And what other things might I be missing?
Now that I can build almost anything with AI, I’ve noticed my attention to details start to change. A bit like how a carpenter might look around the house and notice which joints/pieces of wood are used, with AI-coding I am much more curious about very specific systems + components. What are the "elements of style" & "elements of structure” of the tools I use every day and which ones would I like to copy?
A few more tactical details are that I’ve found it helpful as I build bigger chunks of code to adapt software engineering best practices. I recommend
Using version control to revert bad AI choices (learn git)
Use a tool like Cursor to code since it shows diffs in changes and works across your codebase;
Break big projects into fool-proof steps that you start to recognize AI can do easily;
Ask the AI to refactor code for you as you go;
Start small and grow (tests and debugging statements are key)
Don't limit yourself - decide what you want to do and then have the AI help you do it.
As my mind looks at what I’ve built over the past week I can’t help but wonder what it means for software to be this cheap to build. What does a world with niche-software-on-demand look like? What does the world look like with 10x-100x the programmers? And how do we teach people to use this super-power?
Are you building niche software? If so, let me know! I’d love to hear what you’re making.
Thanks for sharing your adventures in AI coding. it's both encouraging and motivating to see what's possible!