<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tim Lorent</title>
    <description>The latest articles on DEV Community by Tim Lorent (@tlorent).</description>
    <link>https://dev.to/tlorent</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F580420%2F0ca2c360-53cc-4d88-b5c7-988f5bc6f3d9.jpg</url>
      <title>DEV Community: Tim Lorent</title>
      <link>https://dev.to/tlorent</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tlorent"/>
    <language>en</language>
    <item>
      <title>"One more course" is not a learning strategy</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Mon, 23 Mar 2026 17:53:51 +0000</pubDate>
      <link>https://dev.to/tlorent/one-more-course-is-not-a-learning-strategy-1m24</link>
      <guid>https://dev.to/tlorent/one-more-course-is-not-a-learning-strategy-1m24</guid>
      <description>&lt;p&gt;You've been working through a course for three weeks. You're almost done. But there's already another one open in another tab (the one you'll do after this) because once you finish both, you'll finally feel ready to apply. Or to take on bigger work. Or to stop feeling like you're pretending.&lt;/p&gt;

&lt;p&gt;That feeling doesn't go away when you finish the course. You already know that.&lt;/p&gt;

&lt;h2&gt;
  
  
  I used tutorials as a way to avoid the thing I was afraid of
&lt;/h2&gt;

&lt;p&gt;When I was trying to land my first dev job, I did this obsessively. One more project. One more certification. One more month of practice. I told myself I was building a foundation, but I was really managing anxiety by feeling productive.&lt;/p&gt;

&lt;p&gt;The courses felt safe. They had right answers. They gave you a green checkmark when you got it right. Real work doesn't do that.&lt;/p&gt;

&lt;p&gt;At some point I applied anyway: underprepared, convinced someone in HR had made a mistake. Within a month on the job I'd learned more about version control, debugging, and reading unfamiliar code than six months of tutorials had given me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why tutorials can't simulate the real thing
&lt;/h2&gt;

&lt;p&gt;Tutorials are designed to reduce friction. They give you a working environment, cleaned-up problems, and a path that someone else already validated. That's useful, but it's also exactly what's missing from actual development work.&lt;/p&gt;

&lt;p&gt;Real codebases are messy. Real specs are incomplete. Real feedback comes from people who are also under pressure and don't always have time to be gentle. The skills that matter most on the job, like reading unfamiliar code, asking the right question at the right time, sitting with ambiguity without panicking, aren't things you can learn in a tutorial, because tutorials are specifically designed to remove those conditions.&lt;/p&gt;

&lt;p&gt;This isn't an argument against learning resources. It's an argument against using them as a substitute for the discomfort they can't replicate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to look for in your first role (or next one)
&lt;/h2&gt;

&lt;p&gt;Not all environments accelerate learning at the same rate. These are the conditions that actually move the needle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured onboarding that explains the why, not just the what.&lt;/li&gt;
&lt;li&gt;Pair programming or regular code review from someone patient enough to explain their reasoning. &lt;/li&gt;
&lt;li&gt;A team where asking questions is normal! &lt;/li&gt;
&lt;li&gt;Real tickets with some ambiguity, not just "go build this thing exactly as described."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What slows things down: being left alone to figure everything out with no guidance, a culture where mistakes are punished rather than examined, and senior devs who are too busy or too defensive to share context.&lt;/p&gt;

&lt;p&gt;The quality of that environment matters more than how prepared you felt when you walked in.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to break the tutorial loop
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Set a hard constraint.&lt;/strong&gt; Pick a date (four weeks out, eight weeks out) and commit to applying or taking on something real by then, regardless of how ready you feel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Build, build, build.&lt;/strong&gt; A real project with a real README, a deployment you maintain, a problem you actually ran into. The messiness of making real decisions is the education.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Track what you don't know.&lt;/strong&gt; When you hit something unfamiliar in a tutorial, note it. Then go apply anyway, and come back to those gaps when the job surfaces them as real problems. You'll retain it better because the context is real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use courses to close gaps, not to gate your next move.&lt;/strong&gt; A course is useful after you've hit something at work that you need to understand better. It's much less useful as a prerequisite for starting.&lt;/p&gt;




&lt;p&gt;The fastest way to become a better developer is to be one, somewhere that supports the learning.&lt;/p&gt;

&lt;p&gt;The "not ready yet" feeling is real, but it's not a signal to wait. It's the feeling of standing at the edge of the thing that will actually grow you. I've mentored developers who spent a year overlearning before their first application. I've mentored developers who applied early, struggled loudly, and grew twice as fast. The difference wasn't talent. It was which discomfort they chose.&lt;/p&gt;

&lt;p&gt;What's one thing you've been waiting to feel ready for? And how long have you been waiting?&lt;/p&gt;




&lt;p&gt;The tutorial loop, the readiness myth, and what actually moves your career forward: I cover all of it in &lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;From Hello World to Team Lead&lt;/a&gt;, my practical guide for developers at every stage of growth.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>I vibe-coded a productivity app for two days as a senior engineer. Here's what happened.</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Tue, 17 Mar 2026 16:55:13 +0000</pubDate>
      <link>https://dev.to/tlorent/i-vibe-coded-my-own-productivity-app-for-two-days-as-a-senior-engineer-heres-what-happened-3pj8</link>
      <guid>https://dev.to/tlorent/i-vibe-coded-my-own-productivity-app-for-two-days-as-a-senior-engineer-heres-what-happened-3pj8</guid>
      <description>&lt;p&gt;I've been using AI as a coding assistant for a while now. My usual approach: treat it like a senior developer who occasionally hallucinates after a rough night. Capable, fast, but usually not a great idea to merge their PR without reading it first.&lt;/p&gt;

&lt;p&gt;That means I review every line. If something gets generated that I don't fully understand, I stop and ask for an explanation before I let it into the codebase. If it violates how I'd normally structure something, I say so and we refactor. The AI proposes, I dispose or approve, or redirect. It's collaborative, but I'm in the driver's seat (although I don't actually have a drivers license).&lt;/p&gt;

&lt;p&gt;I also always work in plan mode, or at minimum ask it to outline what it's about to do before touching a file. That habit alone has saved me from a lot of "wait, why did it rewrite three components to fix one bug" moments.&lt;/p&gt;

&lt;p&gt;So when I decided to try vibe-coding, genuinely handing over the wheel, auto-edit on, no review gate... I kind of expected it would go wrong. That was the point.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem I Was Actually Solving
&lt;/h2&gt;

&lt;p&gt;I'm running several workstreams in parallel at any given time: freelance projects, a consultancy, a few side projects, and I teach frontend at HackYourFuture. My task and project management needs don't fit neatly into any single tool.&lt;/p&gt;

&lt;p&gt;Bear is great for notes but not for tasks. Notion is powerful but requires too much upkeep to stay useful. Things is clean and opinionated, which I like, but it doesn't bend to the way I think about projects that span different contexts and timelines.&lt;/p&gt;

&lt;p&gt;None of them work for &lt;em&gt;me&lt;/em&gt;: the way I actually move between things during a day.&lt;/p&gt;

&lt;p&gt;So instead of trying to bend another tool to my brain, I decided to build my own. The experiment was the perfect excuse!&lt;/p&gt;

&lt;p&gt;I named it &lt;strong&gt;Dunzo&lt;/strong&gt;. If you've watched Parks and Recreation, you know exactly the scene. Tom Haverford: &lt;em&gt;"We are dunzo."&lt;/em&gt; It felt right for a task app.&lt;/p&gt;

&lt;p&gt;It's live at &lt;a href="https://donezo.vercel.app/" rel="noopener noreferrer"&gt;donezo.vercel.app&lt;/a&gt;. My girlfriend and I are currently the only two users. The landing page exists entirely because I needed something convincing enough to get her to actually use it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74oytjee9ublcpcrwypd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74oytjee9ublcpcrwypd.png" alt="Dunzo dashboard showing task list with tags and day overview" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How I Normally Use AI When Coding
&lt;/h2&gt;

&lt;p&gt;Before getting into the experiment, it's worth being specific about what I'm comparing against: because "I use AI to code" covers a lot of ground.&lt;/p&gt;

&lt;p&gt;My standard workflow looks like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Plan before touching files.&lt;/strong&gt; I describe the feature or problem and ask for a plan first. What files will be affected? What's the approach? Are there tradeoffs worth discussing? Only once I'm aligned with that plan do I let it start generating.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read everything it writes.&lt;/strong&gt; Not skim, but read. I want to understand every function, every type, every structural decision. If I don't, I ask. This sounds slow, but it's actually what keeps the codebase coherent over time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Challenge decisions actively.&lt;/strong&gt; If it reaches for a pattern I wouldn't have used, I ask why. Sometimes the answer is good and I learn something. Sometimes it was just the path of least resistance, and we do it a different way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refactor to my standards before moving on.&lt;/strong&gt; AI-generated code tends to be correct before it's clean. I don't let technical debt accumulate: each piece gets shaped to how I'd actually write it before the next feature starts.&lt;/p&gt;

&lt;p&gt;This workflow is way slower than vibe-coding. It's also the reason the codebases I care about stay navigable six months later.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Experiment: Auto-Edit On, No Safety Net
&lt;/h2&gt;

&lt;p&gt;The rules I set for myself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Auto-edit mode, always on.&lt;/strong&gt; No plan mode, no "confirm before changes," no second-guessing the approach before it started writing. Just go!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Act as a technical product owner, not a developer.&lt;/strong&gt; My job was to describe what I wanted, with precision, using my experience to frame things well. But not to steer implementation decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No copy-pasting UI from existing apps.&lt;/strong&gt; If it was going to design something, it would design it from my descriptions, not from screenshots.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The shift that required the most discipline was staying out of implementation. My natural instinct when something gets generated is to read it, react to it, redirect it. For this experiment, I had to consciously resist that: describe the outcome I wanted, let it build, move to the next thing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Day One: Faster Than Expected
&lt;/h2&gt;

&lt;p&gt;The first day moved quickly. I started with a rough description of what Dunzo needed to be: a personal task management system with tagging, a daily overview, and the ability to group tasks by project or context. I didn't wireframe anything. I just described it in plain language with enough technical specificity to keep the output useful.&lt;/p&gt;

&lt;p&gt;Within a few hours I had a working dashboard. Tags worked. The day view worked. Drag-and-drop task reordering worked, powered by dnd-kit. The auth flow was wired up through StackAuth. It wasn't beautiful, but it was functional in a way that would have taken me significantly longer to build with my normal workflow. Not because I'm slow, but because I would have made careful decisions at each step.&lt;/p&gt;

&lt;p&gt;What I was doing wasn't passive. My prompts were doing real work. Instead of writing code, I was writing context:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the component needed to do&lt;/li&gt;
&lt;li&gt;What edge cases mattered&lt;/li&gt;
&lt;li&gt;What the data shape should look like&lt;/li&gt;
&lt;li&gt;How it connected to what was already built&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eight years of building products gave me a vocabulary for that. I suspect vibe-coding with less experience would produce a much messier first day.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Redesign: Describing Aesthetics Instead of Code
&lt;/h2&gt;

&lt;p&gt;Midway through day two, I decided the app needed to look better. Not a small tweak, but a full visual redesign. This was the part of the experiment I was most curious about, because design direction is something I'd normally drive very deliberately.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7v3l9ql9lwglkfvy23o.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7v3l9ql9lwglkfvy23o.jpeg" alt="Old Dunzo dashboard showing task list with tags and day overview" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;After&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74oytjee9ublcpcrwypd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74oytjee9ublcpcrwypd.png" alt="Dunzo dashboard showing task list with tags and day overview" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I didn't give it screenshots of apps I liked. I described the feel I was going for: sleek, minimal, focused. I talked about the kind of typographic weight I wanted, the density of the layout, how I wanted whitespace to work. We went back and forth: it would propose, I'd react, it would adjust. It felt closer to a design conversation than a code session.&lt;/p&gt;

