
Ask HN: Why are there almost no intermediate-level learning resources? - pennyintheslot
My experience with learning almost any new language &#x2F; framework &#x2F; library goes like this:<p>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.<p>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 &#x27;add a todo to this list&#x27;.<p>You almost never find tutorials on how to structure your application, best practices, common mistakes etc.<p>That&#x27;s the knowledge that is really helpful though and that I would pay $$$ to learn. Not &#x27;how to create a simple todo app&#x27;. Why are there barely any learning resources that target the intermediate level?
======
kashfi
[https://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
Thank 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.

~~~
kashfi
In 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=...](https://www.youtube.com/user/TheChernoProject/playlists?app=desktop)

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
Handmade Hero is great. I'm not really into game programming, but I wish such
an amazing resource would exist for other areas.

------
jamil7
One 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.

~~~
duxup
As 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
When 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.

~~~
duxup
CSS feels like such an add hoc mix of things that sometimes go together, other
times don't.

I just hang onto some snippets I like and pick a framework most of the time.

------
pdevr
In 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.

------
hackermailman
Universities 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
Do 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

------
semicolonandson
This 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.

------
ansgri
True. 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
I 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).

------
Galichev
They 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/Localizatio...](https://developer.mozilla.org/en-
US/docs/Mozilla/Localization/Web_Localizability/Creating_localizable_web_applications)

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.

------
nthacker
I'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
Sadly 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
I 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

------
matt_s
I 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.

------
chatmasta
At 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
I 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

------
collyw
If 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
Don'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.

------
jl2718
I 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
> 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.

~~~
jl2718
Theory 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
That's my second point though - why do you think that PRML and MLaPP need a
modern successor at all?

------
probinso
They're called books

------
dpeck
Sometimes you just have to draw the owl.

