I have always had an urge to code, even when my role did not need it.
From simple VBA automation for Execl to php based simple query page, I have been curious about using creating some short cuts to help me be productive.
When the GenAI tools started getting capabilities to create some amazing stuff, I also was curious to explore and understand.
The first experiments were with image generation. It was cool to see images generated based on prompts.
But, they had limitations with text that I wanted to be included in the image.
After trying many tools, I settled down on on Perchance, that offers various styles that can be used and generates multiple options to pick from.
The next ones were to create documents.
For my podcast, it used to be a time consuming activity to listen to the audio, create show notes, then craft titles, sub titles etc.
Thanks to the capabilities to transcribe audio, the need for listening to the full recording [at 1x!
] reduced to only specific episodes.
While the quality of the transcription was not to my satisfaction, i could pass the generated transcript to an LLM and get meaningful summary.
I use Microsoft Word for the transcription followed by Google Gemini and Microsoft Co-Pilot to summarize, analyze and pick highlights
Another tool that I use here is Descript.
By this time, I was getting a little more confident of exploring some simple coding – or at least that is what I thought!
I wanted to have more interactive presentations and simple visuals in presentations.
based on prompts, I could generate htmls that were quick, clean and effective.
In this process, I discovered Claude. when I compared it to other tools I was using at that time, this was easily the simplest and most effective to generate HTMLs.
So far, so good.
When I wanted to add interactivity to these HTMLs, so that they could be shared over WhatsApp to a group, as part of some workshops, i got a glimpse of the deeper, darker side of AI enabled code generation.
The pages generated would not work on iPhones!
Every time I had a conversation with the LLM and explained the errors, it would mess up the code further.
When I point out the possible cause of the error, it would respond, oh yes! and offer to correct it – messing up the code further.
It was time to take the next step and get into some more serious coding!
Enter Google script.
After seeing my colleague, Paramu create Google script based functionality [to have conversations with his books], my curiosity led me to quick tutorial from him to understand the steps to create and deploy Google Script based solutions.
Enter the Navigator!
This has been an idea of mine, that has been silently germinating in my mind, possibly for more than a decade.
I had attempted to do something about it in the past as well, and once, enrolled for a neo4j workshop.
More about the navigator in a later post.
For now, we will stick to just the technologies explored and experience.
Google script was good. I could quickly create a small prototype of the visualization I had in mind.
Gemini was able to generate the code and I figured out how to deploy that on a server and access with a URL.
When it came to making it multi user, add persistence in the conversations, I needed a database.
When I asked Gemini, the recommendation was to use Firebase!
One more tool to learn!
That was also a smooth experience and I could very quickly create a working prototype to explain the functionality.
To make it enterprise production quality, I needed guidance and approached my colleague, Raja.
I asked him to give me some tips for vibe coding.
After a brief pause, he said – I do not think that you should take that route. You should always build enterprise class systems from first principles.
The good practices of software development never go out of style. In fact, they are much more important in the era of vibe coding.
I thought I understood the words, but not the meaning.. So, asked him ‘Why do you say that Raja?’
Raja wanted me to open one of the HTMLs that I had created earlier.
That one was a self assessment, where the respondent needed to answer various questions, picking from multiple choices.
we got into the code view mode and Raja asked me if I see anything unusual or something that I would not like..
I hesitated.. the code looked nearly formatted.
But, somewhere it felt like it was more like COBOL, following a very straight line of logic and repeated code.
Raja said: This is not maintainable code. It does not use any style sheet. So, the code is repeated for every button or text box etc.
Then he pointed me to a ‘God function’.
That clearly indicated that the code was not very elegant and did not follow good design patterns.
I started to understand slowly.
He asked me to sign up for … drumroll … Cursor!
At US $20 a month [was suggested to go for a monthly subscription for now], I was hesitant – more so because I was not sure if i could work on my own, and I was planning to do this as an experiment, with probably an hour or so daily.
Raja convinced me to go for a subscription that had a free month to start.
It has been so much fun.
I was a typical fresh programmer, impatient to jump into code generation.
I guess Raja had a tough time curbing my impatience and insisting that we first have a conversation with cursor.
Share our requirement, ideas for implementation, explore alternative tech stacks, make some design decisions etc, before starting to generate the server side database, API etc.
Then, move to the client [UI] side.
above are a couple of screenshots from the application developed.
This was functional and would let create new records, update progress and visualize progress.
All this was on my local machine.
While developing [and testing] this application, i could see that Cursor many times behaved like how I felt when I started.
Always eager to jump in and code.. not really thinking through or clarifying any doubts, defining the scope etc.. and in that process make ‘silly’ mistakes.
When pointed out, it would gracefully acknowledge and make corrections by itself.
Could not understand why it could not have done that in the first place.
Apparently, they get to understand my tastes over multiple interactions and then incorporate, in this case, some additional self checks.
I could do all the above – which included set up time for the environment and other tools / utilities on my laptop – in about 30 hours!
Just when we were getting ready to prepare for a server deployment and an invite-only beta of the solution, Raja had a question – why are we doing this application the traditional way, using forms and deterministic master data etc.
What are the ‘AI’ elements in our approach or solution?
After a brief reflection, it was time to pivot!
Currently, we are reimagining the way to look at the need, leveraging the power of AI not only at development time, but also actual runtime.
I hope to have a working prototype soon and will share those stories sometime later.
To summarize my experience – thoughts and feelings included! – with being reborn as a developer:
- The time to code is now! even if you have been out of touch with coding for a while, if you enjoy solution development, use AI!
- Treat the AI coding assistant as an excellent thought partner. I found the interactions very insightful, particularly when generating and refining ideas.
- Treat the AI tool as an overenthusiastic intern. Make sure you set the guardrails and keep nudging regularly
- do not underestimate the power of what such tools can do. for one of my side projects, i wanted to upload an Excel template and start the conversation based on that. While cursor, by itself, could not read Excel files, it created python scripts to achieve the desired results
I am enjoying this rebirth.
Would you also want to explore this? If yes, share your ideas that you want to take further.
If you already have some experience, please share for the benefit of others – and me too!