Monday, April 18, 2016

Pragmatic Programmer Philosophy: Maintaining a Knowledge Portfolio

This is last part of my series of posts on the chapter of pragmatic programmer philosophy. It's also probably the most important chapter. As a programmer, you are what you can do. If you don't continuously improve your abilities, you're not very useful.

Andy and Dave use the investment portfolio as a metaphor for your knowledge and experience as a software developer. Instead of investing in financial assets, we're investing in knowledge of tools and processes to help us be more valuable as a programmer. Just like an investment portfolio, your knowledge portfolio as a programmer has a market value. In most cases, that market value is your salary.

The principles of growing an investment portfolio are pretty well known.

  • Invest regularly
  • Diversify asset types and risk
  • Buy low, sell high
  • Review and re-balance portfolio as necessary over time 
The same principles apply for growing your knowledge portfolio. Instead of investing regularly in and diversifying financial assets, you're doing the same with programming knowledge. 

The authors offer a set of tips on how to invest regularly, which they argue is the simplest principle to apply and the most important. Investing regularly just means learning regularly. 

There are various ways of learning about tech, generally speaking:
  • Books. Both technical and non-technical. Try to read a book every quarter. Go read Pragmatic Programmer!
  • Local user groups or meet ups. For example, there's like a dozen AngularJS meetup groups.
  • Classes. Online or offline. Sign up for a Udacity or Coursera class!
  • Newsgroups / Magazines. Keep up with trends. 

And more specifically, the authors suggest:
  • Learning a new programming language every year. Always used Python? Try Haskell.
  • Learning a new environment every year. Always used Mac? Try Linux.
Both of those efforts will broaden your thinking in really powerful ways. 

I'll be honest, I'm not doing any of those things right now. I think one thing I'm going to start doing is learning a new programming language. I feel like I have a very strong grasp of JavaScript. I'll write a short guide on it before moving on to a different language. 

No comments:

Post a Comment