I first encountered the idea of byproducts in the book rework. The chapter “Sell your byproducts” suggested taking the byproducts you already build for your internal use and sell them as separate products. Since you are also the client/user of the product, you know which features and functionality it needs and you can improve it as you use it yourself. I try to apply a similar concept to my work as a programmer/entrepreneur, but instead of selling the byproducts (which requires more time and effort) I give them away for free.

I’ve always wanted to publish open source projects but didn’t know which projects to build. I also always wanted to write and have a blog but wasn’t sure what to write about. Even though I had many ideas for projects and blogs, I never seemed to be interested enough to finish what I’ve started. The problem was that I had a wrong interpretation of my goals. I wanted others to make use of the open source projects that I build and read the blog posts that I write, but I’ve realized that it can’t be the end goal I’m trying to achieve. These things come as a side effect of something else. My end goal is to write software that others use and get value from. Publishing libraries and blogging about what I learn along the way is a side effect.

Shifting Focus

I started extracting parts of my project and the utilities I wrote for myself to libraries I can open source. This was a win/win situation for me - I get free git hosting from github, my code is more modular and I even had contributions from others who started using my libraries. This way, even if I don’t get stars and no one uses my published code, I still have all the benefits from publishing it as open source. Changing my mindset from “publishing something for the sake of publishing something” to “publishing what I write for myself anyway” made it easier for me to write and publish libraries and more people got exposed to the code and used it since it was written to solve an actual need and problem I had. Having the habit to separate code into modules had a big impact on my productivity. Taking the time to modularize your code and separate it into modules will increase your productivity in the long term. Same with writing. When I notice something about how to work more efficiently or think about things in a better way, I like to write it down and publish it as a blog post. After I write it down I remember it better, and just the fact of putting something into words clarifies it for me and makes me think it through. While it’s nice if others will read it and link to it, it’s a side effect and not the main goal of blogging for me.

Publishing byproducts has another benefit. I used to be reluctant to publish the work I do because I wanted to avoid being criticised. When I shifted focus and started focusing on my own goal and look at open source and blogging as byproducts, I didn’t worry as much anymore. After all, I’m publishing code that was used to generate revenue and I’m writing advice that worked for me. I’ll make an effort to write the best code I can but as long as it does what it needs to do, I don’t worry about criticism as much.