Comments:"The Trouble with CodeSchool"
URL:https://medium.com/i-m-h-o/56ed7faaad58
I’m a big fan of CodeSchool. I love what they’re doing, “learn by doing”, and their campy videos are awesome for making the daunting, and sometimes monotonous, seem bearable. If you haven’t tried it out yet, go do it, right now.
CodeSchool, Treehouse, Peepcode, Lynda, and the like, are all a boon to the self-taught programmer. When I first started Lynda was the only thing around and it’s great to see these new guys popping up. However, the one troubling thing with them, is they don’t really teach programming.
Okay, yes, they teach programming. But they teach the idiosyncracies, the quirks of a language. They teach frameworks, they don’t teach programming techniques. Following their instruction is akin to being taught about the different brands of a hammer rather than how to hit a nail into wood.
Programming Languages are Just Tools
It’s key to remember that a programming language is just a tool, like a hammer or a wrench. Each is suited to a particular task, some better than others. What’s being forgotten are the techniques a programmer can use. Yes, you may know that a hammer gets a nail into wood, but you’re probably swinging the hammer all wrong, and one day your wrist is going to give out.
To truly master the art of programming, we must learn the techniques available to us, not just the tools. Data structures, algorithms, design patterns, and computer science concepts are what I’m talking about here.
Are You a Tool Master?
Do you know what a binary tree is? The difference between a merge sort and a quick sort? What the singleton pattern is, and why and when you should use it?
If you can’t answer one or all of those questions, then it’s time to start learning the techniques.
Your Path to Mastery
The following is a list of basic techniques, every programmer worth his salt must know. Challenge yourself to not just understand these concepts, but where applicable, try to implement them in your tool of choice. Your career will thank you for it.
Data Structures
Linked Lists
Binary Trees
Tries (not try/catch)
Stacks
Queues
Vectors / ArrayLists
Hash Tables
Algorithms
Breadth First Search
Depth First Search
Binary Search
Merge Sort
Quick Sort
Tree Insert / Find / etc.
Concepts
Bit Manipulation
Singleton Design Pattern
Factory Design Pattern
Memory (Stack v. Heap)
Recursion
Big-O Time
Aforementioned path to mastery inspired by Gayle Laakmann McDowell, Founder / CEO of CareerCup