A big part of what I like about being a software developer is that I get to learn new things every day. Whether it is a new programming language or simply a different way of thinking about a specific problem, the novelty keeps my working life exciting.
Of course, learning mew things comes with a cost. First, I have to identify what I want or need to learn about. Then, I need to dip my toes in to evaluate if it is worth pursuing. Finally, I have to master the concepts required to be useful with whatever I’m attempting to pick up. Each of these steps takes a non-trivial amount of time.
As a freelancer, time is my most limited resource. In addition to doing the actual work I’ve been contracted to perform, I have to write project updates, pursue new prospects, and negotiate with leads. On top of these things, I have to eat, sleep, and exercise and make sure I don’t neglect my beautiful wife and handsome dog.
What this all means is that I have a small time budget to invest in learning new things. A consequence of this is that I’m seldom on the cutting edge of any new technology. There just isn’t enough time in the day to invest in learning all about the new hotness (even if it seems really interesting).
This used to worry me. I wondered if my skills were going to be obsolete because I wasn’t building new applications in the language or framework of the month with every non-working waking hour. I don’t worry about that anymore. I’ve learned that, with a baseline skill level and a desire for knowledge, I can stay close enough to the cutting edge that I can learn what I need to without too much effort. When the need arises, I can dig in and rectify any knowledge deficiencies on demand. Then, when the project is over, I can decide to either push forward and learn more or discard the use of whatever new technology or technique I trid.
In the end, the most important thing is to learn enough to help my clients achieve a business goal or make more money. That very rarely requires the very newest thing and, by taking this approach, I actually get to spend time with my family instead of wasting it trying to keep up with the cutting edge.
What is your approach to learning new things and how do you find the time?