3 ms·
I really wonder if this sort of rote learning has anything to do with being a decent programmer, and if sensible companies that I want to work for are really as
by thomasfedb 13y ago
I really wonder if this sort of rote learning has anything to do with being a decent programmer, and if sensible companies that I want to work for are really asking these sorts of questions.
Personally, I could probably tell you the uses for heaps, trees, tries, and hashes before I wanted to check something in a book or look something up on the net.
I would think that I am better placed to write sensible code because I have an understanding of complexity and I'm prepared to go and think about the problem, find or invent an algorithm, and then prove the complexity of that algorithm. Rather than rote learning 12 different types of trees.
- ColinWright 13y agoThere is little use in being able to integrate functions, or to solve trigonometric equations, or to rearrange equations. However, being able to do these sorts of things without thinking too hard then releases the mind to think about other things with freedom. Similarly, effortless recall of the pros and cons of different algorithms and data-structures means that you don't have to think twice about many of the things that should be purely mechanical. It then lets you recognize things when they show up in disguise, and to concentrate on the higher level work, where the real work begins.
- analog31 13y agoI treated college math and physics as symbolic manipulation games, and graduated cum laude with majors in both subjects. I can still fly through those exercises today, a quarter century later. My only misgiving is that the emphasis on closed form solutions, at the time, was exclusive. It distorts the choice of problems that students are given. Not being a CSist, I don't know if a similar distortion exists in CS.
- ColinWright 13y ago> I treated college math and physics as symbolic manipulation > games, and graduated cum laude with majors in both subjects. Interesting. I'm not saying this about you, but I've met several people who treated math as largely just symbol manipulation, and indeed, they ended up being great at solving the sorts of problems set, but I've sometimes had a feeling that they're sort of "barking at print". I've heard people reading perfectly well, but with no sense they they understand what they've read, despite the perfect production. Similarly, some people can "do the math," but sometimes there's no sense of any real understanding. It's hard to explain. This is one of the problems with interviewing. Some people can really talk the talk. They know all the words, all the phrases, can solve the problems, can produce the code for the set problems. And yet, after conversation, you start to feel that there's something just not quite right. This is just one reason why interviewing is hard.
- analog31 13y agoWell, I certainly can't plead innocent. ;-) I've realized for a long time that what's gotten me through school and life is a series of accommodations for the brain that I happen to possess. Oddly enough, things "clicked" for me in terms of developing the deep understanding underlying the symbols, but not always concurrently with whatever course I was taking.
- CoryG89 13y agoI agree with Colin. I think knowing these types of things is great and studying them before an interview shows effort. I'm not sure I would ask someone to implement a B+ tree or BST or something on the spot, but knowing what one is, having worked with one before, knowing what they are useful and commonly used for is something I would definitely someone working for me to know.
- thomasfedb 13y agoI suppose I approach this from a background of Computer Science, rather than a background of Software Engineering. As such I'm interested in computation rather than "Mr Jones needs to manage his cats, etc". If you described to me some scenario I could probably tell you I wanted a data-structure that offered constant time lookups, or that your graph was sparse and therefore I would prefer an algorithm that ran in O(E) over one that ran in O(V). I certainly couldn't tell you the right class out of the Java Collections library. In any case, it's holiday work.