The Long Obedience
Armin Ronacher - the creator of Flask, Jinja, and a long list of open-source tools that most Python developers have touched at some point - recently wrote a piece called "Some Things Just Take Time." His central argument is that trust, quality, and community can't be conjured from a weekend sprint. He uses trees as his metaphor: you can't pay for a fifty-year-old oak. Some things just need the years.
I read it the week after publishing my own reflections on fifteen years of building sheepCRM, and something about the timing felt right. Not because I'd planned it, but because his piece put language around something I've been living but hadn't quite articulated.
🌱 It Starts Somewhere
I'm torn, though. Because it does start in a weekend sprint. It has to start somewhere - a moment of inspiration, a midweek conversation, an idea on a bike ride. sheepCRM started in the summer of 2011 because a friend needed a database and I had time between consulting contracts. That's a weekend sprint in spirit, even if it took a few months.
The starting isn't the problem. The starting is essential. The question is what happens after - whether you're still there in year five, year ten, year fifteen, long after the initial excitement has burned off and you're left with the craft of it.
🧭 Finding the Direction
There's a phrase I keep coming back to - "a long obedience in the same direction." It's the title of a book by Eugene Peterson, though the phrase itself is Nietzsche's, from Beyond Good and Evil: "The essential thing 'in heaven and in earth' is that there should be a long obedience in the same direction; there thereby results, and has always resulted in the long run, something which has made life worth living."
Peterson's book is about spiritual discipline - the idea that depth comes from sustained daily faithfulness, not dramatic moments. But the phrase has escaped its original context and found its way into conversations about craft, career, and building things that last. Cal Newport circles the same idea in Deep Work - that mastery demands sustained, undistracted concentration over years, not months.
The long obedience requires patience. But it also requires knowing which direction you're being obedient in. And that's harder than it sounds.
In the early days of sheepCRM, I was too broad. The product would work for almost anyone who turned up, which felt like a strength but was actually a weakness. I keep coming back to the mountains metaphor - when there's no path, you have to try a few directions before you figure out that you're making progress. You might crest one hill and see a ravine. You back up and try another. But when you crest a hill and see a productive path ahead, you move forward.
The exploring wasn't wasted - it's how I found the ridge line. But I was probably too slow to recognise when I needed a U-turn, too keen to try to make all possible paths win. That's a different kind of patience from the willingness to persist. The willingness to U-turn is its own discipline.
The focus came gradually. Membership organisations found us. Then professional associations specifically. Today, that's the core - and the depth we've built in that space over fifteen years is something a newcomer couldn't replicate by throwing money or AI at it. Not because the code is special, but because the understanding is.
🤝 Shared Reality
I have frequent meetings and coaching sessions with James Scholes, our head of software, who has been with sheepCRM really from the very beginning. It's hard to put a measure on how valuable those long-term relationships are.
Fresh people on a fresh team bring new insights. Their questions are incredibly important - they break you out of ruts of thinking. But those same ruts are what lead to great shared understanding. What James and I have built over fifteen years is something I'd call a shared reality - a way of seeing the problem space together that means we can skip past the preamble and get straight to the hard thinking.
You notice it in friendships too. Some people you haven't seen in years - you reconnect and you're immediately there. Others, even after a long time, you feel like you're always talking at cross purposes. Length of time isn't always the determining factor. But when you do have it, the compounding is extraordinary.
The practical expression of shared reality is that we've moved beyond first-order problems into second-order problems - the ones generated by the solutions to the first. We're looking at edge cases, at the subtle implications of decisions made years ago.
A recent example: payment reconciliation. When a member pays, the transaction is matched to their membership at the point of purchase - straightforward. But we also have asynchronous payments arriving through payment feeds, and a small percentage don't match cleanly. We built duplicate-prevention logic years ago to stop bad data creating phantom transactions. That worked. But now we're dealing with the cases where a real person makes near-identical or even identical purchases on the same day - and the code that prevents duplicates is actively fighting the code that's trying to recognise legitimate transactions. The solution to the first problem created the second.
That's the kind of rabbit hole where you start to understand the real benefits of the long path. You can only get to these edge cases once you've solved the obvious stuff, and solving the obvious stuff takes years of customer conversations.
🎯 The Question of Taste
Steve Yegge recently wrote about what he calls the "Vibe Maintainer" - the idea that AI has changed not just how we build software, but how we maintain it. His argument is that velocity now determines survival. But even he concedes that "there's still a thing called taste that current models can't be trusted with. Not yet."
Taste is a powerful concept, and it's difficult to explain. Why do I like the Windrush Valley where I live? What's so special about it? There's something. We could all point to common things, but we have certain preferences which are really difficult to pin down - or perhaps we just never take the time to do it.
This is where I probably separate from Ronacher's piece. He's quite cautious about AI-generated speed. I'm less cautious. I'm positive about AI's ability to police itself. When code is generated, rather than pushing it straight to production, I use AI to vet it, to check it, to create tools that can infer and enforce quality.
The shift I've felt in my own role is from software creator - someone who comes up with an idea and then codes it, or works with a team to code it - to something closer to a movie writer & director. Still coming up with the ideas. Still having opinions. Still exercising taste. But increasingly working with AI agents to do the delivery.
For many software developers, this is the shift we're living through: from fingers on keyboards typing syntax to managing the process of creation. And I feel fortunate, because I've been managing software developers since the last century. The jump to managing agents instead of people feels oddly natural. Twenty-plus years of knowing what good looks like and being able to direct others toward it - human or otherwise - turns out to have been training for exactly this moment.
👕 Wearing Your Own Clothes
When I tried Salesforce back in 2011 for Adventure Plus - the charity where sheepCRM started - it would have worked technically. But it would have felt like wearing someone else's clothes. The language was wrong. The workflow was wrong. The assumptions were all built around sales funnels and lead conversion.
That instinct has only been magnified since. I think people will increasingly expect a level of fit from their software that they haven't had before. Small organisations have always had to compromise - using tools designed for someone else because it's all they could afford or the only thing available. I don't think that has to be the case any more.
AI is making it feasible to build deeply tailored software for niche markets. Not personal toys that break after six months - real products, maintained and evolved over years, that fit their users the way a good suit fits. sheepCRM has always tried to offer that kind of flexibility, and I'm genuinely optimistic about our ability to take it further.
But here's the thing: you can only build software that fits if you understand the shape of the person wearing it. That understanding comes from fifteen years of conversations with membership organisations - learning their language, their rhythms, their actual problems as opposed to the problems they think they have. That's the long obedience at work. Not in the code, but in the knowing.
🕯️ Faithfulness
Peterson highlighted a passage in A Long Obedience that I keep returning to: "Any work done faithfully and well is difficult. There are no easy tasks in the Christian way; there are only tasks that can be done faithfully or erratically, with joy or with resentment."
Faithfulness isn't a word I'd naturally have associated with building software. But fifteen years in, it fits.
There's a faithfulness in just turning up. It's been a slog at times - and a whale of a time, often in the same week. Seeing a product emerge from scratch, getting those first customers, watching the positive feedback come in. Then crushing moments when we let people down, when our mistakes cause people extra work rather than less.
Faithfulness, for me, is trying to maintain the original vision. Remembering why I wanted to help people and why I thought sheepCRM might be a way of doing that. It started with a friend's charity. It's still running for that friend's charity, fifteen years later.
Old doesn't always equate to good or wise or useful. There can be a long obedience on the wrong path. But if you're honest about where you are, focused on the right problem, and willing to keep showing up through the valleys between the peaks - you keep making progress.
The long obedience isn't glamorous. It won't make for a great Instagram reel. But it compounds in ways that nothing else can. Trust, quality, community, taste - none of them can be conjured from a weekend sprint. They need the years. And you won't always be sure you're on the right path while you're walking it.
James Webster is the founder of sheepCRM and director of Croftsware. He has been building membership software for professional associations since 2011.