The solidly roadmap to start working with Software Engineering
Published: 2023-04-16 17:25:54


![Illustration of a woman in a desk with a computer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfbnhtlayoefc91swd1i.png)
_Illustration from [Adevait](https://adevait.com/)_

In my first year at university, I didn't have any idea about where I was supposed to go or what I was supposed to do. I just knew I wanted to be a developer. So I started to look for some roadmaps to help me with this. The problem is that most part of the roadmaps advises us to start with Programming Logic and then move to a language, for example. But I don't agree with this approach. In my opinion, people are playing down that.

And speaking of my opinion... let me bring a polemic one which is the core of this post: yes, I believe that graduating is important in your career. Not to have a diploma, a certificate, etc, but to have the knowledge that a university can give to you and most roadmaps and online courses don't provide to us. By the way, the market has not been easy for entry-level developers and it's imperative that we have a good curriculum!

That's why I am writing this, to give you an initial roadmap with knowledge beyond programming according to my experience as a junior developer who is almost graduating and also completing one year of working soon. This roadmap will give you rich knowledge to study about development and other important topics which will help you to be a well-versed Junior Software Engineer. Let's go!

OBS: Links are just suggestions for some subjects! **Be curious!**

## 1. Introduction to Programming and Programming Logic
What is Programming and how it works | In and Out Instructions | Variables | Logical and Relational Operators | Conditionals | Repetition Structures | Functions

Some good links:
- [Introduction to Programming and Computer Science](https://www.youtube.com/watch?v=zOjov-2OZ0E)
- [Introduction to Programming and Logic](https://www.youtube.com/watch?v=hMbWHlQiT7M&list=PLzZR2BJ8ICYu7uPFuvkjcIxkPE-1SEkNo)

## 2. Algorithms, Data Structure and Paradigms
Asymptotic notation | Recurrence | Recursion | Sort and Order | Search | Stacks and queues | Linked Lists | Pointers and Objects | Hash Tables | Trees | Object Oriented Programming

Some good links:
- [Algorithms and Data Structures for beginners](https://www.youtube.com/watch?v=8hly31xKli0)
- [MIT Introduction to Algorithms](https://www.youtube.com/watch?v=ZA-tUyM_y7s&list=PLUl4u3cNGP63EdVPNLG3ToM6LaEUuStEY)

Some good books:
- Introduction to Algorithms - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein.
- Grokking Algorithms - Aditya Bhargava

## 3. Git and GitHub
What is Git and GitHub | Version Control | Git Commands | SSH Keys | Resolving Conflicts

Some good links: 
- [Git and GitHub course from scratch](https://www.youtube.com/watch?v=RGOj5yH7evk&list=PLLJ1hZKyeCH1I8dP0UNTpWoIhsl6KpVbu)

## 4. Computer Networking
Networks | Addressing | Protocols | OSI and TCP/IP and its layers, protocols, etc

Some good links:
- [Computer Networking Course](https://www.youtube.com/watch?v=VwN91x5i25g&list=PLBlnK6fEyqRgMCUAG0XRw78UA8qnv6jEx)
- [Overview of computer networking](https://medium.com/@adamzerner/overview-of-computer-networking-70848bd62710)

## 5. Choose your path in programming
1. Web or mobile development?
2. If Web, Front or Back-End? If mobile, Android, iOS, Flutter...? 
3. What stack (language, framework...) are you going to focus on at this moment? One tip for this is to study the market and see what the jobs are requiring, for example.

Create your own roadmap on this step for what you are going to work on, but, for example, if you choose to work on the Front-End, don't ignore the Back-End! It's important to know at least the basics of how it works.

Never forget: you must practice and create your own projects for your portfolio.

Some good links:
- [Stack Roadmaps](https://roadmap.sh/)
- [Front End v. Back End Explained by Waiting Tables At A Restaurant](https://codeburst.io/front-end-v-back-end-explained-by-waiting-tables-at-a-restaurant-174000a4498d)

I repeat: **be curious!**.

## 6. Data Storage
Some good links:
- [Database System](https://www.youtube.com/watch?v=4cWkVbC2bNE)
- [SQL Basics](https://www.youtube.com/watch?v=RSlqWnP-Dy8&list=PLUaB-1hjhk8GT6N5ne2qpf603sF26m2PW)

Some good books:
- Fundamentals of Database Systems - Ramez Elmasri e Shamkant Navathe

## 7. Software Testing
Unit Tests, Integration Tests, End-To-End Tests... knowing how to test your code and your application is really important. What you will use here depends on the language, framework, etc. For ReactJS (a JavaScript library), for example, it's commonly used Jest and React Testing Library. 

Some good links:
- [Get started with software testing types](https://dev.to/educative/software-testing-101-get-started-with-software-testing-types-d30)

## 8. Software Engineering skills
Software Process | Software Documentation

Some good links:
- [Software Engineering](https://medium.com/omarelgabrys-blog/requirements-engineering-introduction-part-1-6d49001526d3)
- [Software Documentation Types and Best Practices](https://blog.prototypr.io/software-documentation-types-and-best-practices-1726ca595c7f)

Some good books:
- Software Engineering - Ian Sommerville
- Modern Software Engineering - David Farley

---

Finally, I have to say one more time: **Be curious**! This is an advice I always give to my friends or any other people that are studying to become a developer. Be curious. Go after to really understand what you are doing. Know how to explain about WHAT and WHY you're doing what you're doing. Do not turn on automatic mode. Curiosity and consciousness are keys. Let's learn!

If you think this Roadmap is missing something please put your contributions in the comments! Let's help our community :)