Path to 90: Tricks for Enhancing Development with AI
We use Deep Research to find best practices, plus we review our list of 24 tools for code generation.
In our previous article, we discussed the potential for significant gains in developer productivity, aiming for what we called the Path to 90, which is to say 90% code generation. We introduced the concept of AI-assisted coding and its potential impact and dug into how we got to about 50% code generation.
With it harder to get gains, the team did some deep research using Google Gemini’s new Deep Research, and Perplexity. Interestingly, and maybe predictably—Gemini came up with way more detail, even successfully navigating 500+ comments on a reddit thread.
Our research gave us some ideas, and concerns with how developers can really get to 90%—and asked if they even want to?
First: We are NOT Vibe Coding
We are very clearly doing professional development for a commercial code base. This is a far cry from the casual, often haphazard, approach of "vibe coding."
This isn't about blindly trusting an AI to write our applications while we sit back and watch. This is about professional development teams strategically integrating AI to enhance their existing skills and processes.
Here's why our approach is fundamentally different:
Driven by Intentionality: We're not just throwing prompts at an AI and hoping for the best. Our methods involve carefully defining coding preferences including tests, establishing clear guidelines, and focusing on specific areas where AI can provide tangible benefits, like code analysis and the generation of repetitive code.
Guided by Expertise: This approach is rooted in the knowledge and experience of seasoned developers. The coding pattern preferences we discussed represent best practices and architectural considerations that experienced coders understand and value.
Maintained by Professionals Who Love to Code: Crucially, this isn't about replacing developers. It's about empowering them. The developers implementing these strategies are individuals who are passionate about writing high-quality, maintainable code. They see AI as a tool to help them achieve these goals more efficiently, not as a substitute for the intellectual satisfaction of crafting elegant solutions. This is about smart coders using smart tools to be even better at what they love doing.
Focused on Quality and Maintainability: Unlike the potential chaos and resulting technical debt of "vibe coding," our approach emphasizes code quality, consistency, and long-term maintainability through the strategic application of AI and the continued oversight of human developers.
That said, there is plenty to learn from folks that do vibe code, as they are trusting the tools a lot more than developers do. Much of our conversation came from watching this video on vibe coding on Cursor:
AI Code Analysis: Capabilities and Considerations
A key area of interest is the ability of AI tools to analyze existing codebases. While code generation is a frequently discussed feature, the capacity for intelligent code analysis offers substantial value. Igor emphasized the importance of robust code analysis capabilities in the tools he finds most useful. He noted that while many Large Language Models can produce code, their understanding and reasoning about complex code remain areas of ongoing development.
Igor shared an example where he used a simple text file containing notes related to his job search. He was experimenting with different AI tools and was surprised when one of them, despite not being explicitly trained for this purpose, correctly identified the content as a job search log. This highlighted the unexpected ability of some AI models to understand context and identify patterns even in seemingly unstructured data. However, he cautioned that this level of understanding isn't consistent across all AI tools and shouldn't be taken as a guarantee of deep code comprehension.
Guiding AI with Design Patterns and Preferences
Our conversation then turned to how AI can be used to promote and enforce consistent coding practices. We discussed a developer who configured their AI environment (specifically Cursor) with a set of coding preferences. These preferences serve as guidelines for the AI, encouraging simplicity, discouraging code duplication, and ensuring environment-aware code (development, testing, production).
The specific coding pattern preferences implemented were:
Always prefer simple solutions
Avoid duplication of code whenever possible by checking for similar code and functionality elsewhere in the codebase.
Write code that is aware of different environments (dev, test, prod).
Only make changes that are explicitly requested or confidently understood to be related to the current task.
When addressing bugs or issues, prioritize existing implementations before introducing new patterns or technologies. If a new implementation is necessary, ensure the old one is removed to prevent logic duplication.
Maintain a clean and organized codebase.
Avoid writing single-use scripts directly in files.
Keep files under 200-300 lines of code, refactoring when necessary.
Use mocking data exclusively for testing purposes, not in development or production environments.
Do not introduce stubbing or fake data patterns into code affecting development or production environments.
Do not automatically overwrite the
.envfile without explicit confirmation.
These preferences provide a structured way to guide the AI towards desired coding standards and architectural principles.
The Role of Human Developers: Trust and Ownership
Despite the growing capabilities of AI, the involvement of human developers remains critical. Trust in the AI's output is a significant factor. As Igor pointed out, the inherent uncertainty in model outputs can make developers hesitant to fully rely on AI-generated code, particularly for complex tasks.
Interestingly, Igor observed that managers might express more immediate acceptance of automated code generation compared to developers. This could be attributed to developers' intrinsic engagement with problem-solving and their desire for ownership over the code they produce. Imposing AI adoption without fostering trust and respecting this sense of ownership may not be effective.
Test-Driven Development and AI Assistance
We also considered the application of Test-Driven Development (TDD) principles in the context of AI-assisted coding. The idea of prompting AI to generate code that meets specific test criteria is theoretically appealing. However, the practical challenge lies in creating comprehensive and meaningful tests, especially for intricate scenarios.
Igor suggested that AI currently performs well in generating repetitive code based on well-defined rules. However, its effectiveness diminishes for more varied and complex coding tasks. This suggests that AI's current strength in development lies in augmenting human capabilities in areas of standardization and repetition, rather than replacing the analytical and problem-solving skills of experienced developers.
Documentation and Collaboration
Ultimately, both Igor and I agreed that clear and thorough code documentation is essential. Well-documented code not only aids human maintainers but also improves the ability of AI models to understand and interact with the codebase in the future.
The integration of AI into development workflows should be viewed as a collaborative effort. By focusing on building trust, leveraging AI for tasks like code analysis and repetitive code generation, and maintaining high standards of code quality and documentation, development teams can effectively utilize AI to enhance their productivity and address increasingly complex challenges.
The 24 Tools We Are Reviewing
As we explore the Path to 90% code generation, we've encountered a diverse and rapidly evolving landscape of AI-powered tools—from intelligent code completion and analysis to autonomous agents capable of tackling complex tasks. Here's a closer look at the 24 tools we are currently evaluating in our journey:
Aider - A free, open-source AI-powered pair programmer that you can use to edit code in your local Git repository.
bolt.new - Bolt is an AI coding environment that enables users to code, test, and deploy full-stack applications directly from their browser.
Claude Code - Claude Code is an agentic coding tool developed by Anthropic that operates directly in your terminal, understanding your codebase and helping you code faster through natural language commands. It integrates seamlessly with your development environment, streamlining your workflow without the need for additional servers or complex setup.
Cline - Cline is an open-source AI coding assistant with dual Plan/Act modes, terminal execution, and Model Context Protocol (MCP) for VS Code. Alternative to GitHub Copilot with extensible tools and real-time debugging.
Codebuddy - An AI code assistant perfect for PHP, offering features like multi-file editing, deep codebase understanding, and integration with VSCode and Jetbrains, with voice conversation capabilities and web documentation referencing.
Codeium - An open-source, AI-powered coding assistant designed to enhance the coding experience with real-time code suggestions and privacy-focused local AI model usage.
Cody - Sourcegraph goes beyond individual dev productivity, helping enterprises achieve consistency and quality at scale with AI.
Cursor - An AI-powered code editor, forked from VS Code, integrating ChatGPT and Claude for intelligent code suggestions, error detection, and optimization.
Databutton - An all-in-one online workspace to create, deploy, and manage data apps, supporting Streamlit-based applications with features like Pages, Jobs, Libraries, and Data Storage.
Devin - Devin is a collaborative AI teammate built to help ambitious engineering teams achieve more.
Devika - Devika is an Agentic AI Software Engineer that can understand high-level human instructions, break them dow
Gemini Code Assist - Gemini Code Assist is an AI-powered coding assistant that provides assistance in various IDEs such as Visual Studio Code and JetBrains IDEs (like IntelliJ and PyCharm) for developers. It offers features like code completions, generating full functions or code blocks from comments, generating unit tests, and helping with debugging, understanding, and documenting code.
Lovable - Lovable is an AI-powered platform that enables users of any skill level to create full-stack web applications without requiring coding expertise by simply describing what they want in plain English.
Nut - Nut Chat is an open-source AI-based full-stack app development tool that uses Replay.io recordings for bug analysis and offers early adopters free access for feedback contributions.
Onlook - Cursor for Designers - Onlook lets you edit your React website and write your changes back to code in real-time. Iterate and experiement with AI.
OpenHands - Use AI to tackle the toil in your backlog. Our agents have all the same tools as a human developer: they can modify code, run commands, browse the web, call APIs, and yes-even copy code snippets from StackOverflow.
Replit - Build apps and sites with AI.
Site Brew - Design and publish a site in seconds
SWE - agent - SWE-agent takes a GitHub issue and tries to automatically fix it, using GPT-4, or your LM of choice.
SWE - bench - SWE-bench is a benchmark designed to evaluate the ability of language models and AI systems to resolve real-world GitHub issues. It includes various datasets and models to assess their performance in solving software engineering tasks.
Tempo Labs - Visual Editor for React, powered by AI.
Vercel - Vercel provides the developer tools and cloud infrastructure to build, scale, and secure a faster, more personalized web.
WebSim: - WebSim.AI serves as an interactive hub where users can develop, archive, and distribute generated web simulations, accompanied by the full record of text prompts used in their creation
Windsurf Editor - Windsurf is an AI-powered Integrated Development Environment (IDE) designed to enhance developer productivity and streamline workflows by combining human creativity with artificial intelligence. It is built to support developers by understanding the context, providing intelligent suggestions, and handling complex tasks autonomously, keeping developers in a "flow state" by reducing distractions and automating mundane tasks.
Join Our Mission
We invite you to share your perspectives on the role of trust in adopting AI for development. Please feel free to contribute your experiences and insights in the comments below!
