Sit down. Okay, let me hear it.
You know—the thing you’re really passionate about. It’s distracting you completely right now. It keeps you up, wakes you up, and catches you daydreaming in between the rude interruptions of real life.
You look down, take a breath, and then it all comes out, bursting forth like you’ve just backed over a sprinkler, a blubbering apology to your dreams for not living them.
“I really want to—”
Great. Then you should do it.
That’s an excerpt from Then you should do it., a post by one of my favourite people in the world, Adam Brault.
What I’m passionate about, what I”d do even if I had to pay to do it, is writing software in a socially just way.
I’m very privileged. I have a lot of power that I didn’t really earn, at least no more so than many of those without power. I have a lot of freedom that I did nothing special to earn, freedom that is denied many of my peers.
And most importantly, I’m in a position to shape, in very tangible ways, the world around me.
Software is not a panacea, software is not the end-all-be-all, and software cannot solve all our problems. But software sure as hell should not be perpetuating our problems. But it is. Rather than equalizing, software is polarizing.
People who can write software are becoming rich. They’re doing it by selling out the people who can’t write software.
None of this is new. I’ve said this for a long time. A lot of people have said this for a long time, many of them more eloquently than I have.
The reason I bring it up is because this is what I desperately want to be doing. This is what comes gushing out when I talk to people.
I want to write open source software.
I want to have an open company.
I want to empower users, not constrain them.
And for a while, I was doing just that. I learned how to write software and have a company and be responsible for users the hard way, by doing it.
And then I left college, and I went to work for one company and now another, because I have student loans to pay and rent to pay. Because that’s the easy way to do that. And because the companies are companies I love, companies I support. It wasn’t selling my soul, it was an approximation of what I wanted that also put bread on the table.
But since then, I’ve released nothing of substance on my own time.
Sure, I released Wendy, a Distributed Hash Table I wrote. It’s buggy, not production-ready, and more or less abandonware at this point. As you can tell, I’m very proud of it.
I released Gets By, and I’m tremendously proud of the individuals that contributed their stories. But let’s be honest, all I did was hook up a static site generator to Nginx and automate it with Ansible. I did it in a weekend. I’m proud of the people, not my software.
I’ve been “working on” the next version of 2cloud for, let’s all count… 32 months now.
Let’s talk about insane development cycles, shall we? Almost 3 years of iterating a single version on a product that is already in the hands of thousands of users. Who thought that was a good idea?
Well, nobody. I never meant to do it.
And the guilt and shame eats at me.
In those 32 months, I’ve gone through countless architectures, coding styles, and databases. Rewrite upon rewrite upon rewrite. I’ve written more versions of 2cloud than the internet has written to-do list apps.
Why?
By all logic, I shouldn’t be. I have users waiting for that software, users saddled with the buggy software of my yesteryears until I finish the new version. Why am I taking my sweet time in writing it?
I’m scared.
Terrified, petrified, anxiety-ridden. It haunts me and shapes me, this fear.
I’m afraid, because until I release this update, it has potential. Once it is released, its potential is lost. It is now real; it is no longer going to be something, it is something. And I’m not as good at picking faults and tearing down things that are going to be. But once a thing is, it’s fair game. All its unsanded edges, all its blemishes, I see them and can’t ignore them.
And I know what the solution is, and that’s what is so frustrating about this. The solution is to release it, and congratulate myself on the work I’ve done, then go about sanding down the blemishes whenever I see them.
But first I need to get over that initial fear and actually ship something and call it “good enough”.
And what scares me, what terrifies me, is that a user will see the same blemishes and faults and failures I do, and they’ll ask me about them. Even nicely. Even asking me why something works the way it does, why the user has to do more work than they should… that’s terrifying.
But I can’t just stop shipping things.
And this fear has bled over. I now have trouble shipping anything at all. My Github repos are tombstones of half-finished projects, ideas that are fully-formed and partially implemented.
Because that’s what is safe.
But I’m tired. I’m so tired of not shipping anything. I’m tired of talking about what things will be, knowing they likely never will be.
I’m tired of being afraid.