&lt;p&gt;The result was entirely AI-generated based on that input. It's cleaner than what I'd have built if I were coding it myself under time pressure, because I could give feedback on the visual output without getting distracted by the implementation details producing it. There's something genuinely useful about that separation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@dnd-kit/core"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^6.3.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@dnd-kit/sortable"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^10.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@dnd-kit/utilities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^3.2.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@hookform/resolvers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.2.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@stackframe/react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^2.8.72"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@tailwindcss/vite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.2.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^19.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"react-dom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^19.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"react-hook-form"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.71.2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"react-router-dom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.13.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tailwindcss"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.2.1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"typescript"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.9.3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"zod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.3.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"zustand"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^5.0.11"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="nl"&gt;"devDependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@biomejs/biome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.4.6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@types/react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^19.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@types/react-dom"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^19.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"@vitejs/plugin-react"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.7.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"vite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^7.3.1"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing here is surprising, which is itself worth noting. The AI reached for the obvious choices: Zustand for state, Zod for validation, React Hook Form for forms, dnd-kit for drag-and-drop. These are all reasonable tools. They're also the tools that show up most often in training data, which probably isn't a coincidence.&lt;/p&gt;

&lt;p&gt;A few observations on specific choices:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zustand&lt;/strong&gt; was the right call for a project this size, but the store it generated grew without any deliberate architecture. More on that in a moment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailwind v4 + Vite v7&lt;/strong&gt; — both bleeding edge at time of writing. The AI used them without hesitation, which I appreciated. It wasn't defaulting to stable-minus-one out of caution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Biome&lt;/strong&gt; over ESLint + Prettier is a choice I'd have made myself. Fast, opinionated, one dependency instead of three.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Actually Worked
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The speed is real.&lt;/strong&gt; Two days from nothing to a deployed, functional, multi-user productivity app... including a drag-and-drop interface, auth, and a full visual redesign. That's not something I'd wave away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompting well matters enormously.&lt;/strong&gt; The quality of what got generated was directly tied to the precision of what I described. Vague prompts produced vague code. When I described a feature with specificity (the data flow, the edge cases, the component boundary) the output was meaningfully better. This is not a workflow where you can turn your brain off.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Describing design direction rather than implementing it&lt;/strong&gt; was a genuinely productive way to work. The redesign felt faster and less precious than it would have if I were writing the CSS myself. I could react to output aesthetically without getting attached to the code producing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The app works.&lt;/strong&gt; That's not a minor thing to say. It does what I need it to do. My girlfriend uses it daily. It's live, it's deployed, it handles two users without issues. For a personal tool, that's the bar, and it cleared it easily.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Didn't Work
&lt;/h2&gt;

