top | item 21591441

Developer Roadmaps

362 points| dskrvk | 6 years ago |roadmap.sh

136 comments

order
[+] Thorentis|6 years ago|reply
Would love to see a roadmap added for embedded development or system level programming etc. There is a huge emphasis on "the web" when it comes to software engineering, that people forget (especially college students figuring out a career path), that there are many jobs in defence, hardware companies, etc. that develop software without using any web technologies at all.
[+] colechristensen|6 years ago|reply
I could condense that down to a single task that will get you 90% of the way there: Learn how to bit-bang a serial interface on two different microcontroller platforms.
[+] abhishekjha|6 years ago|reply
What exactly qualifies as a web technology? Isn't anything on an IP address a web technology?
[+] ioquf|6 years ago|reply
I am interested in this too. I am trying actually to start embedded development for a specific platform, but it's hard to understand where is a good starting point even as experienced software developer.
[+] kamranahmed_se|6 years ago|reply
Hey guys, I am the person behind this website. Please know that it is still in progress. I wanted the initial version out so it is just the "roadmap" images for now. However, I am working on making these roadmaps more accessible for the beginners and easier to contribute to. In the list of things planned for the coming week is the textual version for each with different sections (job-ready, intermediate, advanced, overall landscape, etc) and each of the steps are going to be clickable with resources to learn from.

The website and the content is opensource and can be found at https://github.com/kamranahmedse/roadmap.sh. Please feel free to contribute, drop your feedback, feature requests and issues there.

[+] madiathomas|6 years ago|reply
Instead of learning JavaScript frameworks, isn't it better to advise people to learn and master JavaScript itself? I feel learning HTTP, HTTPS, HTML, CSS, and JavaScript inside-out will benefit someone than to try to learn a framework that will disappear very soon. When you know undelying technologies, it is easier to learn new frameworks because they will always be based on underlying technologies.
[+] pjmlp|6 years ago|reply
Frontend roadmap completly ignores everything that isn't a Web browser.

So no Qt, wxWidgets, Android, iOS, WPF, Forms, UWP, WinUI, GNOME, KDE, ...

[+] wdroz|6 years ago|reply
IMO, you could put Remote Procedure Call (RPC) technologies such as gRPC for backend developer.
[+] rimliu|6 years ago|reply
I would rethink including "Learn CSS3". CSS has moved away from single versioned spec to modules and levels, so CSS3 does not mean much now. If you want to emphasize some specific parts (like animations), better say so explicitly.
[+] la_fayette|6 years ago|reply
Please add web components to frontend, instead of pick a framework...
[+] itronitron|6 years ago|reply
the frontend developer roadmap is a hot mess and looks like it is intended as humor, especially in contrast to the backend developer which is much more descriptive
[+] _akei|6 years ago|reply
These lists are so depressing. Is there any other career where people are expected to know 100 things just to be an employee at the bottom of the food chain? I won't be surprised if it is harder to be a Full Stack Developer than to be a CEO of a multi-national corporation. Looks like we are pushing everything to Developers. Developers of the future are going to need a fulltime pyschologist to cope with this ever increasing list of skills required from them.
[+] mLuby|6 years ago|reply
Doctors, lawyers, and real engineers at least have similar or more broad domains they must be experts in, or people die.

CEO is a hard role not because of domain area but because of risk and uncertainty, both of which tend to be low when you're "at the bottom of the food chain."

[+] tarsinge|6 years ago|reply
The key issue especially in the front-end roadmap is how the scale is not taken into account. Expecting all front end developers to use the same stack from small operations to Facebook or Google scale is irrational, yet for a lot of reasons it is standard practice. I understand how it gives a feeling of playing in the same court, but from an engineering point of view it’s useless complexity in a lot of projects.

Edit: For example I make a living doing web development and rarely using a framework or a package manager in my projects. Knowing their value sure helps in a CTO like role, but you can deliver real value and state of the art websites and apps without them.

[+] notthatharda|6 years ago|reply
As a long time systems/backend C++/Python programmer it took me 6 months to get very comfortable with this TypeScript/NPM/Vue/Vuex/Bootstrap/Webpack/Linters/Formatters stack and create a pretty complex SPA.

A lot of stuff, true, but nothing particularly challenging.

I would say the hardest part is CSS, but using a framework like Bootstrap and then googling the little problems "how best to X in CSS" usually works.

[+] ducaale|6 years ago|reply
Well, you are not supposed to know all of them by heart. just start by what you need and know what other technologies that exist so you can learn them when the need arises. for me, I think I know or have a vague idea about most of the concepts mentioned in Frontend and Backend. But DevOps sections seems intimidating to me. People in other fields might feel the same way about Frontend or Backend Development. The thing is, just like any craft, it requires time and practice.
[+] SolaceQuantum|6 years ago|reply
I don't think these are really excessive. You could probably learn much of each stack by essentially using personal projects as excuses to use these technologies and touch at least half or one third of each list each go. For example, "write a poker card playing website that saves your hand when you press a button" will get you a bunch of frontend, backend, and database.
[+] opportune|6 years ago|reply
You don’t need to know everything on the list to be good at a role.

Just for example, Devops engineer lists Mesos, emacs, sockets, and virtualization. Other than know that these concepts exist and a 5 sentence description of what they do, you don’t need to intimately understand them. I haven’t gone through the other roles but I’m sure they’re the same.

[+] thih9|6 years ago|reply
I've looked at the "Backend Developer" guide, I'm surprised that it doesn't mention git or any other version control tools.

I think it could be a useful addition; nowadays version control is part of almost all backend projects.

