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.
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.
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.
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.
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.
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.
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
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.
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."
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Maybe not a developer roadmap per se, but I refer to this data science roadmap[1] from time to time. It isn't a definitive statement on what makes a data scientist, but it does help me pick the next concept to learn and make knowledge gaps more obvious.
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.
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.
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.
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.
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.
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.
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.
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.
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.
[+] [-] Thorentis|6 years ago|reply
[+] [-] colechristensen|6 years ago|reply
[+] [-] abhishekjha|6 years ago|reply
[+] [-] ioquf|6 years ago|reply
[+] [-] kamranahmed_se|6 years ago|reply
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
[+] [-] pjmlp|6 years ago|reply
So no Qt, wxWidgets, Android, iOS, WPF, Forms, UWP, WinUI, GNOME, KDE, ...
[+] [-] wdroz|6 years ago|reply
[+] [-] rimliu|6 years ago|reply
[+] [-] la_fayette|6 years ago|reply
[+] [-] charlieflowers|6 years ago|reply
[+] [-] itronitron|6 years ago|reply
[+] [-] _akei|6 years ago|reply
[+] [-] mLuby|6 years ago|reply
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
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
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
[+] [-] SolaceQuantum|6 years ago|reply
[+] [-] opportune|6 years ago|reply
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 think it could be a useful addition; nowadays version control is part of almost all backend projects.
[+] [-] kamranahmed_se|6 years ago|reply
[+] [-] greggman2|6 years ago|reply
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
[+] [-] Matty1992|6 years ago|reply
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
[+] [-] biudiepie|6 years ago|reply
[+] [-] jktj|6 years ago|reply
[+] [-] kevinyun|6 years ago|reply
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
[+] [-] sauravs|6 years ago|reply
[+] [-] aaron-santos|6 years ago|reply
[1] - http://nirvacana.com/thoughts/2013/07/08/becoming-a-data-sci...
[+] [-] rgoulter|6 years ago|reply
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
[+] [-] james_s_tayler|6 years ago|reply
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
[+] [-] throwaway35784|6 years ago|reply
[+] [-] unknown|6 years ago|reply
[deleted]
[+] [-] kmfrk|6 years ago|reply
[+] [-] loco5niner|6 years ago|reply
Wow, that's a lot of dollars
[+] [-] avishj|6 years ago|reply
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
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
Very nice job.
[+] [-] sethammons|6 years ago|reply
[+] [-] Z3lgius|6 years ago|reply
[+] [-] ddorian43|6 years ago|reply
[+] [-] lubonay|6 years ago|reply
[+] [-] dsego|6 years ago|reply
[+] [-] sandGorgon|6 years ago|reply
P.S. are you generating a static site using next.js ?