![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b354f8d-ef53-4b5b-8f41-a3b750f0ebd9_1280x845.jpeg)
In corporate America, software development is a painful slog. Management is fixated on metric optimization, developers take tickets one after another from a backlog, and work consists mostly of taking code that's already written (legacy code, open source, third-party libraries) and gluing it together. It doesn't exactly make you spring out of bed and race to work in the morning.
Even if a company starts out with a better culture, it eventually ends up like all the rest. There are just too many MBAs in suits running around applying their Taylorisms. Any resistance eventually succumbs, given enough time and persistence.
For a while now, I've felt trapped inside this mouse wheel and have wondered what the alternatives are. Most recently, I've looked into freelancing sites like Upwork as an escape from the traditional nine-to-five. But to make that happen, I'd have to ramp up consulting in my free time while keeping my day job to pay the bills. Sadly, I'm realizing that after a day of corporate coding, I just don't have the energy left to serve yet another group of people who want me to code for their benefit. Even if I do manage to transition from traditional employment to full-time freelance, I'm not certain I'll feel any more freedom (apart from a bit more schedule flexibility).
So lately, in the evening—when I should be freelancing—I've been researching the Zig programming language just for fun, because it's cool. I'm enamored with the level of autonomy and innovation that community has achieved. They tackle big, long-standing problems in unique ways. They’re trying things that could have a big payoff—the kind of work a typical software manager wouldn't let you touch with a ten-foot pole because of the perceived risk. It’s exactly the type of work I wish I was doing!
This got me thinking. I have an extra tool in my toolbox that I'm not using aggressively enough: open source software (OSS).
OSS development is my chance to be in charge—to achieve the mastery, purpose, and autonomy that form the foundation of intrinsic motivation.1 At work, I take orders; in the OSS world, I do what I want.
The secret of OSS, and the way it sidesteps traditional capitalist pressures, is that you give it away for free. To some, this may seem foolish. But it's what gives OSS its magic powers.
Because it's free, OSS can be whatever you want it to be. No one can demand anything, and it doesn't have to find a place in the market. No one is paying for it, so users only have two options: take it or leave it. There's a lot of power in that position.
So while I do the boring work of gluing code together at work, the interesting stuff is being done elsewhere. OSS is one of those places—where contributors are digging into new algorithms, building frameworks, and writing new languages.
If things go well with an OSS project, you can even turn a profit. If you manage to get wide enough adoption, people start wanting you to stick around for a while—they become dependent. They start wanting customization, training, and upgrades. If they're excited enough, they may even want to buy some swag.
You've wormed your way into their hearts, and now there actually is a space for you in the market. With OSS, you don't get into the house by ringing the doorbell and giving an uncomfortable pitch on the front porch; you come in through the back door, asking if anyone wants some extra zucchini from your garden. Soon enough, you're all friends.
OSS can even be an effective way to take on the big guy in the neighborhood. I remember fondly how Netscape (eventually renamed Firefox) escaped oblivion to eventually conquer Internet Explorer. Microsoft thought they had the upper hand by bundling IE (at no extra cost) with their operating system. But then Netscape went open source. It was inspiring to watch them take on a giant and beat them at their own game.
Other benefits of OSS include the following:
You can take it with you when you switch jobs.
You can neglect it whenever you get too busy.
If people like it, they may start contributing to it.
Since it's something you choose, it's likely to be interesting—otherwise you wouldn't have chosen it.
It allows you to build a portfolio of code you can demonstrate.
You get good karma from sharing with the world.
It can benefit you at your day job.
If someone else is building something that is close to what you want, you can contribute to their project instead of starting something from scratch.
There’s a part of me that wishes the world worked more like OSS. If everyone built what they were passionate about and shared it freely, maybe there would be enough to go around, and you wouldn’t need to buy anything. Money would be unnecessary, and no one would feel compelled to do someone else’s bidding to make a living. When it comes to software, we're pretty close to that reality. There’s an open source version of pretty much anything you could ever want. If you have some hardware and the internet, you can download OSS and be off to the races. You don’t spend a penny. Is there a version of that for everything? That’s utopia in my opinion—an open source world.2
The bottom line is, I think this is what I need to maintain my mental health. After working for the man all day, in the evening I only have enough motivation to build something I totally control. If I can't pick my project, my stack, my tools, and my pace, then I simply don't have it in me to open up emacs again. It feels too much like the same old exploitation in slightly different clothing. I end up watching Netflix instead.3 So I'm officially modifying my trajectory. Instead of trying to transition to freelancing to gain some intermediate freedom and eventually start a company, I'm going to keep my day job and work on OSS at night. Eventually, I hope one of my projects will gain enough traction to bring in some extra cash. But in the meantime, I can use what I'm building for myself and share it with the world. That alone might keep me satisfied for a while. One can hope.
I feel another essay brewing inside me.
I always seem to find the motivation to write about my issues with the software industry as well.
I freelanced for 3 years for similar reasons. The problem I had with it was that I wasn't really attached to any of the work I was doing because it was so temporary. Also, you'll often end up dealing with the same type of management except it's easier to stiff a contractor than an employee.
Plus, if you're in the US, getting health insurance as a self employed person is not great.