DEV Community πŸ‘©β€πŸ’»πŸ‘¨β€πŸ’»

Cover image for 5 Technical Skills Developers Need In 2020: Based Off Of A Job Description
SeattleDataGuy
SeattleDataGuy

Posted on • Updated on

5 Technical Skills Developers Need In 2020: Based Off Of A Job Description

If you're a developer in 2020, then you have probably come across a job description with a cornucopia of technical skill requirements.

For example, let's look at this set of technical skills required from a real job description taken off Indeed.com.

You might need to take a break halfway through reading.

The Job Description

  • Experience with Jenkins and Terraform managed AWS infrastructure.
  • Experience with AWS services (ECR, Lambda, SQS, CloudWatch, Route53).
  • Hands on programming with Elixir, Python and Java.
  • Comfortable with support tools (Docker, Git, Bash, AWS CLI)
  • Production experience with ETL and asynchronous pipelines.
  • Experience with relational (Postgres/RDS) and nosql (DynamoDB) databases.
  • Demonstrated ability to actively participate in the design of complex systems.
  • Production network operations familiarity a plus.
  • Understanding of ML principles and NLP experience, Kaggle competitions a plus.
  • Experience with data science libraries (Scikit, NLTK, Gensim, TensorFlow, Keras).

Do You Have All Those Skills?

So apparently this job is looking for a software engineer, data engineer, machine learning engineer, and DevOps engineer all in one.

In some ways, that is a little ridiculous.

Do software engineers really need all these skills these days?

Honestly, yeah, kind of.

But, also...kind of no.

The idea of an all-in-one engineer seems to continue to proliferate itself to every company.

Truth be told, many of these technologies are third-party tools, and if you are a software engineer you have probably interacted with either these or their counterparts in various situations.

Personally, the ridiculous part would be a hiring manager thinking you couldn't do a job because you had used MySQL but never MySQL on RDS.

But overall, these days thanks to technologies and services like AWS, Docker, Nagios, etc. Designing, developing, deploying and monitoring software has become much simpler.

So yeah, the 2020 software engineer does need to keep up their skills. Below are 5 skills developers should start learning this year.

This post includes affiliate links; I may receive compensation if you purchase products or services from the different links provided in this article.

Cloud Services

Cloud services have gone from only being used by billion-dollar corporations to helping support small businesses (We have worked with several small businesses that utilize EC2, RDS, S3 and more).

Cloud services help in decreasing the overall operating cost, and it can help you in running your operations more effectively and efficiently.

However, with this new technology comes new skills a developer needs to learn. It can feel impossible to keep up with all the technologies and various ways you can run code, store data and managed infrastructure.

Many times it feels like we finally learn about one cloud service only to discover there is now another one to replace it or perhaps just new functionality that has been added.

With all that being said, what are the various technologies you should at least have a high level of knowledge of?

AWS, Azure, and GCP:Β Amazon Web Services (AWS) has the largest market in the US when it comes to cloud services. It also arguably offers the widest variety of services which include everything from laaS, PaaS and SaaS. It offers services like S3, RDS,Β Redshift, and DynamoDB for data storage, EC2, and Lamda for computing a hose of other services you can learn about here.

Azure and GCP are both quickly growing in usage, although still trailing behind AWS. But that just means more skills for developers to need to pick up.

If you want to learn more about these various cloud providers here are several courses that can help you get up to speed quickly.Β Many of which are free on Coursera.

Containerization

Being familiar with containers has become important in the software world.Β A quick summary of what containers do is they pack up code along with its dependencies so it can be run reliably and efficiently over different environments.

Containerization refers to the bundling of an application along with the libraries, dependencies, and configuration files it needs to run it efficiently across multiple computing environments.

No matter whether the environment is a local or on the cloud, container-based applications can be deployed easily. There are many examples of container technology, but the most prominent currently is probably Docker. If you want to learn more about Docker and it's many technology layers that sit on top of it likeΒ KubernetesΒ then check out thisΒ youtube video.

Application and Server Monitoring(Nagios):

It is difficult to monitor every system, network and piece of infrastructure especially in a modern world where applications are used on many different types of hardware.

Nagios monitoring is an open source technology that helps in monitoring the application and business process in DevOps culture. Nagios can pretty much monitor everything. HTTP, SSH, SMTP, memory usage, microprocessor load, servers. You name it, it can probably be set up to be monitored.

The developers in 2020, will need to work on frameworks likeΒ NaigiosΒ that can provide the monitoring system round the clock. This means you will probably need to be come familiar with tools like Naigios to be an effective developer.

Jenkins, Bamboo CI/CD

source

Many newly minted engineers will never get to experience a world without CI/CD. It's not to say that more traditional deployment shops don't still exist out there.

However, the push to use tools to assist in CI/CD continues to grow.

Two example third-party tools that many companies are either looking into or use for the CI portion of work are Jenkins or Bamboo. Jenkins is an open source tool and Bamboo is a commercial tool.