[+] kamranahmed_se|6 years ago|reply
Thank you for pointing it out. It is still being modified and will hopefully be fixed this week along with the other changes. It was there in the "common" section in the repository https://github.com/kamranahmedse/developer-roadmap but was missed when moving the roadmap to the website.
[+] greggman2|6 years ago|reply
I think I don't understand these. They seem too high level to actually be useful. There's a old Steve Martin skit from the 70s where he's says he's going to tell you "How to get a million dollars and never pay taxes...... Step 1: Get a million dollars ...". These roadmaps seem about that level.

Am I missing it? Are these actually useful? For example clicking backend the first thing is it lists 14 languages (although two of these items are not languages). How is that useful to someone? Which one should they pick? How would someone that didn't already know these languages and their strengths and weaknesses get useful info from that? Sorry I'm not trying to be critical just wondering how this is helpful.

[+] abnry|6 years ago|reply
This is a roadmap, not a tutorial. You still need to get in the car and turn the key in the ignition. Logically, it makes sense to learn some technologies before other technologies. They build on each other. And for someone like me who knows very little software engineering, just seeing some organized list of terms looks helpful.
[+] Matty1992|6 years ago|reply
Agreed, the "Pick a language" phase is one of the most difficult parts of starting a developer path especially without context, atleast in my memory.

There isnt a good reason to just pick something like python or typescript if you want to build native phone apps for example

[+] swilliamsio|6 years ago|reply
I partially agree. The backend map seems really wishy-washy. The front end map seems much more useful, just because it's more limited in scope. It would be better I feel with in depth tutorials for every step, or links to them, with achievable goals at every step, kind of like a testable curriculum.
[+] biudiepie|6 years ago|reply
Love this idea, hope the maps could be interactive. Attaching related resources would be great.
[+] jktj|6 years ago|reply
I second this, related resources for language of choice.
[+] kevinyun|6 years ago|reply
Wow, this is nice. Going through the front-end path briefly, I realize I know most of these things, and it is because of gradual exposure and necessity in a tool.

I remember as a freshman in college, when I decided to first learn the basics of web development, I saw an intimidating roadmap like this one (though that was for full-stack). Back then, I would have never dreamed of making it even a quarter way through the list.

[+] veeralpatel979|6 years ago|reply
Would love to see a roadmap on security engineering!
[+] sauravs|6 years ago|reply
good point...i will be interested too
[+] rgoulter|6 years ago|reply
These seem to be bags of words, which hardly explain the rationale or context for any of the items mentioned.

In terms of 'brainstorm of words, some of which may be useful', fine. But I'd be very surprised if even the average dev had even heard of everything on that list. The scope includes some ubiquitous things, and some things that are surely niche.

I'm hoping no beginner gets the impression that they ought to know all of these things or else they're an imposter.

What's the appeal to these?

[+] tchaffee|6 years ago|reply
Full stack dev here. Both the frontend and backend lists look reasonable and I know all the tools and the vast majority of the terms. I do agree with you that the lists look overwhelming. Some information hiding and ability to reveal would help.
[+] james_s_tayler|6 years ago|reply
Yeah, it's just a word soup presented as a giant image. I've seen these before. They're not bad for at least laying out the landscape, but I think a more interactive format would be helpful.

Like allowing you to pick a language and then relevant frameworks/tools/patterns are shown. Furthermore it'd be useful to split it up into junior, intermediate, senior, principal level expectations. As a junior if you see this you might just want to quit on day one. As a senior it's useful to spot any gaps. As an intermediate it's useful to pick a next area to gain proficiency in.

[+] paradox_hunter|6 years ago|reply
I think he should make it clear who these roadmaps are for. From the looks of it, definitely not a beginner, but probably for someone who has spent atleast some time in the field.
[+] throwaway35784|6 years ago|reply
If they are image maps with links where to learn the leaf nodes this would be the bees knees.
[+] kmfrk|6 years ago|reply
Great concept! Teaching yourself things is always difficult because you only see things horizontally and don't know how to actually build on what you know, especially without spending 000s of dollars.
[+] loco5niner|6 years ago|reply
> 000s of dollars

Wow, that's a lot of dollars

[+] avishj|6 years ago|reply
That's a really nice website. I'm a young developer interested in web developer and it gives me a good roadmap for how I would go along figuring stuff out till I become a full stack web development. I just hope that the full stack roadmap comes soon, the front-end and back-end seems really well planned out.

Another thing that I'll say that would be nice, if there were other roadmaps for become a mobile app developer like those including OSes like Android, iOS, Mac OS, etc.

[+] Farbklex|6 years ago|reply
Good overview. I also like it as an illustration for beginners to explain, that "learning to code" is very broad and can be broken down into tiny areas.

When I teach friends how to code, I show them the bigger picture and then narrow down what I'll actually teach them no manage expectations: Java / Kotlin basics and some android development. So they now what they get in the beginning and what else is out there.

[+] yuchi|6 years ago|reply
The design of the maps is terrible, the content is gold. Will recommend internally in my company.

Very nice job.

[+] sethammons|6 years ago|reply
I find the back end engineer roadmap lacking a few critical items that seem to be in the devops section (granted, everyone needs devops chops). Metrics, monitoring, alerting, and networks (tcp, http, grpc, sockets), and basic distributed systems.
[+] Z3lgius|6 years ago|reply
This is amazing! I always get questions from new developers or students similar to "I want to do/be X, how do I start?" and now I can point them to this. Thank you for this.
[+] ddorian43|6 years ago|reply
Create a roadmap for low-level/systems developer (ex: create database, search-engine, storage engine, replication, sharding, low level performance etc)
[+] lubonay|6 years ago|reply
Here's an idea to improve this site: make the texts searchable somehow. Ctrl+F -> "JavaScript" shouldn't yield 0 results.
[+] dsego|6 years ago|reply
It's a png.