Continuous learning and Pet projects
As a software professional we are living in a world of knowledge explosion. A new framework will introduce in a matter of time to solve our hardship or another vendor introduce a framework superior to the existing ones. Our world is changing day by day, so how we will cop up with the ever changing world of Software industry. Simple answer is Treat programming as a passion not just a profession and Continuous learning.
Learning is not just reading some books or blogs, it also includes implementing what you read by writing a simple application. I can fly an aero plane using Microsoft Flight simulator but how foolish I am If I think that I can fly a real plane because I can fly in simulator. Same applies to software world as well, we have to practice what we read using language of our choice.
In hiring process if I ask about WCF or any xyz prominent framework, one answer I hear most of the time from candidates are “I read about it but never used it, because my current project is not using it”. To succeed in Software industry are we relying only on our official project? Its like a F1 driver telling that I will touch the driving wheel only in F1 Race track, does he win the race?
One of the best way to expand our horizon is working on pet projects. It gives immense opportunity to learn new things that we wont get in official projects. The advantages of a pet project is
Their wont be any deadlines.
Opportunity to implement what ever you are learning in day to day life.
You can scrap the project and start it from the scratch with a new improved design.
Test different frameworks and use the best one.
Knowledge you gained from pet project can be used in official one.
You are the boss do what ever you want with it.
And a lot….
A year or two back I was doing some research in Collective intelligence, and I learned couple of algorithms as part of it. I never knew that I will be using what I learned in those days in a completely different context, I used it for counting colors in an image just like how human does. I implemented it it in an official project. Yes time spend in Collective Intelligence paid me off.
Most of my pet projects wont even see the light, but all of those are high learning curve for me. I learned WPF through a pet called iTraveller. Three years later I scrapped that project and developed in MVVM using Caliburn Micro with a new architecture. It helped me to learn a lot other frameworks, you can see the details of iTraveller here.
Recently I read a post of Ayende and that invites lot of negative feedbacks. Most of the commenters tells lack of time outside official work to do some pet projects or want to spend time with family, etc. With all respect I strongly disagree that, I think most of us can spend an hour every day to sharpen our knowledge. In a long run it will definitely help you.
Learn new Languages
As Pragmatic Programmer book says, learn a new language every year. It’s a wonderful experience and full of challenges. I was working in .NET for so many years and one day got an urge of learning Scala. It was very challenging, I got introduced to new semantics, new IDE, a completely new world. But I learned functional programming. I may not use Scala in my day to day life but I learned lot of good stuff that I may can use in .NET. If you are a WP7 developer, do some thing in Android. Trust me it’s will be a new experience.
Once we start broaden our knowledge, it will shatter our ego and will realize how less we know in the ocean of knowledge.
I was like a boy playing on the sea-shore, and diverting myself now and then finding a smoother pebble or a prettier shell than ordinary, whilst the great ocean of truth lay all undiscovered before me. – Isaac Newton
Share what you learn
It will help others if you share what you have learned. If you don’t have a blog start one. A blog is not just for others, it will also help you if you want to look back and find how you solved a scenario before. I consider my blog as a log of solutions, where I can read it when ever a similar situation arise.
The post is just a repetition of all other great minds said. I just portrayed through my experience.