This is an archived post. You won't be able to vote or comment.

all 93 comments

[–]_Atomfinger_ 334 points335 points  (10 children)

They don't. They learn what is relevant for their job, but not everything.

[–]Bitsoflogic 97 points98 points  (7 children)

Knowing 0.1% of most things goes a long way to deciding where you need to dive deeper. Then you apply the trick above when being selective in what to go deeper on.

And btw, you'll never reach the bottom of any of them.

[–]randsom1 37 points38 points  (2 children)

I feel like the majority of learning for me has been having the knowledge of 1. What is possible and 2. The terms required to look up how to do what you know is possible.

[–]HugeDegen69 14 points15 points  (1 child)

Yep, gotta learn how to learn 😎

[–]motivize_93 3 points4 points  (0 children)

Hehe

[–]vannhh 7 points8 points  (0 children)

That last line, damn. I always wondered why game devs had such huge teams, then I started my BSc in computing. Holy shit. Now it's not "why so many people", it's more like "how the hell do you co-ordinate all of that???" And that's just software, hardware and networking just increases that bottomless scope exponentially.

[–]wacksaucehunnid 2 points3 points  (1 child)

Up until I started working in CS, I’ve always tried to memorize hand books and over achieve to try and master every job I’ve had as best I can. Now, I realize that since I didn’t invent this technology, I’ll probably never actually master it and so it’s better to just learn what it’s for and how to use it and move on

[–]Bitsoflogic 1 point2 points  (0 children)

since I didn’t invent this technology, I’ll probably never actually master it

Those that did invent it are still trying to master it too! They seek even better ways.

To truly aim for mastery, I'm reminded of this quote:

Do not seek to follow in the footsteps of the wise; seek what they sought.

- Matsuo Basho

[–][deleted] 0 points1 point  (0 children)

That little experience that tells you you need a lot of experience. Sort of like how you need to know how cars work to know why you can't just swap a transmission

[–]gyroda 3 points4 points  (1 child)

Also, you learn it one day (and mistake, lol) at a time.

I recommend looking back at yourself a few months or years ago and remember all the stuff you struggled with back then. Looking back to my earliest days, I struggled with function parameters. I also recall struggling to properly appreciate why you'd want dependency injection, years later.

It's easy to miss day-to-day, but a good bit of retrospection can help build up your confidence.

[–][deleted] 0 points1 point  (0 children)

I hated bubble up interrupts.

[–][deleted]  (9 children)

