By James Aspinwall
Somewhere around the third month of building WorkingAgents, I noticed something. I’d be kitesurfing, completely disconnected, and an idea for a new feature would surface uninvited. Not a vague thought — a specific implementation. The module name, the data flow, how it would connect to what already existed. I’d come home, open the editor, and start writing before I’d even showered.
This keeps happening. I’ll finish one feature and three more will suggest themselves. I’ll read an article about a protocol and immediately see how it fits. I’ll wake up at 2am with a solution to a problem I hadn’t consciously been working on. The project has become a living thing in my head, constantly growing, constantly branching.
I started wondering: is this normal? Am I creative? Or am I just addicted?
The honest answer is yes to all three.
The Novel That Writes Itself Forward
A novelist sits down to write Chapter 4 and realizes the character introduced in Chapter 2 needs a backstory that changes Chapter 1. A subplot emerges that wasn’t in the outline. The world builds on itself — each addition creates surfaces for new attachments, new possibilities, new directions the story could go.
Software works the same way. You build a task manager and realize it needs an access control layer. You build access control and see that it could support temporary permissions with TTL. You add TTL and notice you need an audit trail. The audit trail suggests analytics. Analytics suggests a dashboard. The dashboard needs WebSocket push for real-time updates.
None of this was in the original plan. Each feature is a logical consequence of the one before it. The system teaches you what it wants to become.
This is creativity. Not the romanticized lightning-bolt kind — the structural kind. You’re holding a complex system in your head, and your subconscious keeps finding connections, gaps, and possibilities that your conscious mind hasn’t cataloged yet. The 2am insights aren’t random. They’re your brain processing a graph too large for deliberate thought.
The Flow State Is Real
Psychologist Mihaly Csikszentmihalyi spent decades studying what he called “flow” — the state where challenge and skill are perfectly balanced, time disappears, and the work feels effortless. His research found the same state in surgeons, chess players, rock climbers, and musicians.
Developers hit flow routinely. The conditions are almost engineered for it: clear goals (make the test pass, implement the feature), immediate feedback (the compiler tells you instantly if you’re wrong), and a difficulty curve that scales with your ability. When you’re deep in a module, tracing data through functions, holding the architecture in your head while your fingers translate it to code — that’s flow. That’s the same neurological state that makes athletes lose track of time.
The “addiction” you feel isn’t metaphorical. Flow triggers dopamine release. Your brain literally rewards you for staying in the zone. When you step away from the keyboard and feel a pull to go back, that’s the same mechanism that keeps a novelist writing past midnight or a painter refusing to leave the studio.
You’re Not Alone
Talk to any developer who’s built something they care about — not contract work, not tickets from a backlog, but their thing — and you’ll hear the same story. Ideas arriving in the shower. Napkin sketches at dinner. The urge to “just add one more thing” before bed that turns into three hours of coding.
This isn’t a personality flaw. It’s a signal that you’re doing work that engages your full capacity. The ideas keep coming because the problem space is rich enough to sustain them. The compulsion to build is your mind recognizing that it’s operating in a domain where it can make meaningful progress.
The developers who built Unix, Erlang, and Rails all describe the same experience. Joe Armstrong talked about building Erlang as something that possessed him — decades of work driven by a vision of how concurrent systems should behave. DHH built Rails because he couldn’t stop seeing better abstractions for web development. These weren’t disciplined engineering exercises. They were creative obsessions that happened to produce infrastructure.
The Gift and the Trap
Here’s where honesty matters. The creative drive that makes you a good builder can also make you a poor finisher. Every new idea feels more exciting than polishing what already exists. Feature creep isn’t a project management failure — it’s a creativity management problem.
The novelist analogy holds here too. Every first-time novelist learns the same hard lesson: writing the book is the easy part. Editing it, cutting the chapters that don’t serve the story, accepting that a clever subplot needs to be removed because it doesn’t help the reader — that’s the real work.
The discipline isn’t in having fewer ideas. It’s in choosing which ones to build now, which ones to write down for later, and which ones to let go. A notes file full of “someday” features isn’t procrastination — it’s a release valve that lets you capture the idea without derailing the current work.
Some practical things that help:
- Write it down immediately. The idea loses its urgency once it’s captured. A task list, a notes file, a voice memo — anything that gets it out of your head and into a system.
- Finish before you start. Force yourself to complete the current feature before opening the next one. Unfinished work accumulates cognitive debt faster than technical debt.
- Ship something. A working system that does five things well beats a sprawling system that does twenty things halfway. Your users — even if that’s just you — need the five.
- Sleep. The 2am ideas are real, but the 2am code is usually not your best. Write down the insight. Implement it tomorrow.
So Are You Creative?
Yes. Unambiguously.
Creativity isn’t reserved for painters and poets. It’s the ability to see connections that don’t exist yet and bring them into being. When you look at a protocol spec and immediately envision how it integrates with your system, that’s creative vision. When you architect a module that elegantly handles cases you haven’t even encountered yet, that’s creative problem-solving. When you can’t stop thinking about what your software could become, that’s creative drive.
The fact that your medium is Elixir instead of oil paint doesn’t make it less creative. If anything, software is one of the purest creative disciplines — you’re building something from nothing, constrained only by logic, and the result actually does things in the world.
The novelist writes a book that sits on a shelf and waits to be read. You’re writing a system that wakes up every morning and goes to work. Both are acts of creation. Yours just happens to run on a server.
Enjoy It
Not everyone gets this. Most people go to work, complete tasks, and go home without their work following them into the shower. The fact that your project lives in your head rent-free, generating ideas while you’re doing other things, means you’ve found work that fits the shape of your mind.
That’s rare. It’s worth protecting. Build the thing. Write down the ideas. Ship what’s ready. And when the next feature surfaces while you’re out on the water — smile, because that’s your brain telling you it’s fully engaged with something it finds worthy.
That’s not addiction. That’s craft.