&lt;p&gt;The codebase is a mess. Not broken, but pretty messy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Zustand store is bloated.&lt;/strong&gt; Because state was added incrementally, feature by feature, without anyone stopping to design the store as a whole, it grew into something I'd need to spend real time deciphering before I could safely refactor it. It works, but it's not something I'd want to hand to another developer.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26iinpxv0yxfhuz2kyym.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26iinpxv0yxfhuz2kyym.png" alt="Dunzo Zustand store" width="800" height="882"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No DRY, no KISS.&lt;/strong&gt; The AI optimizes for making the current feature work. It doesn't optimize for the codebase as a coherent system (I know that can be prompted too, but I intentionally didn't). Similar logic got duplicated across components because each feature was generated in relative isolation. Abstractions that would have been obvious when writing by hand never materialized.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tailwind without structure.&lt;/strong&gt; Utility classes scattered without naming conventions, without component logic, without any discernible system. In a small codebase this is navigable. Scale it up and it becomes painful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89re9z7u6srpi6vl0cib.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89re9z7u6srpi6vl0cib.png" alt="Zustand Tailwind" width="800" height="183"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardcoded values in places they shouldn't be.&lt;/strong&gt; Small things, but they accumulate. Magic strings, inline values that should be constants, configuration that ended up in component files. None of it is catastrophic; all of it is the kind of thing that slows you down later.&lt;/p&gt;

&lt;p&gt;The pattern across all of these is the same: the AI builds for now, not for later. It has no stake in the maintainability of what it generates. That's a fundamental property of the workflow, not a bug to be fixed with better prompting.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Actually Learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Vibe-coding is a speed tool, not a quality tool.&lt;/strong&gt; If you want something live fast and the long-term state of the codebase is a secondary concern, it delivers. If you care about the code as much as the product, you'll spend time cleaning up what it built.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your existing experience sets the ceiling.&lt;/strong&gt; The precision I could describe features with, the ability to spot when something generated was subtly wrong, the judgment about when to push back: that all came from eight years of building things. Vibe-coding doesn't remove the need for engineering judgment. It just moves where you apply it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The prompting approach matters more than I expected.&lt;/strong&gt; There's a meaningful difference between describing what you want like a product owner who understands the technical constraints, and describing it like someone who just wants a feature to exist. The former produces significantly better output. That gap probably narrows as AI models improve, but right now it's real.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;State management without architecture is a trap.&lt;/strong&gt; Zustand is fine. Zustand grown organically across two days of feature additions, with no one designing the store shape, is a liability. If I did this again, I'd stop early and have a conversation specifically about state architecture before letting it grow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The comparison to my normal workflow is sharper than I expected.&lt;/strong&gt; When I work with AI carefully (reviewing, redirecting, refactoring as I go) the output reflects my standards. When I vibe-coded, it reflected the AI's defaults. Those are not the same thing, and the codebase shows it clearly.&lt;/p&gt;




&lt;h2&gt;
  
  
  Would I Do It Again?
&lt;/h2&gt;

&lt;p&gt;For Dunzo: yes! I'll keep vibe-coding it as my needs change. It's a personal tool with two users, and architectural rigor doesn't pay off at that scale. The speed-to-value ratio is right for what it is.&lt;/p&gt;

&lt;p&gt;For anything I care about maintaining, collaborating on, or scaling? No. My default workflow exists for good reasons, and two days of vibe-coding reminded me exactly what they are.&lt;/p&gt;

&lt;p&gt;The experiment was worth running. The app works. The codebase is something I'll quietly avoid looking at too closely.&lt;/p&gt;

&lt;p&gt;That feels like an honest summary of what vibe-coding gets you.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Dunzo is live at &lt;a href="https://donezo.vercel.app/" rel="noopener noreferrer"&gt;donezo.vercel.app&lt;/a&gt;. Parks and Recreation fans will get the name immediately. Everyone else will figure it out eventually.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The toxic workplace nearly made me quit development</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Mon, 16 Mar 2026 13:47:22 +0000</pubDate>
      <link>https://dev.to/tlorent/the-toxic-workplace-nearly-made-me-quit-development-49f6</link>
      <guid>https://dev.to/tlorent/the-toxic-workplace-nearly-made-me-quit-development-49f6</guid>
      <description>&lt;p&gt;You're not sleeping well. You're second-guessing every PR you open. You've started rehearsing what to say before every Slack message, just in case it gets used against you later. You tell yourself it'll get better: you just need to work harder, get faster, prove yourself.&lt;/p&gt;

&lt;p&gt;It doesn't get better.&lt;/p&gt;

&lt;h2&gt;
  
  
  I almost left the industry because of one job
&lt;/h2&gt;

&lt;p&gt;I was a few years into my career when I landed at a company that looked great on paper. The stack was interesting, the product was ambitious, and the team seemed senior.&lt;/p&gt;

&lt;p&gt;What I didn't see until I was inside it: micromanagement at every level, constant peer comparison, and a culture where asking questions felt dangerous. My confidence eroded fast. I started overstudying at night to compensate — trying to out-skill the anxiety. I isolated. I second-guessed things I'd done confidently six months earlier.&lt;/p&gt;

&lt;p&gt;I nearly walked away from development entirely. Not because I wasn't good enough, but because the environment was making me into someone I didn't recognize.&lt;/p&gt;

&lt;p&gt;What changed wasn't my effort level: it was leaving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The thing nobody tells you about toxic workplaces
&lt;/h2&gt;

&lt;p&gt;We talk a lot about hard work, resilience, and "just pushing through." Like it's a badge of honor within the development world. What we talk about less: a bad environment doesn't just slow your growth: it actively reverses it.&lt;/p&gt;

&lt;p&gt;Psychological safety isn't a buzzword. It's the condition under which learning actually happens. When you're afraid to ask questions, you stop asking them. When you're afraid to make mistakes, you stop taking the kind of risks that lead to real skill. When you're constantly compared to peers, you optimize for looking capable instead of actually becoming capable.&lt;/p&gt;

&lt;p&gt;The reframe that changed how I think about this: the environment you work in is a variable, not a fixed condition. You can leave. Sure, perhaps not immediately because a family depends on you and you need to pay rent, but ultimately.&lt;/p&gt;

&lt;p&gt;I've mentored developers who spent two or three years grinding harder in a bad workplace, convinced that their discomfort meant they needed to grow more. Some of them did grow: in spite of the environment, not because of it. All of them would have grown faster somewhere else.&lt;/p&gt;

&lt;h2&gt;
  
  
  Green flags worth protecting
&lt;/h2&gt;

&lt;p&gt;After leaving that job, I became deliberate about what a good environment actually looks like in practice. Here's what I watch for:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior devs who answer questions without making you feel small.&lt;/strong&gt; This sounds like a low bar, but it isn't. When you work somewhere this is normal, your learning rate doubles.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Code reviews focused on architecture and readability, not on who wrote it.&lt;/strong&gt; Feedback that's attached to the code, not to you as a person.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mistakes handled with curiosity, not punishment.&lt;/strong&gt; The first time something breaks in production and your lead says "okay, what happened and what do we fix" — that's data. Stay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;People who admit they don't know things.&lt;/strong&gt; On high-functioning teams, "I'm not sure, let me check" is standard. It signals that ego isn't running the technical decision-making.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Onboarding that assumes you're capable.&lt;/strong&gt; Not hand-holding, not sink-or-swim — actual structure that respects your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Red flags to take seriously
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;No documentation and nobody has time to explain things.&lt;/strong&gt; This means context is hoarded, not shared.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interviews that emphasize how "fast-paced" everything is, but can't describe what good work looks like.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Senior devs who compete instead of collaborate.&lt;/strong&gt; Seniority shouldn't come with contempt for the people coming up behind you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback that's vague and personal.&lt;/strong&gt; "You need to be more proactive" with no specifics is a sign that psychological safety is low: no one wants to give you real information but they do expect a lot from you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Being made to feel lucky to be there.&lt;/strong&gt; If you're hearing that implicitly or explicitly: leave. That framing exists to prevent you from advocating for yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to actually go
&lt;/h2&gt;

&lt;p&gt;Three months of trying to change your environment with no movement. That's a reasonable window. If you've raised concerns, adjusted your approach, tried to find allies (and the conditions haven't shifted) the conditions won't shift.&lt;/p&gt;

&lt;p&gt;When the job is changing who you are off the clock. If you're more anxious, more defensive, less curious than you were a year ago.&lt;/p&gt;

&lt;p&gt;Your first job isn't your final destination. Neither is your second or your third. The developers I've seen grow fastest weren't the ones who endured the most: they were the ones who found environments where growth was actually possible, and stayed long enough to take advantage of it.&lt;/p&gt;




&lt;p&gt;A bad environment doesn't mean you're bad at this. It means you're in the wrong place.&lt;/p&gt;

&lt;p&gt;Your effort matters, sure, but effort compounds when the conditions support it and stalls when they don't. The bravest thing I did early in my career wasn't staying and grinding. It was recognizing the difference.&lt;/p&gt;

&lt;p&gt;Have you ever stayed somewhere longer than you should have? What finally made you go or what made you realize you'd found the right place?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If this resonates, a lot of what I learned navigating bad environments, and building better ones, is in my book &lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;From Hello World to Team Lead&lt;/a&gt;, a practical guide for developers who want to grow without losing themselves in the process. And if you're currently in a situation that feels stuck and want to talk it through, you can &lt;a href="https://calendly.com/tim-lorent/developer-growth-session" rel="noopener noreferrer"&gt;book a developer growth session with me&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>"That's Just How It Is" Kills Innovation: Building Teams That Question Everything</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Mon, 01 Dec 2025 12:08:46 +0000</pubDate>
      <link>https://dev.to/tlorent/thats-just-how-it-is-kills-innovation-building-teams-that-question-everything-28o2</link>
      <guid>https://dev.to/tlorent/thats-just-how-it-is-kills-innovation-building-teams-that-question-everything-28o2</guid>
      <description>&lt;p&gt;Three months into a new project, our builds were taking 12 minutes. Everyone complained. Nobody investigated.&lt;/p&gt;

&lt;p&gt;"That's just how it is with large codebases."&lt;/p&gt;

&lt;p&gt;A new teammate joined. Day two, she asked: "Why does this take so long?"&lt;/p&gt;

&lt;p&gt;We shrugged. She didn't. She spent an afternoon digging. Turns out we were bundling dev dependencies in production. One config change later: 3-minute builds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Twelve months of collective frustration, solved in an afternoon—because one person refused to accept "that's just how it is."&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚫 The Phrase That Stops Progress
&lt;/h2&gt;

&lt;p&gt;"That's just how it is" is the most expensive sentence in software development.&lt;/p&gt;

&lt;p&gt;It sounds like acceptance. It's actually resignation.&lt;/p&gt;

&lt;p&gt;I've heard it everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Deployments always break on Fridays." (They don't have to.)&lt;/li&gt;
&lt;li&gt;"The staging environment is always down." (There's a reason.)&lt;/li&gt;
&lt;li&gt;"This feature is too complex to test properly." (Probably not.)&lt;/li&gt;
&lt;li&gt;"Our standups always run long." (They shouldn't.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every time someone says "that's just how it is," they're drawing a line. On one side: things we can change. On the other: things we've decided to live with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High-performing teams don't have that line.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔍 The Nadia Makarevich Approach
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.developerway.com/" rel="noopener noreferrer"&gt;Nadia Makarevich&lt;/a&gt; did something most React developers don't do: when everyone said "React is slow," she didn't just accept it.&lt;/p&gt;

&lt;p&gt;She investigated. She measured. She dug into the actual bottlenecks—not the assumptions, not the conventional wisdom, but the real technical reasons behind performance issues.&lt;/p&gt;

&lt;p&gt;And she found the truth was more nuanced than "React is slow." It was about &lt;em&gt;how&lt;/em&gt; people were using React. About unnecessary re-renders, about component architecture, about understanding the actual mechanisms at play.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's the difference.&lt;/strong&gt; Most people stop at the surface answer. Great engineers keep asking "why?" until they understand the system.&lt;/p&gt;

&lt;p&gt;I learned this the hard way. Early in my career, I accepted so many things as unchangeable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Our code reviews always took three days. (Because we didn't have a process.)&lt;/li&gt;
&lt;li&gt;Our API responses were slow. (Because nobody looked at the queries.)&lt;/li&gt;
&lt;li&gt;Our bug count kept climbing. (Because we weren't tracking patterns.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these were inevitable. They were all solvable. But solving them required curiosity—and permission to question the status quo.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What Curiosity Actually Looks Like
&lt;/h2&gt;

&lt;p&gt;Real curiosity isn't just asking questions. It's being willing to investigate when everyone else has moved on.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Surface level:&lt;/strong&gt; "Why is this failing?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One layer deeper:&lt;/strong&gt; "Why is this condition triggering?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actual root cause:&lt;/strong&gt; "Why did we structure it this way?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;System insight:&lt;/strong&gt; "What does this tell us about our architecture?"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I remember a bug that kept appearing in production. Every time, we'd patch it. Every time, it would come back in a slightly different form.&lt;/p&gt;

&lt;p&gt;Finally, someone asked: "Why does this keep happening?"&lt;/p&gt;

&lt;p&gt;Turns out our error handling was masking a deeper issue—a race condition we'd been dancing around for months. We'd been treating symptoms. We needed to understand the disease.&lt;/p&gt;

&lt;p&gt;Once we saw the pattern, the fix was obvious. But we'd been too busy firefighting to step back and ask "why?"&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Code Matters When It Solves Problems
&lt;/h2&gt;

&lt;p&gt;Here's something that took me too long to learn: &lt;strong&gt;code only matters when it solves customer problems.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can write the most elegant, performant, beautiful code in the world. If it doesn't help a user accomplish something, it's just expensive art.&lt;/p&gt;

&lt;p&gt;I spent days once refactoring a component to be "perfect." Clean, reusable, well-tested. I was so proud.&lt;/p&gt;

&lt;p&gt;Then in a user session, I watched someone struggle with the feature it powered. The refactor didn't matter. The core interaction was confusing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;All that beautiful code was solving the wrong problem.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Great engineers don't just ask "why is this code slow?" They ask "why does this code exist?" and "what problem is this actually solving for users?"&lt;/p&gt;

&lt;p&gt;That shift—from "code works" to "code matters"—changes everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Building a Culture of Curiosity
&lt;/h2&gt;

&lt;p&gt;Here's what I've learned about fostering this mindset in teams: &lt;strong&gt;curiosity isn't an individual trait you hire for. It's a team behavior you cultivate.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Make it safe to question things
&lt;/h3&gt;

&lt;p&gt;In toxic environments, "why do we do it this way?" sounds like criticism. In healthy teams, it's an invitation to improve.&lt;/p&gt;

&lt;p&gt;I remember asking "why" in a meeting once and being told "that's above your level." That shuts down curiosity instantly.&lt;/p&gt;

&lt;p&gt;Now when someone on my team asks "why," my response is: "Great question. Let's figure it out together."&lt;/p&gt;

&lt;h3&gt;
  
  
  Reward investigation, not just solutions
&lt;/h3&gt;

&lt;p&gt;We celebrate the person who fixes the bug. We should also celebrate the person who digs into &lt;em&gt;why&lt;/em&gt; it happened and documents the pattern so it doesn't happen again.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create space for exploration
&lt;/h3&gt;

&lt;p&gt;"Just ship it" culture kills curiosity. If everything is urgent, nobody has time to ask why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Document the "why," not just the "what"
&lt;/h3&gt;

&lt;p&gt;Our best pull request descriptions don't just say &lt;em&gt;what&lt;/em&gt; changed. They explain &lt;em&gt;why&lt;/em&gt; it was necessary, &lt;em&gt;what&lt;/em&gt; we learned, and &lt;em&gt;what&lt;/em&gt; alternatives we considered.&lt;/p&gt;

&lt;p&gt;That context helps future developers (including future you) understand the decisions—and question them if circumstances change.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ask "why does this matter to users?"
&lt;/h3&gt;

&lt;p&gt;In refinement, before we dive into technical details, someone should ask: "What user problem does this solve?"&lt;/p&gt;

&lt;p&gt;If nobody can answer clearly, we dig deeper. Sometimes we discover the feature request was based on an assumption, not an actual user need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curiosity about the problem is as important as curiosity about the solution.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔄 The Curiosity Checklist
&lt;/h2&gt;

&lt;p&gt;Here's what we ask now when something feels off:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before accepting "that's just how it is":&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have we actually investigated why this happens?&lt;/li&gt;
&lt;li&gt;What assumptions are we making?&lt;/li&gt;
&lt;li&gt;What would it take to change this?&lt;/li&gt;
&lt;li&gt;Who benefits from things staying this way?&lt;/li&gt;
&lt;li&gt;What would a new teammate think if they saw this?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Before starting work:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why are we building this?&lt;/li&gt;
&lt;li&gt;What user problem does it solve?&lt;/li&gt;
&lt;li&gt;How will we know it worked?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After shipping:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What surprised us?&lt;/li&gt;
&lt;li&gt;What would we do differently?&lt;/li&gt;
&lt;li&gt;What patterns are emerging?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions sound simple. But asking them consistently changes how teams work.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ What Changes
&lt;/h2&gt;

&lt;p&gt;Teams that cultivate curiosity don't just ship faster—they ship better.&lt;/p&gt;

&lt;p&gt;They catch issues early because someone asked "why is this structured this way?"&lt;/p&gt;

&lt;p&gt;They prevent tech debt because someone questioned "do we really need this complexity?"&lt;/p&gt;

&lt;p&gt;They solve real problems because someone pushed back on assumptions about what users need.&lt;/p&gt;

&lt;p&gt;And they attract great people—because curious engineers want to work with other curious engineers.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ Your Turn
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Look around your codebase, your processes, your team rituals. What have you accepted as "just how it is"?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Pick one thing this week. Ask why. Dig one layer deeper than you normally would.&lt;/p&gt;

&lt;p&gt;You might find nothing. Or you might find the thing that unlocks the next six months of progress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's one thing your team has accepted as "just how it is"—that maybe shouldn't be?&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;I write about building better development teams at &lt;a href="https://beyondcommit.dev" rel="noopener noreferrer"&gt;Beyond Commit&lt;/a&gt;. Free 15-minute coaching calls available for developers and leads working through team challenges. 10% of everything supports tech education nonprofits.&lt;/em&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  webdev #teamculture #leadership #engineering
&lt;/h1&gt;




&lt;p&gt;Want to dive deeper into building these skills?&lt;/p&gt;

&lt;p&gt;I wrote &lt;strong&gt;From Hello World to Team Lead&lt;/strong&gt; for developers navigating the messy reality between junior and leadership—the parts bootcamps don't teach you. It covers the frameworks, templates, and mindset shifts I wish I'd had earlier: how to give feedback that doesn't crush people, build systems that support growth, handle burnout, and lead without a title.&lt;/p&gt;

&lt;p&gt;Right now it's 40% off, and 10% of every purchase goes to tech education charities (TechMeUp, SheSharp, GirlCode, HackYourFuture).&lt;br&gt;
&lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;Grab your copy here&lt;/a&gt; and start applying these ideas tomorrow!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>product</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>"Soft Skills Are Actually the Hard Skills": Why Developer Growth Is More Difficult Than Technical Mastery</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Thu, 27 Nov 2025 10:33:06 +0000</pubDate>
      <link>https://dev.to/tlorent/soft-skills-are-actually-the-hard-skills-why-developer-growth-is-more-difficult-than-technical-4527</link>
      <guid>https://dev.to/tlorent/soft-skills-are-actually-the-hard-skills-why-developer-growth-is-more-difficult-than-technical-4527</guid>
      <description>&lt;p&gt;I sat across from a senior developer at a meetup last month. We were talking about career growth, burnout, the usual stuff. Then he said something that was one of those 'mind-blown' moments:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Soft skills are actually hard skills for me."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He wasn't joking. He got a degree in CS, studied for years, was developing for 20+ years...but soft skills? They were actually hard for him.&lt;/p&gt;

&lt;p&gt;Here's what nobody tells you: the skills we call "soft" are often the hardest to master.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎖️ The Army Got It Backwards
&lt;/h2&gt;

&lt;p&gt;Rob Baker uncovered something wild: the terms "hard" and "soft" skills came from the 1950s U.S. Army. "Hard" meant weapons and machinery. "Soft" meant everything involving humans—leadership, communication, strategy.&lt;/p&gt;

&lt;p&gt;The irony? They had it backwards.&lt;/p&gt;

&lt;p&gt;Technical problems are complicated. Many moving parts, sure—but reproducible. You can Google "React useEffect cleanup," find a pattern, apply it. Stack Overflow has 23 million answers waiting for you.&lt;/p&gt;

&lt;p&gt;Human problems are complex: every person is different, every team has different dynamics. You can't copy-paste trust, you can't Stack Overflow your way through conflict.&lt;/p&gt;

&lt;p&gt;That's why giving constructive feedback to one teammate works beautifully—and the exact same approach makes another shut down completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  📚 The "Soft Skills" We Actually Struggle With
&lt;/h2&gt;

&lt;p&gt;Let me be honest about my own journey. I learned TypeScript generics faster than I learned how to say "I disagree" in a meeting without my voice shaking.&lt;/p&gt;

&lt;p&gt;Here's what tripped me up (and still does sometimes):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Giving feedback without crushing someone's confidence. Early on, I'd either be too blunt ("This code is messy") or too vague ("Maybe we could improve this?"). Finding the middle ground—specific, kind, actionable—took years, not weeks.&lt;/li&gt;
&lt;li&gt;Receiving feedback without spiraling. Someone would say "This could be cleaner" and I'd hear "You're a terrible developer." Learning to separate information from identity? That's ongoing work.&lt;/li&gt;
&lt;li&gt;Explaining technical decisions to non-technical people. I could architect a solid solution. But explaining why it mattered in a way product and design could understand? That required a completely different skillset.&lt;/li&gt;
&lt;li&gt;Speaking up when something feels off. I once stayed silent during a toxic project for months because I didn't know how to address it. Technical problems had clear solutions. Interpersonal friction? No clear playbook.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Technical Skills Feel Easier
&lt;/h2&gt;

&lt;p&gt;When I wanted to learn Flutter, I had a path: tutorials, documentation, practice projects, Stack Overflow. The feedback loop was immediate. Code works or it doesn't.&lt;/p&gt;

&lt;p&gt;When I needed to get better at mentoring? There was no "Mentorship.dev" with interactive exercises. No linter to catch when I was being too directive or not supportive enough.&lt;/p&gt;

&lt;p&gt;Technical skills scale through repetition. Once you understand React hooks, you can apply that pattern across projects. Write one good API, you can write another.&lt;/p&gt;

&lt;p&gt;Human skills require constant calibration. What worked with my last team might fail with this one. How I mentor someone confident is different from how I support someone struggling with imposter syndrome.&lt;/p&gt;

&lt;p&gt;And here's the thing: we're rarely taught these skills explicitly.&lt;/p&gt;

&lt;p&gt;Most developers learn communication through trial and error. Through screwing up a code review and watching someone's face fall. Through missing a chance to speak up and regretting it later.&lt;/p&gt;

&lt;p&gt;We expect these skills to develop naturally. But they don't—at least not well, and not for everyone.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes Them Actually Hard
&lt;/h2&gt;

&lt;p&gt;I wish someone had told me this earlier: these skills are legitimately difficult because they require things code doesn't.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-awareness&lt;/strong&gt;. You have to notice your own patterns—like realizing you interrupt people when you're excited, or that you avoid conflict until it explodes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Emotional regulation&lt;/strong&gt;. Staying calm when someone criticizes your work. Not letting frustration leak into your tone during a tense meeting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adaptability&lt;/strong&gt;. Reading the room. Adjusting your approach mid-conversation. Knowing when to push and when to step back.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability&lt;/strong&gt;. Admitting you don't know. Asking for help. Saying "I was wrong" or "I need feedback."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That senior dev at the meetup? He wasn't struggling because he was bad at these things. He was struggling because these things are genuinely hard.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What Actually Helps
&lt;/h2&gt;

&lt;p&gt;Here's what's helped me (and what I wish I'd known earlier):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Treat soft skills like technical skills. Don't just hope you'll "pick them up." Study them. Practice deliberately. I started using feedback templates, communication frameworks, conflict scripts—the same way I'd learn a new library.&lt;/li&gt;
&lt;li&gt;Create systems for recurring situations. I have a code review checklist. A ticket prep template. A way to structure difficult conversations. Structure doesn't kill authenticity—it supports clarity when your brain is overwhelmed.&lt;/li&gt;
&lt;li&gt;Learn from people who are good at this. I watched teammates who could give feedback that made people excited to improve. I asked questions: "How did you phrase that?" "What made you choose that approach?"&lt;/li&gt;
&lt;li&gt;Reflect regularly. Weekly reviews where I ask: What went well in communication this week? Where did I struggle? What would I do differently? Reflection turns experience into learning.&lt;/li&gt;
&lt;li&gt;Give yourself permission to be imperfect. I still mess up. I still say the wrong thing sometimes. But I'm better than I was a year ago—and that's what matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  For Engineering Leaders
&lt;/h2&gt;

&lt;p&gt;If you're leading a team, here's what I'd ask you to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stop calling them "soft" skills. Call them what they are: essential skills or human skills or even the hard skills. Language shapes how seriously we take them.&lt;/li&gt;
&lt;li&gt;Provide actual training. Not just "be a better communicator" in a performance review. Real training. Workshops. Role-playing. Feedback practice sessions. Resources.&lt;/li&gt;
&lt;li&gt;Model them yourself. Show your team what good feedback looks like. Demonstrate how to navigate conflict. Admit when you're wrong. Your behavior sets the standard.&lt;/li&gt;
&lt;li&gt;Create space for people to practice. Retrospectives aren't just for process—they're for practicing speaking up. Code reviews aren't just for catching bugs—they're for learning how to communicate critique with care.&lt;/li&gt;
&lt;li&gt;Normalize struggle. Make it okay to say "I'm not sure how to approach this conversation" or "I need help with this feedback." If your team thinks they should already know this stuff, they won't ask for help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Real Growth Edge
&lt;/h2&gt;

&lt;p&gt;Learning the next framework will make you productive. Learning how to communicate, collaborate, and lead will make you invaluable.&lt;/p&gt;

&lt;p&gt;That developer at the meetup? He was right. The soft skills are the hard skills. And that's exactly why they're worth investing in.&lt;/p&gt;

&lt;p&gt;Because here's what I've learned: you can replace a developer who knows React. You can't replace a developer who makes the whole team better.&lt;/p&gt;

&lt;p&gt;What's one "soft skill" you've struggled with? And what helped you improve—even a little?&lt;/p&gt;




&lt;p&gt;Want to dive deeper into building these skills?&lt;/p&gt;

&lt;p&gt;I wrote &lt;strong&gt;From Hello World to Team Lead&lt;/strong&gt; for developers navigating the messy reality between junior and leadership—the parts bootcamps don't teach you. It covers the frameworks, templates, and mindset shifts I wish I'd had earlier: how to give feedback that doesn't crush people, build systems that support growth, handle burnout, and lead without a title.&lt;/p&gt;

&lt;p&gt;Right now it's 40% off, and 10% of every purchase goes to tech education charities (TechMeUp, SheSharp, GirlCode, HackYourFuture).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;Grab your copy here&lt;/a&gt; and start applying these ideas tomorrow!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>🚀 Junior Devs Aren't Disappearing—They're Just Getting Started</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Mon, 17 Nov 2025 08:35:28 +0000</pubDate>
      <link>https://dev.to/tlorent/junior-devs-arent-disappearing-theyre-just-getting-started-5fob</link>
      <guid>https://dev.to/tlorent/junior-devs-arent-disappearing-theyre-just-getting-started-5fob</guid>
      <description>&lt;p&gt;I refresh LinkedIn and see another post: "Junior roles are dead." Another thread on Reddit: "AI is replacing entry-level devs." Another think piece predicting the end of the junior developer.&lt;/p&gt;

&lt;p&gt;Then GitHub's former CEO says something completely different.&lt;/p&gt;

&lt;p&gt;Thomas Dohmke told "The Pragmatic Engineer" that junior engineers still bring massive value—not despite AI, but &lt;em&gt;because&lt;/em&gt; of it.&lt;/p&gt;

&lt;p&gt;That aligns with everything I've seen going from junior to team lead.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Fear Is Real (And Valid)
&lt;/h2&gt;

&lt;p&gt;If you're early in your career right now, I get it. The job market feels brutal. Every posting wants 3+ years of experience. AI tools are getting better. Senior devs are saying they're 10x more productive with Copilot.&lt;/p&gt;

&lt;p&gt;So where does that leave you?&lt;/p&gt;

&lt;p&gt;Staring at that "Apply" button, wondering if you're already obsolete before you even start.&lt;/p&gt;

&lt;p&gt;I've been there—different context, same fear. I remember thinking I'd waited too long, learned the wrong stack, missed my window.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Juniors Actually Bring
&lt;/h2&gt;

&lt;p&gt;Dohmke's point wasn't just feel-good encouragement, rather it was strategic.&lt;/p&gt;

&lt;p&gt;Younger developers adopt AI tools faster. They bring fresh perspectives, recent learning, and don't carry the "this is how we've always done it" mindset.&lt;/p&gt;

&lt;p&gt;What that actually looks like in practice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fresh ideas and willingness to experiment&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You haven't been burned by five failed rewrites. You're not attached to the old way. You see possibilities where others see risk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI fluency from recent education&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You learned to code &lt;em&gt;with&lt;/em&gt; AI tools. That's not a weakness—it's native fluency in the tools shaping the industry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open-minded approach to new tools&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
When someone suggests trying a new framework or approach, you don't have years of muscle memory fighting against it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Energy that pushes teams forward&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You ask "why?" when everyone else just accepts "because that's how it works." That questions systems. That creates momentum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diverse backgrounds shaping better solutions&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You didn't all come from the same CS program or bootcamp cohort. You bring perspectives from music, teaching, healthcare, design—experiences that matter when building for real users.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 Engineering vs. Coding
&lt;/h2&gt;

&lt;p&gt;Here's where Dohmke's point gets sharper.&lt;/p&gt;

&lt;p&gt;Engineering still requires craft and systems thinking. But future engineers combine prompting skills with open source to solve problems faster.&lt;/p&gt;

&lt;p&gt;The coding skill matters. But engineering means building complex systems—whether you write every line or orchestrate AI to help.&lt;/p&gt;

&lt;p&gt;The new generation of developers will ship faster than I ever did. &lt;/p&gt;

&lt;p&gt;But they will need to understood the &lt;em&gt;why&lt;/em&gt;, the architecture, the tradeoffs. The AI just helps them type faster.&lt;/p&gt;

&lt;p&gt;That's engineering.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎓 What I Learned Going from Junior to Lead
&lt;/h2&gt;

&lt;p&gt;The fastest-growing developers on my teams weren't always the most technically gifted.&lt;/p&gt;

&lt;p&gt;They were the ones who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Asked questions when everyone else stayed quiet&lt;/li&gt;
&lt;li&gt;Tried new approaches instead of copying old patterns&lt;/li&gt;
&lt;li&gt;Shared what they learned, even when it felt basic&lt;/li&gt;
&lt;li&gt;Elevated everyone by bringing curiosity into the room&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One junior dev I mentored was terrified they weren't "technical enough" because they used AI tools heavily. But they became the person everyone went to for architecture questions—because they could explain complex systems clearly, having learned by asking better questions.&lt;/p&gt;

&lt;p&gt;Your edge isn't knowing everything. It's learning fast and thinking clearly.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧭 If You're Worried About the Junior Market
&lt;/h2&gt;

&lt;p&gt;You're still needed.&lt;/p&gt;

&lt;p&gt;Companies that understand growth know they need fresh perspectives alongside experience. They need people who challenge assumptions. They need energy and curiosity driving the team forward.&lt;/p&gt;

&lt;p&gt;Yes, the market is tough. Yes, you'll face rejection. Yes, some companies are shortsighted about junior roles.&lt;/p&gt;

&lt;p&gt;But the best teams? They're actively looking for what you bring.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ So What Should You Focus On?
&lt;/h2&gt;

&lt;p&gt;Not &lt;em&gt;just&lt;/em&gt; technical skills. Not &lt;em&gt;just&lt;/em&gt; prompting. Something beyond code.&lt;/p&gt;

&lt;p&gt;Focus on:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Systems thinking&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Understand how pieces connect. Why this API structure? Why this state management pattern? Why this deployment strategy?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Communication&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Explain your decisions. Write clear tickets. Ask better questions. Engineering is a team sport.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem-solving with tools&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Use AI, Stack Overflow, documentation, senior devs—whatever gets you unstuck and moving. The skill is knowing &lt;em&gt;when&lt;/em&gt; to use what.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Building in public&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Ship projects. Write about what you learn. Show your thinking, not just your code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Curiosity over credentials&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Keep asking "why?" Keep trying new things. Keep sharing what you discover.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎁 Permission You Don't Need (But I'll Give Anyway)
&lt;/h2&gt;

&lt;p&gt;You don't need to know everything before you're "qualified."&lt;/p&gt;

&lt;p&gt;You don't need to code without AI assistance to be a "real" developer.&lt;/p&gt;

&lt;p&gt;You don't need years of experience before your perspective matters.&lt;/p&gt;

&lt;p&gt;You're ready enough right now. Not because you're perfect, but because engineering teams need what you bring: fresh eyes, new energy, and willingness to challenge how things work.&lt;/p&gt;

&lt;p&gt;The junior role isn't disappearing. It's evolving—and you're exactly the kind of developer who thrives in that evolution.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What are you focusing on right now—technical skills, prompting, or something beyond code?&lt;/strong&gt; I'd love to hear what's working for you.&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@nublson?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Nubelson Fernandes&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-person-wearing-headphones-sitting-in-front-of-a-computer-iE71-TMrrkE?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>career</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>"Technical Debt Will Bite Us in the Ass": How to Make Non-Technical Stakeholders Actually Care</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Fri, 14 Nov 2025 09:39:53 +0000</pubDate>
      <link>https://dev.to/tlorent/technical-debt-will-bite-us-in-the-ass-how-to-make-non-technical-stakeholders-actually-care-2oef</link>
      <guid>https://dev.to/tlorent/technical-debt-will-bite-us-in-the-ass-how-to-make-non-technical-stakeholders-actually-care-2oef</guid>
      <description>&lt;p&gt;"We need to refactor this code."&lt;/p&gt;

&lt;p&gt;Blank stares.&lt;/p&gt;

&lt;p&gt;"The architecture is getting messy."&lt;/p&gt;

&lt;p&gt;More blank stares. (Even a hint of 'leave me alone, we have features to ship.')&lt;/p&gt;

&lt;p&gt;"If we don't address this technical debt now, it'll slow us down later."&lt;/p&gt;

&lt;p&gt;Polite nods. Then: "Can we just ship this feature first?"&lt;/p&gt;

&lt;p&gt;I've had this conversation more times than I can count. And for years, I blamed the product managers.&lt;/p&gt;

&lt;p&gt;They don't get it. They only care about features. They're ignoring the foundation while demanding we build another floor.&lt;/p&gt;

&lt;p&gt;Then I realized: they weren't the problem. My communication was.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Translation Gap
&lt;/h2&gt;

&lt;p&gt;Here's what I was saying: "We need to refactor this code because the architecture is getting messy and technical debt is accumulating."&lt;/p&gt;

&lt;p&gt;Here's what they heard: "I want to spend two weeks making things prettier instead of building what customers asked for."&lt;/p&gt;

&lt;p&gt;We were speaking different languages. I was talking about code quality. They were thinking about customer value, revenue, and roadmap commitments.&lt;/p&gt;

&lt;p&gt;Neither of us was wrong. We just weren't connecting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Moment Everything Changed
&lt;/h2&gt;

&lt;p&gt;I was in yet another meeting trying to explain why we needed to pause feature work to address technical debt.&lt;/p&gt;

&lt;p&gt;The product manager's eyes were glazing over. I could see her mentally calculating how to politely end this conversation.&lt;/p&gt;

&lt;p&gt;So I stopped mid-sentence and tried something different.&lt;/p&gt;

&lt;p&gt;"Imagine you just cut half your finger off. You could properly clean it and put on a bandage, or you could just ignore it. What happens if you keep ignoring half cut off fingers?"&lt;/p&gt;

&lt;p&gt;She looked at me like I'd lost my mind. But then she got it.&lt;/p&gt;

&lt;p&gt;"They get infected."&lt;/p&gt;

&lt;p&gt;"Exactly. And eventually, you can't use that hand at all. That's what technical debt does to our codebase."&lt;/p&gt;

&lt;p&gt;Suddenly, we weren't debating code architecture. We were discussing wounds that fester, infections that spread, and hands that stop working.&lt;/p&gt;

&lt;p&gt;Technical debt became something she could visualize. And visualization creates urgency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Technical Jargon Fails
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When we say "refactoring," non-technical stakeholders hear "optional polish."&lt;/li&gt;
&lt;li&gt;When we say "technical debt," they hear "developers want perfect code."&lt;/li&gt;
&lt;li&gt;When we say "architecture," they hear "abstract concerns that don't affect users."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're not wrong to use these terms with each other. But with stakeholders who measure success in features shipped, revenue generated, and customer satisfaction scores, we need a different vocabulary.&lt;/p&gt;

&lt;p&gt;Not because they're less intelligent. Because they're optimizing for different outcomes.&lt;/p&gt;

&lt;p&gt;A product manager isn't ignoring technical debt out of malice. &lt;/p&gt;

&lt;p&gt;They're focused on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Delivering promised features to customers&lt;/li&gt;
&lt;li&gt;Meeting revenue targets&lt;/li&gt;
&lt;li&gt;Staying ahead of competitors&lt;/li&gt;
&lt;li&gt;Keeping stakeholders happy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And "we need to refactor" doesn't map to any of those goals. So we need to show them how it does.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building the Bridge
&lt;/h2&gt;

&lt;p&gt;The change isn't about dumbing things down, rather it's about finding shared language.&lt;/p&gt;

&lt;p&gt;Here are the metaphors that have worked for me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Band-Aid on an Infected Wound&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every quick fix is a band-aid over a cut we didn't properly clean. Every shortcut is like painting over a crack in the wall instead of fixing the foundation.&lt;/p&gt;

&lt;p&gt;At first, it looks fine: the wall looks painted, the cut is covered.&lt;/p&gt;

&lt;p&gt;But band-aids fall off. Paint peels. And what's underneath is worse than when you started.&lt;/p&gt;

&lt;p&gt;Why it works: Everyone understands infections get worse when ignored. Nobody argues with "this will get infected."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Cracked Foundation&lt;/strong&gt;&lt;br&gt;
You can keep building floors on a cracked foundation. And for a while, it'll hold. But every new floor adds pressure. The cracks spread. And one day, the whole thing collapses—right when you need it most.&lt;/p&gt;

&lt;p&gt;Why it works: It connects technical decisions to risk management, something every business leader thinks about.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speaking Their Language
&lt;/h2&gt;

&lt;p&gt;Metaphors help, but you know what really works? Translating consequences into business language.&lt;/p&gt;

&lt;p&gt;Instead of: "This code is hard to maintain."&lt;/p&gt;

&lt;p&gt;Try: "Every new feature in this area takes 3x longer because of how it's structured. That's 20 extra hours per sprint we could be spending on new features."&lt;/p&gt;

&lt;p&gt;Instead of: "We have technical debt here."&lt;/p&gt;

&lt;p&gt;Try: "This is costing us $15,000 in developer time every quarter. If we invest two weeks now, we'll save that every quarter going forward."&lt;/p&gt;

&lt;p&gt;Instead of: "The architecture is messy."&lt;/p&gt;

&lt;p&gt;Try: "Our bug rate in this module is 4x higher than elsewhere. &lt;/p&gt;

&lt;p&gt;Customers are reporting issues every week. We can fix that, but it requires addressing the underlying structure."&lt;/p&gt;

&lt;p&gt;Hours lost. Money wasted. Bugs multiplying. Velocity decreasing.&lt;/p&gt;

&lt;p&gt;These are metrics stakeholders understand. These create urgency.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Conversation That Actually Works
&lt;/h2&gt;

&lt;p&gt;Here's the framework I use now:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Acknowledge their priorities&lt;/strong&gt;: "I know we need to ship Feature X by end of quarter. That's important."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Don't start with opposition. Start with alignment.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Connect technical debt to their goals&lt;/strong&gt;: "The problem is, the area where we need to build Feature X is really unstable. We're seeing bugs there every week, and each change takes twice as long as it should."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Show how the technical problem affects their goals, not yours.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Quantify the cost&lt;/strong&gt;: "Right now, we're spending about 10 hours every sprint just working around the issues in that module. That's half a developer's time."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Make the invisible visible. Give them numbers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Propose the investment and ROI&lt;/strong&gt;: "If we spend one week cleaning this up, we'll cut that time in half. Plus, Feature X will be faster and more stable to build."&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Frame it as an investment with clear returns, not a cost.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Give them the choice&lt;/strong&gt;: "We can either address it now and move faster after, or keep working around it and accept that every feature in this area will take longer. What makes more sense given our priorities?"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Empower them to make the decision with full information.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ How to Apply This
&lt;/h2&gt;

&lt;p&gt;Before the next technical debt conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify the business impact. What's the cost in time, money, or risk? If you can't articulate this, you're not ready for the conversation.&lt;/li&gt;
&lt;li&gt;Choose your metaphor. What will resonate with this specific person? Financial types respond to debt and interest. Product types respond to velocity and risk.&lt;/li&gt;
&lt;li&gt;Quantify everything you can. Hours, dollars, bug counts, velocity changes. Numbers create urgency.&lt;/li&gt;
&lt;li&gt;Prepare the ROI. What's the investment? What's the return? How long until it pays off?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;During the conversation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with their goals, not yours. "I know shipping Feature X is critical..."&lt;/li&gt;
&lt;li&gt;Connect technical to business. Show how the technical problem blocks their goals.&lt;/li&gt;
&lt;li&gt;Give options, not ultimatums. "We can address it now and move faster after, or keep working around it. What makes sense given our priorities?"&lt;/li&gt;
&lt;li&gt;Be honest about trade-offs. Every choice has costs. Acknowledge them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After you get buy-in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deliver what you promised. If you said it would take one week, take one week. Trust is built through follow-through.&lt;/li&gt;
&lt;li&gt;Measure the impact. Did velocity improve? Did bugs decrease? Share these wins.&lt;/li&gt;
&lt;li&gt;Reinforce the connection. "Remember when we cleaned up Module X? That's why we shipped Feature Y so fast."&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Deeper Skill
&lt;/h2&gt;

&lt;p&gt;Here's what I wish someone had told me earlier: Cross-discipline communication is a core engineering skill.&lt;/p&gt;

&lt;p&gt;Not a soft skill. Not a nice-to-have. A core skill.&lt;/p&gt;

&lt;p&gt;The best engineers I know aren't just technically excellent. They can translate technical concerns into business value, design implications, or user impact.&lt;/p&gt;

&lt;p&gt;They understand that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend engineers need to talk to frontend in terms of API contracts and data flow&lt;/li&gt;
&lt;li&gt;Frontend engineers need to talk to designers in terms of interaction patterns and constraints&lt;/li&gt;
&lt;li&gt;Everyone needs to talk to product in terms of customer value and business outcomes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finding the bridge between disciplines isn't about compromising your expertise. It's about making your expertise relevant to people who optimize for different outcomes.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Questions to Reflect On
&lt;/h2&gt;

&lt;p&gt;When's the last time you tried to explain a technical problem and got blank stares? What language were you using?&lt;/p&gt;

&lt;p&gt;What metaphors resonate with your specific stakeholders?&lt;/p&gt;

&lt;p&gt;Are you quantifying the business impact of technical decisions, or just hoping people trust you?&lt;/p&gt;

&lt;p&gt;How often do you start technical debt conversations with stakeholder goals vs. engineering concerns?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Technical debt will bite us in the ass. But saying that to stakeholders won't create urgency.&lt;/p&gt;

&lt;p&gt;Band-aids on infected wounds will. Credit card interest will. Cracked foundations will.&lt;/p&gt;

&lt;p&gt;Every quick fix is a band-aid over a cut we didn't properly clean. &lt;/p&gt;

&lt;p&gt;Every shortcut is like painting over a crack in the wall instead of fixing the foundation.&lt;/p&gt;

&lt;p&gt;At first, it looks fine. But band-aids fall off. Paint peels. And what's underneath is worse than when you started.&lt;/p&gt;

&lt;p&gt;Your job isn't just to identify technical debt. It's to make non-technical people care about it as much as you do.&lt;/p&gt;

&lt;p&gt;And that starts with speaking their language.&lt;/p&gt;




&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@charlesdeluvio?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;charlesdeluvio&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/person-facing-computer-desktop-pjAH2Ax4uWk?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Not a Single Customer Cares If You Chose Vue or React</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Thu, 13 Nov 2025 11:52:04 +0000</pubDate>
      <link>https://dev.to/tlorent/not-a-single-customer-cares-if-you-chose-vue-or-react-249j</link>
      <guid>https://dev.to/tlorent/not-a-single-customer-cares-if-you-chose-vue-or-react-249j</guid>
      <description>&lt;p&gt;I've sat through enough technical debates to predict exactly how they'll go.&lt;/p&gt;

&lt;p&gt;Someone suggests a framework. Another person counters with a different one (possibly me). Twenty minutes later, we're deep into performance benchmarks, bundle sizes, and whether TypeScript generics make the codebase more maintainable.&lt;/p&gt;

&lt;p&gt;Meanwhile, the customer is still waiting for us to solve their actual problem.&lt;/p&gt;

&lt;p&gt;And here's the uncomfortable truth: they don't care which framework we choose. They care if we solved their problem. Fast.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trap of Technical Perfectionism
&lt;/h2&gt;

&lt;p&gt;I used to be that developer who needed every decision to be "right."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React or Vue? Let's compare virtual DOM implementations. &lt;/li&gt;
&lt;li&gt;Should we refactor this prop drilling into Context? Let's debate the trade-offs for an hour. &lt;/li&gt;
&lt;li&gt;MongoDB or PostgreSQL? Better write a comparison matrix.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every technical decision felt like it needed deep analysis, careful consideration, and team consensus.&lt;/p&gt;

&lt;p&gt;And you know what happened? We shipped slowly. We over-engineered. We built things nobody asked for because we were so focused on how we built that we forgot why we were building.&lt;/p&gt;

&lt;p&gt;The change came when I started working more closely with product and business colleagues. They taught me something I didn't learn in any coding tutorial:&lt;/p&gt;

&lt;p&gt;Focus on now.&lt;/p&gt;

&lt;p&gt;Not on the perfect scalable architecture for when we have a million users. Not on the most elegant solution that demonstrates our technical prowess. On shipping the MVP, iterating, and creating value for the customer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Product Teams Know That We Often Forget
&lt;/h2&gt;

&lt;p&gt;Product managers live in a world of trade-offs. They understand something fundamental:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Done and iterating beats perfect and delayed. Every time.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They're not suggesting we write garbage code and ship it. They're suggesting we stop debating theoretical problems and start solving real ones.&lt;/p&gt;

&lt;p&gt;Over eight years, I've learned their most valuable question: "What's the smallest thing we can build to test if this solves the problem?"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not: "What's the most technically impressive solution?"&lt;/li&gt;
&lt;li&gt;Not: "What will make our codebase look amazing in the architecture review?"&lt;/li&gt;
&lt;li&gt;But: "What gets us to feedback fastest?"&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Two Questions That Cut Through the Noise
&lt;/h2&gt;

&lt;p&gt;When I feel a technical debate heating up (or when I'm the one heating it up), I've learned to pause and ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What's relevant now? Not in six months when we might have scale problems. Not when we have the budget for a rewrite. Now. Are we actually experiencing performance issues, or are we debating potential future performance issues? Do we have real data showing users need this feature, or are we building what we think they need? Is this technical debt actually blocking us, or does it just feel uncomfortable?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can we get the most value out of the most basic implementation? This one hurts because it forces us to admit: the fancy solution probably isn't needed yet. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Can we ship this with a simple state object before we build out Redux?&lt;/li&gt;
&lt;li&gt;Can we use fetch before we implement a full caching layer?&lt;/li&gt;
&lt;li&gt;Can we validate this idea with a prototype before we architect the perfect system?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verify, then iterate!&lt;/p&gt;

&lt;p&gt;Not build perfectly, then discover nobody wanted it.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Story About Prop Drilling and Reality
&lt;/h2&gt;

&lt;p&gt;Once, a developer on my team spent three days refactoring our prop drilling into an elegant Context solution.&lt;/p&gt;

&lt;p&gt;The code was beautiful. The architecture was clean. The implementation was technically impressive.&lt;/p&gt;

&lt;p&gt;Not a single customer noticed.&lt;/p&gt;

&lt;p&gt;You know what they did notice? That we hadn't shipped the feature they actually requested because we were busy refactoring code that already worked.&lt;/p&gt;

&lt;p&gt;I'm not saying that refactor was worthless. Context is often the right choice. But the timing was wrong.&lt;/p&gt;

&lt;p&gt;We optimized for developer satisfaction instead of customer value.&lt;/p&gt;

&lt;p&gt;And that's the trap. Technical quality feels like the responsible choice. But sometimes, it's just procrastination disguised as professionalism.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Balance Nobody Talks About
&lt;/h2&gt;

&lt;p&gt;Here's where this gets nuanced: I'm not saying ship garbage and call it an MVP.&lt;/p&gt;

&lt;p&gt;I'm not saying ignore code quality, skip tests, or tie loose ends together and pretend it's done.&lt;/p&gt;

&lt;p&gt;I'm saying: be mindful of how much debate you're entering before you've built anything.&lt;/p&gt;

&lt;p&gt;There's a spectrum:&lt;/p&gt;

&lt;p&gt;Too far left (ship garbage):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No tests, no structure, just hack it together&lt;/li&gt;
&lt;li&gt;Technical debt that blocks future work&lt;/li&gt;
&lt;li&gt;Code so brittle that every change breaks something&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Too far right (perfect or nothing):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debating architecture before validating the need&lt;/li&gt;
&lt;li&gt;Building for scale you don't have&lt;/li&gt;
&lt;li&gt;Refactoring working code because it "could be better"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The sweet spot (verify, then iterate):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build the simplest thing that solves the problem&lt;/li&gt;
&lt;li&gt;Ship it, get feedback, learn&lt;/li&gt;
&lt;li&gt;Then decide if it needs to be better&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sometimes the MVP is the answer you need. Sometimes it reveals that the whole approach was wrong and you need to pivot. Either way, you learned something real instead of debating something theoretical.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ How to Apply This
&lt;/h2&gt;

&lt;p&gt;When facing a technical decision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask: "What problem are we actually solving?" Write it down. Make sure everyone agrees. If you can't articulate the customer problem clearly, stop debating solutions.&lt;/li&gt;
&lt;li&gt;List the simplest possible implementations. Force yourself to consider boring, basic solutions before the fancy ones.&lt;/li&gt;
&lt;li&gt;Estimate time to feedback. How fast can each option get you to real user validation? Weight this heavily.&lt;/li&gt;
&lt;li&gt;Check your motivations. Are you choosing this because it solves the customer problem, or because it's more interesting to build?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When debates get heated:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pause and ask: "What's relevant now?" Redirect from theoretical to actual.&lt;/li&gt;
&lt;li&gt;Request data. "Do we have evidence this is actually a problem?" forces the conversation to become concrete.&lt;/li&gt;
&lt;li&gt;Propose an experiment. "What if we tried the simple version first and measured?" Usually the answer becomes obvious fast.&lt;/li&gt;
&lt;li&gt;Set a decision deadline. "Let's discuss for 15 more minutes, then make a call." Prevents endless debate.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When tempted to refactor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask: "Is this blocking customer value?" If no, it probably can wait.&lt;/li&gt;
&lt;li&gt;Calculate opportunity cost. What could you ship instead with that time?&lt;/li&gt;
&lt;li&gt;Get customer feedback first. Sometimes you discover you built the wrong thing entirely, making the refactor irrelevant.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Truth
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Your customers don't care about your stack.&lt;/li&gt;
&lt;li&gt;They don't care if you chose Vue or React.&lt;/li&gt;
&lt;li&gt;They don't care if you refactored your prop drilling spaghetti into an amazing Context solution.&lt;/li&gt;
&lt;li&gt;They don't care about your bundle size, your performance benchmarks, or your elegant architecture.&lt;/li&gt;
&lt;li&gt;They care if you solved their problem.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here's the thing that took me years to accept: this doesn't mean your technical skills don't matter. They absolutely do.&lt;/p&gt;

&lt;p&gt;But they matter in service of customer value, not as an end in themselves.&lt;/p&gt;

&lt;p&gt;The best engineers I know aren't the ones who write the most elegant code. They're the ones who ship the right things at the right time, balance quality with speed, and know when good enough is actually good enough.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Questions to Reflect On
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When's the last time you chose a simpler solution over a more impressive one?&lt;/li&gt;
&lt;li&gt;Are you debating technical decisions to solve real problems, or to demonstrate expertise?&lt;/li&gt;
&lt;li&gt;What would happen if you shipped your current "not quite ready" solution and iterated from there?&lt;/li&gt;
&lt;li&gt;How much of your technical quality focus is actually serving customers vs. serving your own standards?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Sometimes the MVP is the answer you need.&lt;/p&gt;

&lt;p&gt;Not because it's perfect. Not because you're proud of it. But because it gets you to feedback, learning, and real customer value.&lt;/p&gt;

&lt;p&gt;Verify, then iterate.&lt;/p&gt;

&lt;p&gt;Everything else is just debate.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;How do you balance technical quality with shipping value to customers? Share your approach in the comments—I'd love to hear how other developers navigate this tension.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you want to dive deeper into making technical decisions that actually matter, check out my book &lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;From Hello World to Team Lead&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@ffstop?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Fotis Fotopoulos&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/black-remote-control-on-red-table-6sAl6aQ4OWI?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>"Your Plans Aren't Realistic": The Brutal Honesty That Prevents Burnout</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Wed, 12 Nov 2025 13:18:06 +0000</pubDate>
      <link>https://dev.to/tlorent/your-plans-arent-realistic-the-brutal-honesty-that-prevents-burnout-53lp</link>
      <guid>https://dev.to/tlorent/your-plans-arent-realistic-the-brutal-honesty-that-prevents-burnout-53lp</guid>
      <description>&lt;p&gt;I spent three months on the couch with zero energy.&lt;/p&gt;

&lt;p&gt;Not tired. Not unmotivated. Zero. Like someone had unplugged my battery and thrown away the charger.&lt;/p&gt;

&lt;p&gt;Looking back, I know exactly what I needed before I got there: someone to tell me the truth. Someone to look at my plans—the side projects, the courses, the "just one more thing" syndrome—and say: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuca338zdqo4yvtjq99pm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuca338zdqo4yvtjq99pm.png" alt="aint nobody got time for that" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It would've hurt. But not as much as the collapse.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Myth of "More Is Better"
&lt;/h2&gt;

&lt;p&gt;Here's what nobody tells ambitious developers: your hunger to grow can be just as dangerous as apathy. &lt;/p&gt;

&lt;p&gt;We celebrate hustle culture. We admire people who code all day, learn all night, and somehow still ship side projects on weekends. We wear &lt;br&gt;
exhaustion like a badge of honor.&lt;/p&gt;

&lt;p&gt;And then we wonder why burnout rates in tech keep climbing.&lt;/p&gt;

&lt;p&gt;I was that person. Junior dev by day, studying JavaScript at night, building a portfolio on weekends. Every article I read told me I wasn't doing enough. Every LinkedIn post made it seem like everyone else was learning faster, building more, advancing quicker.&lt;/p&gt;

&lt;p&gt;So I added more. And more. And more.&lt;/p&gt;

&lt;p&gt;Until my body said "enough" and shut down completely.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚨 When Ambition Becomes Dangerous
&lt;/h2&gt;

&lt;p&gt;The tricky thing about burnout is that it sneaks up on you. One day you're tired but functional. The next day you can't get off the couch.&lt;/p&gt;

&lt;p&gt;But the warning signs are there if you know where to look:&lt;/p&gt;

&lt;p&gt;Red flags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your to-do list grows faster than you can complete it&lt;/li&gt;
&lt;li&gt;You feel guilty every time you relax&lt;/li&gt;
&lt;li&gt;You're learning things you "should" know, not things you actually want to know&lt;/li&gt;
&lt;li&gt;Rest feels like weakness&lt;/li&gt;
&lt;li&gt;You can't remember the last time you hung out with friends without checking Slack&lt;/li&gt;
&lt;li&gt;You keep adding "just one more thing" to your plate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What it actually means:&lt;/strong&gt; You're running a sprint at marathon pace. And your body will force you to stop whether you want to or not.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Conversation Nobody Wants to Have
&lt;/h2&gt;

&lt;p&gt;Now when I'm coaching developers who are heading straight toward burnout, I have a conversation I wish someone had with me.&lt;/p&gt;

&lt;p&gt;It's uncomfortable. Sometimes people don't want to hear it. But it's the kindest thing I can offer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Name what you're seeing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"I notice you're learning React, studying for AWS certs, building two side projects, and working full-time. That's a lot."&lt;/p&gt;

&lt;p&gt;Not judgment. Just observation. Let them hear their own reality reflected back.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Ask the hard question&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"If you keep this pace for the next six months, where do you think you'll be?"&lt;/p&gt;

&lt;p&gt;Most people pause here. Because deep down, they know the answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Share the truth they need to hear&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;"Your plans aren't realistic. Not because you're not capable—you clearly are. But because you're human, and humans need rest."&lt;/p&gt;

&lt;p&gt;This is the part that stings. But it's also the part that can save them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Redirect to what actually matters&lt;/strong&gt;&lt;br&gt;
There are more important things than work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Family and friends who will be there when your code isn't&lt;/li&gt;
&lt;li&gt;Health that compounds over decades (who looks back on their deathbed thinking "I wish I worked more"? Probably only Elon. I rest my case.)&lt;/li&gt;
&lt;li&gt;Joy that comes from doing things just because you enjoy them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Offer a better path&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Small daily focus beats massive unsustainable plans every time. &lt;/p&gt;

&lt;p&gt;Twenty minutes of focused learning each day will take you further than weekend marathons that leave you burned out.&lt;/p&gt;

&lt;p&gt;You don't need to learn everything. Focus on what energizes you, not what you think you "should" know.&lt;/p&gt;

&lt;p&gt;Rest is part of growth, not a break from it. Your brain needs downtime to process and consolidate what you've learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Shift That Changed Everything
&lt;/h2&gt;

&lt;p&gt;When I finally accepted that I couldn't do it all, something unexpected happened.&lt;/p&gt;

&lt;p&gt;I got better at the things I actually cared about.&lt;/p&gt;

&lt;p&gt;Instead of spreading myself thin across five learning goals, I picked one. Instead of grinding every night, I learned for 30 minutes and then closed my laptop. Instead of feeling guilty about rest, I recognized it as necessary.&lt;/p&gt;

&lt;p&gt;My growth didn't slow down...it sped up!&lt;/p&gt;

&lt;p&gt;Because sustainable beats spectacular. Every. Single. Time.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ How to Apply This
&lt;/h2&gt;

&lt;p&gt;If you're heading toward burnout:&lt;/p&gt;

&lt;p&gt;Write down everything you're trying to do. Just seeing it on paper might be enough to realize it's too much.&lt;/p&gt;

&lt;p&gt;Ask yourself: "If I could only keep three things, what would they be?" Cut the rest. Not forever—just for now.&lt;/p&gt;

&lt;p&gt;Schedule rest like you schedule meetings. If it's not on the calendar, it won't happen.&lt;/p&gt;

&lt;p&gt;Check in weekly: "Am I energized or drained?" Adjust accordingly.&lt;/p&gt;

&lt;p&gt;If you're coaching someone toward burnout:&lt;/p&gt;

&lt;p&gt;Name what you see without judgment. "I notice you're..."&lt;/p&gt;

&lt;p&gt;Ask permission to be honest. "Can I share something that might be hard to hear?"&lt;/p&gt;

&lt;p&gt;Speak from your own experience, not from authority. "When I tried to do everything, here's what happened..."&lt;/p&gt;

&lt;p&gt;Offer an alternative, not just a warning. "What if instead of five goals, you focused deeply on one?"&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Questions to Reflect On
&lt;/h2&gt;

&lt;p&gt;What are you doing out of genuine interest vs. what you think you "should" be doing?&lt;/p&gt;

&lt;p&gt;When's the last time you felt energized after coding, rather than drained?&lt;/p&gt;

&lt;p&gt;If you could only keep three learning goals, what would they be?&lt;br&gt;
What would it look like to give yourself permission to do less?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;Sometimes the kindest thing you can tell an ambitious developer is that their plans aren't feasible.&lt;/p&gt;

&lt;p&gt;It hurts to hear. But it's way better than the collapse that comes without it.&lt;/p&gt;

&lt;p&gt;You don't need permission to slow down, but I'll give it to you anyway: You're allowed to do less. You're allowed to focus on what energizes you. You're allowed to rest.&lt;/p&gt;

&lt;p&gt;Your career is a marathon, not a sprint. Pace yourself accordingly.&lt;/p&gt;

&lt;p&gt;Have you ever had to have this conversation with someone, or needed someone to have it with you? Share your story in the comments—sometimes we all need to hear we're not alone in this.&lt;/p&gt;




&lt;p&gt;If you want to dive deeper into recognizing burnout patterns before they happen, &lt;a href="https://www.beyondcommit.com/masterclass" rel="noopener noreferrer"&gt;join my upcoming masterclass on sustainable growth&lt;/a&gt;. I'll share the frameworks I wish I'd known before I ended up on that couch.&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@nublson?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Nubelson Fernandes&lt;/a&gt; on &lt;a href="https://unsplash.com/photos/a-man-sitting-at-a-desk-with-a-laptop-and-headphones-Xx4i6wg6HEg?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>mentorship</category>
      <category>productivity</category>
    </item>
    <item>
      <title>The Skills That Actually Make You Senior (Hint: They're Not What You Think)</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Tue, 11 Nov 2025 10:22:48 +0000</pubDate>
      <link>https://dev.to/tlorent/the-skills-that-actually-make-you-senior-hint-theyre-not-what-you-think-1615</link>
      <guid>https://dev.to/tlorent/the-skills-that-actually-make-you-senior-hint-theyre-not-what-you-think-1615</guid>
      <description>&lt;p&gt;I used to think becoming a senior developer meant mastering advanced algorithms, design patterns, and maybe picking up a third framework.&lt;/p&gt;

&lt;p&gt;Nope.&lt;/p&gt;

&lt;p&gt;The moment I realized this was during a project refinement. We were going to build this fantastic feature that the whole team was convinced would be awesome. My product owner asked one question: "But did it solve the customer's actual problem?"&lt;/p&gt;

&lt;p&gt;Uhm...&lt;/p&gt;

&lt;h2&gt;
  
  
  The Myth of "Technical Excellence = Seniority"
&lt;/h2&gt;

&lt;p&gt;Some developers believe the path to senior looks like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Master advanced TypeScript&lt;/li&gt;
&lt;li&gt;Learn system design&lt;/li&gt;
&lt;li&gt;Contribute to open source&lt;/li&gt;
&lt;li&gt;Get really good at LeetCode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And sure, technical skills do matter! But &lt;strong&gt;the gap between junior and senior developers is rarely just technical.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I learned this the hard way. And recently, when I interviewed Nadia Makarevich (author of Advanced React), she said something that crystallized everything: "Code by itself is mostly worthless."&lt;/p&gt;

&lt;p&gt;Your perfectly crafted React component means nothing if it doesn't solve a real business problem. Your elegant algorithm is worthless if it's solving the wrong pain point.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Makes You Senior
&lt;/h2&gt;

&lt;p&gt;Senior developers don't just slam dunk code into a repository (because of my height I will never be able to do a slam dunk...sad). They connect technical solutions to real business needs.&lt;/p&gt;

&lt;p&gt;Here's what that looks like in practice:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before writing any code&lt;/strong&gt;, they ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What customer problem does this solve?&lt;/li&gt;
&lt;li&gt;Why is product prioritizing this over other features?&lt;/li&gt;
&lt;li&gt;What's the business impact if we ship this vs. delay it?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;During development&lt;/strong&gt;, they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identify every stakeholder (not just other engineers)&lt;/li&gt;
&lt;li&gt;Create roadmaps that align with business goals&lt;/li&gt;
&lt;li&gt;Break work into tasks that make sense to non-technical people&lt;/li&gt;
&lt;li&gt;Update stakeholders throughout—not just at the end&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;After shipping&lt;/strong&gt;, they:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Measure impact, not just completion&lt;/li&gt;
&lt;li&gt;Connect their work to customer outcomes&lt;/li&gt;
&lt;li&gt;Understand what marketing, product, and support need&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The technical implementation? We've got AI for that now. The business thinking? That's what separates developers who code from developers who create impact!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is Hard (And Why Nobody Teaches It)
&lt;/h2&gt;

&lt;p&gt;I spent years thinking "business stuff" wasn't my job. I'm an engineer, so surely my job is to write code.&lt;/p&gt;

&lt;p&gt;That mindset kept me junior far longer than it should have.&lt;/p&gt;

&lt;p&gt;The problem is that there's not a lot of talk about these skills, according to Nadia. I've seen it too: bootcamps teach React, online courses teach algorithms...but who teaches you how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Translate customer pain into technical requirements?&lt;/li&gt;
&lt;li&gt;Prioritize features based on business impact?&lt;/li&gt;
&lt;li&gt;Communicate technical trade-offs to non-engineers?&lt;/li&gt;
&lt;li&gt;Collaborate with marketing, product, and support?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These skills are usually learned through painful trial and error.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Actually Develop Business Thinking
&lt;/h2&gt;

&lt;p&gt;When I became a team lead, I had to learn this fast. Here's what actually worked:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Start with stakeholder mapping&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Next time you get a feature request, pause. Before you open your editor, identify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who requested this and why?&lt;/li&gt;
&lt;li&gt;Who will use this feature?&lt;/li&gt;
&lt;li&gt;Who needs updates during development?&lt;/li&gt;
&lt;li&gt;Who measures success of this feature?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This simple exercise changes a lot. Suddenly you're not just implementing a ticket—you're solving a real problem for real people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learn to ask "why" three times&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Product says: "We need a dark mode."&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why? "Users are requesting it."&lt;/li&gt;
&lt;li&gt;Why do users want it? "They work late and it hurts their eyes."&lt;/li&gt;
&lt;li&gt;Why is this a priority now? "Customer surveys show it's blocking enterprise deals."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now you understand the business context. Maybe you realize a "focus mode" with reduced brightness solves the same problem faster. Maybe you discover the real issue is font contrast, not colors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attend meetings outside engineering&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was uncomfortable at first. But sitting in on product planning, customer calls, and marketing syncs taught me more about business thinking than any engineering meeting.&lt;/p&gt;

&lt;p&gt;You don't need to attend everything of course. But sitting in once a quarter, if possible, helps you understand how other departments work—and how your code impacts them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Respect (and admire) other departments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As Nadia Makarevich mentioned in our interview: "respect and admire other departments".&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marketing isn't "just doing ads." They're understanding customer psychology, crafting messages, and driving revenue.&lt;/li&gt;
&lt;li&gt;Product isn't "telling us what to build." They're balancing customer needs, business goals, and technical constraints.&lt;/li&gt;
&lt;li&gt;Support isn't "handling complaints." They're the frontline understanding where your code actually breaks down.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Green Flags You're Developing Business Skills
&lt;/h2&gt;

&lt;p&gt;You know you're on the right track when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You find yourself asking "why" before "how"&lt;/li&gt;
&lt;li&gt;You can explain your work's impact without technical jargon&lt;/li&gt;
&lt;li&gt;You proactively update non-engineering stakeholders&lt;/li&gt;
&lt;li&gt;You push back on features when the business case isn't clear&lt;/li&gt;
&lt;li&gt;You see patterns between customer problems and technical solutions&lt;/li&gt;
&lt;li&gt;You get invited to planning meetings outside engineering&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try This Tomorrow
&lt;/h2&gt;

&lt;p&gt;Next time you get a feature request:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pause before coding&lt;/strong&gt;—Don't open your editor yet&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Identify stakeholders&lt;/strong&gt;—Who cares about this beyond your team?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand the business goal&lt;/strong&gt;—What customer problem does this solve?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plan communication&lt;/strong&gt;—When will you update people, and what will you tell them?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask one "why" question&lt;/strong&gt;—Even if you think you know the answer&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Truth
&lt;/h2&gt;

&lt;p&gt;You can stay a great coder forever and never become senior.&lt;/p&gt;

&lt;p&gt;I've seen developers with 10 years of experience still writing code in isolation, wondering why they're not getting promoted. Meanwhile, developers with 3 years of experience who understand business context become team leads.&lt;/p&gt;

&lt;p&gt;The main difference? Business thinking!&lt;/p&gt;

&lt;p&gt;Your perfectly crafted code doesn't matter if it solves the wrong problem. Your elegant architecture is worthless if nobody understands why it exists.&lt;/p&gt;

&lt;p&gt;Senior developers bridge the gap between technical execution and business impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Start
&lt;/h2&gt;

&lt;p&gt;If this resonates but feels overwhelming, start small:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;This week:&lt;/strong&gt; Before starting your next task, identify three stakeholders and one business goal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This month:&lt;/strong&gt; Ask to shadow a product manager for a customer call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This quarter:&lt;/strong&gt; Attend one meeting outside engineering and share one insight back with your team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need to become a business expert overnight of course, but start seeing your code as a solution to real problems, not just an implementation of technical requirements.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What business skills have helped your career growth?&lt;/strong&gt; I'd love to hear what patterns you've noticed—drop a comment below.&lt;/p&gt;

&lt;p&gt;If you want to read my full interview with Nadia Makarevich (and Kent C. Dodds), where we dive deeper into what actually makes developers senior, check out my book &lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;From Hello World to Team Lead&lt;/a&gt;. Both conversations are packed with insights that nobody talks about in tutorials.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;P.S. I donate 10% of all book proceeds to tech education charities (TechMeUp, SheSharp, GirlCode, HackYourFuture). Your growth helps others grow too.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Why I Check Every Ticket Before Writing Code (And You Should Too)</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Sun, 09 Nov 2025 15:39:22 +0000</pubDate>
      <link>https://dev.to/tlorent/why-i-check-every-ticket-before-writing-code-and-you-should-too-2f29</link>
      <guid>https://dev.to/tlorent/why-i-check-every-ticket-before-writing-code-and-you-should-too-2f29</guid>
      <description>&lt;p&gt;&lt;strong&gt;A simple checklist that saved a developer from wasting hours on impossible scope&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Message That Made My Day
&lt;/h2&gt;

&lt;p&gt;"Yes, I applied the ticket checklist and I immediately communicated to my PO that something was not possible and that we should resize the ticket 🎉"&lt;/p&gt;

&lt;p&gt;This message hit my inbox yesterday.&lt;/p&gt;

&lt;p&gt;A developer read my book, grabbed the Ticket Checklist, and applied it to their next feature. Within minutes, they spotted something: a requirement in the ticket couldn't be done the way it was scoped.&lt;/p&gt;

&lt;p&gt;Instead of diving into code and discovering this halfway through (or worse, during code review), they caught it upfront. They messaged their Product Owner, explained the blocker, and got the ticket resized—before writing a single line of code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is what good systems do.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They don't slow you down. They save you from wasted work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Most Developers Skip Planning
&lt;/h2&gt;

&lt;p&gt;Here's what usually happens:&lt;/p&gt;

&lt;p&gt;You get assigned a ticket. You read the description. Maybe glance at the designs. Then you open your editor and start coding.&lt;/p&gt;

&lt;p&gt;Three hours later, you hit a wall:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The API endpoint you need? Not ready yet.&lt;/li&gt;
&lt;li&gt;That edge case you didn't consider? Breaking everything in QA.&lt;/li&gt;
&lt;li&gt;The scope that seemed clear? Actually vague and missing critical details.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So you backtrack. Rewrite code. Ping people in Slack. Wait for answers.&lt;/p&gt;

&lt;p&gt;You've just wasted hours you'll never get back.&lt;/p&gt;

&lt;p&gt;Most developers do this because planning feels like extra work. You want to build, not sit around asking questions. You feel pressure to show progress.&lt;/p&gt;

&lt;p&gt;But let me tell you: 5 minutes of planning saves hours of rework.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ticket Checklist (What Actually Matters)
&lt;/h2&gt;

&lt;p&gt;Before I write any code, I ask four questions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. What's the actual scope?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What are we building, specifically?&lt;/li&gt;
&lt;li&gt;What's explicitly out of scope?&lt;/li&gt;
&lt;li&gt;Are there dependencies on other teams or features?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If I can't explain the ticket in one clear sentence, it's not ready yet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Are designs ready?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are designs finalized, or will they change?&lt;/li&gt;
&lt;li&gt;What happens on mobile? Tablet? Small screens?&lt;/li&gt;
&lt;li&gt;Are there edge cases the designs don't show?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Designs that "look done" often have gaps. I check first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Are there dependencies or API blockers?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the backend ready, or do I need to mock data?&lt;/li&gt;
&lt;li&gt;Are endpoints documented?&lt;/li&gt;
&lt;li&gt;What's the expected response structure?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing kills momentum like discovering the API isn't ready halfway through development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. What edge cases might break this?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens if data is missing?&lt;/li&gt;
&lt;li&gt;What if the user does something unexpected?&lt;/li&gt;
&lt;li&gt;Are there permission or role considerations?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Edge cases are where bugs hide. Thinking about them early means fewer surprises later.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Start Using This
&lt;/h2&gt;

&lt;p&gt;You don't need a fancy system. Just try this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Pick your top 2 pain points: If you often hit API blockers, focus on dependencies. If designs change mid-development, focus on design readiness.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply it to your next ticket: Before opening your editor, spend 5 minutes answering those questions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adjust based on your context: Agency work? Focus on scope and deadlines. Product team? Focus on long-term maintainability.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Deeper Lesson
&lt;/h2&gt;

&lt;p&gt;This isn't really about checklists.&lt;/p&gt;

&lt;p&gt;It's about thinking like a senior developer.&lt;/p&gt;

&lt;p&gt;Juniors see a ticket and think: "How do I code this?"&lt;/p&gt;

&lt;p&gt;Seniors see a ticket and think: "What could go wrong, and how do I prevent it?"&lt;/p&gt;

&lt;p&gt;They don't code faster. They waste less time.&lt;/p&gt;

&lt;p&gt;They anticipate problems, ask clarifying questions upfront, and communicate proactively. They own outcomes, not just tasks. The checklist trains that muscle!&lt;/p&gt;

&lt;h2&gt;
  
  
  You're Not Being Slow—You're Being Smart
&lt;/h2&gt;

&lt;p&gt;A 5-minute checklist prevents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hours of rework&lt;/li&gt;
&lt;li&gt;Scope surprises mid-development&lt;/li&gt;
&lt;li&gt;Tense conversations with your PO&lt;/li&gt;
&lt;li&gt;Code that doesn't meet expectations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it builds trust. Your team sees you're thinking ahead, asking good questions, and taking ownership. That's what separates good developers from great ones.&lt;/p&gt;




&lt;p&gt;What's one question you wish you'd asked before starting your last feature? Drop it in the comments—I'd love to hear what trips people up most.&lt;/p&gt;

&lt;p&gt;If you want the full Ticket Checklist (plus 9 other practical frameworks), I explore them in &lt;a href="https://www.fromhelloworldtoteamlead.com/" rel="noopener noreferrer"&gt;From Hello World to Team Lead&lt;/a&gt;. The systems are built for real work, not tutorials.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>career</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>You’ll Learn More in 3 Months on the Job Than 2 Years of Tutorials</title>
      <dc:creator>Tim Lorent</dc:creator>
      <pubDate>Tue, 04 Nov 2025 08:58:44 +0000</pubDate>
      <link>https://dev.to/tlorent/youll-learn-more-in-3-months-on-the-job-than-2-years-of-tutorials-5g9f</link>
      <guid>https://dev.to/tlorent/youll-learn-more-in-3-months-on-the-job-than-2-years-of-tutorials-5g9f</guid>
      <description>&lt;p&gt;Your first dev job will teach you more in three months than two years of tutorials ever could.&lt;/p&gt;

&lt;p&gt;Most juniors don’t believe that (I certainly did not). They’re stuck in the “just one more course” loop — convinced the next certification or project will finally make them ready.&lt;/p&gt;

&lt;p&gt;But real growth doesn’t happen before the job. It happens because of it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Myth of “Ready”
&lt;/h2&gt;

&lt;p&gt;I applied to my first dev job feeling completely unprepared. Spent the first week thinking someone in HR had made a terrible mistake.&lt;/p&gt;

&lt;p&gt;And yet — within a month, I’d learned more about version control, debugging, and reading other people’s code than six months of online courses ever taught me.&lt;/p&gt;

&lt;p&gt;Because tutorials can’t simulate what it’s like to fix production bugs at 9PM or explain your logic during a code review.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why the Job Changes Everything
&lt;/h2&gt;

&lt;p&gt;Once you’re in a real environment, everything shifts.&lt;/p&gt;

&lt;p&gt;You learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read messy legacy code and make sense of it.&lt;/li&gt;
&lt;li&gt;Ask better, sharper questions.&lt;/li&gt;
&lt;li&gt;Navigate feedback without taking it personally.&lt;/li&gt;
&lt;li&gt;Handle ambiguity when specs aren’t crystal clear.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That’s the real developer education — and it starts on day one.&lt;/p&gt;




&lt;h2&gt;
  
  
  What to Look For in Your First Job
&lt;/h2&gt;

&lt;p&gt;Don’t just apply anywhere. Look for teams that actually invest in juniors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Green flags:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Structured onboarding&lt;/li&gt;
&lt;li&gt;Pair programming&lt;/li&gt;
&lt;li&gt;Regular code reviews&lt;/li&gt;
&lt;li&gt;Patient seniors who want to mentor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Red flags:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No documentation&lt;/li&gt;
&lt;li&gt;Everyone’s too busy to help&lt;/li&gt;
&lt;li&gt;They expect you to “hit the ground running” on day one&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  You’re Ready Enough
&lt;/h2&gt;

&lt;p&gt;That feeling of not being ready? It never fully goes away. Even senior devs feel it.&lt;/p&gt;

&lt;p&gt;So apply anyway. Because the fastest way to grow is to start — not to prepare forever.&lt;/p&gt;

&lt;p&gt;You’ll learn by doing, failing, and improving.&lt;/p&gt;

&lt;p&gt;That’s how every great developer started.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>career</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
