Lifelong Sharpening of the Saws
By Bastian Platz, ProgrammersNeeds.de
This is the first article in an ongoing series regarding topics of interest for more or less experienced programmers. The topic of the day is lifelong learning. How to sharpen the saw?
First we will explore three strategic suggestions and then three tactical challenges. That will give us an overview of the topic of lifelong learning from a programmer’s point of view.
Strategic Suggestion 1: Invest into your production capacity, don’t just exploit your current production.
As an experienced and educated programmer it is an obvious choice to benefit from your expert status, get a nice paying job and earn a decent salary. Was that not the goal of all your studies? Programming at one point in time was maybe a hobby, but now it is a profession that pays remarkably well. The natural thing to do is to exploit it as far as you can.
But one of the suggestions of the wise masters of our craft is to invest into your knowledge. Get your butt in a chair and learn something. Improve your production capacity, so that tomorrow will even shine brighter.
Learning is an important activity. Sadly, it is also non-urgent and a bit tiring. That places it in the infamous second quadrant of activities, which shows if you plot the activities by importance and urgency axes. It is so easy to postpone further learning for a day. But the day turns to weeks, weeks turn to months, then years are gone. No progress is the result. That is to be avoided at all costs.
The solution is to make learning a habit. Learn daily, lifelong. Invest in yourself regularly, as a habit. Keep learning and growing.
In psychology it is observed that some people report that their intelligence seems solid, and some report that it seems fluid. The first group don’t think that they can do anything to improve their IQ. The second group is of the opinion that intelligence comes with practice. So which group do you belong to? I really hope you are of a fluid opinion and keep working on yourself, improving, progressing every day.
The best quote about this topic is maybe from Benjamin Franklin: “An investment in knowledge always pays the best interest“.
Finally, you could also invest in other things besides the mental realm most aligned with programming: do 30 minutes of exercise every second day to get healthy, meditate every day for five minutes to get spiritually fit, invest some time for socializing, friends and your emotional life.
Strategic Suggestion 2: Diversify your knowledge portfolio to gain security and enjoy your ride too.
The progress of technology is astonishing. It is also progressing in an exponential way, e.g. the rate of progress is accelerating.
The bad news is that your painful acquired knowledge portfolio, e.g. all the things you know about technology and programming, will expire a bit with each sunset.
The idea is now to accumulate a diverse portfolio of knowledge about diverse technologies. That only works with daily learning. A very satisfying state of being is when you have learned to enjoy the learning.
Maybe you want to consider balancing your investment in speculative vs. conservative technologies. Maybe the bet on the newest framework works out fine, but maybe not. Technology forecasting is a difficult beast.
Strategic Suggestion 3: Internalize the compounding effect of learning.
The third and final suggestion is to think about your daily investment. When you learn something daily, that maybe makes your production 1% more effective. What do you think will be the result of one single year of learning?
Maybe your first guess is around 365% productivity increase. That would be great, nearly multiplying your productivity fourfold and getting maybe the salary increase that comes with that.
But you also have to consider compounding. You learn something and the day after you increase upon that. After a year you multiplied your knowledge 365 times by 1.01. I spare you the math, but it will result in a factor of around 37-times. Quite a bit of increase.
On the other hand, it works out the same when you are lazy, and your daily applicable knowledge shrinks by 1%! The explicit factor is less important than the compounding nature.
Tactic Challenge 1: How do you learn best?
Psychology gives us some hints about how to learn best. Fact is, that every person learns best with his or her form of media. You could prefer written, spoken, or visual media. Try them out, learn something about yourself and be a bit better prepared for further learning.
One advice from the wise ones is to choose a job not only for the money it pays, but also for the potential learning experiences you could have. You can also apply nearly the same wisdom when you approach the topic of side-projects. Here you can experiment and tinker freely because you don’t have to deliver your best.
Another piece of wisdom is the advice to read a non-fiction book a month. If that is no problem, you can increase the frequency to one per 14 days or one per week. That will give you some exposure to new ideas.
The last piece of advice is to write to teach and teach to learn. Write something; be it a blog, an independent introductory article or maybe a little book. You’ll gain much more clarity by the needed reflection of your newly acquired knowledge. You definitely don’t need to be an expert in the topic already. You can provide value with your writings as a learner, too.
Tactic Challenge 2: What should you learn?
The greatest immediate impact comes from mastering the programming language, frameworks, and tools you use daily. Know your stuff like a real craftsman.
The usual advice is to learn a new language per year. Most important is to learn the different paradigms of programming languages over the years. That allows you to express the best approach to a problem in nearly every language. Yes, you can program a little bit functionally in an otherwise imperative language. Modern multi-paradigm languages make this really awesome.
You could also approach a new problem domain. You know computer game programming to the heart? Maybe check out finance. Or the other way around.
Finally be on the lookout for emerging technologies you could get an early start with. As mentioned above you should balance between conservative and speculative investments. Choose wise and carefully.
Tactic Challenge 3: What are nice sources of learning?
One good tactic to apply if you are currently employed is to go for code reviews. Approach them with a learning mindset and try to acquire knowledge from your colleges.
Read technical books and books about soft-skills. That will teach you a lot. Subscribe to newsletters, follow bloggers. Do some reading.
A craftsman approach is deliberate practicing, like doing coding katas you find on the internet.
If you are a visual learner, then video courses and MOOCs (massive online open courses) are something for you. But if you prefer the spoken word, go to user groups, meetups, and conferences. Meet people. Talk about cool stuff. Maybe you find a great mentor, who can light the way for you.
Now you have finished reading the promised three strategic suggestions and three tactic challenges. Maybe this short essay has given you some insights and an idea on how to proceed with your learning in the coming days.