Bamboo offers aΒ host of featuresΒ which is often only limited to your budget and integrates easily with Jira and Bitbucket(oh no...more technologies to learn). But the combination of all three create a CI/CD system that can help you easily deploy code, detect errors in said code, etc.

Jenkins is a CI (Continuous Integration) open source server, which has the capability to orchestrate and perform a chain of actions. Jenkins can be performed with the help of JAVA and has the ability to monitor the project and detect plausible errors.Β The rate of detection of Jenkins is quite high, which is one of the reasons for its rapid popularity. Take some time to learn some more about these tools!

Databases

As a developer knowing about the various options there are for databases and data storage systems is a crucial part of your skillset. Deciding how an application will be supported on the backend heavily impacts performance and functionality.

For the longest time, most applications were limited to relational databases on the application side. However, with increased storage and performance of servers and computers, a lot of new styles of data storage systems are now possible.

DynamoDB

For example, DynamoDB is a very different style database than your standard MySQL instance. DynamoDB makes use of what it calls attributes, items, and tables as its core parts for users to often work with. Allowing developers the freedom to have unstructured data sets that don't always require the same values.

Besides that, there are tech stacks like Hadoop/HDFS/Hbase that also allow for less structured and more distributed storage of data. All of this only further complicates a developer's toolbox.

One great course to learn about DynamoDB is this combo class that teaches you both aboutΒ DynamoDB and Lambda.

Traditional RDBMS

And just because there are so many new data systems doesn't mean you can ignore the traditional Mysql and SQL Server relational databases.

Using aΒ RDBMSΒ is still a very popular method of designing your data layer for applications. So don't forget to keep SQL and data modeling skills up.

Programming Languages

But of course you still actually need to know how to program as a programmer! But which ones?

As a developer programming languages remain our bread and butter and most developers know multiple languages by the time they have worked in the industry for a few years.

But, If you are just starting then you probably want to look into Python and or the Javascript "Stack". Both of these sets of languages are heavily used for most jobs. This isn't to say that languages like Java and C++ don't have their place.

But as far as job roles go you can see from the chart below that both jobs with python and javascript are on the rise on job descriptions.

source

So why Python?

The reason everyone gravitates towards python is that it is both easy and pretty good at handling most problems. Now it doesn't usually allow the fine-tuning of C or C++ nor is it a native web language. However, it does a good job of not really being terrible at anything

Python is often associated with recent technologies such as Artificial Intelligence and Machine Learning thanks to Google's work on libraries like Tensorflow.

If you want to program a website fast you can easily use Django, Flask and __ to act as your back end. Trust me, it is much easier than trying to configure a Spring Framework Site.

Parallel computing is easily supported by Python, which decreases the hassle of organizing the data. Pydoop is a library integrated by Python, where you can process the data and present it with the help of HDFS cluster.

Python is also finding a home in Data analysis as more tools supporting Jupyter notebook are developed.

Python's versatility is what makes it so popular.

Whether you are a data scientist or a developer, you can use Python as a tool to develop a website or a machine learning model.

Depending On what you're trying to learn, there are lots of great free courses, books, and cheat sheets to help you learn.Β For example, here is a great youtube playlist.

React.js

Ok, now what about React?

React.js has made front-end development "easy". For example, working with the DOM API can be a pain. However, React has provided developers the ability to developing on a virtual browser. This virtual browser then essentially acts as a liaison between the developer and the real browser.

Another concept React.js is known for is the idea of reusable components. In React, apps are built up of what are called components. There are many different kinds of components but the purpose is toΒ create snippets of code that can be easily ported into your app.

Finally, the one-way data flow is great because components are not allowed to change in ReactJS and the data within the components have the same property.

Components operate smoothly and remain synchronized as ReactJS listen to the data, which is flowing from the upstream. This feature actually makes ReactJS more effective in terms of building the user interface.

To learn more here are is anotherΒ free course at freeCodeCamp on Youtube.

How Will You Up Your Skills In 2020?

Overall, the developer in 2020 has a lot of skills they have to maintain. Truth be told, most job descriptions for software developers these days seem to required an entire developer team in one person. Everything from DevOps, Database Management, Back and front-end development and honestly, everything else.

As you are looking for your next software job we wish you guys good luck! Keep up those skills.

10 Great Courses For AWS, Azure and GCP

5 AWS Technologies That'll Make Your Life Easier

Airbnb's Airflow Vs. Spotify's Luigi

How Algorithms Can Become Unethical and Biased

Top 10 Business Intelligence (BI) Implementation Tips​

5 Great Big Data Tools For The Future --- From Hadoop To Cassandra

Learning Data Science: Our Favorite Resources Free Or Not

Top comments (15)

Collapse
jmfayard profile image
Jean-Michel Fayard πŸ‡«πŸ‡·πŸ‡©πŸ‡ͺπŸ‡¬πŸ‡§πŸ‡ͺπŸ‡ΈπŸ‡¨πŸ‡΄ • Edited on

Do You Have All Those Skills?

NO, and you don't need them either to find a job.

