Raghu's Weblog


Everyone should have a project that they control 100% of

To improve as a programmer, every programmer whether working independently or in an organization should at least have one project that they control 100% of, and it doesn't matter if it is your main project or a side project. When you are working for an organization or working independently on a collaborative oss, the major chunk of your cognitive bandwidth gets allocated to those projects, which is not bad per-se, and it does teach you for most parts about how to work in a collaborative environment and to learn from people who are better at the concerned technology/concept than you. But the issue is more personal and emotional in when you are working on something bigger than you, it unwittingly causes a self-effacing effect i.e., you tend to devalue the emotional effects of being able to create something with complete autonomy, or crave for the autonomy and burnout as a result of the cognitive exhaustion. The sense of freedom and the liberating experience that comes out of creative autonomy is just unmatched.

Even a side-project in GitHub that you consider to be trivial has an effect that only such kind of projects can provide, of having done everything yourself and without anyone putting constraints on what you can and what you can't. It allows you to experiment outside of what would be acceptable within a project you are doing with others. Something like what if I just re-wrote this entire engine on top of OpenGL would never (or almost never) make sense in a collaborative project, but it would make perfect sense if it is just you.

The other obvious advantage is it makes you much more light-hearted because you know that if this doesn't work out the way I like it or good for me, then I can just go. When you are working on a personal project out of your own free will, it has a certain kind of air that a collaborative project won't. It is purely voluntary, and you can just up and leave at any time. That adds something to the mix. The responsibility of joy or stress that comes out of it suddenly becomes more tolerable as well as enjoyable. Note that I am not advocating that you drop everything that you don't like, it is just that having certain things in your life that you can control can help handle that which you can't.

Related: Creativity is a quality without a name, Everyone should create their own "Everything I know" series

References

[1] Andreas Kling. (2019). Commute Talk: How to improve as a programmer