How to Partner with AI to Build Software
I’ve been using AI to create web apps and other tools for the last 2 years. Before using AI, I had to pay $35K to $45K for developers to build out my MVPs of my B2B applications — primarily revenue intelligence and GTM tools. Then I’d sell paid pilots to recover some of my cash, and then use feedback from the clients to create improved versions of the app. Then I’d pay EVEN MORE to get the 2.0 version built.
Now I can build a new system in a weekend. I can add a feature in an afternoon. In fact, these tools are starting to become widespread in all corners of the industry.
Today, the world of software development is rapidly transforming, infused with the capabilities of artificial intelligence. Tools seamlessly integrated into our IDEs, like GitHub Copilot, AWS CodeWhisperer, and Gemini Code Assist, are becoming ubiquitous, promising accelerated workflows and enhanced coding experiences. Lifelong programmers are embracing AI to power-up their abilities… but the more exciting trend is all the non-technical folk building their first software.
While the allure of instant code generation is strong, harnessing the true power of these AI assistants requires a fundamental shift in perspective.
Stop thinking of them as code vending machines — see them instead as sophisticated digital partners. Achieving synergy with these partners hinges on effective communication, clear expectations, diligent oversight, and a commitment to collaboration. Simply accepting AI suggestions without scrutiny is akin to navigating a complex city blindfolded – you might move quickly, but likely not towards the correct destination, and certainly without understanding the path taken.
It is a risky strategy to run around a city blind.
To truly leverage AI, we must learn to guide it, interact with it critically, communicate precisely, and apply its strengths thoughtfully across the entire development lifecycle. We must coordinate and guide the AI to maximize the impact it can deliver to us.
That’s what this article is all about: getting the most from your interactions with AI.
Becoming a Master Using AI
Explicitly state what action you want the AI to perform: Generate
, debug
, refactor
, explain
, optimize
, document
, test
, compare
, recommend
, translate
(e.g., Python to JavaScript).
When unsure about the best approach, prompt the AI to suggest different solutions, compare frameworks/libraries for a specific task, or discuss the trade-offs of different algorithms or design patterns.
Example: "What are the pros and cons of using Flask vs. Django for a small REST API project?"
Example: "Suggest three different ways to implement asynchronous tasks in Python for a web application and compare their advantages."
Ask the AI not just to write code, but also to explain how it works, add inline comments, or generate documentation (like function docstrings or README sections).
Example: "Generate a Python function to calculate Fibonacci numbers recursively, and include comments explaining each part of the code."
This was very important to my developer as a software developer over the last two years.
The foundation of any successful collaboration, whether human or digital, is mutual understanding and shared context. When onboarding a new developer, you provide essential information about the project's architecture, technology stack, coding conventions, and goals. Your AI assistant requires similar guidance to operate effectively within the unique ecosystem of your project. Neglecting this step forces the AI to make assumptions, often leading to suggestions that are misaligned with your standards, incompatible with existing code, or simply inefficient within your specific context. Establishing clear ground rules from the outset is paramount. A highly effective method for achieving this is through a dedicated project instruction file, often named instructions.md
or .ai-instructions
, placed prominently in the project's root directory. This file serves as a persistent charter, a set of guiding principles that the AI can reference to ensure its contributions are relevant and appropriate.
Think of this instructions.md
file as the project's constitution for your AI. Using simple Markdown, you can articulate the essential "house rules" that govern development. For instance, clearly define the core technology stack: "This project is built using Python 3.11 and the Django 5.0 web framework. We utilize PostgreSQL 16 as the database, accessed via the Django ORM. Celery with Redis is employed for background task processing. Please prioritize using Django's built-in features and the ORM over raw SQL or external libraries for common tasks unless explicitly necessary for performance." You should also outline architectural patterns: "Adhere to a strict Model-View-Template (MVT) pattern as defined by Django. Business logic should reside primarily in service layers or Django model methods, not directly within view functions. For external APIs, implement the Repository pattern to encapsulate data fetching logic." Explicitly state coding standards and style preferences: "All Python code must conform to the PEP 8 style guide, enforced by the Black code formatter and Flake8 linter. Aim for clear, readable code with type hints for all function signatures. Keep functions concise and focused on a single responsibility." You can even link to internal or external style guides.
You can take this much, much further. You can tell the AI what to do, what NOT to do, and then you can give it different personalities and focuses so it can 100% drill into whatever your focus is at the time: designing, engineering, debugging or remixing.