5 ms·
If programming is really about writing algorithms then why people(both candidates and employers) complain about whiteboard interviews? I think that most of the
by didymospl 9y ago
If programming is really about writing algorithms then why people(both candidates and employers) complain about whiteboard interviews? I think that most of the programming done today are in fact declarative due to abundance of high-level languages frameworks, libraries and other great tools that abstract business logic away from the low level imperative instructions. Obviously it's good to know how everything works behind the scenes but I know many people who are far less familiar with the CS basics than me yet they are tremendously more productive in software development.
- sjapkee 9y agoIf all your work is to read/write data from DB and represent it in different ways, then yes, you can know absolutely nothing, use standard framework functions and be stackoverflow developer 8/5. But if you need to write something specific, something more complex, you can't just take two functions from your %framework_name% and make it beautiful and working. You should know how to do it and furthermore, you should know how to do it with existing tools. And here the majority begin to have problems.
- didymospl 9y agoWell, it really depends what do you mean by "something more complex". I remember when the author of rather non-trivial tool used by many of HN users went on Twitter rant because he could not invert a binary tree and failed a whiteboard interview https://news.ycombinator.com/item?id=9695102 https://news.ycombinator.com/item?id=9695102 To me, and possibly most CS freshmen, this task would be a piece of cake, yet I think Max is a better programmer than most of us - a.k.a. rockstar developer.
- sjapkee 9y agoSomething more complex is like audio/video codecs, image compression, etc. When they are developed, existing algorithms and libraries cover, at best, half of the needs. That's what I'm talking about. There almost isn't exist areas where you can use only existing code base and feel good with it.
- didymospl 9y agoI assume you're absolutely right about the areas you mentioned but it's not something that an average developer works on nowadays. In the same way as the majority of professional drivers are not race drivers.
- sjapkee 9y agoFraud detection, billing systems, infosec, banking, HFT, image/video processing and pattern recognition, games development, firmware, highload tools and services, tools for programmers (IDEs, linters, etc.), programming languages design, browsers, search systems, data processing and storage systems, electronic document management, cryptosystems, operating systems, frameworks, etc. It seems to me that this is a large part of the software being developed right now. And the development of all this requires rather non-trivial knowledge and skills. So your comparison with the race drivers is quite far from the truth.
- pyjammas 9y agoI'm assuming you're in one of these fields and conveniently count yourself among the 'non-trivial' developers?
- mattmanser 9y agoHonest question, when's the last time you had to do that. Second honest question, did you have to do that, or did you do that because it was Not Invented Here? Virtually no-one in our industry needs to write algos regularly. If you are, that probably means you're a bad programmer suffering from NIH syndrome. Or you're one of a tiny group who actually need to because you're doing something cutting edge.
- sjapkee 9y agoIt's shouldn't be cutting edge. There may be no open source library or commercial library for your needs (e.g. parsers for most telecom protocols). Your algorithms can be client specific. There may be only awful libraries especially if you use a language in an area for which it is not designed (e.g. something like C/C++ and Websockets). And there may be hundreds and thousands of other reasons. Of course, many people use Spring/Boost/etc. for routines like data transfer and popular protocols (JSON/XML) parsing, but it's only part of big picture.
- digaozao 9y agoAs an ecommerce developer. Especially business specific stuff. Discount rules according to merchant, customized search aggregating other systems. Most of the time is db stuff, sure. But it is always useful someone who can think and solve problems.
- pyjammas 9y ago> If all your work is to read/write data from DB and represent it in different ways, then yes, you can know absolutely nothing, use standard framework functions and be stackoverflow developer 8/5. Do you actually believe that's true? I can understand if this is just a knee-jerk comment that you haven't put thought into, but if it isn't that, I truly hate your kind of thinking. While I'm not a fan of modern front-end programming, I do appreciate the sheer amount of knowledge and tedium involved in making that 'read/write DB operation' actually work in the context of the demands of modern front-end development, and I despise those who pretend it's trivial. Is it different from the kind of knowledge necessary for picking the right algorithm? sure! Is it inferior (by whatever definition that self-servingly serves), and does it involve 'knowing nothing'? Far from it. Knowing what's necessary for a lot of front-end work is far from trivial, and while I dislike it, pretending it involves no knowledge or expertise is 100% pure bullshit.
- thirdsun 9y agoI agree with you. Let's imagine all you know is handling a full-featured framework like Rails or Django - while relatively mundane and boring I'd argue that alone turns you into a very capable developer who's able to make things happen without diving into rocket science.
- yorwba 9y agoAlgorithms are not "what you learn in an algorithms course" and also not "what you are asked to do in a whiteboard interview". Writing an algorithm is what you do when you specify a way to mechanically obtain a solution to a problem, whether you do that in a declarative language or an imperative one or even in a language whose only interpreter is your own head.
- didymospl 9y agoOk, if we stick to your definition of algorithm that it actually makes much more sense.