Coding is not a job for humans, that’s why programming languages were developed and why we still struggle with modelling reality into code. GenAI is changing this by being able to code for you, based on your prompts. This, changing very fast how developers write code and how IDE’s (Integrated Development Environments) like MS code, Codeium, Replit and more, are providing more than just code completion. This however has democratizedย writing code to non-programmers. Namely interacting with the codebase through writing prompts. So, you interact with the tool by telling it what you want and then examine the outcomes. This is Vibe Coding. Alas, this is not the same as writing code in C and examining the machine code – LLMs are none deterministic and like in C different implementations of the same logic, can have different performance issues. So, if you are Vibe Coding, you need a methodological framework to do it well and get good results. This methodology is AI-DD. AI-DD includes the following steps: Create a system prompt – This is the prompt that define the LLM behavior and how you define the system boundaries: “You an expert developer in Java and Postgres and you will follow a test-based programming paradigm”. Define the context – GenAI, if not given context will try predicting what you want, this is akin to mindreading and seldom works. So, prompt it with as much context as you can, give it manuals, user guides, Use-cases, user stories, UML diagrams, your cloud architecture, just like you’ll need to do if you outsource as software project to external developer. And set clear and concise expectations for the outcome. Prompt engineering – You can never be two detailed when defining your prompt, basically if you ever wrote a programming instruction specification for a junior programmer, it’s like that: Be specific, divide functionality into parts, give plenty of examples and edge cases, and establish constraints. A prompt should be treated like code – Remember the days of using structured language to describe an algorithm, do it to the GenAI and you’re most likely get what you want. Not only that, commit the prompts into Git and manage versions of them. Coding standards – There are many CamleCase naming notation, how you expect the code to be commented and documented, and more. Define the architecture you expect it to follow design patterns and examples of well-formed code. Use code libraries – good coding is reusing code, most LLM are aware of software libraries till the training date, and libraries change often, so point and mention to specific frameworks, libraries and documentation. Start small and develop in cycles – This is not something new, just adapt to using prompts namely create first version evaluate, refine the prompt or add context regenerate and see if you get what you want. Sometimes you’ll need to go back to an earlier prompt version and that’s ok.