In the midst of a hectic work life, many developers find a simple benefit in working on personal projects: risk-free learning.
“Wait…you code for fun too? Why would you do more ‘work’ at home?” ~ Everyone (maybe not)
I have heard this question (or some form thereof) more than I can remember. I have often simply answered with “why not, it’s fun”! This is typically accompanied by a moment of silence as they determine whether I am indeed serious, closely followed by expressions I call the “eyebrows of doubt” or the “stare of incredulity”.
Is it only for fun?
Strange as this answer may seem to the non-developer, it is nevertheless true…it is fun! There is something strangely intriguing about taking a concept from nothingness and shaping it into something you can view with pride. A sense of ownership, a feeling of accomplishment, and just the knowledge that this “thing” used to be “nothing.”
Even though the project may never again see the light of day (many will not), this sense of completion will remain. In fact, many projects may never see completion, abandoned in pursuit of another grand idea! There is also an obligatory sense of relief that the myriad of challenges along the way have been vanquished (…or may be ignored).
Many personal projects are eventually abandoned before completion, but this should not be considered a “waste of time”!
Yet I believe there is more to it than it simply being “fun.” If it were merely “fun,” eventually the sheer amount of challenges experienced and unfinished projects would overwhelm a developer. When this happens, it is often difficult to reignite the passion for “extracurricular” development that may have burned so brightly before.
So what is it actually?
So what is it then, that inspires developers to seemingly dive right back into their “work” in their spare time? As mentioned previously, the answer will often be risk-free learning.
Risk-free learning is one of the largest benefits of personal side projects!
The ability to learn and experiment outside a work environment cannot be overstated. It allows a developer to approach a problem in a way they would not be able to during their standard “work.” Whether removing the constraints of time, pressure, or entrenched practices, this approach often illuminates new avenues of resolving the challenge. In this environment, experimentation is encouraged and promoted, even though there may be no tangible outcome! And if the approach doesn’t work, there is still the positive outcome of knowledge gained…risk-free!
In return, the knowledge gained through this experience can be translated back into the “work” environment. However, the risks involved have already been mitigated through the process of personal experimentation in the (mostly) stress-free zone of personal development! Most problems faced in software development are actually not “new” problems, but have been solved before (in some manner). Developers can gain substantial amounts of new knowledge in this manner, without paying the necessary time cost “at work.”
Obviously, this is only practical if the developer is still “having fun” while managing their personal project. The moment the personal project becomes driven by the need to solve a “work” problem (without allowing for experimentation), what was once a personal project morphs into an extension of the “work” environment. While this is not necessarily a problem, it can soon allow “work stress” and the associated time crunch to creep into personal time.
However, a proper balance between experimenting with new technologies, ideas, and concepts in personal projects will almost always translate into a more productive “work” life!