Making time to learn is one of the most important things we can do as software engineers. It can be a daunting task, especially with family, friends, TV, books (reading for pleasure), and any number of one hundred other things we could be doing with time not spent at work. So in this onslaught of daily life, how do we make time to learn something new and hone our craft?
Make time where ever possible
The simplest answer is we fit it in where ever possible. There are plenty of opportunities to waiting for you to take advantage of them. You just may not have noticed that they were there, or you have it filled with another activity so it seems that you can't possibly fit it in.
Let's take something like your morning commute, most of us have a day job and need to drive to work or commute in some fashion. Usually this time is spent reading a novel (if you commute by mode other than a car), or listening to music for around 20-30 minutes each way. This is 40 minutes to 1 full hour of time that could be spent learning a new concepts or exposing yourself to new ideas in your craft. Fill your morning commutes with podcasts. You can easily burn through one hour long podcast nearly each day. For me this practice, then spilled over into anytime I was driving somewhere I would catch 15-20 minutes of a podcast. This time all adds up and can really boost you knowledge of high level concepts like service oriented architecture, good object oriented principals. I did this for around 1 year straight and nearly every time I discuss a new project at work I can pull some helpful nugget from a podcast listened to on the way to and from work. Just getting exposed to advanced concepts can be a huge win for you and your career.
Next, get and e-reader or a smart phone and load it with books on subjects that interest you. Try to keep it loaded with several books on varying subjects that you want to read. Avoid loading too many distracting novels that you'd rather read. While these can be nice to read from time to time, keep distractions to a minimum. Keeping books at hand for quick access comes in handy when you have idle time between tasks or when you are out and about in the world. It's become common place to see people browser facebook while their wife or husband tries on clothes and a store, or perhaps when your favorite TV show goes on its umpteenth commercial break for 5 minutes. I usually try to fill these kinds of gaps, with some light reading. Simply open your e-reader app instead of looking at all the cute cat pictures your friends are posting to their facebook wall.
Focus on a goal
Bruce Lee, one of the greatest martial artist of all time, was famous for his insane physical shape, his speed, and strength. He would routinely workout for 8 hours or more a day. This is the price you pay to keep that physique. Bruce, would consistently work in more exercise into his daily activities. If he needed to the go to the store he would drive close to the store, then park far enough away to get a good walk in, or even a run. He would flex and hold isometric positions while just standing. He would be actively working out even while holding a conversation. This attention and laser focus on working out kept him in peak condition and earned him the respect as a formidable fighter, capable of feats of strength.
What Bruce Lee's insane workout regimen shows us is that in order to be world class you need to work and push yourself to be world class. This is why squeezing in those extra minutes per day can boost you to levels you didn't think were possible. We can all strive to develop software with Bruce Lee like passion.
Isn't it important to relax? Yes, absolutely this is key, you want to make sure you prevent burn out, but relaxation is an activity like anything else and you can schedule it in. The amount of time for relaxation varies per person, so you will need to find something that works for you. Some people are ok with one day a week dedicated to relaxing, others need significantly more. Find a balance that works for you.
An effctive way of training yourself for this new behavior is using a "if this then that" reward system. Rewarding yourself for doing something that helps you career, is an effective method for ensuring you stay productive. Let's say you're writing a blog post, and in order to watch the new episode of Orange is The New Black, or marathon the last season of Breaking Bad, you need to finish this blog post. So following the system it would be "If I finish this blog post, then I can watch my tv show". Enforcing these rules makes you more productive and more likely to just crank it out, so you can get back to that sweet endorphine rush of your favorite show.
In the end the key to success with keeping yourself in peak condition and being a lean mean software cranking machine is making sure you take advantage and make the most of your time each and every day. While we may not get to Bruce Lee status, We can all strive to be the best software developer we can be.
Remember the difference between good and great is that little extra time and effort.