The Side-Project Considered as a Necessity
It seems strange to me that there exist developers who do not have side-projects: exploratory exercises in coding, tinkering, and scratching personal itches that run on the weekends, or here and there in the evenings as a replacement for mindlessly consuming mass-market entertainment. Do these people not enjoy their chosen profession?
Even more strange are companies that forbid their developers from working on other software projects - open source contributions, personal sites, and so forth. Had I not suffered the misfortune of briefly talking to hiring managers for a few such companies, I would not believe that otherwise apparently sane people would try to run a software development endeavor that way. Why would they put in place the one restriction that will ensure they hire only sheep: bored developer serfs with no ambition, no real interest in their profession, and no drive to improve themselves? Working in such a place would be a special form of hell for anyone with any talent or vision - so, needless to say, no such people would be found there.
What sort of developer doesn't develop on their own time, for the fun of it? What sort of company actively seeks to exclude self-interested developers? It is a strange world we live in.
One of the few downsides of life as a freelance developer is that you are very, very rarely hired simply because you are smart and able to learn. Rather, you are hired for what you already know how to accomplish - and so without your own educational side projects the short-term incentives will drive you to become ever more narrowly typecast. Being the go-to developer for a particular type of project in even a modestly sized community has great advantages - but the world of software development is ever in flux. Sooner or later any particular specialty will fall into disfavor and disuse. Just ask anyone who used to make a living on a knowledge of ColdFusion, for example.
Similarly, in the world of full time employment you are also generally not working on what you would be working on if you were steering. You might be in the general area of software development that you you enjoy - as you picked your job well - but the deal is that you are paid to follow someone else's direction. It is the rare and lucky fellow who can engineer his way into a full time job wherein he decides what he does with his time. Generally you have to start your own company to obtain that freedom - and even then the customer is ultimately king: if the customers decide they want something different, then something different it will have to be.
The motto here is that if I don't get out there and learn these thing myself - and have a blast while doing so - no-one is going to fall from the heavens to teach me. Perhaps I will take this casual game idea to the next stage of development, following on from the research, but even if I ultimately choose not to, I will have learned a great deal about the technologies I evaluate - and I will still have the recorded plans and implementation sketches to return to later.
Deliberately diving into the new and unfamiliar is the way to draw ahead and stay ahead in the world of software development. Where else will you establish the skills to keep up with the changing face of coding - and more importantly where else would you be more likely to enjoy that process of self-improvement and production?