As developers, we're always looking for ways to improve our productivity and streamline our workflows. With the recent advances in AI (and my firm belief that these technologies will be game-changing), I decided to put these tools to the test in a real-world development scenario.
My Goal: Build a full-stack AI-powered food tracking app PoC in just 7 hours.
The Result: It worked pretty well! But not without challenges.
Here's what I learned about using AI as a development buddy.
The goal was ambitious but focused: create a mobile app that lets users photograph their food and automatically log it to a food tracker using AI recognition. The tech stack included my go-to's: Quasar Framework (VueJS Framework), Google Firebase, and Capacitor (Mobile Dev Framework), with Google Gemini 2.0 Flash for AI inference.
Nothing super fancy, but more than enough complexity to put AI assistance to the test.
I used a combination of AI tools to assist with different aspects of the project:
One of the most valuable insights I gained was thinking of AI as a junior developer or intern. This mental model completely changed how I approached the collaboration. Just as you wouldn't dump an entire project on a new intern's desk and expect perfect results, I learned to:
This approach led to better payoff, and worked better than treating the AI as either "all-knowing" or "completely unreliable".
AI proved exceptionally helpful in the planning phase. I started with a rough project outline and used iterative prompts to refine it. For example, one of my initial prompts was:
Can you help me plan out making the following app in 7 hours: <information about the app> Detail out how long I should spend on each section, and revise my overall plan as needed.
This sparked a back-and-forth that helped crystallize the project scope and timeline, leading to a more realistic and detailed plan.
The AI tools excelled at generating and maintaining documentation. It could quickly create comprehensive markdown files and keep them updated as the project evolved. This freed up valuable time for actual development work.
Breaking down development into smaller, focused prompts proved highly effective. Instead of trying to generate entire components at once, I used a cascade of prompts, each building on the previous one. For example:
A neat trick I found, was to have the A.I. keep notes of the progress and next steps, so it could have something to reference in between prompts. Since I was using WindSurf, I could use a "master prompt" to keep the conversation going. The master prompt would instruct the A.I. to refer back to the notes and add to them as it goes along writing code.
Another place where WindSurf shined was in bug fixes and post-development tasks.
After testing my app out and noting some bugs, I passed my list to WindSurf and it could quickly identify and correct issues, and even generate test cases to ensure the fixes worked. This saved me a ton of time and effort.
I had the following list of bugs, and only on a few occasions did I have to manually fix them:
Can you help me plan out making the following app in 7 hours: <information about the app> Detail out how long I should spend on each section, and revise my overall plan as needed.
Not everything was smooth sailing. Some key challenges emerged:
I discovered several limitations when it came to file modifications:
NOTE: As of writing this, it seems the file lock/failed filed editing bug has been fixed in the latest version of WindSurf.
The quality of AI assistance degraded in longer conversations. I learned to start fresh conversations for new components and provide condensed context rather than trying to maintain one long session.
As the code got longer and more complex, the AI struggled to keep up. I had to break down the tasks into smaller, more manageable chunks to maintain quality, or had to provide lots of details and context to keep the AI on track.
Going off track would entail dropping features, erasing relevant code, or sometimes building the wrong thing entirely. This was a big time sink, and I had to be very careful to keep the AI on track or decide to code manually.
Sometimes, doing it yourself is simply faster. Learning to recognize these moments saved considerable time and frustration. As noted in my development log: "When it works, it works well. When it doesn't, it can be a time sink."
Git Commit Frequently: Before having AI make significant changes, commit your current state. This provides an easy fallback if things go wrong.
Prepare Boilerplate Code: Set up your project structure and basic configurations before engaging AI assistance. In my case, this meant:
Clear and Detailed Prompting: Be as specific as possible with your requirements. Include relevant context and examples. Spend as much time as you can in your requirements and design phase, and provide as much detail as possible. These notes and direction will not only help you execute on your project better, but it drastically improves the quality of the code generated by the AI.
Iterative Feedback: Don't hesitate to correct or guide the AI. For example, when I received output that didn't quite match requirements, I provided specific feedback:
Can you help me plan out making the following app in 7 hours: <information about the app> Detail out how long I should spend on each section, and revise my overall plan as needed.
This kind of specific feedback usually led to quick, accurate corrections.
Using AI absolutely accelerated development. While it required guidance and occasional correction, the combination of ChatGPT and Claude along with WindSurf allowed me to progress much further than I could have alone in the same time frame.
That said, success required understanding both the capabilities and limitations of these tools. The key was finding the right balance between AI assistance and human expertise, using each where they excel.
This experiment suggests a future where AI tools become an integral part of the development workflow - for now, not replacing developers, but augmenting their capabilities. The key is learning to work with these tools effectively, understanding their strengths and limitations, and developing workflows that maximize their benefits while minimizing their drawbacks.
For developers interested in incorporating AI into their workflow, I recommend starting small, establishing clear patterns of interaction, and gradually expanding AI's role as you become more comfortable with its capabilities and limitations.
The tools are at the level of a junior developer, and soon with enough training data and iteration, they will be able to do much more. I can see these tools ultimately writing entire applications and handling the majority of the development process. Until the models can simulate a senior developer, we will still need human oversight and guidance.
I'm excited to see where this technology goes and how it will shape the future of software development.
Here are some quick screenshots of the app I was able to build in 7 hours. It's not perfect, but it's a solid start!
(Using Camera to Capture Food)
(Sending Image to AI for Food Recognition)
(Viewing Results - Adding Food to Tracker)
(Confirming Food Entry)
(Dashboard View)
(Food Entry View)
Shameless, But Relevant Plug:
While I am still working on the food app mentioned in this post, I was able to finish another project quite quickly using WindSurf and A.I.
If you're interested in an AI-powered Git CLI helper to make commit messages and release notes easier to maintain, check out eGit
The above is the detailed content of Building an App with AI Pair Programming: Lessons from a our Sprint. For more information, please follow other related articles on the PHP Chinese website!