I wish I had gotten serious about coding 10+ years earlier than I did. Many of the people I know who got into the tech world around that time ended up doing very well - either moving up to cozy solutions architect positions, owning agencies, or in some cases building world-class product companies. Captains of industry!
One constant that I found when discussing development with people who were previously in the coding trenches is that they often looked down on the manual aspect of the work somewhat. For them, the exciting part was no longer the actual writing of the code, but more so the planning and result of the final product.
While I was still gaining proficiency at coding this was annoying, but now that I know enough to be dangerous I can see where they were coming from. The results of coding can be glorious, but once you are up to speed, and the thrill of your new superpowers begins to fade, the practice of typing it all out can become, well… tedious.
The rise of AI coding tools has now changed all of that - and I’m a believer.
The Prompt is Mightier Than the Keyboard
My first foray into AI-assisted coding was with GitHub Copilot, which plugs into VS Code. I had it for about six months, and never found it that useful (although in retrospect I was probably not chatting with it enough). I found the autocomplete too distracting to do my work, and the suggestions not helpful, so I eventually unsubscribed.
Fast-forward a year or so (i.e. 10 AI years), and the buzz around AI coding was getting positively electric, so I decided to try again. After playing around with a few of the tools on personal projects, I landed on Cursor, and although there was a bit of a learning curve, now there is no going back to the old ways for me.
The great thing about Cursor is that it understands the entire context of your codebase, and is able to make associations between files, and provide holistic analysis. Because of this, it can also make sweeping changes across multiple files, which can be both a blessing and a curse - without the correct oversight.
With my new ways of working I can analyze an unknown codebase faster. I can debug faster. I can scaffold new UI features in a few minutes. And if I don’t like them, or want to see what different approaches look like? I can spend a few more minutes, build them all out, and decide what approach works best. This is not to discount proper planning, but there is something to be said for having an idea, and then seeing it in practice so quickly - without typing forever.
Keeping Cursor on Track
Like so many things, it comes down to communication. If you provide vague instructions, you will get unpredictable results. The more context you provide, and the more specific you are about your goals, and the parameters through which they should be achieved, the more refined your result will be.
The best way to set guardrails within Cursor is by using Rules. Rules are files that live within your project that can be included in the context of all your chats, helping provide consistency and avoid pitfalls as new code is generated. cursor.directory is a good place to see some templated rules for different project types, however, I add rules for all types of things - even for generating detailed commit messages, and updating documentation.
You can also add rules within Cursor’s settings, which then apply to all projects you use the editor for. Apply those settings across your team, and now everyone is generating company code with AI, no matter what they’re working on. There are many other handy shortcuts and features in Cursor which would take too long to mention, but the time saved on development once you dial things in can’t be overstated. You also can’t be afraid to go FAST. 🏎️
What’s the Tradeoff?
If we are gaining all this productivity by using AI to code for us, what is the cost? What are we losing along the way?
Craft? So much code is boilerplate - I don’t really feel I’m expressing myself by typing out divs. The ideas behind what is being built are what is important, and those still shine through. I am also reviewing more code than ever, and continually probing for best practices, so I still feel like I’m improving my craft.
Safety? Potentially. It should go without saying that using Git and GitHub to track changes is essential, as is rigorous peer review within teams. Cursor Rules can also help to mitigate safety issues, and that context should also evolve and improve over time.
Attention to detail? It’s true, if you’re whizzing by, you can’t see everything in granular detail like before, but maybe that’s a good thing. High-level analysis is easier, as is zooming in on problem areas. Spending time refactoring helps to better understand the changes that have been made, cleans up code from unused approaches, and helps contribute to rules that improve the context.
Looking Ahead
It was surprising how fast this change to AI-first coding happened for me - a bit shocking! It is definitely a paradigm shift, and now very clear to me that anyone trying to do development work and not using these tools will soon be left behind.
Agencies should already have a plan for AI adoption, and if they don’t, they should be prepared for headcount to drop. Brands should be asking agencies what their AI plans are, and what that will mean for the volume and quality of work delivered. Developers can’t afford to be doing their jobs without AI assistance any more (at least ChatGPT - come on people!).
This isn’t a trend. It’s the new baseline. And the sooner we adapt, the more fun - and valuable - this work becomes.