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.