My Software Engineer Roadmap

Joana Carneiro
Nov 21, 2020 · 7 min read
Image for post
Image for post


Do you feel your brain already? I sure do! With all this knowledge that we, as Software Engineers, are to keep up with! Keep and update at all times! Making sure that we are really craftsman of the software!

What if there was a plan, a roadmap, that we could consult at any point and see where we are and where to go? As professionals to have a systematic view on a step by step approach on how to evolve and what is worth tackling?

This is the intention of this article — to share here, from my experience, on what is worth learning and take hold of. With a roadmap structure, step by step approach. Would also love to hear your insight on this and really start the discussion.

As a very dear friend once told me “Learn concepts and not languages”. And I very much agree with that! So my perspective is really to invest heavily into the concepts, because those will not go anywhere as the time goes by. Do you know what is functional programming? That is knowledge that will go nowhere over time. Then learn how to do that in a specific language.

So the proposed structure goes from more abstract concepts into the more tech linked ones.

With the safeguard, that more details is never enough! Note, that the first learning path that I saw with lots of details, that really caught my eye was this one! Check it out! Great resource, where I definitely keep an eye on and take advantage of it for defining my own path as I share here.


Not only we need to master the technologies that we are developing with, but also the infrastructure where are solutions are running at. And last but not least, a given set of soft skills can really can make our life easier. So I organize the path into 3 sections:

  • Development Skills
  • Infrastructure Skills
  • Soft Skills

Development Skills

Boxes in yellow are the aspects that I am refreshing right now. For example, DDD I am reading the Blue Bible on it. For Design Patterns, I am going deeper into Microservices ones, so also reading a book on it. Since that is the architecture that I am currently going for.

Image for post
Image for post

Infrastructure Skills

For example, if a given software is being deployed into Microsoft Azure, it is important to know that if in my Java Class I create a new document, I will be consuming the 5GB of available file system space, and that maybe instead I should consider Azure Blob Storage as an option to solve that problem.

So, I leave here a bit, of what I see as overall topics that I keep under my radar.

Image for post
Image for post

Soft Skills

It would be great if you are able to apply all your knowledge at every given situation. But then, it comes this day, with a Production environment issue with the Project Manager calling you every 5 minutes to check on it, and you already feeling a small drop of sweat in your neck with the stress building up. Wouldn’t it be great, at this point, for you to still be at your A game?

Wouldn’t it be awesome, if you are able to transmite all that you have gathered as experience over the years, to your fellow colleagues, and keep a great collaborative environment, even if there was this situation with a co-worker that is nagging you a bit?

And how about being in a meeting with the customer, and really be able to influence the decision of the most sceptical of the IT managers, towards what you believe really will bring the value to their company?

So, this is where this proposal of steps in my roadmap have entered. As a way, not to forget that soft skills are as important.

So, I will definitely go deeper into this in a later article, but I see this in 3 sections:

Me: tools for self regulation of emotions (stress, anger..), so that I can be in a state that suits me. For example, going into a meeting with a calm state. See what helps you. Might be as simple as thinking about your kid at home and the last time he gave you a big hug.

Team: communication is paramount, so being able to practice non violent communication for example, focused on the facts, and being open to a different point of view on the other side.

Project/Customer: Influence techniques, here are very useful. As for in a positive way to transmit a given view, but also actively listening to the other part. Here, the creation of Rapport, is really important.


Read a book

There is in now way better for the most abstract concepts. Why? Because you will find in books authors with proofs given in the area,

Do a course

Sometimes there is no better way than to find an accredited professor with proofs given in a certain area and learn in a formal way. Back to school mode! There are great technical people out there launching updated courses on a great variety of areas! Worth checking and this is less time consuming then going for it yourself or even reading a book! As a transversal hint to all the presented resources is that keep a critical spirit to what is presented to you!

Follow Someone

There are also great resources that people, working in the field, having the same issues as you, put out there! Videos, articles, podcasts, tutorials! The amazing world of the internet! Find your subjects of interest, find your persons of interest and start to check out what they put out there! This might be one of the best ways to learn! Just make sure whomever you follow has a solid background, and you are all set to be up to date!

Join an open source project

Participate on an open source project is a great way to put your skills to practice, upscale them and also contribute into the community. Also you will have a showcase of what are your skills to the outside world!

Some examples of good open source projects for beginners

Develop your own project

Just think about something that really interests you, or might came in hand. My last project was making a Pokémon deck API! What a fun time! Other alternative is of course do a quick search and many ideas will pop up!

Do a certification

Sometimes having an exam scheduled and 2 pages of topics you must master for it, is a good and structured way to go deeper into a given subject. It can be argued if a certification really gives you the tools to work on a given technology, but there are areas where it is a good way to start on it.

Find a mentor or be a mentor

This for me is one of my favorite ways to keep up my continuous learning and improvement! Really making use of the work environment for knowledge share! Either being a mentor, that really makes you step up your game, or having someone that can guide you in your first steps! This can also work by just finding a colleague that is on the same path as you, and so instead of you and your head find the best resources now there are 2! Also it is so much more fun!

This post contains affiliate links to amazon. If you use these links to buy something we may earn a commission. Thanks.

The Startup

Medium's largest active publication, followed by +756K people. Follow to join our community.

Joana Carneiro

Written by

A passionate Software Engineer, focused in the craftsmanship process of software. Have worked with many technologies, working with companies around the globe.

The Startup

Medium's largest active publication, followed by +756K people. Follow to join our community.

Joana Carneiro

Written by

A passionate Software Engineer, focused in the craftsmanship process of software. Have worked with many technologies, working with companies around the globe.

The Startup

Medium's largest active publication, followed by +756K people. Follow to join our community.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store