LinkedIn is full of posts complaining about vibe-coding creating unmaintainable piles of tech debt.
Twitter frequently features tech failures of non-technical people building products.
The dominant opinion in the public discource around Gen-AI assisted coding is that it’s a shiny toy, creating more problems than it solves, especially dangerous in the hands of untrained individuals.
Let me ask you this: how did your first programming projects look like? How many people saw them and commented on them?
Most professionally established engineers got established professionally in an era where one does not:
post all their beginner failures online,
failed beginner projects look like anything a stranger on the internet could understand.
What we’re seeing now is future junior developers, getting their feet wet in the world of programming.
What they are receiving from their potential mentors, established engineers: disdain and ridicule, instead of encouragement.
Every non-techie I’ve talked to or worked with who had tried building something with Loveable or Cursor quickly ran into the limitations of their own knowledge.
They stumble upon this choice:
Should I go deeper?
I can roll up my sleeves and ask ChatGPT about “JSON” and “Markdown”, and learn more and push the project further
Most people don’t.
A few will expand their knowledge – ask more questions, get more answers, produce interesting results on the way.
We’ll get more junior developers joining the workforce through vibecoding.
It’s just that beginner projects a whole lot more interesting to look at now, than they used to be.
I mean, how exciting is generating a sales dashboard from a prompt, compared to writing “hello, world” and building up from there?
Not all experience is created equal
For established engineers, the biggest opportunity I see here is getting broad experience, with different kinds of systems.
Have you done all of these?
Built a local-first web application,
Built a realtime collaboration system (e.g. multiplayer document editing),
Built an event-sourced application,
Built a highly-concurrent all-state-in-memory application,
Built a framework for others to use,
Built a library for others to use (and published it),
Built a system with a REPL to manipulate the system while it’s running,
Built a system using only AWS basic building blocks, reducing custom code to a minimum,
Built a cross-platform desktop app,
Built a system with 100% I/O-free unit tests,
Built a custom networking protocol, complete with a client and server implementation,
Built an application around geospatial information,
…and the list goes on and on.
As a Senior Engineer today, you might have still only done 1-2 of the items on this list.
You're still a Senior Engineer at $WORK.
But your experience definitely isn’t “senior” in all areas.
To collect your XP required finding and joining the right companies and projects to get relevant first-hand experience.
Now you can create smaller versions of all of the items listed above to get a feel for what is hard and what is easy in that context.
What’s the texture of the problems you encounter there?
It’s close to free now, because AI-assisted coding can get you to the starting point, where you can finally experiment appropriately to your experience level much faster.
Even if you start with an established project (e.g. adding a custom command to Redis), AI-assisted coding will help you with onboarding while Antirez is busy implementing vector storage.
Don’t hestitate to add your own vibe-coded projects to the pile of dumpster fires – as long as you are honest about your project’s purpose, you can learn so much now.
Love this. Recently I was so inspired by your smolcode implementation & Thorsten’s post on building an agent that I decided to build one :) And yesterday I was unsure whether to show the ugly conversation history implementation to the world but then I thought “fuck it im still learning” and decided to merge that ugliness to main.
I think we should try to make something real first no matter how awful it is, then we can try to make it better.
We have time!