Tag: ai assisted development

  • You Don’t Have to Love Code (But You Still Need To Love The Process)

    soundtrack by Dopo Goto

    I’ve been thinking about whether someone can get good at building software using AI if they’re not interested in programming. With tools that can generate substantial amounts of code from natural language descriptions, it’s tempting to think coding passion might become optional. My hypothesis is that while the required skills are shifting, you still need to love something about the process to succeed in building and shipping useful things.

    Let me share a recent example: I spent multiple hours recently working with an AI assistant to update what should have been a simple note organization component. What started as “just let me edit all the tags” turned into an episode of wrestling with state management, dealing with race conditions, and questioning my sanity. The AI could generate code quickly, but it couldn’t give me the persistence to push through when things got messy.

    This experience highlighted something crucial: one of the hardest parts of software development isn’t necessarily about writing code. It’s about having the stubbornness and curiosity to:

    1. Keep debugging when your “simple” change unexpectedly breaks three other things
    2. Question your assumptions when you’re given plausible-looking code that doesn’t actually solve your problem
    3. Start over when you realize your initial approach won’t scale, even if your code is a dazzling work of art
    4. Admit when you need another human’s perspective, even especially if you’re scared of looking dumb or having wasted your time

    The social dimension is also critical and often overlooked. Even with incredibly capable AI assistants, building valuable software remains a fundamentally collaborative process. The AI doesn’t have perfect information to work with when it helps you make decisions. You will always have blind spots. If you have a good team (whether that is a team at work or generous strangers on the internet) they will help clarify this lack of information (be it parallel efforts, product requirements, tribal knowledge, etc.). In other words, you need to be comfortable with stuff like:

    • Having your assumptions challenged
    • Explaining and defending your decisions
    • Admitting when someone else’s approach might work better

    I’ve noticed that the people who really succeed with building solutions and making them better aren’t necessarily those who love coding for its own sake. I’ve often faced the stereotype myself where programmers are people who love solving puzzles. Personally, I was never a puzzle solver. When I got started I just wanted to make the things in my head show up on a screen. Luckily for me, that turned into a fulfilling career.

    From what I’ve observed so far, the people who succeed at working with technology in the long term are the ones who:

    • Get obsessed with hard problems
    • Stay curious about how things work
    • Value adaptability (i.e. they practice some form of continuous improvement as it applies to their systems, and have a “growth mindset” as it applies to themselves)
    • Are OK with being wrong
    • Develop the persistence to push through obstacles (a.k.a. “grit“)

    So while AI might change how we write code, it doesn’t change the need for genuine interest in problem-solving and creating useful things. The focus of this interest might largely shift from loving a language to loving the process of breaking down complex problems, but something needs to fuel you through the inevitable challenges and ego-busting revelations.

    (Side note: I’m self-consciously avoiding using the word “passion” here which I associate with the stereotype of someone spending nights and weekends sleeping under desks and poring over code. While many people have a positive association with that type of passion, I personally think that its outdated, overrated, and limits our perceptions of what success looks like.)

    Maybe instead of asking whether someone needs to love programming, we should ask: Are you excited enough about what you’re building to push through when AI can’t solve everything? Are you OK with throwing everything away when you realize that someone else already does it better, and then helping that person instead? In short, do you actually enjoy the process? These are all things I keep trying to ask myself, regardless of how (or how often) I create code.