Going against the grain here, but personally as I've gotten more experience and worked in larger code bases I've completely reversed my habit of breaking functions up into smaller functions to supposedly make them easier to understand.
I think this is a great point that most people forget. If you build something specifically for editing code you can do something cooler than vim/emacs and I've been working on that specific idea: https://youtu.be/owuuFxDBQh4?si=tqYi-RqvFQa6kI8h
In theory it should work for many languages with minimal support. In practice I've done some testing with typescript, Rust and Go and it largely works.
A vscode extension that aims to be "vim for code' meaning that it has first class motions for programming concepts like functions, arguments, etc. quick demo:
I'm working on something similar (not as far along), a vscode extension that has ideas like functions, parameters, etc as first class ideas (so press f to select a function) and also does things like adding a newline and a space where appropriate during insert actions.
The only argument I can think of against this would be that it would maybe slightly discourage adding the verbose details and would generally decrease the quality of error messages slightly. That said, even so it's probably worth the trade.
It's worth considering that in the networking example given you discover the skills you need via a project and then argue that the skills could be learned more effectively through deliberate practice.
I think this post largely argues against a strawman (which I'm sure some people actually believe).
Seems fairly clear to me that you should (1) do projects that resemble the work you're trying to improve to:
a. Build up the basics across all the skills you need
b. Uncover gaps
And (2) then practice the skills you actually care to improve outside of the project.
If you really want to try-hard you can spend time actively thinking about how to improve what you're doing and observe other people to learn from them.
People who advocate project-based learning have generally experienced spending a ton of time learning things in theory and then being unprepared for actual work. Maybe address that concern instead of bypassing it with "I don’t want to debate the current way universities do things." To have a nuanced take you have to understand the arguments in favor and against the main options, no?
I don't think people who advocate for project-based learning are advocating for exclusively project-based learning (mostly).