Here is a quick list of all the things I want to learn. The list is in no particular order. It is just a brain dump of technical topics and skills that I want to learn and become good at. Some of the items are programming languages, some are sub-areas of programming languages, and some could just be methodologies, concepts, or abstract skills.

This is a significant list. It takes weeks or months to learn any of those items well. A year or more to master them.

Even if I have the time to learn all of those in the near future of my lifetime – and I believe I do – there is still the question of what to do first. Even if I will learn two, three, or n of those at the same time, the question of which n of those to learn next still needs answering.1

How do I choose?

This is what I need to keep in mind (again, in no particular order):

  • Financial security / work
  • Fun
  • Dependencies

To learn things, I need time and space. To have time and space, I need to make enough money to provide and secure this space, and for my work to leave enough time to spare that I can spend on more learning.2

At the same time, some of those items will relate to my work, and that gives them priority. Other items will be applied to fun projects, or learned for the sake of knowledge.

Finally, dependencies. Some of those items depend on other items. I can’t learn virtualenv without making sure I know python well enough. It makes sense to learn MapReduce along with machine learning or graph analysis, and not with Swift.

I’m almost done with academics and academia, and I am deciding what the next work I do will be. Choosing what I want to do for work will help me choose what to learn.

Or,

Is choosing what I want to learn going to help me choose what to do for work? Hm!

  1. The idea of learning n things at the same time becomes worse at an exponential rate with the increase of n

  2. I say “more” because I am assuming that whatever work I am doing, it will involve learning things I’m interested in. That’s just a given and is non-negotiable.