Deciding What to Learn Next is Hard

I have an ever present restlessness when it comes to figuring out what to learn next. It's a source of agitation and sometimes stress. It's even more unhealthy when I feel that way at times when I can do nothing about it, especially during some much needed downtime.

I have learned about myself a lot over the last few years. One personality trait is the need to set goals and conquer new frontiers. I am not happy unless I have a list of things I want to achieve. This list - sometimes terribly long - is a source of my restlessness.

Another trait is a persistent fear of missing out. I don't want to miss out on family fun or a party or a meetup or news or ... you get the idea. This is one more source of stress. I just want to be everywhere at once doing all the things that I can be a part of.

Realizing these two traits has helped me chart a course for future. I have cut down my list of goals guided by a handful of principles:

  • My faith is a very important part of my existence
  • My kids must get introduced to opportunities I never had
  • Help humans in need
  • Play with technology that interests me

The last principle has really focused my attention on a few things I find interesting today. Python is my bread and butter and I enjoy working with it everyday. UNIX - Linux since about 2006 and recently FreeBSD - is a great sandbox to play in and learn from. ARM architecture in general but Raspberry Pi in particular is a compelling toy-to-serious-work technology.

Some areas of technology competing for my time and attention are programming, testing, documentation, and devops. I can't be doing all these simultaneously and thus arises a need to prioritize.

My work experience tends to make me want the skills involved in lower level programming - things like network protocol massive traffic generators and modern communication systems - where I have comprehensive control over each instruction executed. I have not written such things because my roles were usually in support of those who wrote those things. I feel and fear that somehow I am missing out on the joy and adulation these roles involve; that a low level programmer is a "real" programmer and I'm not.

These feelings are further inflated when I interview for roles involving programming and whiteboard coding gets involved. Here's an open secret: I suck at whiteboard coding interviews. Of all the employers who have ever hired me, just one asked me to write code on a whiteboard for a full day. For all others I wrote not a single character of code before getting hired. When I leave a whiteboard coding interview my self esteem is at its lowest.

As my current and previous coworkers will attest I have hunger, passion, and skills to excel at the roles I was hired for. I have never shied away from a challenge and I don't recall a single instance where a challenge got the better of me in the long run. Nevertheless, the interview process has now become so monotonous, tedious, and unimaginative that any candidate who does not fit in a square hole gets rejected. This is hard for any candidate but harder for those who suffer from impostor syndrome.

These rejections propel me to try to become even better. This feeds into my todo list of technologies to learn. And thus the conundrum of what to learn next.

This blog post was inspired by Wargala from Reddit.

There's no reason why you should be stressing about something that makes
someone else rich.

When I thought about this I understood a flaw in my thinking: I have been trying to please a future potential employer by trying to fit the square they think their next candidate should fit. Instead I should be learning the things that interest me and work for employers who value my skills and passion.

With newfound clarity I feel relief. I am no longer bound by the definitions of some unknown person. If I can program in Python, admin a FreeBSD box, configure using Salt, and write documentation in reStructuredText then Wallah that is all I need to satisfy my compulsion to learn.

All that said my next goals are to learn FreeBSD, Erlang, and maybe sneak in Rust when I can.

Erlang is a paradigm shift from my previous experience and I am excited to embark on that journey. Rust will have to wait until I get bored of Erlang. FreeBSD is my new OS of choice on a Raspberry Pi and there is a lot it still has to teach me.

After a long read if there is anything you may want to take from it: do not let others decide what you spend your time learning. Learn what excites and compels you. There are better things you could be doing than trying to fit a square hole when you're a person with a unique shape.