I started working right after university, in August 2010. My degree in particular, Computer Science, was quite pragmatic and had a decent focus in technologies being used in the Portuguese market: Java and C#/.Net. This meant that it would be easy to find a role using those technologies after I graduate. This was particularly evident when I was interviewing back then. Nonetheless, in 2010 mobile was booming and although I didn't have any experience, I was hired to do Android, initially, and then iOS development. I was lucky.

Around 2014 I started learning ReactiveCocoa and using it in my own projects in Objective-c. Eventually, I was able to do it full time, but only in 2015 with Swift 2.0. Nowadays FRP*, largely thanks to RxSwift, has become mainstream. This means that if I change jobs, there is a good chance that the skills I learned back in 2014 are still relevant. Not only that, the study and usage of FRP* inspired frameworks has allowed me to develop an instinct about how streams behave (e.g. reading Akka Streams code wasn't hard, although I am neither a Scala Developer or ever used Akka Streams in practise) .

I was asked a couple of times, if I have planned my career. First with my focus on mobile and secondly with ReactiveCocoa. The answer to both questions is no. I simply choose what I liked and was lucky enough for my interests to be aligned with the market needs.

Moving forward to 2018, things have changed. I do little development and I am mostly focused on engineering management duties. These entails, as expected, a good amount of things that are not related to pushing code. This has made me consider my career, my past choices and where I am heading.

In this article I will present 3 areas that I have identified while thinking about this problem. Accompanied these, I will present some examples and advise.

  1. Market: This represents what's in demand. In 2010 when I was starting , everyone was crazy about mobile. Nowadays Machine Learning and AI are the new kids on the block, although mobile skills are still high in demand. Β Often market shifts take a long time (years), so not focusing on this vertical is usually a safe risk.
  2. BAU: Business As Usual. It represents what you do on your daily basis, and why you have a salary at the end of the month. If you are an iOS developer, knowing Swift/Objective-c and Cocoa Touch are mandatory skills. If you are underperforming at your work, BAU should be your priority, since you run the risk of being fired. For example, when Auto Layout was released, although I wasn't using it at all, I was still investing time in learning it so I could be effective once we adopt it at work.
  3. Happiness: What makes you wake up in the morning and love what you do. In my case, it has been by looking at other languages and server-side. Since the majority of my work has been with Swift/Objective-c and front-end, trying new things is quite enjoyable.

When I was starting my career, I was nailing all three:

  1. Market: A lot of companies were hiring mobile developers.
  2. BAU: I was working as one.
  3. Happiness: I loved what I did!

This meant that all my efforts were contributing to the three verticals.

As time passes, things change of course. For Flash developers, in 2011 the market gradually started to collapse, so they had to shift their focus to something else. Besides having to continue working with Flash, in order to be effective, they had to focus on a new skill outside work, so they were still relevant market wise. This means that their focus was at least split in two, at worst three.

Usually one is able to nail 2 out of 3, while nailing all 3 is difficult to sustain in the long term. Having 1 out of 3 is a bad sign and it's probably time to re-think your career/situation.

  1. Market and BAU. This usually happens when you are quite well paid, but you aren't particularly happy with what you do. One can mitigate this problem by doing side projects or contributing to OSS using the technology you like. If there is a niche or demand for the work you love to do, you should consider making a career shift.
  2. Market and Happiness. By now you are thinking about changing area or potentially moving to a different job. This can put yourself in a situation where you are no longer effective at what you do. Regardless, usually this is a safe risk, because you have years of experience in the work you currently do, so not actively investing in it should be ok.
  3. BAU and Happiness. This was where Flash developers found themselves some years ago. They loved what they did and could exercise their passion on a daily basis, but the market was gradually losing interest in their skills.

My advice in general for professionals that have a couple of years of experience, is to focus on BAU and Happiness, while paying attention to where the market is heading. As I previously mentioned, the market takes a long time to adapt (Fortran is still in demand), so even if you were a Flash developer back in the days, you would still have some years to learn a new skill, or try your luck and continue being a Flash Developer.

If you are a junior or graduate, I would focus on BAU and Market, mostly because you probably don't know yet what would make you happy, so trying new technologies that are in demand until you find one that you like, in my opinion, will yield better results.

For those of us, who work in the tech industry, most of the time everything falls into the right place and we don't really have to pay attention to your career. I mean, it took me more than 8 years to actually start thinking about this. We are spoiled with choices. Understanding where you spend your time in each vertical might give you insight to where you should focus your attention next, or if a radical change might be the right thing to do.