4 ms·
Weirdly they seem to ask the CS fundamentals that aren't as relevant (algorithms) and skip those that are (e.g. the relational model, data structures (uses of),
by crdoconnor 10y ago
Weirdly they seem to ask the CS fundamentals that aren't as relevant (algorithms) and skip those that are (e.g. the relational model, data structures (uses of), type theory, formal grammar).
I wouldn't say that you don't need it, but I would say that most companies ask about the wrong bits.
- taneq 10y agoIt always baffles me when people say that algorithms aren't relevant to software development. It's like saying thermodynamics isn't relevant to engine design.
- JamesBarney 10y agoIt doesn't seem that baffling to me. The majority of software applications could only moderately be improved by CS algorithms.
- crdoconnor 10y agoMore like saying that knowing the atomic crystalline structures of metals isn't relevant to engine design.
- sirclueless 10y agoWell, somebody better know the structure of the metals in use, or else you get turbine disks shattering jet engines and landing 1,000 yards away [1]. Just because it's not important to know every day doesn't mean you won't find challenging and important applications of undergraduate-level algorithm design. [1]: http://www.seattletimes.com/business/boeing-aerospace/dramatic-ge-engine-explosion-on-boeing-767-poses-puzzle-for-investigators/ http://www.seattletimes.com/business/boeing-aerospace/dramat...
- crdoconnor 10y ago"Well, somebody better know the structure of the metals in use" Somebody needs to know how to implement sorting algorithms too. It's just highly unlikely to be you.
- varjag 10y agoMetal crystalline structures are taught in many metalworking trade schools, even if briefly. It has direct implications for things like heat treatment.
- snovv_crash 10y agoWhich it completely is, if you want to design a modern engine. If you want to have an engine with 60s power, weight and fuel economy, then sure you don't need to know the science behind it. Just throw some parts together, and you'll get something that works.
- PeterisP 10y agoKnowing specific algorithms is irrelevant to most modern software development because for any algorithm that's common enough for a "standard" developer to remember you'd be expected to use a pre-existing implementation. If you want to sort a list, balance a tree, multiply a matrix or find the shortest/cheapest path in a graph, you should use a library that already does that and is reasonably tested and optimized, certainly more than whatever you'd write today. Most likely you shouldn't even get to choose which algorithm to use for that, and if you need to then the choice should be based not on the O() measures you might remember but on benchmarking, since the constant factor often dominates. I have seen quite a few very large systems in which the most complicated algorithm actually implemented in the system is a set of branching if-then conditionals for some business logic. There's no custom data structure traversal - yes, it needs some data processed, but all the algorithms for that are in the DB implementation and "do X for all selected items" is literally the deepest level of iteration anywhere in the system. There's cryptography, but that's in a separate library made by someone else. There's network algorithms with state in them, but that's managed by a separate layer. In such data processing systems all the development does is glue code that specifies what exactly should be done, but all the how part (e.g. the algorithms) is already implemented by someone else and is reused. There are fields and apps (parts of them) that are algorithm-heavy; for example, even simple games tend to pack a lot of interesting algorithms (but even there much of that is now handled by standard libraries/frameworks). But most developers don't work on that, the majority of software dev work is cookie-cutter data processing apps where all the algorithms are out of your scope.
- vinceguidry 10y agoHow often do you actually implement algos? Unless you're coding libraries for a brand new language, you're just going to pick out someone else's implementation of it. Why redo that work?
- marcosdumay 10y agoIt's more like saying that the detail of the thermodynamics cycle of the specific rotary piston engine of that plane that had one (nah, won't search it) is not relevant to "engine design" stated generally without any modifier. Those interview questions aren't about "algorithms", they are about details of specific ones chosen by their complexity and that are rarely used in practice.