TL;DR: Thanks to progress in AI coding assistants, anyone with a certain level of curiosity can now easily create and deploy simple, useable, coded prototypes or apps. This has profound implications for innovation, creativity, the democratisation of technology and for learning. Organisations no longer have any excuses for not innovating or testing ideas in the real world.
However, writing code is just one part of the product development puzzle. My sense, after a brief foray in to this world, is that experience and understanding of products, humans and technology is more important than ever before.
Introduction For the last 10+ years, I've spent most of my time at work helping other people build software and digital products that improve the way we do things and solve interesting, meaningful problems for clients.
Well, to be more specific, I've been the middleman, the ‘sales guy’, whose job is to identify and understand a problem, then bring together smart, more technically-minded people to build software to solve the problem as effectively as possible.
Like most of us, I am an avid user of digital products and love seeing technology applied in the real world. However despite working ‘in software’, I've barely written a line of code, I've never designed anything much more complex than a slide deck (although my animation skills are pretty wild!), and I've certainly not deployed anything into the world that people would want to see and use.
I've often watched my practitioner friends and colleagues from the sidelines - engineers, designers, testers, architects - with some envy, wishing I had a 'real skill' and craft that I could apply to build my own technology and solve my own problems.
So finally, with some time on my hands in the lead up to Christmas, and inspired by the unbelievable progress in AI over the last few years, particularly within the context of software and product development, I decided it was about time I built and deployed a real app that people could use.
I wanted to experience first-hand the productivity gains and 'democratisation' that AI and LLMs like ChatGPT have unleashed on the world. I limited myself to just 3 evenings and found the experience to be a very eye-opening, insightful and valuable experience, aspects of which I thought were worth sharing:
Why bother?! I wanted to learn and understand a lot more about the things I talk about day-in-day-out, but only really understand at a quite a superficial level:
Can a generalist like me, with a background in sales + economics + business + languages (not engineering) get something built in a short space of time? How do you actually build and deploy software and create real digital products?What languages can you use? How do APIs actually work in practice? How do you use GitHub? How can you use a database and connect it up to a front end? What tools should I use to write (aka 'paste') code? Are LLMs like ChatGPT / GoogleAI Studio good at writing code? How do they compare? How useful are they as a teacher rather than just an assistant? How much more room for improvement is there? What to build? I've never been short of ideas of what to build or what problems need solving. Whether the ideas are any good was irrelevant in this case - (a real luxury, as it prevented procrastination). In the end, I ended up building and deploying two different prototypes:A piano practice app for my daughter to help her keep track of her practice and hopefully motivate her to do more. [Guess how that went down?!] An app to make it easy to thank people and businesses who provide amazing service in the real world. Rules: I had to deploy something onto my phone, so that I could see it and interact with it just like a normal app. I had to spend no money at all. I had to limit the time I spent on this to 3 evenings initially (and still be in bed by midnight) I would use two different LLMs, which ended up being ChatGPT and GoogleAI Studio I had to learn as much as possible. I would not kid myself that this was 'learning to code'. I intended to do a lot of copy / pasting and hoped that that approach would leave plenty of room to 'test and learn' other things, even if I didn't actually 'learn to code'. I would write a (non AI-generated) blog post about it, just because why not... Even if nobody read it, I'd learn from writing it. What I did and what I learnt: Night 1: What I did:ChatGPT advised me to look at Flutter as a modern cross-platform mobile technology. Colleagues had also mentioned this at work, so I installed Flutter + Dart without further research or overthinking. Installed VS Code Downloaded Java 17 (didn’t bother to ask ChatGPT why, so I don’t really know why I needed it, but I did) Setup developer mode on my phone Got the Flutter test app installed and working on my phone (hooray!) Faffed about with commands in Terminal for ages Created a bunch of different files for screens and services Signed in to Figma , but then gave-up doing anything very interesting on it to avoid being distracted by design and focus exclusively on the functionality. What I learnt:ChatGPT really is like having a very knowledgeable coder sitting next to you, answering all your dumb questions. I felt I did benefit though from working in the software world and knowing what sort of questions to ask. It shouldn't be that hard to download languages + packages (missing Android toolchains, out of date Java and Gradle etc.) Terminal on a Mac is awkward. Do people actually use that?! Do I really need to know about bash, shell configurations, paths etc.!? Night 2: What I did:A lot of debugging. Brainstormed with ChatGPT about what functionality my 'Feedback App' could offer Evaluated different places APIs, and settled on and signed up to Google Places API (to search for businesses). Built and designed 3 main screens, including one that uses location services on my phone to then feed in to the API. Set up a Firebase / Firestore database and connected it up to my app, after initially just using the SharedPreferences storage option. Deployed it regularly to my phone. Got ridiculously excited when everything worked. [But slightly disappointed that the excitement was somewhat lost on my wife]. What I learnt:It's great when things work, particularly when you see real data appearing in a database, real businesses appearing in a search API, or usage statistics appearing in your API console. But it's also great when things don't work, because that is when you're forced to learn about things. Again here, I benefited from having some knowledge about what questions to ask and prompts to give e.g. 'you're a world class coder who cares deeply about code quality, scalability and good software practices', 'should I not be storing this in an actual database now?'; 'how would I need to structure this to make sure it can scale to millions of users'; 'when are we going to get this in to GitHub?' ChatGPT is incredibly good at brainstorming and coming up with creative (really good) ideas for features.
Night 3: What I did:Built a different, Piano Practice Tracker app using Google AI Studio Deployed it to my phone Tried to focus more on design and usability Set it all up on GitHub Used AI Studio to work more closely on the design and look and feel of the app Tested the app with a real user (my daughter) the next day What I learnt:AI Studio didn't seem as good as ChatGPT. There were a lot more errors in the code which I (it) continuously had to debug. It also doesn't yet store your conversations, so you can't pick up where you left off. Very annoying... GitHub is great, although I'm still confused about whether people use it with the Terminal, or directly from VSCode. User testing really is very valuable. I gave the app to my daughter to use and it was invaluable just watching how she interacted with the app. Her feedback was very useful - if a little painful.
Conclusions: It feels like we're only at the very beginning of a new era of application and product development. I felt like I got a lot done, as a relative novice, and achieved most of my goals in a very short space of time, but I also felt that there is still a long way to go before anyone can build any app. The process of copy / pasting code into an IDE (and errors back into ChatGPT) feels very inefficient, but already you can connect the ChatGPT Mac App up to VS Code, which I did, so it knows exactly what line of code you’re referring to. I know that there are far better ways of doing things, but I just wanted to make progress, rather than optimise the process. The potential for AI to accelerate and democratise learning is really exciting. Whilst I might have learnt a lot more by spending 3 evenings sitting down with one of my engineering friends, the point is that to date, I had never done that. Yet, I'm able to 'work with ChatGPT' to get something live quickly, and learn a huge amount (for free). That said, whilst I learnt a lot more about tools, APIs, deployment etc., I barely learnt anything about coding. I have no idea what I was copying or pasting, or how the software I was 'building' was structured or really working. With a bit more time, I'm sure I could learn more, but if anything, this exercise convinced me that we're going to need senior, experienced technologists who really understand code, architecture, product and design, so we can properly build, run and maintain these systems in the future. In my opinion, AI coding assistants will (a) make experienced technologists more productive, and (b) lower the cost of innovation by making prototyping easier and more accessible to all, but I'm not sure that it yet does (or will ever do) alchemy by magically turning non-technologists into technologists. My day-to-day role requires a lot of context-switching. I found the process of 'building' something and problem-solving without being distracted to be a really enjoyable experience. It felt addictive and highly rewarding - so much so that I really had to force myself to reluctantly close my laptop at the end of the session. Being able to ask good questions in the future is going to become an even more important skill. If there are two things I think we should be teaching our kids, they'd be (a) how to ask good questions, and (b) how to develop and retain a curious mind. Writing a blog post without AI takes far too long. I did ask ChatGPT to summarise my learnings into a blog post just out of curiosity, but then ignored it, as I think that completely defeats the point. I personally want to hear about real, first hand experiences and get to understand other humans. I'm sure a lot of the content I read is AI-produced, but for now, I’m sticking to real writing. Most of my rules were observed, although I do pay £20 a month for ChatGPT 4o, and used up some free credits for the Google Places API.
...this exercise convinced me that we're still going to need senior, experienced technologists who really understand code, architecture, product and design, so we can properly build, run and maintain these systems in the future. AI coding assistants will (a) make experienced technologists more productive, and (b) lower the cost of innovation by making prototyping easier and more accessible to all...
Next Steps: If I find the time, there are few things I’d like to explore next:
Explore the Open Source aspects of GitHub and learn more about collaborating on software with others. Evolve the apps and learn how to deploy them into the app store and have other people (other than myself) use them. Explore more about the design aspects of product development. How far can AI tools go to support a complete design novice like me? I want to look into Figma and Claude.