kamranahmedse / developer-roadmap

Interactive roadmaps, guides and other educational content to help developers grow in their careers.
https://roadmap.sh
Other
295.09k stars 38.99k forks source link

Just a bunch of notes #16

Closed togakangaroo closed 7 years ago

togakangaroo commented 7 years ago

Hi all, someone sent me this repo requesting comments and I wrote up a long response I thought might be useful to you. It also might not be. Yall are doing your own thing and trying to formulate a plan and that's good, I'd just like to submit this and maybe it will be helpful.

Please excuse the ranting tone. It's early in the morning and I've been reading too much political news.


First, I think using the term “map” is problematic since it implies that you can get to or achieve the waypoints. All of these things are more “directions” than destinations.

Next, I don’t like the idea of splitting up “backend” and “frontend”.

I think the standard definitions that people use for this stuff are hugely problematic. If you define HTML/CSS/JS as “front end” where does that leave someone who works on the iOS app for let’s say “simple.com”? Are they not a “web developer” even though they are building something that is equivalent to the website? What about someone who is working in a python templating language that spits out html/css? Where do they fall? I can keep coming up with examples.

Further, I think that exclusively focusing on one over another can be harmful. In terms of job prospects, you’re going to have a lot more problems getting a job at a smaller company if you can’t work the full stack.

Worse, it is harmful for learning. A humongous part of programing on the web is really internalizing how the web/HTTP/etc works. This is the “in between” stuff that you’re only going to learn by studying the whole process simultaneously.

Personally I prefer to talk about things functionally than as tech. “Back-end developer” to indicate how good someone is at understanding system architecture, performance, databases, and security; and “front-end developer” to indicate to what degree someone thinks about human-computer interaction, responsiveness, UI optimization and reusability, browsers, responsiveness, and accessibility. When you formulate definitions this way you start seeing these as two largely orthogonal dimensions of a square, rather than anything mutually exclusive.

Now about specifics. I’ll just work my way down the chart with random comments.

Backend:

kamranahmedse commented 7 years ago

Thank you for your comments, I got a little idea of what you are trying to say but unfortunately most of the stuff you said doesn't make much of a sense to me. Given my experience and after discussing with different many people plus the feedback from hundreds of different people on social networks, I still think it is perfectly fine and gives a better idea of the whole ecosystem.

Plus going through your "rant" at different points I think you did not look at the legends, it does not even remotely suggest to learn and use everything in the chart,

However I am open to ideas. Could you possibly make a PR with what you think it should be?

togakangaroo commented 7 years ago

I did look at the legends, and I wasn't thinking that you were proposing learning everything, I'm happy to elaborate more on any point you have a question on.

As for a PR...I think s problem is that I disagree with the core "front-end"/"back-end" split for the reasons outlined so It would have to start at the very beginning.

But thanks for considering my thoughts either way.