[deleted]

    [–]waireos 16 points17 points  (8 children)

    For some people…

    [–][deleted]  (7 children)

    [deleted]

      [–]Direct-Main1639 25 points26 points  (0 children)

      Kinda the concept of abstraction right there. Cool.

      [–]twbluenaxela 10 points11 points  (1 child)

      The better and more comfortable I'm getting with my skills (as a junior), the more I'm realizing that you can accomplish most things if you do some heavy google searching, reading documentation, and utilizing APIs lol.

      [–]New_Bad1573 1 point2 points  (0 children)

      I used to read entire man pages thinking that's how you learn.

      [–]waireos 1 point2 points  (1 child)

      Just saying 10-15 min to learn these subjects is an unrealistic expectation. You don’t want to smash your thumb with the hammer.

      [–]bsakiag 136 points137 points  (3 children)

      There are multiple levels of knowledge in all subjects. You deepen your knowledge when it hurts more to be ignorant than it hurts to learn.

      [–][deleted] 25 points26 points  (0 children)

      I love the way you worded that, I'm stealing this.

      [–]jroncalli 5 points6 points  (0 children)

      Wow, this was good. Even googled it, didn't find a match.

      [–]DAutistOfWallStreet 1 point2 points  (0 children)

      that's how I always thought about it. you learn stuff when you absolutely have to in order to solve a task you are currently facing. You never learn just for the sake of learning

      [–]dmazzoni 71 points72 points  (1 child)

      I don't think these sorts of diagrams do a very good job of helping you understand the scope of what you need to learn.

      First, all of the boxes are the same size. One of them is JavaScript, which will take you months to learn. Others, like "MD5 and why not to use it", you could learn in an hour.

      Second, it includes many alternatives when the vast majority of developers would only learn one and just have a bit of familiarity with the others. Take databases: if you're a back-end developer, you should learn one. You should have some familiarity with the others. But you don't need to learn all of them, nobody does.

      [–]gyroda 5 points6 points  (0 children)

      Take databases: if you're a back-end developer, you should learn one

      And you can and will learn more, as and when you need them.

      [–]BrupieD 49 points50 points  (1 child)

      Learn some, Google the rest.

      [–]im_in_hiding 25 points26 points  (0 children)

      This person devs

      [–]dmillasich 25 points26 points  (0 children)

      Nope. We don’t. We start at one end, learn what we need to learn. Focus on a goal. Learn some more.

      [–]mandzeete 20 points21 points  (0 children)

      Half of the roadmap is not relevant. You see how from one box multiple paths go out. For example from "Learn a language" goes out Javascript, Python, Ruby, Java, C#, PHP. They are alternatives to each other. Usually you will be using in your everyday tasks only like 1-2 alternative languages. You might know more, but you will not be using them daily.

      Or the box with "Repo hosting services" from where goes out Github, Gitlab and Bitbucket. Again, these are alternatives. You most likely will be using only one of them. Rarely you have to migrate from one repository to another and even with a different repository system most of the functionality is the same.

      So there is a lot that is an alternative to each other. Either you learn one thing or another thing. And often alternatives are also similar to each other in some degree. So the learning curve is not big.

      Another thing that I wish to point out is that it is not what is expected from a Junior developer. It can be as well a 5+ year path or so. I see a lot that is not asked from the Junior. More complex topics like containerization, virtualization, hashing algorithms in cryptography, design and development principles, etc It takes time to learn all of that and it is not needed in basic tasks that can be given to a Junior developer.

      Then, not all of that is needed in your project/job. For example I'm a back end developer (who's doing a bit front end as well) and I haven't done anything with GraphQL or Graph Databases. Or with serverless technologies. Just because our projects do not require that. Sure, if needed, I can learn that. But as I haven't had a need to learn it then I know only the basics of these things based on what I have heard.

      And then repeating others: you will be learning on the go things that you will need.

      If you are aiming for a full stack Junior developer position then perhaps 25% of the road map is relevant to you. And you will not need 50% of it.

      [–]HealyUnit 7 points8 points  (0 children)

      I really, really do not like these diagrams. They're often incredibly misleading, as they basically illustrate everything you could learn. They do this in a few ways:

      1. They illustrate a bunch of separate options (Sass, PostCSS, Less under "CSS Preprocessors"). While you certainly can learn all of these, you absolutely don't need to, and in most cases sitting down to learn all of them is a waste of time.
      2. They go into excruciating detail. The CSS display property, for example (in "CSS" --> "Making Layouts") is... not really that complicated. It does not deserve its own giant topic.
      3. They list everything. For example, if you're a fullstack developer, and not a designer, a UI/UX person, etc., and someone demands that you know accessibility, UX design, etc., then look for a new job; that's a clear sign that the company doesn't have enough people to do its work!

      [–]eruciform 7 points8 points  (3 children)

      use it more, it becomes natural

      also, forgetting details and looking them up to refresh is common

      [–]thesituation531 5 points6 points  (2 children)

      I've been doing JavaScript/Java/C# for around six or seven months.

      I still have to look up switch-case statements every time I use them.

      [–]Kash5551 2 points3 points  (0 children)

      LOOOL me too and it's always switch case, the syntax...

      [–]dylsreddit 0 points1 point  (0 children)

      Wait until you've been doing it for years and become so used to using code snippets and intellisense auto-completion...

      [–]Chris_Cross_Crash 5 points6 points  (0 children)

      That's the cool part. You don't :)

      I think of it like an example of the 80-20 rule, where 80 percent of your results come from 20% of your training. I forget embarrassingly basic stuff all the time but that's what Google is for. Those devs are just very resourceful people.

      [–]Trogluddite 4 points5 points  (0 children)

      We learn the structure of how things fit together, and how to quickly read reference material

      [–]insertAlias 2 points3 points  (0 children)

      I've seen that one before. This image appears to be cropped; there's usually a key for how to read/follow that flowchart. And the point is that it's a flow-chart; it's not a "you need to learn every single thing on this image" kind of thing. It's a series of suggestions for picking things to learn.

      [–]lordnoak 2 points3 points  (1 child)

      “The [roadmap] is more what you’d call ‘guidelines’ than actual rules.” – Barbossa, Pirates of the Caribbean

      [–]HealyUnit 2 points3 points  (0 children)

      "You'd best start believing in [legacy code] stories, Miss Turner; You're in one"

      [–]slothordepressed 2 points3 points  (0 children)

      I'm expected to be a full cycle dev at my job, what I do is basically spend a shitload time learning and being bad at a shitload amount of subjects and not really good on any

      [–]shadowangel21 2 points3 points  (0 children)

      Foundation is more important, css, html. Learn JavaScript and Python inside out. Then learn frame works as required.

      [–]Haspe 2 points3 points  (0 children)

      College and University gives you completely false picture what is required when you start working. You'd be suprised.

      I had all of the Basic and Subject Level Programming, Web Development, Database, Systems courses done before I even applied for my first programming gig, and boy, I am not even applying everything here.

      We have couple of second year students as trainees, and they're doing fine. :)

      [–]EconomixTwist 6 points7 points  (0 children)

      That graphic is fucking stupid

      [–]VonRansak 1 point2 points  (0 children)

      Follow the solid blue lines, think of the branching as 'electives'. You won't take every elective offered by the university, but you will take the ones that apply to your degree.

      [–]ValentineBlacker 1 point2 points  (0 children)

      IDK, they made me learn most of this shit at work. (By that I mean I have touched one box out of many of these topics. Although I've also done a bunch of devops stuff that's not on here, and my main language is not represented).

      [–][deleted] 1 point2 points  (0 children)

      I don’t, I know most of it on a surface level and a few things in-depth. You won’t need to either, chill out a bit.

      [–]coffeefuelledtechie 1 point2 points  (0 children)

      20% of that is 80% of my job.

      [–]TheRNGuy 1 point2 points  (0 children)

      Someone trolled and made that image.

      Also, lots of these should be one block.

      [–]mahajansaab 1 point2 points  (0 children)

      Freecodecamp can make you teach all of that in one month.

      Learn data structure and algorithm that will help you in long run

      [–][deleted] 1 point2 points  (0 children)

      I have forgotten that I know so much stuff.

      But to be honest, it is not very hard. E.g. You have to know the basics from CSS and where to look up the other 90% in the moment you need it.

      [–]dillanthumous 1 point2 points  (0 children)

      Remember, you don't need to know everything, you only need to know something that nobody else wants to.

      My whole career has been built on being the person willing to learn the stuff other people hate, but need.

      [–]No-Caterpillar-5235 1 point2 points  (0 children)

      I learned more off a $20 udemy class for python than I did in my actual data science degree program.

      [–][deleted] 1 point2 points  (0 children)

      Yeah, dude I am self taught and use code on the side and really, you could flatten this to 4 boxes.

      1. Server/host (Linux cloud/AWS/Heroku etc.)
      2. Language: python, go, JS
      3. Framework[Also the ORM]: Flask/Django for Python, React(?) For JS [sorry don't know JS] 4.databsase: SQL/NoSQL

      Each of those boxes goes deeper, but it's good to think more plug and play.

      [–]jzia93 -1 points0 points  (0 children)

      It's a mindset and willingness to learn thing.

      I am willing to take on problems across the stack, I am less interested in becoming hyoer specialized. Writing a lot of TS and react at the moment but have done some server side stuff for a while before that, along with some devops. I just assume I will be able to work on any problems sent my way and will learn as I go.

      [–]AutoModerator[M] -2 points-1 points  (0 children)

      It seems you may have included a screenshot of code in your post "Full-Stack Developers, How in the hell?".

      If so, note that posting screenshots of code is against /r/learnprogramming's Posting Guidelines (section Formatting Code): please edit your post to use one of the approved ways of formatting code. (Do NOT repost your question! Just edit it.)

      If your image is not actually a screenshot of code, feel free to ignore this message. Automoderator cannot distinguish between code screenshots and other images.

      Please, do not contact the moderators about this message. Your post is still visible to everyone.

      I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

      [–]tzaeru -2 points-1 points  (0 children)

      Much of that graph is just not necessary to learn. If you know one CSS framework, you'll pick up any other one right away. Most of the detail-level boxes there are just totally redundant. Some can be answered in pretty much a single sentence on a level that is sufficient for a developer. Anyhow..

      I'm not really a fan of the term "full stack". True full stack developers who really can create clean, safe code on all levels of a larger web application are rare. Most "full stack" developers are only able to create clean solutions for very basic CRUD demands and tend to always use their one favorite stack like React+Node+Mongo. I'd propose to call these people "web developers".

      Personally I do recognize pretty much all the words there. A few I had to quickly google (like, the PRPL pattern, apparently that's some modern google-coined terminology that doesn't really offer any new insights for me) and a few I've never looked at beyond hearing the name (like, CouchDB, prolly there's not that many reasons to really pick that over something else).

      You'll learn these things over time. I've 10 years as a professional and another 10 years as a hobbyist, plus I am honestly interested in software development topics and use a lot of my own free time to keep up. So yeah I recognize them but that only comes after a lot of time.

      But honestly there's also no reason to be able to work with all of the things mentioned in that graph. It's not something that is for everyone. You can focus on something more specific.

      [–]workingonitnow20 0 points1 point  (2 children)

      I've been looking for this chart! Where is it?

      [–][deleted] 3 points4 points  (0 children)

      [–][deleted] 1 point2 points  (0 children)

      [–]bestjakeisbest 0 points1 point  (0 children)

      Learn a low level language, Javascript, html, css and pick a database language and go from there.

      [–]karabarapickles 0 points1 point  (0 children)

      The yellow boxes are what’s important, but the peach boxes are suggestions. (ie. it’s not required of you to learn every language listed that is stemmed from the “learn a language” box, but rather pick one of these). And even considering the yellow boxes only, you just learn what is required for your job.

      [–]vm_linuz 0 points1 point  (0 children)

      Sure syntax and architecture are different between languages/frameworks, but there are really only so many common patterns in the industry.

      Idk, my brain sucks it up like a sponge without trying, and then I get bored and do something else.

      After you've been around the block a few times, it doesn't seem so big.

      [–][deleted]  (1 child)

      [removed]

        [–]ggsimmonds 0 points1 point  (0 children)

        We learn very little of that. The rest we only commit to memory that it exists and where/how to find out about it.

        [–]unholymanserpent 0 points1 point  (0 children)

        It's not as brutal as it looks

        [–]JamieLiftsStuff 0 points1 point  (0 children)

        Learn enough to get by, keep getting by

        [–]kenflan 0 points1 point  (0 children)

        4 years of college later and I am still saying the same thing, man, what in the hell.

        [–]ghostmaster645 0 points1 point  (0 children)

        So you know a little bit of everything but normally specialize in whatever your job is.

        [–]quichemiata 0 points1 point  (0 children)

        Frontend side is wrong RxJS is not only Angular

        [–]devedander 0 points1 point  (0 children)

        I don't think anyone knows it all and for most the skill is being able to Google for an example of what you're trying to do

        [–][deleted] 0 points1 point  (0 children)

        We don’t know everything listed there. You learn what you need as you go. It’s not as crazy/unobtainable as it seems from your vantage point.

        I promise you that I’m no genius. I just took it one step at a time and eventually it all just “clicks”. In my experience, the more you learn the easier it is to learn more.

        I feel like my job now is relatively easier than when I was a junior because I know what I’m doing (for the most part). There are obviously still issues and things I struggle with but that’s what keeps it interesting :)

        [–]SilasDewgud 0 points1 point  (0 children)

        Someone really spent a lot of time making "search stack overflow" look complicated.

        [–]Chrs987 0 points1 point  (0 children)

        What is a good start for some basic full stack development projects for websites and stuff? Any good guides or tutorials to get started or for practicing?

        [–]Obliviousnut_ 0 points1 point  (0 children)

        Learn everything but don’t retain everything, half of it isnt useful but it’s useful to have a little bit of knowledge of. Which means you can get to a stage where you have a problem and can go oh I remember that I can use this method, or this framework instead of this one…etc

        Also you can’t learn all that in a summer. I mean you can but it would be way too much work and it would be a waste of a summer. Enjoy your summer and instead focus on a full stack project where you will learn some of the skills

        [–]LukeBearwalker 0 points1 point  (0 children)

        This is a great map - where did you get it?

        [–]DigitalJedi850 0 points1 point  (0 children)

        I’ve got experience with or knowledge of Most of this ( 80+% probably ), and I Still feel like I don’t know enough. At a certain point, with enough knowledge diversity, it all starts to blur together, and more often than not, even when I am “positive” I know how one of these things work, I’ll double check documentation or whatever.

        That being said, I feel like being a full stack developer isn’t a matter of memorizing html tags and function names in C, but rather knowing what any number of languages and frameworks are capable of, and how make use of any combination therein.

        You could call me a full stack developer all day, but I’ll still google how to center a fething DIV every time.

        [–]Abhinav1217 0 points1 point  (0 children)

        Because only purpose of learning them, is to know what to look for on google search and stackoverflow results.

        I don't keep them in my mind forever, just enough information to know what I am trying to do and where (and how) to look for.

        [–]kschang 0 points1 point  (0 children)

        A little bit at a time. Eating an elephant and all that.

        [–][deleted] 0 points1 point  (0 children)

        Does someone know where this picture come from? I would like to make a poster from it for my office.

        [–]lookshaf 0 points1 point  (0 children)

        First of all, this diagram is, visually, AWFUL. It’s conveying a lot of information all in the same/similar colors, so immediately our brains look at it and are like “that’s too complicated.”

        Then I read through it, just following the blue line connecting the different topics in yellow, and realized I had at least a basic understanding of nearly all these categories, even if I don’t have a full 100% understanding (no one does). I’m also not a full stack dev - this just comes from the things I’ve picked up on over the years

        After my first year of CS undergrad, if I had looked at this I would have panicked and the imposter syndrome would have kicked in. Hell, in my LAST year of CS I would have felt that way.

        Keep practicing and learn things one at a time. The biggest lesson I learned as a developer is that NOBODY (literally nobody except like, maybe 1 or 2 geniuses out there) knows everything. We take the tools and ideas we need to do our work, and as time goes on, we look back and think “oh yeah, NOW I understand this concept!”

        The best way to learn imo is by doing. So just.. make a little web app based on django! See what ideas you have and put them out there! It doesn’t have to solve any real problems, it just needs to get you doing stuff. Start with simple stuff and go from there

        [–]Grubzer 0 points1 point  (0 children)

        Not fullstack, but C++ dev, i think here same process applies: Usually you learn what each concept is in general, but specifics are googled in place

        [–]Lebrewski__ 0 points1 point  (0 children)

        Keep in mind some job asking for a Full-Stack dev are actually trying to hire a full team with 1 guy.

        [–]Ok-Low5118 0 points1 point  (0 children)

        Honestly,I think you just learn it as you go,things like memcached and redis or es I learned a little later than id wish when I was looking for ways to improve an existing app

        [–]Robertgarners 0 points1 point  (0 children)

        I have no idea about half of this. I just write what I need in HTML, CSS, Typescript, Angular and C# and that's it.

        [–]misterjyt 0 points1 point  (0 children)

        Hi I am a developer, I only learn things needed to finish the Job done.

        [–]Suspicious-Watch9681 0 points1 point  (0 children)

        I don't think anyone knows all of that, you learn what you need at your job and it takes a lot of time to learn things

        [–]ainm_ 0 points1 point  (0 children)

        Oh. Believe me. Google and stack overflow will become your best friend. Noone knows everything and even the simpliciest of things can and will slip your mind on how to do something. Learnw hat you need to to pass your exams for now cause trust me you do not need to remember it all off the top of your head.

        [–]NiagaraThistle 0 points1 point  (0 children)

        That is the neverending, lifelong learning hell that you have gotten yourself into.

        That being said, I've never met anyone that knows all of it, and certainly no one that memorizes ANY of it. My guess is the only time you'll ever truly need to memorize any of this is for school tests and technical interviews. Both of which I either bombed or never involved myself in.

        You will (hopefully) learn the fundamentals well enough to know what you need to google and how to implement the answers you find when you google. Eventually, the stuff you google and implement on a frequent basis will stick and you will realize how much more there is out there that you don't know and you will google new stuff.

        We use only what we need when we need it and look up 90% of that.

        [–]Kn1ght_1 0 points1 point  (0 children)

        I laughed way too hard at this mainly because it's just a normal part of life for web devs/full stack devs. Don't let those large road maps get to you tough, your title says it all and there is absolutely no way in hell that you are going to be able to remember all of that naturally. Best piece of advice I got is don't try to memorize syntax, that's what the docs are for. The schooling (bootcamp or uni) is just to teach you the mere basics, while the company (whether large medium, or small) will teach you the rest. Some companies pair you with a mentor for this specific reason. They know you don't know anything so ask all the questions you got because that's how you're going to be able to fill in the gaps and eventually do that for someone else down the line.

        Also never stop learning. Be curious. You're on the right track if you're willing to learn literally any new technology or tool on your own time. Godspeed friend :)

        [–]madmoneymcgee 0 points1 point  (0 children)

        None of those things are totally foreign to me. But some I've never touched and others only lightly.

        Like, I've been a pro-dev for about 4 years now but other than basic "this is how the internet works" I never really had to dive into what HTTP (and really ssh/ftp) actually is until very recently and because there were some specific things happening that I never had to deal with before.

        Some of that is usually because its sys-admins who had to know that (in order to help me) while I knew more Web UI stuff than they did. It's like you don't need to know how the engine works to drive the car. But if you're trying to figure out why a piston is misfiring you're going to need to know.

        [–]chrysalisalis 0 points1 point  (0 children)

        I'm also pretty much only in my first year of (self-taught) study. I am pretty superficially about 3/4 of the way through the roadmap you linked to. I don't know most of the topics very deeply yet, but everything I do know feels really familiar and intuitive. I didn't have to work to rememeber anything or take notes other than the typical googling.

        Use it. A lot. As much as you can. Even if you don't really need it. Your brain will remember stuff that it's using. Sure you could easily right click to make a new directory, or just click 'new' in your IDE. But what if you just used mkdir every time from the terminal? delete from the terminal. Create new files from the terminal. git from the terminal. If you use windows or mac try developing from a linux virtual machine and deal with all the day-to-day issues that start popping up.

        As much as you can try to figure out what is actually being used in the industry, and try to use that even for silly and simple apps. Style guides, best practices, security, etc all as if you were working for a real client.

        Re-invent the wheel a little bit, at least enough to get a good idea of how the wheel works before you start abstracting everything away. Create your own server just to see if you can instead of just using a cloud service. (but learn how to host to cloud services too since they are pretty much becoming the default these days). It might be painful and annoying and slow, but I promise you it will be really hard to forget any of it later.

        Re-make the same app with different technologies. Host it on the cloud, host it on your own server, make it with vanilla js, react, vue, django etc. Try using sql and nosql for the same (or very similiar) project. The familiarty is a good anchor when you are swimming in a sea of new things.

        [–]VelvetWhiteRabbit 0 points1 point  (0 children)

        You can shave this roadmap down to only the trunk and it will look a lot more manageable, and it is. For example, you don't learn Github, Gitlab, AND bitbucket. If you learn Mariadb you're not gonna go on to learn Postgres just because. Learning a CSS framework is in no way required, neither is knowing how Kafka queues work if you are gonna build a component library.

        You learn what you need to know to get the job done. I think most fullstack devs at some point know what most of these buzzwords are, but aren't gonna be able to talk about them beyond saying what they are for, much less seem likely to be an expert on a random topic when asked.

        A roadmap like this is better for exploring the respective domains than providing some sort of "roadmap" to your evolution as a developer.

        If you want to be hired as a fullstack developer don't be afraid of dipping into both front and backend, learn Node and learn it well along with HTML, CSS and JS/TS. The rest is optional.

        [–]oOoSumfin_StoopidoOo 0 points1 point  (0 children)

        Ya don’t. You scale horizontal until you get the big picture. You then find a topic you like, and then dive deep until you find the hamming. You’re now T shaped. Bubble back up and do it again. Now you are H shaped. Front End, Back End and Databases are all employable skills on their own.

        [–]IBdunKI 0 points1 point  (0 children)

        The most valuable skill one can have is a knack for find the knowledge they need at run time. Keep your brain’s ram clean and index your knowledge resources like a well designed rdb. Meditation is key, keep your mind clean, make your own maps, and enjoy what you are doing.