Quote:
Originally Posted by goofyballer
I think it's difficult to be a great programmer if you don't understand that stuff, though. Maybe it's just my opinion but I think it's important to have a fairly good idea of what the code you're writing actually does when it runs on a processor. I posted this article in another thread but think it's especially relevant here: The Perils of JavaSchools (and I just learned from the bottom of the page that the guy who wrote it co-founded StackOverflow).
I'm not saying you should never learn that stuff. I am saying it is
far more important to learn high level design. And I am also saying, to someone starting out, DON'T start at the bottom and learn your way up. Start at the top and, as needed or as you are interested, learn your way down.
I have known programmers who know low-level stuff *really* well, but who don't understand high level design. And for the large majority of projects I would *much rather* work with guy who understands high level design but not low-level than vice-versa. Now, it's true that most people who are really good at one are also at least pretty good at the other, but it's not necessarily true. They are different disciplines. And I am saying, unequivocally, one is more important than the other.
Knowing low-level details in programming is like knowing grammar and sentence diagramming really well in writing. Usually, it will improve you as a writer, and overall it's probably a positive thing to learn. But good writing, essentially, is not about good grammar. You can be a great writer and never truly understand grammar at a deep level. And, if you are a grammar expert but don't really understand what good writing is, you can become someone who completely misses the big picture, but has a smug superiority about being able to correct others on technical details that don't matter. And I think this happens even more often in the world of programming.