In Defense of Learning Code the Hard Way
motherboard.vice.com
motherboard.vice.com
I think the weakest point of JavaScript online programming courses is the lack of algorithms. You end up to do a lot of DOM manipulations, apply some CSS and that's it you are ready to get a job. But you don't really know how to translate your mental concepts into code.
Debugging with gdb, strace, valgrind, lsof, ... and learning about low level system calls will teach you a great deal about how a program works, where it’s resources are used and how to eliminate it’s bottlenecks. What is a heap, stack or static memory? How does memory management or garbage-collection work on a modern OS? What is IPC and how do the individual system calls function & require as input? ...