Several times a week I am asked by a contact/reader/someone on Reddit for advice on what they should learn next. The question comes from both junior and experienced programmers, and has been posed both as open-ended (“What should I learn?“) and multiple choice (“Python or Ruby?“, “Django or Flask?“, “iOS or Android?“, etc.).
Unless it is someone I’ve worked with, there is usually little (or no) accompanying information or context provided which makes any answer rather speculative. To respond with hard data on compensation figures or even an informed opinion regarding future demand for a skill may be helpful, but offering career advice blindly without any knowledge of the person borders on irresponsible.
The easy answer (the long view) is to just say that overall programming ability and knowledge are the most important factors in maximizing employability, and that languages and tools are mostly interchangeable for experienced professionals. “Any good engineer can learn a new language in n weeks/months” is commonly heard from those at the senior level. Whether this is true or not is debatable, but it still does not account for a multitude of factors that may make a particular language more favorable than another to an individual at any given time.
One needs to think of learning as a time investment, and investors need to consider maximizing ROI. Before deciding where to invest their time, it may be wise to research and evaluate some of the following.
- Programming experience and background – Those with little or no programming experience are usually pushed towards a few languages, with Python and Ruby the most popular among bootcamps and courses aimed at beginners. Experienced programmers that have a larger set of realistic options may consider how quickly a language might be picked up based on the paradigms and concepts that are already familiar. Build on what you know. Many Java developers were C++ refugees in the late 90’s, and Java pros of the past decade are venturing into Scala and Go.
- Availability of learning resources – People learn in different ways, so it’s important to first recognize their best learning method and then research what resources are available. Those who learn best by doing can find it challenging or expensive to find resources and tools for proprietary or highly-specialized languages. Classroom learning opportunities or books on emerging languages often don’t exist or may be cost prohibitive relative to common languages. Documentation and support for newer tools can be spotty or unreliable.
- Market supply and demand – If employability is the impetus for learning (as opposed to intellectual curiosity, boredom, etc.), both the current and projected supply and demand for talent is worth noting. Supply and demand are not necessarily universal trends and can vary based on geography and experience level. As an example, demand for entry-level Haskell talent is almost non-existent but rises significantly with experience. Searching for jobs specifically within desired geographic regions and doing research with a tool like Indeed’s Job Trends may provide some insight into both local and national data.
- Professional goals – What types of products do you want to work on? Those interested in gaming might benefit from different choices than those interested in web development or embedded systems. Do you measure job satisfaction by professional accomplishments or is compensation a bigger motivator? Certain industries pay better than others, and certain languages are more prevalent in those industries.
- Popularity and adoption trends – Learning an esoteric language that employers don’t use can be helpful in becoming a better overall engineer, but useless for putting food on the table. Trying to become reasonably productive in a language after hours can take time, and the adoption levels and/or popularity of a language could potentially change during the learning process. Researching current and historical data can be helpful. In addition to Indeed Trends, other sources include the ThoughtWorks Radar, RedMonk rankings, and the TIOBE Index. Always consider how the ratings are assembled, past performances to determine trends over time, and keep in mind that others may be using the same data to make decisions. Just because a language is “#1” today doesn’t mean it will be in a year, and identifying and prospecting underserved language camps experiencing high demand is one way to employability before the market supply catches up.
- Community or vendor support – Is there a community of people dedicated to keeping the language vibrant and relevant? Is the language supported by a vendor in good standing, or are the stewards of the language in a poor position to continue? Regarding community, Raganwald tweeted this back in February and it resonated.
What did I miss?
Have you ever been on LinkedIn and stumbled on one of their work anniversary announcements? In case you haven’t, they look something like this:
The announcements are generated by LinkedIn and typically followed by a predictable handful of likes, congratulatory words, and positive sentiments. I’m yet to see a comment that generally reflects my knee-jerk reaction to at least some of these posts.
Stagnation: How it happens
The formula for career stagnation is pretty simple. When one’s basic needs are met or even exceeded, they stay put. When provided with fair compensation, a tolerable work environment, and a comfortable chair, many technologists go about their work without finding the need to pay much attention to trends in the industry that don’t affect them. In an industry that changes rapidly, the result is marketability problems.
For some in our field, new challenges, learning, and change are basic needs. Even if these types are paid well and given other perks, they will be likely to investigate trends and possibly seek new employers. Their natural curiosity protects them from stagnation.
Managers hire technologists who possess the skills needed to perform jobs at their company, even if those skills are not in high demand on the overall job market. Those working for companies staying current with new tools and offering multiple challenging projects have no reason to fear the negative impact stagnation has on marketability. For those working in static environments with little change and a dependence on less popular or proprietary technologies, the burden of maintaining marketability is their own.
Avoidance, Detection, and Treatment
The biggest problem with stagnation is that technologists don’t realize it’s even an issue until it’s too late to remedy. Thankfully, there are ways to identify and treat this common problem.
- Diagnose – Set a reminder on your calendar to update your résumé and/or LinkedIn profile every six months. Are you able to add any projects or skills to your résumé? Are there any skills on your résumé that you no longer feel comfortable including for fear of being exposed as a fraud? How many six month periods have passed since you have been able to mark a significant accomplishment?
- Test – Send your résumé to a past co-worker – ideally someone who has been on the job market a bit – or a recruiter you trust, and ask if your current skills would get you interviewed. Make it clear that you aren’t actively seeking employment, but now are just interested in an assessment.
- Read and get out – Much of stagnation is related to technologists being insulated professionally and not paying attention to trends outside their offices. Reading technology blogs or article aggregators for as little as an hour per week will give you an idea if you are building marketable skills. Having any involvement with others in the industry that are not co-workers is perhaps the most valuable method of prevention. Some office environments may fall prey to groupthink and hive mind tendencies, so communication of any kind with the outside world is useful.
- If you aren’t getting it at work, get it at home – If your employer doesn’t provide you with the ability to work on challenging projects and relevant technologies, side projects are one solution if you have the time. Employers today tend to appreciate self-taught skills and impressive independent development efforts as much as on-the-job experience.
- Leave – Leaving your job doesn’t need to be the first solution to career stagnation, but for many it’s the most effective. When evaluating new employers, consider whether stagnation and marketability issues may arise again in the near future.
Marketability is a complex concept that depends upon several independent factors that are difficult to predict. Stagnation is easier to diagnose than it is to treat. Early detection is the key.