(no title)
avin01 | 18 days ago
Once you get how data moves, where state lives, and what happens when things break, a lot of the "magic" disappears. Learning basic debugging and reading stack traces also compounds forever, even with AI.
One thing that helped me: think a bit like a PM. Spend time crafting good prompts (use chatgpt for generating prompts and feed it to your AI coder ;) ) for ChatGPT/Claude/Cursor, ask it to generate docs and explain what it just did. Over time, patterns emerge and things feel less mysterious.
LLMs write code well, but they don't give you mental models. That part you still have to build.
buschleague|14 days ago
One thing that helped us: externalize the structure that experienced developers carry in their heads. Things like test driven development or wheel-and-spoke based file size limitations etc. are the distilled judgment of decades of software engineering. But if you've never written code traditionally, you don't know they exist.
We formalized these into enforced workflows. What I found pretty exciting about it, from an educational tool standpoint, is that the side effect was that new team members and vibe coders working within those constraints started absorbing the patterns themselves. They learn why tests matter because the system won't let them skip them and learn why file size matters because the system blocks them and forces decomposition etc.
bnchrch|17 days ago
Its also why you'll hear many engineers opine over functional programming.
Most start by thinking about 1. What does a system do for me?
Then onto 1. What actions does a system do? 2. Where should files and folders live? 3. Where should services live?
and stop there.
But the true key is when you just think about how data moves through your system.
Then you learn to simplify.
No classes, no hidden state, just simple functions with an input and an output and nothing else.
Long story short: Think about your system in data, and learn how to keep your code super simple to help with that thinking