My “Vibe Coding” Experiment: What I Learned Building an ETL Tool with AI

I’m hearing a lot about “vibe coding” and the potential for AI to replace developers through automated tools that can write code based on simple prompts. As a Product Manager in tech, I decided to put these powerful new tools to the test myself; and see if it really lives up to the hype. My mission? To build a basic ETL (Extract, Transform, Load) desktop application. Hopefully, something that can make my day to day job a little easier; and learn along the way.

For this experiment, I primarily used Cursor, though my experiences align with what I’ve seen from other large language models like ChatGPT and Google Gemini. I chose to build the entire application, both front end and back end, in Python. Why Python? Because while I’m not a full stack developer, I possess enough Python knowledge to navigate the generated code and truly understand what the AI was doing and sometimes, not doing.

The Upside: Lightning Fast Prototyping

AI tools truly shine when it comes to laying down an initial framework and prototype. The speed at which Cursor could generate foundational code was remarkable. It wasn’t a ready to deploy application, but it provided an excellent starting point that saved a significant amount of time.

For example, it swiftly created core modules like “Input” and “Filter.” The code behind the “Input” module correctly performed its function, but it entirely omitted a user interface for loading a file. This illustrated AI’s strength in generating core logic, even if it overlooks crucial interactive elements that make an application usable.

The Downside: UI/UX Challenges and Stubborn Bugs

This is where the real complexities emerged. The AI consistently struggled with interactive and complex interface components. Any feature requiring animation led to multiple rounds of testing, with over half of these attempts causing the prototype to crash completely. Despite my explicit instructions to follow Material Design best practices, I seriously questioned the AI’s adherence.

This wasn’t an isolated issue. Time and again, I’d ask the AI to implement a specific feature, and while it would generate some code, it often didn’t actually solve the problem. I encountered this repeatedly with the user interface, and it also had significant problems with uploading to my Git repository. It would claim success, but checking the repo was often a coin flip; the changes simply weren’t there.

While I’m not a seasoned developer, reviewing the generated code revealed instances where the system seemingly “brute forced” solutions. This often resulted in performance and stability issues. I’m certain an experienced developer could navigate these challenges more efficiently, but for someone with my level of coding expertise, they were genuine roadblocks.

Key Learnings from My AI Coding Journey

My experiment provided some invaluable insights into the current state of AI powered coding:

  • Replication Over Innovation: I had more success asking AI to replicate an existing interface or workflow (e.g., “create an interface that looks like X”) rather than trying to build something truly innovative from scratch. Maybe as I get better with prompts this will go away.
  • Logging and Error Handling: Without explicit instructions, these tools typically won’t generate any logging or error handling. As I iterated and things inevitably broke, the AI had increasing difficulty diagnosing what went wrong, turning debugging into a significant time sink. Without some knowledge I can see getting stuck in a loop of it not working and the AI not knowing how to fix it.
  • Security Requires Human Oversight: While my ETL tool is a personal desktop application, I would never consider deploying or sharing something like this for an enterprise level client. Security is a major concern that these tools don’t inherently address; it remains a critical human responsibility.

While my ETL tool isn’t ready for widespread use and still has unfinished modules, you can explore the AI’s initial work on my GitHub: https://github.com/eokunevich/bebetteretl. I’ll continue iterating on it, hoping to get it to a point where it genuinely saves time compared to traditional methods.

My takeaway? AI coding tools are powerful accelerators for rapid prototyping and generating boilerplate code rapid prototyping and generating boilerplate code. I can see how it will democratize coding for simple projects. However, they are far from replacing human developers. The nuanced understanding of user experience, robust error handling, security considerations, and the ability to debug complex, non obvious issues still firmly reside in the human domain.

I’m curious to hear about your own experiences with “vibe coding” and AI powered development tools. What are your key learnings and best practices? Share your thoughts in the comments below!

Leave a Reply

Your email address will not be published. Required fields are marked *