7 ms·
Ask HN: Why are there almost no intermediate-level learning resources?
My experience with learning almost any new language / framework / library goes like this:
1. There are plenty of beginner tutorials. Often they just go through the examples from the docs or show a very simple proof of concept. Not very useful if you can read the docs.
2. Then you are left on your own reading through uncommented GitHub repos to understand how to put these things actually into production for use cases that go beyond 'add a todo to this list'.
You almost never find tutorials on how to structure your application, best practices, common mistakes etc.
That's the knowledge that is really helpful though and that I would pay $$$ to learn. Not 'how to create a simple todo app'. Why are there barely any learning resources that target the intermediate level?
- kashfi 6y agohttps://hi.hyperskill.org/ https://hi.hyperskill.org/ ^This might be a good place to learn the intermediate stuff. Python, Java, Kotlin. More intermediate stuff goes into the data structures and algorithms. https://sp19.datastructur.es/ https://sp19.datastructur.es/ ^UCB's Josh Hug is a good lecturer, also provides course textbook, hw, side projects. For best practices, try to get the Head First Design Patterns PDF. Common mistakes? Search for "Effective <whateverLanguage>" and you should find a PDF for whatever you're looking for. Also, goalkicker.com has compiled a lot of intermediate stuff from scraping StackOverflow question-answers.
- pennyintheslot 6y agoThank you for sharing those! After looking through your suggestions, I think I better understand what I actually meant with 'intermediate-level learning resources'. I suppose what I am looking for are videos where people walk you through some really advanced open-source applications and explain the application structure and design decisions they have made. That could be relevant for all sorts of tech stacks and combinations. Basically a video after which you have a good starting ground to build your own application with a similar tech stack. These videos should ideally be made for open-source applications that follow many best practices for the given tech stack. I think that would be extremely valuable. As of right now, you are stuck reading through random projects on GitHub and often times you don't even feel confident that the way they have approached the problem, is necessarily sane and a good way to go about it. It would also be a lot more time-efficient if someone explains the application structure and design decisions to you than if you have to figure it out by yourself.
- yarinr 6y ago> I suppose what I am looking for are videos where people walk you through some really advanced open-source applications and explain the application structure and design decisions they have made. That could be relevant for all sorts of tech stacks and combinations. If that's what you're looking for, consider checking out 'The Architecture of Open Source Applications' here http://aosabook.org/en/index.html http://aosabook.org/en/index.html It's not in video form, and the focus, as the name suggests, is on the architecture more than on the tech stack, but you might find it useful.
- kashfi 6y agoIn that case, these three people come to mind. https://onelonecoder.com/ https://onelonecoder.com/ https://handmadehero.org/ https://handmadehero.org/ The last dude is TheCherno https://www.youtube.com/user/TheChernoProject/playlists?app=desktop https://www.youtube.com/user/TheChernoProject/playlists?app=... All three of these folks walk you through intermediate-level projects with commentary on their decisions. You should also look into conference talks on the tech stack you are interested in. Then look up the speaker/topic for more specific material.
- yarinr 6y agoHandmade Hero is great. I'm not really into game programming, but I wish such an amazing resource would exist for other areas.
- topkai22 6y agoPluralsight has videos/training series that do that. It might still generally be below exactly what you are looking for, but it’s pretty good and where I go when I have to ramp fast.
- craftinator 6y agoWould "best framework practices" tutorial or bootcamp be a good summary of what you're looking for?
- brogrammer2018 6y agoThank you for sharing
- syedmeesamali 6y agoJust checked goalkicker.com. Pure gem for intermediate level. Excellent sharing.
- ansgri 6y agoTrue. This didn’t seem to be the case 10 years ago. Maybe this is the result of commercialization of information: much finer optimization of follower count inevitably leads to oversimplification and overselling. And experts are increasingly less motivated to share knowledge with non-experts, like in academia where clarity of explanation to outsiders is sometimes valued negatively. Also, most of the useful beginner to intermediate level content is created in video format, and that’s just grossly inefficient for a busy person: you cannot quickly scan a video, and you need sound, and good understanding of spoken English (IME much harder than reading) so the barrier to learning is actually higher. Also, there were blogs, and now there are mostly walled gardens. In many industries (e.g. I’m familiar with professional dog training) most information is there and is poorly accessible. I’d like to hear other opinions too.
- topkai22 6y agoI suspect the increasing dominance of open source and free (as in beer) software for the last decade is at play, too. Companies selling development software/libraries can pay for teams of content developers and evangelists. They also would serve as single source of truth for the canonical way of doing things. And they would give away the content in order to get license sales The rise of the free (as in beer) software doesn’t have the same incentives, culturally or economically. The documentation of the better libraries is often great and better then the what I remember from closed source vendors in the past, but it normally stops at the boundary of the library. It’s rare to see teams of evangelists/content on OSS projects directly creating integration level content (although some of the bigger projects see that).
- jamil7 6y agoOne theory of mine is there is far more self promotion in the developer community now than there was when I started. In particular javascript and web development juniors writing blog posts and dev.to articles as a form of self promotion. On the other end of the spectrum are domain experts who make video courses or books on advanced topics. In the intermediate level you have a big gap with not a whole lot of information available.
- saddestcatever 6y agoI like this theory a lot. If you're looking to self promote, you can either target the larger audience base of beginner content, or provide domain expertise with advanced topics.... with the gap in the middle then being underrepresented
- duxup 6y agoAs someone 2 years into a web development career. I get really frustrated by this. I'll fire up a tutorial on something and 20 minutes into this and I'm all "yeah this does what it says, but it can't be used to do almost anything else..." and I fear the actual person doing the tutorial doesn't know. Heck I've commented on some Medium blogs where they mention how to do a thing and I'm 100% sure in any real world that code won't do the thing. I post and ask about some aspect of it and the blog author ... doesn't know. Like outside this one off tutorial and everything working perfectly ... the code is useless. There's valid reasons to simply code for illustration, but at the same time, without exposing even how to handle an error... what have you really taught someone?
- mydongle 6y agoWhen trying to learn html/css and following multiple tutorials with different ways to achieve one thing, it truly feels like I'm just throwing shit at a wall and seeing what sticks. Sometimes nothing sticks. It's incredibly frustrating. Is there someone who writes tutorials who can actually explain what they're doing and why? Maybe something will work, but I'm not sure if anyone learned anything valuable from that kind of experience.
- pdevr 6y agoIn addition to the good points mentioned by others: 1. Out of the total time spent in building an application, a non-significant amount of time is spent on boring tasks to make the application real world ready. In some cases at least, you use third party libraries and custom developed components to do so. Including those in a learning resource/tutorial will, at least in some cases, make the code exponentially more complex to absorb. 2. Some of the code you use for building production-ready applications is proprietary - either proprietary to the developer or to the company. Sidenote: I would argue that we have an abundance of resources. What we don't have is that many laser focused "here are the 35 most common gotchas you will face while moving this to production and here is exactly what you need to do" type of resources.
- Galichev 6y agoThey are much more scattered through the web. There are more of such articles for devops and high load architecture, but some topics are well researched, for example Mozilla have published very thoughtful article about app localization: https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Web_Localizability/Creating_localizable_web_applications https://developer.mozilla.org/en-US/docs/Mozilla/Localizatio... Unfortunately, I can’t remember any source that is publishing such materials on regular basis, seems that this type of knowledge is tightly connected with exact company best practices and it takes a lot of work to make this knowledge useful for the general public.
- hackermailman 6y agoUniversities all have these kinds of intermediate courses: https://www.cs.cmu.edu/~ckaestne/17313/2018/#schedule https://www.cs.cmu.edu/~ckaestne/17313/2018/#schedule is an example of general software architecture like how to identify requirements. Notice all the books on architecture and design being referenced as well. There's startup architecture courses floating around too: https://cmu-17-356.github.io/ https://cmu-17-356.github.io/ For exploring some huge codebase where there is no design documentation one way is just to use a fancy ide and sabotage something to see what it breaks in your ide, then you can trace what code is relying on. Some open source projects have books written about their architecture, you could also start with those then everything you see there is often similar in undocumented projects in my experience, in terms of organization of code like where is the directory containing all the core functionality, where are the feature addons.
- erikpl 6y agoDo you have more information about that startups course? Looks very promising by the looks of it, but the resources they provide in the schedule section are a bit sparse :p
- jl2718 6y agoI like textbooks for this. I can’t find them anymore for new things I’m interested in. For instance, there is no decent textbook on modern machine learning. Prior to 2014 they were great. Programming books in general seem way too narrow and quickly become obsolete.
- s1t5 6y ago> For instance, there is no decent textbook on modern machine learning. Prior to 2014 they were great. Do you mean books on theory or on language-specific libraries? Either way I can think of many examples. Also, the pre-2014 books are still very relevant - it's only deep learning that has seen significant developments since then.
- methusala8 6y agoCan you suggest a few apart from the one by Geron? Thanks.
- jl2718 6y agoTheory and language-agnostic algorithmic implementation generally is appropriate for 'intermediate' level to my understanding. Read PRML or MLaPP, and then please tell me that you know of a suitable modern successor. Not Goodfellow. Sorry Ian.
- s1t5 6y agoThat's my second point though - why do you think that PRML and MLaPP need a modern successor at all?
- chatmasta 6y agoAt a certain point, it's more efficient to read the primary source of educational material, which is the documentation of whatever project/language you're working with. With some exceptions for complicated domains, it's usually much more efficient to read the docs rather than some tutorial that has probably drifted out of date. If you're interested in how other projects manage things, just read their code on github.
- djohnston 6y agoI second this. A lot of intermediate stage knowledge comes from seeing other people's code. Code review is a precious resource I did not value enough when I started
- nthacker 6y agoI've been pondering and working on this exact problem for over 4 months. I agree with you. The amount of time that engineers spend at work to teach themselves, test or experiment with frameworks, libraries, architectures is really high. Personally I've spent hours of unproductive work before a breakthrough and certainly there's a component of the difficulty in searching, piecing together ideas that are not basic. You mention video walkthroughs and that you would pay for something like this. I'd love to do a video call and chat to learn more: nirmalthacker@gmail.com
- collyw 6y agoSadly the tech industry seems to encourage lots of shallow learning rather than deep mastery these days. 90% of stuff could be built using classic MVC, server side rendered with a bit of JQuery and would work just as well. Instead we have a shambles of microservices on Kubernetes and constantly changing front end frameworks.
- nthacker 6y agoI partly agree. I do think that the amount of choices and decision paths that an individual senior engineer needs to make are increasing, since we keep piling abstractions above abstractions. There's only so far one can get by looking at Quickstarts and tutorials. If you do find a tutorial online, a big struggle is replicating and getting it to run. There's quite a lot of Open source software now, thanks to Github, but getting to a point where you can run the code, understand what it does and replicate parts of that are super time consuming. If companies knew how many man hours are dedicated towards this, they'd be shocked at the loss of productivity. My main thesis is that intermediate stage learning is self-driven, and there needs to be an ecosystem of tooling that can provide & enable replication, remixing of software with sufficient walkthrough of what the code does
- collyw 6y agoIf you do Django, Two Scoops of Django is an excellent resource from going to begnnner/intermediate to intermediate-with-sytle / moving-to-expert. Unfortunately I found the same problem and wish there were more things at this level, especially with CSS for people who are 80% backend. (Judging from your comment would I be correct in guessing that you are doing mainly JavaScript stuff? If you are, then the Python world is generally a lot nicer.)
- anurag619 6y agoDon't you think being left alone to search for intermediate knowledge teaches us a lot? I agree intermediate-level resources are rare but that has helped me in growing as a software developer. On the contrary, if straightforward information were made available, then you would never grow. -Just my thoughts.
- probinso 6y agoThey're called books
- dpeck 6y agoSometimes you just have to draw the owl.
- semicolonandson 6y agoThis is a need I'm hoping to address with my latest project, Semicolon&Sons. Basically I've built and maintained a web app business for the past ten years and can share a ton of war stories about how certain architectural decisions either paid off or bit me in the ass. Because I own the copyright to the code, there's no red tape stopping me from showing it on camera or whatever. As regards educational content, I'm at an early stage with this, but I've got a couple of videos over on YouTube https://www.youtube.com/channel/UC17mJJnvzAa_e9qQqLIfIeQ https://www.youtube.com/channel/UC17mJJnvzAa_e9qQqLIfIeQ As for your question as to why there are so few intermediate level learning resources, I think it's because the market size for intermediate stuff is much much smaller than it is for beginner resources and therefore content creators prefer to focus on the beginner stuff.
- matt_s 6y agoI think most of the intermediate to hard concepts, best practices, etc. are usually learned on the job as you run into problems and solve them. I would also guess that more of the advanced things tend to be on the backend. A todo list application front end built from a tutorial will likely scale for one user or thousands of concurrent users. The other aspect of advanced is how to maintain an application and write it so its easier to maintain. Once something is live, how you get changes in, fix bugs, monitor, etc. is not really talked about online because it is boring. It is a combo of process, tooling and some tech.