In the big tech company where I work, there are many departments. Really, I’d say a lot. And the responsibilities of those departments are sometimes totally unclear.
So unclear that at some point even veterans start to doubt:
So unclear that at some point even veterans start to doubt:
“So should the people who handle the red buttons make this button? Or is it already light enough to assign to the pink-button specialists?”
Where do you send a specific task? Who’s responsible? Yes, there is a knowledge base, but digesting it — let alone remembering everything — is a very non-trivial task. And for a newcomer who just joined us from a small startup — it’s really impossible.
Just such a newcomer recently appeared in our department. Smart, energetic, with burning eyes and a desire to “fix” all processes. But when I heard the gears squeaking in his head as he tried to process all that data, I thought that instead of sending him to knock on every chat and get redirects from them, maybe we should try another way.
Just such a newcomer recently appeared in our department. Smart, energetic, with burning eyes and a desire to “fix” all processes. But when I heard the gears squeaking in his head as he tried to process all that data, I thought that instead of sending him to knock on every chat and get redirects from them, maybe we should try another way.
The Idea: “PM Simulator”
That’s how the idea for the game “PM Simulator” was born — a simple trainer where the player has to distribute tasks across company departments for time, based on a brief description of the task.
The mechanics are simple and familiar to every PM:
- there’s a task from the business
- there are several departments
- the player needs to assign the task to the correct department
- time spent on the move depends on task priority
Sounds simple? Of course!
Especially if the desire to build such a game coincided with the desire to finally try this so-called vibe coding.
Iteration №1 — “Cursor, make the game”
As expected from a person inspired by the AI revolution, a beginner vibe coder, I started with the most naive prompt possible:
…and also added a list of departments.
10 minutes of pondering by Cursor, and it says the game is ready and can be launched. What? Really? That’s it now? That’s what product development looks like now? — total shock from the marvel of technology.
The game launched, and you could even drag cards around.
The game launched, and you could even drag cards around.
Of course, there were “buts”:
Formally — everything is logical. I didn’t ask — I didn’t get.
- interface like “kids’ browser game from 2000”
- tasks not at all related to real work in the company
- department names hard-coded in the code (and I couldn’t even find where they were coming from)
- leaderboard… absent (and player names too)
- oh yeah, points aren’t even awarded
- you can only drag a card by its text (if you hit — good, if not — suffer)
Formally — everything is logical. I didn’t ask — I didn’t get.
In attempts to fix everything, I introduced all new and new AI requests, and Cursor conscientiously pondered and edited something. Meanwhile, every edit turned into:
- a new deploy
- a bunch of unexpected bugs
- new sudden layout elements that appeared not because I asked for them, but simply because Cursor decided to add them
After several iterations I got the perfect result — a completely non-functional game. Apparently, the number of features that were now patched into code that originally didn’t assume them exceeded the critical value, and the architecture completely collapsed.
Iteration №2 — “Okay, let’s do it like adults”
Having gotten all possible bumps, I did what developers usually ask to do right away — I wrote a normal spec.
First, I asked ChatGPT (because, well, it was 2026 — I wasn’t about to write all this myself) to write a detailed spec for Cursor, which would take into account that:
- departments and task names should be pulled from separate Supabase tables (to avoid deploying for every small change)
- results should be stored in Supabase to form a leaderboard
- game settings (levels, points, timing) should be taken from a separate config
- department icons and task author avatars shouldn’t be random from Cursor but assets from Supabase’s S3 storage
- visualization should be drawn in the style of a corporate task tracker
- you should be able to drag a card by any part of it
- mandatory prompt for player name + ability to edit it
- and about 25 other little things that came up in the first iteration
Thoughtful ChatGPT returned with a big document where everything was spelled out in detail. I made minimal edits and fed it back to Cursor.
Magic! From the first prompt to Cursor I got a result that:
- looked like a corporate tool
- worked steadily
- allowed game parameter configuration without redeploying
- didn’t break on the first edit
- and overall… matched the spec and did its job (wow)
I upload this to Cloudflare Pages and... the department trainer is ready.
Thoughts About AI and Harsh Reality
Why did I even write this article? Not to tell how I tried vibe coding, but to share a couple of thoughts that arose in the process. Here’s the first of them:
AI will not be able to fully replace developers until clients learn how to write proper specs.
And the problem isn’t that AI is dumb.
The problem is that:
- “make a game” — that’s not a requirement,
- “something like Jira, but simpler” — that’s not a specification,
- “let’s build first and figure it out later” — that’s a path to a swamp of patches.
AI just very honestly reflects the quality of the input data.
It would seem the next obvious conclusion: “Write bad specs — preserve jobs for people.” But no, there’s another one.
Key Takeaway
While building the PM training simulator, I realized that vibe coding itself is actually the best possible training simulator for a PM.
It perfectly imitates the work of a development team and makes it possible to quickly and cheaply see how the quality of task formulation directly affects the outcome:
- poor specs → a crooked result held together with hacks
- vague requirements → bugs, “weird behavior,” and unexpected layout elements
- clearly written specs → a solid, understandable result already in the first iteration
So if you want to level up as a PM, don’t limit yourself to just reading books and running meetings — try actually building something that works with the help of AI at least once.