3 ms·
Slightly opinionated, but good post. My only objection is to the statement: > Initially, screw the algorithms and data structures If this is not the worst advi
by mnazim 15y ago
Slightly opinionated, but good post. My only objection is to the statement:
> Initially, screw the algorithms and data structures
If this is not the worst advice to a beginner, then I do not know what is.
What's so complicated about data structures like stacks, queues, linked lists, basic trees. What's so difficult about learning basic sorting, searching and traversal algorithms. I mean, if those are difficult for someone, probably they should not be programming. I know I would not hire such people.
If you learn the data structure and algorithms, it is possible when you need them you will know where to look and what to look for, even if you do not know the exact data structure or the algorithm you need. But if you do not have any idea of data structures or algorithms how will you know that you need them.
There is a reason they are called "The Basics"
Edit: Fixed a spelling.
- 3pt14159 15y agoLook at advice to beginners like a conversion funnel. If you end up losing 90% of people who try programming when you start them off with data structures and lose only 80% if you start them off with a little JavaScript game why not start them off on the latter? After their first public launch they will cling to interesting topics, but in the beginning it just seems like route memorization. The what but not the why.
- mnazim 15y agoI agree, but only to a certain degree. I do not say one should implement a linked list before writing the customary Hello, World program. Off course, it will be a couple of months before a "first time programmer" implements the first data structure program. But saying "Screw 'em! You can learn them when you need them" is a very very bad advice. One should be aware of data structures and algorithms before writing any non-trivial program. Heck, data structures should be everyone's first non-trivial programs. Whenever I pick up a new programming language, first thing I do is implement simple data structures like stacks, queues, linked lists etc. I have found that this way I can learn the most important parts of the language at hand pretty quickly. This is a habit I picked up when I first learnt data structures and this has stayed with me and has been paying me off handsomely.
- hippich 15y agoIMHO, author's point is to motivate future programmers to create stuff. To create stuff you need right attitude and to be excited about it. Algorithms on other hand are already created. And “When you don’t create things, you become defined by your tastes rather than ability.", tastes to algorithms in this case..
- mnazim 15y agoWhen I say learn data structures and algorithms. I do not mean simply read up on the code. I learned programming, data structures and algorithms, under the man named Vinod Vishen. He never let us see any code or any book. He would explain the algorithm to us and provide a printed explanation on a plain piece of paper. Then we had to implement the algorithms in code ourselves. This approach worked wonders. Initially, It took us days to implement even simplest of algorithms because we were encouraged to constantly improve our code bit by bit. Only when he was satisfied with what we had implemented would he allow us to look at the code in the book. He taught us to think independently. Independent of the book. Unfortunately this method got a bit lost as the number his students increased from 30 - 40 to hundreds. No wonder most of the people from my batch and my seniors went on to start small but successful companies like me. Even today, most of the people I have hired are either from my batch or my seniors. I have never met a single person who delayed learning data structures and was good at programming.
- hippich 15y agoHeh.. I never _met_ in real life single person studying CS and being a good at programming. So what? =)) I also was studying network engineering, not CS, but I still believe I am good programmer and clients willing to pay for my work only prove it more. This is regarding your aggressiveness of the last line... Now - what you are saying is basically what I meant - do not just learn (as memorizing) algo, but try to implement it yourself, or better - stuck with a problem where you have to implement algo yourself not knowing such algo already exists and described. (of course, this is not applicable when you work for a client, that's why 'fun' period is necessary =))
- 15y ago