Many people are still very skeptical about using neural networks in their work, although with the right approach they can help achieve impressive results. This is unfortunate but understandable — there are reasons for it.
In this article, we’ll explore why vibe coding turns into constant disappointment for some people, while others manage to build products in weeks instead of months.
Why do many people still think AI can’t do software development?
In my opinion, there are two main problems, and they are somewhat interconnected:
Many people tried neural networks when they were objectively very bad at coding.
Learning how to effectively guide a neural network requires a bit of practice.
Imagine this: in early 2023, ChatGPT could barely write a simple addition function without bugs. People tried it, got terrible results, concluded that “vibe coding is garbage,” and moved on. Meanwhile, the models improved dramatically.
Now we’re in a situation where tools like Cursor can significantly simplify a developer’s work, but the reputation has already been damaged. Even if a skeptic decides to try AI for coding again, they can easily confirm their bias—because without the right approach, they will most likely still get poor results.
The Anatomy of Bad Vibe Coding
Bad vibe coding is when you write something like “build me an online store” to a neural network and expect a ready-made solution. As a result, you get a messy pile of barely working code that’s easier to rewrite than to fix.
Key signs of a bad approach:
Tasks that are too vague and lack detail
No project context provided
Trying to do everything in a single prompt
Ignoring the project architecture
The secret to successful vibe coding consists of three components: the quality of the AI model + well-provided context + a clearly defined task. The quality of AI models is improving dramatically year after year, which allows us to delegate increasingly complex tasks to them. From the developer’s side, all that’s needed is to download a tool like Cursor and try to understand how it can help in everyday work.
Simple things that can help with any project
Even if you haven’t yet found a way to use agent-based development, there are several Cursor features that will almost certainly help in your workflow.
1. Autocomplete
About 100% of developers who try it end up praising it. It can predict a developer’s next actions with high accuracy and suggest the next steps — often allowing you to apply them simply by pressing Tab.
Seriously, it may seem like a small thing, but once you get used to it, working in a regular editor starts to feel painful.
2. Understanding Someone Else’s Code
Cursor can be very helpful when trying to understand a new project. It significantly speeds up the onboarding process if you ask it questions like:
“Explain how the mutex system works in this project” or
“How are media files downloaded, processed, and stored here?”
So far, I haven’t noticed mistakes in answers to questions like these — the model does a great job analyzing existing code.
3. Writing Documentation
I doubt many people enjoy writing documentation, but this is something you can easily delegate to a neural network by specifying the format you want. Upload the code, ask it to write a README or API documentation, and you’ll get a ready-to-use result that usually only needs minor edits.
Secrets of Good Vibe Coding
If you decide to try delegating something more serious to a neural network, here’s some advice based on my experience.
Good vibe coding means you know how to work properly with project context, understand how much detail to include depending on the complexity of the task, and can judge which tasks the AI can handle — and which ones should first be broken down into smaller pieces.
The Golden Rule of Balance
In vibe coding, you are always balancing between the effort spent detailing the prompt and the quality of the model’s output. The simpler the task and the more powerful the model, the less you need to worry about prompt detail and context to get an acceptable result. The more complex the task, the more effort you need to put in — and the more technical skill will be required.
Simple task: “Write a function to validate an email” — and you’ll likely get working code.
Complex task: requires detailed instructions and breaking the work into stages to achieve a good result.
Understanding this balance is half the success in vibe coding.
Providing Context
Cursor already does a lot on its side to improve how context is passed to LLMs — it efficiently indexes the codebase and uses embeddings to find the most relevant parts of the code. But there are also things we can do on our side to improve this process.
It is essential to define rules for the neural network. For example, when working with Cursor, you can use a .cursorrules file. You can find examples online. It’s also important to maintain detailed documentation that includes a description of the project and its structure. The more useful information you provide, the better.
This makes the results less random and closer to what you actually need. For example, if your project uses CBV in a Django application, you should explicitly mention this; otherwise, the model might easily generate code using FBV.
Proper Task Detailing
Task detailing is extremely important, but you don’t always want to spend a lot of time crafting a prompt yourself. I usually use two approaches depending on the complexity of the task.
Approach 1: Iterative (for simpler tasks)
1. Write a rough, high-level prompt.
2. Look at the result and identify what’s wrong with it.
3. Roll back and write a more detailed prompt based on the issues you observed.
Approach 2: Question-Based (for more complex tasks)
1. Describe the idea and ask the model to generate clarifying questions.
2. Ask it to create a detailed prompt based on the answers.
3. Take that prompt and run it in a new chat or window.
Working with Complex Tasks
If a task is large, it’s better to document it in something like a PLAN.md file and break it down into steps. This file can also be created together with the model. After that, you can feed the task to it step by step in smaller chunks.
A Complete Workflow: From Idea to Prototype
Here’s a real example of how some people combine different AI tools when building a prototype:
Foundation in ChatGPT — from the idea to the basic product description.
I usually create 3–4 documents: the idea/overview, a detailed flow description, a PRD, and a design system.
Research in Perplexity — if there are features that someone else has implemented well, I go to Perplexity Labs and ask it to describe the implementation of that feature in detail.
Design in specialized tools — I ask ChatGPT to generate prompts for Lovable and v0. I feed those prompts into the tools, review the initial results, and choose the one I like the most.
Final refinement in Cursor — I take the best option and polish it until it reaches the desired state.
What to Do Next?
If you’re still skeptical about using AI in development, try again — but this time with the right approach. Start with simple tasks and gradually move on to more complex ones.
And even if you haven’t yet figured out how to fully use AI agents, Cursor’s autocomplete alone is already worth installing. It can significantly reduce the routine involved in writing code and make your development workflow much more comfortable.
In this article, we’ll explore why vibe coding turns into constant disappointment for some people, while others manage to build products in weeks instead of months.
Why do many people still think AI can’t do software development?
In my opinion, there are two main problems, and they are somewhat interconnected:
Many people tried neural networks when they were objectively very bad at coding.
Learning how to effectively guide a neural network requires a bit of practice.
Imagine this: in early 2023, ChatGPT could barely write a simple addition function without bugs. People tried it, got terrible results, concluded that “vibe coding is garbage,” and moved on. Meanwhile, the models improved dramatically.
Now we’re in a situation where tools like Cursor can significantly simplify a developer’s work, but the reputation has already been damaged. Even if a skeptic decides to try AI for coding again, they can easily confirm their bias—because without the right approach, they will most likely still get poor results.
The Anatomy of Bad Vibe Coding
Bad vibe coding is when you write something like “build me an online store” to a neural network and expect a ready-made solution. As a result, you get a messy pile of barely working code that’s easier to rewrite than to fix.
Key signs of a bad approach:
Tasks that are too vague and lack detail
No project context provided
Trying to do everything in a single prompt
Ignoring the project architecture
The secret to successful vibe coding consists of three components: the quality of the AI model + well-provided context + a clearly defined task. The quality of AI models is improving dramatically year after year, which allows us to delegate increasingly complex tasks to them. From the developer’s side, all that’s needed is to download a tool like Cursor and try to understand how it can help in everyday work.
Simple things that can help with any project
Even if you haven’t yet found a way to use agent-based development, there are several Cursor features that will almost certainly help in your workflow.
1. Autocomplete
About 100% of developers who try it end up praising it. It can predict a developer’s next actions with high accuracy and suggest the next steps — often allowing you to apply them simply by pressing Tab.
Seriously, it may seem like a small thing, but once you get used to it, working in a regular editor starts to feel painful.
2. Understanding Someone Else’s Code
Cursor can be very helpful when trying to understand a new project. It significantly speeds up the onboarding process if you ask it questions like:
“Explain how the mutex system works in this project” or
“How are media files downloaded, processed, and stored here?”
So far, I haven’t noticed mistakes in answers to questions like these — the model does a great job analyzing existing code.
3. Writing Documentation
I doubt many people enjoy writing documentation, but this is something you can easily delegate to a neural network by specifying the format you want. Upload the code, ask it to write a README or API documentation, and you’ll get a ready-to-use result that usually only needs minor edits.
Secrets of Good Vibe Coding
If you decide to try delegating something more serious to a neural network, here’s some advice based on my experience.
Good vibe coding means you know how to work properly with project context, understand how much detail to include depending on the complexity of the task, and can judge which tasks the AI can handle — and which ones should first be broken down into smaller pieces.
The Golden Rule of Balance
In vibe coding, you are always balancing between the effort spent detailing the prompt and the quality of the model’s output. The simpler the task and the more powerful the model, the less you need to worry about prompt detail and context to get an acceptable result. The more complex the task, the more effort you need to put in — and the more technical skill will be required.
Simple task: “Write a function to validate an email” — and you’ll likely get working code.
Complex task: requires detailed instructions and breaking the work into stages to achieve a good result.
Understanding this balance is half the success in vibe coding.
Providing Context
Cursor already does a lot on its side to improve how context is passed to LLMs — it efficiently indexes the codebase and uses embeddings to find the most relevant parts of the code. But there are also things we can do on our side to improve this process.
It is essential to define rules for the neural network. For example, when working with Cursor, you can use a .cursorrules file. You can find examples online. It’s also important to maintain detailed documentation that includes a description of the project and its structure. The more useful information you provide, the better.
This makes the results less random and closer to what you actually need. For example, if your project uses CBV in a Django application, you should explicitly mention this; otherwise, the model might easily generate code using FBV.
Proper Task Detailing
Task detailing is extremely important, but you don’t always want to spend a lot of time crafting a prompt yourself. I usually use two approaches depending on the complexity of the task.
Approach 1: Iterative (for simpler tasks)
1. Write a rough, high-level prompt.
2. Look at the result and identify what’s wrong with it.
3. Roll back and write a more detailed prompt based on the issues you observed.
Approach 2: Question-Based (for more complex tasks)
1. Describe the idea and ask the model to generate clarifying questions.
2. Ask it to create a detailed prompt based on the answers.
3. Take that prompt and run it in a new chat or window.
Working with Complex Tasks
If a task is large, it’s better to document it in something like a PLAN.md file and break it down into steps. This file can also be created together with the model. After that, you can feed the task to it step by step in smaller chunks.
A Complete Workflow: From Idea to Prototype
Here’s a real example of how some people combine different AI tools when building a prototype:
Foundation in ChatGPT — from the idea to the basic product description.
I usually create 3–4 documents: the idea/overview, a detailed flow description, a PRD, and a design system.
Research in Perplexity — if there are features that someone else has implemented well, I go to Perplexity Labs and ask it to describe the implementation of that feature in detail.
Design in specialized tools — I ask ChatGPT to generate prompts for Lovable and v0. I feed those prompts into the tools, review the initial results, and choose the one I like the most.
Final refinement in Cursor — I take the best option and polish it until it reaches the desired state.
What to Do Next?
If you’re still skeptical about using AI in development, try again — but this time with the right approach. Start with simple tasks and gradually move on to more complex ones.
And even if you haven’t yet figured out how to fully use AI agents, Cursor’s autocomplete alone is already worth installing. It can significantly reduce the routine involved in writing code and make your development workflow much more comfortable.