I appreciate your points, but I think side-projects can still be useful learning tools. My usual process is...
Initial thought:"...there ought to be a library that handles this.".
Re-framed thought:"... Open Source library XYZ should be extended to handle this".
High ramp-up: Then, as you indicate, attempting to code something in the context of that Open Source library project means more ramp-up, and is often not as interesting as just focusing on the core problem I want to solve.
Minimal Viable Product: So, instead, I start something stand-alone, even though -- back of my mind -- I'm thinking this should be something that can go into Open Source project XYZ...long term
Learning: Doing something from scratch often means I have to ask some questions that I would not if I were fitting into an existing project. Questions --> decisions --> insight into why that other project might have done things some way.
Outcomes: varied... For me,... mostly, the end result is to incorporate some aspects into specific project being done for a specific client ... adding it to an Open Source library becomes more effort
No doubt some such projects can be a waste... looking back... in the sense that the learning and the material end-product were not enough to justify the time. But, since it was fun doing it... I get value... if I ignore opportunity-cost :) .
What's the profitable side-project? Any links?
I appreciate your points, but I think side-projects can still be useful learning tools. My usual process is...
No doubt some such projects can be a waste... looking back... in the sense that the learning and the material end-product were not enough to justify the time. But, since it was fun doing it... I get value... if I ignore opportunity-cost :) .
It can definitely be a great learning tool and if you're having fun while doing it just go for it. :)
On a side note, having a side-project is especially useful for people still studying because you get something similar to real work experience.