Whether you’re looking for a new tech job, or want to progress further in your current role, these skills are all highly sought after in 2018. If you’ve been looking to learn something new in the new year, or to take your career to the next level, I hope this list will help. Where possible I’ve included links to books, courses, or tutorials to help you develop each of these skills.
The React or Angular Ecosystem
* There are some problems with this statement, as I don’t think frequency of Stack Overflow questions is necessarily equivalent to popularity. Angular and React could also just be confusing and poorly documented, leading more people to get stuck with them, and request help on Stack Overflow. The reality is probably somewhere in the middle of these two explanations.
Though sometimes it feels like the entire tech industry is moving to React, many companies are adopting or maintaining Angular code. Whether one or the other is more marketable seems to depend, surprisingly, on where you live. Analysts at Stack Overflow recently found that React was more popular in tech hubs like San Francisco and New York, while Angular was more popular in commercial hubs like Denver and Dallas.
- If you’re staking your claim with React, 2018 is the year to learn the ins and outs of your chosen React ecosystem, which may also include Redux, Webpack, Babel, Yarn (or npm).
- If you’re staking your claim with Angular, 2018 is the year to finally ditch that Angular 1.x app and jump all the way to Angular 5.
Do you really understand machine learning? Not just “I’ve heard the term before and I kind of know what it means”, but do you understand it well enough to see opportunities for its use, and to seize those opportunities? If not, this is something you can build on in 2018.
For the last few years machine learning has been seen as a specialty skill, one being used to pilot self-driving cars and learn the kind of shows you like to watch on Netflix. Increasingly, it is seeing wider applications in diverse industries, and my prediction is that within the next few years it will be an expected part of every capable software engineer’s skillset. In fact, once you understand what machine learning is, you may realise that you’ve already used it.
In the simplest possible terms, machine learning involves teaching computers to recognise and react to patterns in data. This can be useful in a huge range of contexts:
- Recognising patterns in your music listening helps Spotify construct its Discover Weekly playlist
- Recognising patterns in sensory input allows self-driving cars to build a model of the road and the other cars around it
- Recognising patterns in user activity on an eCommerce website could help prevent fraudulent transactions
Pattern recognition is something that infants as young as 4 days old can perform. What makes machine learning special is the capacity for computers to recognise and react to patterns at high speed and without human intervention, and to recognise patterns that a human observer might miss. Because so much of human thought and behaviour is based on pattern recognition at its most fundamental level, machine learning ultimately allows computers to behave in more human-like ways.
If you think 2018 is the year to learn about supervised vs. unsupervised machine learning, deep learning, and neural networks, this article suggests a number of ways to get started.
Python or R (for Data Science and Machine Learning)
In 2017 KDnuggets, one of the world’s largest websites dedicated to data science and machine learning, surveyed its readers and found that the popularity of Python and R was booming among their audience. Though Java is still a widely used language in these fields, it is not seeing the growth that Python and R are enjoying. This is likely due to the impressive purpose-built libraries that make many common tasks much easier: numpy, pandas and TensorFlow for Python, e1071, rpart and igraph for R.
In 2018 it will become increasingly common for data scientists to use tools powered by either the Python or R ecosystems. It will also be a boon to generalist software engineers to be able to apply skills from the fields of data science and machine learning when appropriate.
As for whether mastering Python or R for data science is the better investment of your time, the jury is out. People are passionate about both, and both languages have an excellent ecosystem to support data analysis and machine learning. Which one you use is probably best left to personal preference.
- DataCamp offers a free intro to Python for data science.
- EdX offers a free introduction to R for data science.
- Google’s Deep Learning course on Udacity will teach you popular Python machine learning library TensorFlow.
- This DataCamp article introduces you to machine learning in R.
I’m putting this one in air-quotes because it’s a hotly contested term. Is it a role? Is it a skill? Is it a cultural approach, or ethos? There are cogent arguments to support all of these interpretations.
People will disagree with me, but I think the most useful definition of DevOps is the collection of modern practices that allow developers to confidently build and deploy reliable software. Reliable meaning software that is: secure, fault-tolerant, performant, highly available, and easy to update and maintain.
My favorite visual metaphor for DevOps is the sport of curling. When you’re doing development, you’re the person behind the curling stone. When you’re doing DevOps, you’re protecting and guiding the curling stone towards its intended destination. It is more software stewardship than software engineering.
To me, DevOps encompasses a bunch of practices, like:
- Automating everything
- Empowering developers
- Specifying infrastructure as code
- Building fault-tolerant and reliable systems
- Making systems observable (exposing essential metrics)
- Treating servers as cattle, not pets
- Eliminating friction from the path to production
To learn more about DevOps, I’d recommend the excellent book The DevOps Handbook. The book will introduce you to a number of ideas and practices that you can learn more about. Because the ideas are technology agnostic, they can work in almost any environment.
More than just knowing how to `exec` into a Docker container, understanding containerization is an important skill in 2018. This includes things like:
- Knowing when containers are useful
- Understanding how containers work
- Knowing when not to use containers
- Understanding how your software would fit into a container ecosystem
Most top-tier tech companies are now leveraging containers and container systems like Kubernetes for the flexibility and scalability they provide. In 2018, still more companies will begin shifting their products and services into a containerized system.
If you’re totally new to the world of containers, you should start playing with Docker. Docker Curriculum offers a free, in-depth tutorial to help you get started.
Once you’re comfortable with Docker, you may wish to start learning about Kubernetes, currently the leading container platform. Check out Scalable Microservices With Kubernetes from Udacity, which is taught by Kelsey Hightower, a Developer Advocate at Google. A possible next step is running your own Kubernetes cluster locally using Minikube.
Data mining is, essentially, the process of turning raw data into useful information. Do you have the ability to transform the rows in a database into useful insights into customer behaviour or market trends? Then you’re probably doing some degree of data mining.
There is no one way to do data mining. It encompasses techniques from exploratory SQL queries, to statistical analysis, to machine learning. What matters most is your ability to ask the right questions of your data, and to yield interesting answers. The tools and techniques you use to answer those questions are not as important as the questions themselves.
As companies build and maintain troves of data (often unstructured data) that are larger than ever before, data mining is an especially marketable skill in 2018.
To get started, checkout the Data Mining specialization on Coursera.
The chart below shows growth in the Google search term “full stack developer” since 2012.
Based on my observation of developer job postings, many companies that would have once advertised for back-end and front-end developers separately are now searching for full stack developers who can wear both hats.
This is part of a growing trend for companies to expect their software engineers to participate in the delivery of software end-to-end. Engineers are expected to fluidly move between the API and the UI, exposing endpoints and then implementing a front-end interface for that API.
As a front-end developer, make 2018 the year you become comfortable working on the back-end. As a back-end developer, make 2018 the year you become comfortable working on the front-end. By gaining the ability to do full-stack development, you’ll boost what you stand to offer in your current role, or any new role.
The presence of empathy on this list, which is otherwise highly technical, might surprise you. However, the presence of any of the above skills without accompanying empathy for your colleagues and customers won’t count for much. Without empathy, you won’t know which questions to ask of your data. You won’t know how to build features customers will use. You won’t know how to collaborate with colleagues effectively.
Google’s recent Project Aristotle showed that its best employees had one thing in common: they were experts in a range of soft skills including “equality, generosity, curiosity toward the ideas of your teammates, empathy, and emotional intelligence”. Empathy is the core skill that runs through each of these soft skills.
There are lots of ways to develop empathy, but your skills in this area won’t improve when you’re sitting alone at your computer, churning out lines of code. You can develop empathy by pair programming, teaching others, listening to feedback, and facilitating discussions. You can also develop empathy by doing activities that help you see the world through different perspectives. This might include the perspective of historic figures, other cultures, minority groups, or even fictional characters in literature.
Any software engineer, no matter how junior, can be a mentor to others. Besides empathy, another common thread in the best performers highlighted by Google’s Project Aristotle was a mentorship approach. Star performers were individuals who cared just as much about the development of their team, colleagues and the company as a whole as they cared about their own personal output.
Even the most junior software engineer can be a mentor to their team in some area, whether that’s ensuring that quiet team members are heard, that builds don’t fail on CI, or that people on your team are taking breaks and looking after themselves, even in the presence of a tough deadline. Software engineers with a mentorship approach care about the success of others as much as their own success.
If you’re a senior person in your team or in your company, you can develop this mentorship approach by doing something quite simple. About once a month, take a junior member of your team, or company, out for coffee. Decide that when you spend time with this person the focus is on them: their goals, their skills, their desires for the future. Simply getting to know someone with a focus on their experience is the best way to practice mentorship.
If you’re a junior person on your team or in your company, try to identify something that you do better than anyone else. This could be technical (you studied robotics), non-technical (you ask great questions), or somewhere in-between (you know more VS Code shortcuts than anyone else). Find a way to use this thing you do better than anyone else to make your team better. Run a brown bag session about robotics, send around a cheatsheet of your favourite VS Code shortcuts, or ask a great question in an important team meeting. Even the most junior person has something unique to contribute to their team, and this is a great way to start practicing a mentorship approach.
This list is intended as a springboard to help those looking to develop new skills in 2018. What’s missing from this list? We’d love to hear your thoughts in the comments.
Natasha Postolovski is a software developer and writer based in Melbourne, Australia.