That's a nice Job Description from hell. Basically they expect the new employee to be an entire IT department. In fact my educated guess is that they don't expect it, they know their job offer is poorly written and unrealistic.

You can find out by asking:

So, I have read your online job offer from hell, and I have found this very impressive list of fake requirements that nobody asking for this kind of salary needs to have.
Just to be sure that I understood it correctly, could you give me your own take of what is really needed to start doing this job here?

Because a bit of realpolitik here: if really you have all of those competences, you are welcome to apply, but not as a line-of-assemblee worker but directly to be head of engineering, CTO or something. And ask for the corresponding salary, unless you enjoy being overqualified and underpaid.

Of course, with such jobs fake requirements, a pretty good guess is that none of their current emplyees would have been hired. Because let's be clear, they didn't know all of this the day they started. They just learnt on the job, which is what sane people do.

My advice would be simply to run away from this nonsense.

Yes, it's fine and good that you want to have more technical skills.

But working on your technical skills and finding a job are two issues that you should separate from each other.

Collapse
markoshiva profile image
Marko Shiva

Well funny enough in my country Serbia almost every job description for devops or for an software engineer is like that. I am annoyed with that as I also get into situations where I don't know what of those technologies is really needed I have them all but not really mastered all of those technologies.

So many times I do not apply to such job descriptions even if the company that posting them is company I am interested to work in.

Its annoying so much as it allows really uneducated HR people to choose people that are more assertive in presenting their knowledge including the ones who fake knowledge of the technologies.

Instead of searching for people who are really good in things that job position demand and who can learn other things related to project they search for someone who have knowledge of all technologies used on project or used in the department.

Fortunately there are the other more realistic job offers that I am applying to.

Collapse
jmfayard profile image
Jean-Michel Fayard πŸ‡«πŸ‡·πŸ‡©πŸ‡ͺπŸ‡¬πŸ‡§πŸ‡ͺπŸ‡ΈπŸ‡¨πŸ‡΄

you don't have to apply to those offers. create a personal connection with the other devs doing a similar job and you will find out the it's easier then you thought. it's just a fact that a lot of companies need the king of skills that you have

Thread Thread
valentinprgnd profile image
Valentin Prugnaud 🦊 (he / him)

Usually, these job descriptions are designed for reach: the bigger the net, the bigger the catch πŸ˜‚

Collapse
silviosavino1 profile image
Silvio Savino

Yes of course you should keep up with new technologies in many different fields, even just without being a proper expert but...wouldn't you agree that a job description looking for such a variety and wide technology experience is a bit suspicious? What would you think of a company looking for a jack of all trades? I would think it doesn't know exactly what it's looking for and it believes that someone who's able to mostly do everything will be the ideal problem solver to every business need. It is true that startups look for developers who are able to cover more responsibilities but every wise startupper would know that unicorns don't exist and there are limits in everyone's skills.

Collapse
leob profile image
leob

This selection of "must know" technologies seems a bit biased towards devops and data science, not really towards mainstream web dev (with the exception of React). Good however that you mentioned Nagios, I should look at that for one of my client projects (or at Grafana, or at Prometheus).

Collapse
shaijut profile image
Shaiju T • Edited on

Thanks for the post 😊, But let say I learn all these tech stack, What should I call myself Software Engineer ? Data engineer ? Machine learning Engineer ? DevOps Engineer ? Or a Full Stack Engineer ?.

I don't know why new companies want all in One Engineers , maybe they don't have funds to pay for Separate Engineers ? If at all one guys manages all tech stack then his Job should be on high pressure. I am new to this. What do you think ?

By the way I am curious to know do you work using all these tech stacks ?

Collapse
lukefeeney profile image
Luke Feeney

Really interesting list. I pretty much agree on the stack, thou I would have included some mention of the growing adoption of graph dbs in data science and other pipelines.

I think we'll start to hear about the migration of CI/CD type processes into data over the next year. The DataOps evolution will continue to grow in pace and sophisticated tooling will come on stream to support. The relentless desire to pipeline vast pools of unstructured data into something clean will never end!

Collapse
Sloan, the sloth mascot
Comment deleted
Collapse
seattledataguy profile image
SeattleDataGuy Author

I kind of wrote this half seriously. In someways...developers should know these skills...in other ways...how in the world are we supposed to keep up with all these skills. It's just part of being in the tech world.

Collapse
mcdtbo profile image
Thabo Pali

Great article, very insightful. Which resource(s) would you say is best for learning Python?

Collapse
seattledataguy profile image
SeattleDataGuy Author

Here is a great place to start youtube.com/watch?v=YYXdXT2l-Gg&li...

Collapse
markoshiva profile image
Marko Shiva

Nice post and you reminded me on few technologies that I need to get better at. Thanks.

Collapse
zarakaleskova profile image
Zara

Very insightful article with a lot of helpful information and guidelines! Thank you so much!

Collapse
theodesp profile image
Theofanis Despoudis

When I look at this it reminds me of the things I don't know

🌚 Life is too short to browse without dark mode