Software engineers and Data scientists are two of the most in-demand jobs of the last years. Ten years ago graduates aimed for a career as a lawyer, financial consultant or brand marketeer. Today graduates want to create tomorrow's technology at fast growing tech companies around the world.
In this article we will look into the Data Science and Software Engineer role. What's the difference? Which degree should you choose? And what to expect during both the program and your career.
1) What are Computer Science and Data Science about?
To better understand the differences between Software engineers and Data Scientists we have to go back to the roots of both disciplines.
Software engineers usually have Computer Science (CS) degrees while the background of Data scientists is a bit more diverse: they can come from fields like mathematics, statistics, physics, or the before-mentioned CS.
Lately, we also see more and more Data Scientists coming from business/economic backgrounds and people with other degrees combined with relevant online courses, bootcamps or nano-degrees.
What is the difference between Computer and Data Science?
In short, Computer Science, is the study of the theory and practice of how computers work, how they are built, and the magic that happens inside of them. It covers hardware, software, algorithms, networks, and so on.
In short, Data Science, is centered around data (of corurse). It focusses on the analysis of big volumes of data to extract insights and unveil patterns to make predications and better-informed decisions.
Both these domains are making use of computer technology such as software architecture and programming languages.
The differences are very well reflected in the programs of the corresponding university degrees:
- In Computer Science clases you will learn about different programming languages like C, Python, and Java, concepts about databases like their architecture, operating systems, computer hardware and how they are built, and concepts like algorithms and software development tools. Example: Delft’s University Computer Science bachelor program.
- In Data Science classes you will learn algebra, statistics, calculus, in synergy with programming languages like Python and R, database concepts, and then move on to specific Data Science related subjects like Machine Learning and data visualization. Example: UPC’s Data Science curriculum.
Later in the article, we will dig deeper into both curriculums, but in short, CS focusses quite heavy on programming and computing technology while DS is focussing more on math/statistics/algebra and Machine Learning/Artificial Intelligence related topics.
Now that we know the main differences of these two disciplines let's have a look at the job market.
2) Career Perspectives: vacancies, demand, salary & trends
Let's have a look into the main responsibilities and qualifications you need to get hired.
In the following figures, you'll find the key responsibilities and requirements for both the Software Engineering and the Data Science role. Some of the examples are more at an introductory level while others are for more experienced professionals.
From the previous images we can identify some differences between the two job types, which align with the skills that are needed and that we will cover later on:
- Software Engineering has deep coding requirements. It is about mastering multiple programming languages such as Java, Python, or C++.
- Data Scientists need to be strong Python or R (if you know Python you should probably be fine). However, you do need to know an pretty extensive toolset for doing data science in Python (Scikit-Learn, Pandas and Numpy), and various ML frameworks.
- Software Engineers also need to know software architecture patterns to carry out development best practices for testing, CI/CD, and version control
- Aside from their technical and analytical capabilities, Data Scientists should be able to communicate their ideas and the results of their analysis to various stakeholders.
Alright, we will now take a look at some other high-growth tech companies like Spotify, and Picnic Technologies, a technology-driven food delivery scaleup.
Again, we see that Data Scientists require Python and SQL, frameworks like Pandas, and visualization tools like Tableau and ggplot.
While it is not included in the previous job descriptions, knowledge/ experience of tools like Spark, Airflow, or MLFlow are also often demanded.
Data Scientists are asked for strong communication skills and backgrounds in Computer Science, statistics, mathematics, and even econometrics.
Software engineers require broader expertise on frameworks (Docker, ElasticSearch, RabbitMQ) and databases (MongoDB and SQL databases), combined with knowledge on how to follow coding best practices (Git, testing, and documentation) and agile working, a very common development methodology for software projects.
The most common responsibilities of each profile:
For Software Engineering:
- Testing, documenting, and debugging code: Testing is one of the most important parts of the job of a software developer — you have to make sure your application/program runs correctly before launching it. This is done with testing.
- Designing components of an application and integrating them into a larger overall product: Many systems are built with modularity in mind so that the code can be reused later for other applications. Also software often needs to be compatible and or integrated with other systems and be able to exchange data.
- Collaborating with a team of programmers to build and optimize code: software projects are rarely carried out by individuals. For example, for one application, you might need a developer doing the frontend, another one doing the backend, and a Data Scientist building some models that the application uses. Effective collaboration between the team members is a must.
For Data Scientists:
- Collecting, cleaning and organizing data sets. Depending on the size of the data team, data scientists might be in charge of cleaning and structuring the information before putting it into practice.
- Analysing the data
- Building data models: the part all data scientists love — building Machine Learning models, optimizing them, analyzing the results.
- Asking/ answering questions based on large-scale data analysis: this part is also exciting. You get to dig deep into a data set to uncover hidden information and patterns.
- Creating data visualizations and presenting findings to stakeholders: being able to visually and verbally communicate the results of your work is also a fundamental part of the responsibilities of Data Scientists.
Software Engineer vs Data Scientist salaries
Now, let us explore the salary levels of both roles, which of course is an important criteria to weigh in your choice for a certain study/ career.
- According to Glassdoor, the average salary for a Software engineer in The Netherlands is 68.000 €/ year (based on data collected from more than 1200 individuals), while for a Data Scientist the avarage salary is 65.056 €/ year, (based on a smaller data set of 284 professionals).
- In London, a software engineer earns about 63K €/ year. The average data scientist earns 61K €/ year.
- In Germany, the average Software Engineer earns 60K €/ year. The average Data Scientist earns near 61K € / year.
As we can see, there is not a big differences between the Software Engineer and Data Scientist in when looking at their salaries in Europe. In the US, however, the average Data Scientist earns about $113K/year while Software Engineers earn $96K on average. Data from 4dayweek.
The demand for Software Engineers and Data Scientists
Software engineers have been around for many decades and will probably be there for many many years to come. Software applications, and IT systems need to be built and improved all the time while more and more businesses become digital. Software Engineers are the people needed for this.
Looking at the Data Science role we see an exponential growth in data that is being generated. Data is also called the 'new gold' as it can have enormous value for companies.
More and more aspects of our lifes are going digital, and the increase of IoT applications using sensors also makes that the amout of data that comes available grows very fast.
The following figures show the growing demand for Data Scientists.
As for Software engineers, the picture is very similar. The following figure shows the percentage of enterprises that recruited or tried to recruit ICT specialists and software developers. Source.
% of companies in each location searching for IT professionals / Software experts
In 2020 70% of all companies in the Netherlands were looking for IT specialists.
The job growth outlook for Software Engineers from 2018–2028 is 21% annually, while for Data scientists is at about 16%* *Retrieved from the most recent BLS data available on Data Scientists and Software Engineers. Other sources (Statista) say that the global data analytics and artificial intelligence job market will consistently grow by 30%-40% during the next five years.
In conclusion, both the demand for Software engineers and Data Scientists is high and growing, so overall this is great news if you’re considering to become either of them.
The growth in demand nor the salary levels should be your key criteria in your decision for one of the studies that we are discussing here. Rather, I would recommend you to look at the job descriptions (the responsibilities, and skills required for each of the jobs), and see which fits best with your personality, ambitions, and capabilities.
3) Skills and background requirements for both studies
If you're still reading this, you are clearly interested - if not seriously considering - a Computer Science or Data Science study/ program. These can be great jobs. But not for everyone.
For both programs, you need to feel comfortable with computers and programming but for software engineering it would be better if you love them/ it. Take into account that writing code and developing applications will make up to 80-90% of your time, so you better like it.
As a Software engineer, you will have to keep up with the latest tools and frameworks and from time to time dive into new architectures and programming languages. You will not only write new code, you also have to maintain or update existing code. So again, you really need to love code ;)
Before you even start learning, aspiring Data Scientists should have quite a gut feeling for numbers and math, an anlytical mindset, and also that kind of curiousity that makes you ask a lot of questions. If you got bad grades in maths and algebra in school, then you’re probably better off trying something else than Data Science.
What differentiates a good Data Scientist from a great one is the ability (let's call it intelligence ;) to quickly understand complex matters, identify patterns and a great sense of business.
Especially if you work in consulting - where you change clients a lot - it really helps when you are ably to quickly grasp the business. This allows you to perform a better analysis and build better models and solutions than someone who has a better technical background but does not understand the business at all.
4) How to choose a university program and institute
So you made your choice! You decided you want to become a Software Engineer/ Data Scientist. There are different paths to become one but most people start with some kind of a university degree.
If you want to become a Software Engineer the most common way is to start with a Bachelor degree in Computer Science.
For aspiring Data Scientists there are two main paths to follow.
- Start with a Bachelor degree in Statistics, Engineering, Mathematics, Computer Science, or even Physics, followed by Master in Data Science.
- Directly start a Bachelor's in Data Science.
I personally did the first option: an Industrial Engineering bachelor's degree and a master's degree in Computer Science focused on Data Science.
With this background, combined with a lot of self-training (reading lots of books and taking many Data Science courses online), I had absolutely no problem landing a Data Scientist job in a digital consulting firm.
However, I took this path because at the time I started university (2012) there were not so many DS degrees out there, and also I didn’t know that I wanted to be a Data Scientist anyway.
If I had to make the decision again, knowing that I would end up being a Data Scientist, I would definitely take a Data Science degree.
When choosing a university program in Europe, consider the following things:
- Going abroad: aside from the availability of top-notch universities in Computer Science or Data Science, going to study abroad is definately a benefit when applying for a job: they always love it when candidates have some international background. Also, regardless of what you study, I’ve found that going outside your comfort zone and spending a year or two away from home contributes to your personal development making you more responsible, independent, and open-minded. It is a highly enriching experience.
- The reputation of the universities and their programs. Take some time to research the university's reputation. Make sure that the university you pick has a good reputation and has an attractive course offering. Review the different programs and the different subjects and topics that they cover.
- Pick a university that has good relationships with companies. This will help you land a internship or traineeship during or after finishing your degree. Many universities have career days with match-making events for students and companies. Some universities attract more exciting companies than others do.
- Have a look at the Computer Science / Data Science departments & research centers and find out who are their academic leaders and professors. In the end, these are the persons that will be giving classes, so by reviewing their profiles you might learn a bit about their academic publications, acknowledgments and credentials.
- Try to see if you can connect with someone that actually went to the universities that you are considering. They might be willing to tell you more about the quality of the programs and the teachers and other non-academic matters like the campus life - which are also relevant for your academic experience. Even if you have the best teachers and courses, you won't take full benefit of them if you’re unhappy because of non-academic issues. If you don't know anyone personaly or from your network just search for the universities on Linkedin and reach out to some former students. You’ll be surprised by how willing people are to share their experiences.
Let's have a look at some top universities in Europe for Data/Computer Science.
It might seem difficult to compare and rate universities but there are some independent organisations that publish annual rankings based on extensive reseach. Below are three renowned lists. When checking the links you will see that the rankings on all three lists are not identical however most of the universities that are on one of the lists are also on the other lists. That's because all list are based on (slightly) different research methods or focussing on (slightly) different aspects.
Here are some of the European universities that you'll find when scrolling down the different lists.
- Oxford University, which has one of the best Social Data Science programs: The Master in Social Data Science is a multidisciplinary qualification, providing both the technical and social knowledge in order to collect, investigate and analyze massive amounts of diverse data on human behavior
- University College London: Their undergraduate offering, the Bachelor of Science (BSc) Data Science, runs full-time for over 3 years balances balancing theoretical studies with practical work. Graduate students also have the choice of either a Master of Science (MSc) inData Science and Machine Learning, or a Master of Science (MSc) in Data Science.
- ETH Zurich: Their Department of Computer Science, in collaboration with the Department of Mathematics and the Department of Information Technology and Electrical Engineering, offers graduate students a Master in Data Science and also has great paths for Software Engineers.
- TU Munich: Aside from a lot of fantastic and very well recognized Bachelors's degrees, TUM has a master’s degree program in Data Engineering and Analytics that deals with innovative solutions for handling and analyzing very large amounts of data.
- University of Warwick: At the University of Warwick, the Department of Computer Science offers a specialized course in analytics through their Master’s in Data Analytics degree program, which can be an awesome final step for your academic path after following a bachelor’s degree over there.
- Delft University: Delft University is one of the top universities in Europe, with a very broad offering for those that want to become Software Engineers or Data scientists, like their Bachelor of Computer Science and Engineering.
- Aalto University: Aalto University's School of Science is another great place for either those aiming to be software engineers or Data Scientists to consider studying in. It not only has great professors and researchers, but the academic life in Finland is very fulfilling and enriching.
- TU Eindhoven: Like Delft, TU Eindhoven has a great bachelor's in Computer Science and engineering that can serve both, future Software Engineers and Computer Scientists.
5) Curriculums: domains and subjects covered
To finish this part about university programs, we will compare the Computer Science and Data Science curriculum at the TU Eindhoven - a Dutch Tech University.
Starting with the first year, it provides a really well-balanced mix of theory with things like calculus, algebra, and statistics, and practice, with Data Analytics for Engineers, Programming, and Statistical Computing.
As the program advances, the second and third years get more practical (which is something that I think should always happen in university programs).
Just by looking at the introductory text of the Computer Science and Engineering bachelor's at the same university, you can see that it's quite different from the Data Science program.
'Designing software system: As a student of Computer Science and Engineering, you learn the basic principles and methods to develop software systems and web services, and how to take the user perspective into account'.
Some of the subjects covered are: Programming methods, Software specification, Computer systems, Computer networks and security, Operating systems, or Embedded systems.
As you can see, all this heavy software and hardware material was not included in the Data Science courses, as in those programs you only cover the necessary software pieces that you need for data analysis and model building.
6) Other ways to learn: online courses, books, and other resources
What's great about Software Engineering and Data Science is that aside from these more ‘formal’ academic programs, there are hundreds of other ways to learn.
I actually started my data science learning paths before I did my master's degree (remember my bachelor's was in Industrial Engineering and not Data Science). I read many books, took many online courses, watched tutorials on YouTube and so on. And I still do.
Data Science and Software engineering books
Books are by far my favorite resource for learning technical subjects. While videos and online tools are great, something about paper content makes me delve way deeper into the subject and allows me to concentrate better than with other formats. But that's personal I guess.
If you want to learn Software Engineering, some of the best book resources are:
- Clean architecture: A Craftsman’s Guide to Software Structure and Design (Robert C. Martin Series)
- The Mythical Man Month: Essays on Software Engineering
- Effective Computation in Physics: High-performance Python Computation
For Machine Learning / Data Science, my go-to books are ‘How to Learn Machine Learning with Scikit-Learn, Keras, and Tensorflow’ and ‘Python Machine Learning
On the following link, you can find a very wide-reviewed list of Python, Data Science, Machine Learning, and Artificial Intelligence books.
Online courses are another awesome way of learning about Software Engineering and Data Science. There is, however, an incredibly big offering, and it is not always easy to find the right one.
If you’re beginning your journey, I would recommend the following: start with Udemy and Datacamp, which have short, affordable courses which will give you an easy-to-digest introduction to the subjects you are looking for.
In Udemy, the courses by Jose Portilla are a great way to start learning Python and/or Data Science.
After these introductory courses, I would try to read some books like the ones mentioned above. At the same time trying to work on some personal code projects and start to build a portfolio.
Then, I would go to more advanced and expensive sites like Coursera and Udacity. In Coursera, the most famous Data Science courses are the ones by Andrew Ng, and in Udacity there are many nano-degrees which from my point of view are some of the most exhaustive training programs you will find.
Coding bootcamps are intensive, applied educational programs which are designed to provide the technical skills and experience that most university programs lack. They usually take between 2 and 6 months. Students meet (often physically) for one or more days a week and get hands-on training, coding classes and work on projects.
Bootcamps have the objective to train people with zero or limited work experience into a hirable candidate for a entry-level job.
Social Media — Twitter
Data Science and AI are two fields that are in constant progress. A great way to stay on top of the latest developments is to follow some thoughtleaders and experts on your favorite social media.
Here are some Twitter accounts that I personally recommend.
- Yann LeCun. One of the fathers of Deep Learning, who is quite active on social networks and day-to-day discussions. Follow him @ylecun.
- Jeff Dean. Engineer at Google AI and one of the designers of Tensorflow and other systems. Follow him @JeffDean
- Andrew Ng. The former head of AI at Baidu and Google, and co-creator of Coursera, he is very oriented towards education and is someone you should definitely follow if you are learning about Machine Learning. Follow him @AndrewYNg.
- Calum Chace, author of the book Surviving AI shares a lot of exciting news about Machine Learning and AI! @cccalum.
- Sebastian Rashcka author of Python Machine Learning is quite active on Twitter too, sharing interviews, opinions and also technical material. Follow him @rasbt.
- Jeremy Howard has been a Data Scientist for top consulting firms like Mckinsey and AT Kerney, worked at Kaggle, and is the co-founder of the fast.ai project. Follow him at @jeremyphoward.
Podcasts are a great way to keep learning while riding a bike, communting, or doing other activities that don't require much attention. For me, the best ones are:
- The Artificial Intelligence Podcast by Lex Fridman
- Gradient Descent by Lukas Biewald
Newsletters in email format are a great way to stay informed about the recent discoveries and most exciting news in the fields of Artificial Intelligence and Machine Learning. The ones I like the most are:
- Data Elixir newsletter. Distributed weekly, the newsletter contains various articles divided into different topics: Insights, tools and techniques, resources, conferences, and events.
- The Batch is the newsletter from deeplarning.ai. Like the previous one it is distributed weekly and created by some of the top experts on the field of AI. It offers easy-to-read reports, with research papers, cool applications and high-impact business news.
- Andriy Burkov (author of The 100 Page Machine Learning book) has an awesome newsletter on Linkedin, with the most important artificial intelligence and machine learning news and articles.
- Hacker News is a great Software newsletter and blog, especially focused on hacking and cybersecurity.
- Software Lead Weekly is an awesome newsletter about software development.
You can find a list of the best Machine Learning blogs here.