The Art of Practicing
In one way or another, all professionals practice. They do this because they care about doing the best job they possibly can. What is more, they practice on their own time because they realize that it is their responsibility – and not their employer’s- to keep their skills sharp. Practicing is what you do when you aren’t getting paid. You do it so that you will be paid, and paid well.
This is kind of a controversial quote to some people. In an ideal world everyone would care about doing the best job they possibly can, but this quote is controversial not because there are people who don’t care about doing the best job they can, but because they feel that in order to do the best job they possibly can, it is their employer’s responsibility to maintain their skill set. I can’t fault them for thinking this way, if you’re busy with a family, the last thing you want to do is go home and read about software because it will make your job easier in the office. If your sole purpose for learning something is because you’re tossed a new problem that involves some piece of software or technology that you have no experience in, and your employer won’t give you the training to handle that new software or technology, then you’re not going to set aside time and learn that new piece of software or technology. Those that I’ve talked to that disagree with the quote above usually disagree with it because they’ve had experiences where they were supposed to support a piece of software that their employer never gave them training on or because they were supposed to integrate with/use some technology that they were not given any training on, so in order to do the best possible job they can, they would have to do this training themselves, in their own time. I can agree with them when you look at it that way. They aren’t learning some new technology on their own time because they have some personal desire to learn it, but because it is the only time they can. That is unfortunate. We can all agree that if your role requires you to work with some new technology or software, then a good company would see that good training on company time is something they should provide, but it is not your employers duty to maintain your skill set with regards to non work related endeavors. Sure, there may be some overlap, but its not something you can count on unless you like making enterprise solutions in your free time.
If you look at the quote as someone who has a personal desire to learn something not because their job requires it to accomplish some random task they aren’t passionate about, but because you find that technology interesting or that you figure you may be able to apply it in personal projects or even work projects, then finding time to learn and practice in your own time becomes less of an issue of motivation or desire but more of an issue of time.
How do I practice? I practice by creating random, small pet projects that solve little tasks or create small pet projects of random nifty ideas I get. Not all of these overlap with skills that are used in my day to day job role, but that is not why I practice. I sort of bounce between projects whenever a project I’m working on becomes ‘stale’. A stale project to me is something that I’ve just been hacking away at for too long and I need a break from. It isn’t that I’ve lost interest but that I need a change of pace. I spent 3 years or so working on my NerdBot project, but I didn’t spend 3 years straight working on it. I would take a break for a few months to a year, work on something else, but eventually I would make my way back and work on it again. NerdBot is by far my longest, continually updated “small” pet project (I say small since it started off as a simple idea, but over time it grew into a lot more). Usually when i shift to another pet project, it is because I have another idea in my head and that idea usually requires that I learn something new, so I shift and start learning something new. Hell, for a few months I had an idea of an online text editor that can be used by multiple machines over the internet, and started to learn Node.js in order to start that project. That project is ‘syncpad-server’, which I haven’t uploaded to GitHub yet, but maybe eventually it will find it’s way there, but for now, it is in a private repository since the code is horrible in my eyes (I haven’t read my Node.js Design Patterns book yet). I guess what I’m trying to say is if you have an idea, even if you don’t know how to actually accomplish it, give it a go, you never know what you’ll end up with and what you’ll learn along the way.
Why do I practice? Practicing has helped me greatly in my job role and in my personal projects. If it weren’t for the struggles of writing horrible code for years only to go back and try to read it, I wouldn’t be that great at documentation or code comments. I wouldn’t be willing to actually spend time learning new things. If it weren’t for my struggles of trying to refactor old code that I wouldn’t have started reading up on programming principles that helped me write better T-SQL code at work, that tends to be reusable and far easier to understand now than it would have been five years ago. Practicing has helped me save time by allowing me to identity bits of code that I can write in a way that is reusable across projects, so what would have taken me 10 hours before will only take me a few hours now. This not only benefits me, but benefits the unfortunate soul that may have to go back and read through my code, whether it be C# or SQL.
Contrary to the quote at the start of this post, I don’t practice so I can get paid well, since after all, I’m not a professional developer. When I practice, it just happens that it is beneficial to my career, kind of as a side effect, which is OK by me. There are times that I have a project at work that requires some knowledge that I don’t have, and I will end up researching it on my own time, because I consider myself a ‘Professional Amateur’ and usually what I learn, I can apply with my side projects. I think that in order to be the best you can be, you have to take some sort of initiative to learn things yourself, but make sure you’re doing it because you want to.
Edit: Another reason to practice and learn what interests you is if you ever encounter an unfortunate career shift. You could spend half your life doing one thing, without a worry in the world, you know the thing you’re doing and you do it really well, then suddenly the market changes and what you know well is no longer in demand. If you don’t have any other skills to fall back on, you’ll get left behind. That isn’t the reason I practice and learn, but it definitely something to think about. I’m not saying go out and pick up a random skill that you think will always be in demand, but I think picking up additional skills is useful all around.