5 ms·
You'd really be fine hiring a senior developer that had no idea how a linked list, a hash table or a binary tree worked? Understanding which data structures are
by seanwilson 9y ago
You'd really be fine hiring a senior developer that had no idea how a linked list, a hash table or a binary tree worked? Understanding which data structures are good for speed and memory usage is at a minimum required for memory constrained apps and dealing with large scale data.
- virtualized 9y agoMost "senior developers" I know don't know much about data structures. Standards are pretty low in the industry. One reason might be that optimizing for memory consumption or handling "large scale data" almost never happens in practice.
- baruch 9y agoI never had a software development job where optimizing memory consumption and handling large scale data (for whatever definition of large was for that particular system) wasn't a necessity. It was also useful to know when these measures were and weren't needed depending on the context in the system. I do mostly what's called "systems programming" and did embedded previously but also did some work on "normal" software but in all cases it was useful to care memory, data structures and performance at some levels of the system.
- ubernostrum 9y agoI do mostly what's called "systems programming" and did embedded Sure. And what's most crucial to do in those fields is not necessarily what's most crucial to do in other fields. 99% of interview horror stories are basically someone saying "I decided this is an important thing based on my narrow perspective, and anyone who doesn't know it as well as I do will be dismissed as completely incapable".
- seanwilson 9y agoIf you're already good at programming and didn't learn computer science foundations along the way it should literally take you a few hours to understand the majority of the core data structures. I don't understand why people complain about common interview questions when you can readily learn the answers in advance.
- watwut 9y agoI agree with what you wrote in theory. But when the narrow perspective is clearly shared by majority of employers and simultaneously it takes like a weekend max to refresh linked list, bubble sort and other few shared datastructures, then the test basically boils down to "are you able to learn this". Which is imo fair test.
- virtualized 9y agoI work on embedded devices and no one really cares whether changing a setting takes 30 seconds or 30 milliseconds. It does not matter that most of the RAM is wasted by unnecessary copies of unnecessary data. People still buy these devices as long as they solve a problem at the end of the day. I personally don't agree with this reasoning, but that's how businesses operate.
- seanwilson 9y ago> Most "senior developers" I know don't know much about data structures. Standards are pretty low in the industry. Even if standards were low, the point of an interview is to gauge the standard of the developer. Algorithms and data structures knowledge is important.
- Bahamut 9y agoHow important though? Rarely does it come into play from my experience, at least for those who work in predominantly the UI layer on the web. Even at my job at Big Co. as a senior engineer (algorithms/data structures knowledge is necessary to pass the interview process here), it hasn’t manifested in a significant way, at least not compared to other skills such as architecting systems for maintainability, identifying the cause of bugs & fixing them, and collaborating with other engineers to implement something the best way possible.
- seanwilson 9y agoI'm not saying it's impossible to code without knowing this stuff, just that it gives you an edge as it helps a lot when you have to deal with memory and speed constraints. If you're coding UIs for web apps, you're probably not going to run into issues unless you're dealing with large collection or collections where the record sizes are big. If you're writing backend processes, mobile apps, games, embedded apps, graphics processing apps etc. knowing algorithms and data structures is important. Would you really want to work with an architect who had no understanding of algorithmic complexity, linked lists or hash tables? An architect needs to know how to design something that will scale to the data involved; I don't see how you can do that if you're ignorant about basic data structures and algorithms.
- virtualized 9y agoIf a backend process is slow, you buy another server, install Hadoop or something and call the whole mess "big data". Mobile apps are known for taking ages to load and for taking too much space. They usually block on network requests and are eager to throw information away before blocking on a request to fetch the same information again. Embedded applications know what hardware they are running on, so they can waste all of the available resources. Extending them later is often very difficult due to that. In realtime graphics the required knowledge is very specific to realtime graphics. 101 algorithms won't help you at all. In non-realtime graphics, who cares? Let's spend this quarter's budget on a redesign of the progress bar so that we can have meetings and beautiful powerpoints.
- sidlls 9y agoYes,I'd be fine with it as long as they could read and understand a table of data specifying the time and space complexity of various data structures and algorithms. The amount of programming done in memory constrained apps and for large scale data is tiny in comparison to all programming, most of which is very basic CRUD type work meant for use in resource rich environments at small scale.
- seanwilson 9y ago> Yes,I'd be fine with it as long as they could read and understand a table of data specifying the time and space complexity of various data structures and algorithms. I'd find it highly unlikely they could do that while being unfamiliar with core data structures and algorithms. A big reason to learn basic algorithms and data structures is not to reimplement them yourself but to help you design and understand your own algorithms and data structures. > The amount of programming done in memory constrained apps and for large scale data is tiny in comparison to all programming, most of which is very basic CRUD type work meant for use in resource rich environments at small scale. Those were just examples. I've seen plenty of cases of code for CRUD apps that had problems handling just a few 1000 records because the coder didn't understand memory usage and algorithmic complexity. I'd certainly want lead/senior developers to have this knowledge even if it's rare they have to step in to help in this area.
- lmm 9y ago> I'd find it highly unlikely they could do that while being unfamiliar with core data structures and algorithms. A big reason to learn basic algorithms and data structures is not to reimplement them yourself but to help you design and understand your own algorithms and data structures. But you so rarely want to implement a new algorithm or data structure. I suspect someone who knows how to implement a red-black tree is, all other things being equal (and I know all other things would not be in practice, but bear with me), worse for most programming jobs than someone who doesn't (but who knows what its performance characteristics are) - you'd never want a programmer to implement their own red-black tree, that's a maintenance nightmare even if they do it correctly, you'd want them to use the one from the standard library.
- swiley 9y ago> a senior developer that had no idea how a linked list How do you become a "senior developer" without knowing this? That was one of the first data structures I learned about when I was 15.
- seanwilson 9y ago> How do you become a "senior developer" without knowing this? That was one of the first data structures I learned about when I was 15. I swear I've interviewed several senior developers who couldn't even vaguely describe what a linked list or a hash table was. I don't know how anyone can say that's not a bad sign.
- watwut 9y agoBy claiming that you was senior engineer on previous project. Usually right after first slightly less experienced person appeared. Alternatively, by having assigned task that you did without much supervision (cause nobody had time). Judging from observation, people become seniors after being employed for about four months (including part time period).