|
As with most communications distances, that depends entirely on where the other person is sitting. I never use monads, for instance, and only use type-classes when they look really applicable. Still, if the person I'm talking to has never heard of a map() primitive outside of MapReduce, that causes issues. And then the #1 thing that really causes friction is recursion. Most people interviewing on behalf of BigCo's seem to think recursive algorithms are dirty and will always/almost-always overflow your stack. I learned in second-semester of freshman year of college that with a little work, every recursive algorithm can be made tail-recursive can be made iterative, and that rejecting recursion wholesale is premature optimization. The best interviewer I had on the topic (who couldn't offer me a job because I'm a hardcore algorithms/CS guy and he ended up needing front-end web developers, no harm no foul) accepted my recursive answer and then proceeded by asking me to make it iterative. That was the best, in my opinion, both because it shows a level of "academic" knowledge about recursion and iteration, but also because it was exactly what I would have to do in a real job situation: transform a theoretically correct algorithm into a usable implementation that can perform well. The people I want to criticize are the ones who seem to believe, or want to believe, that no such usable implementations of functional or academic techniques can exist, categorically, and hence that anyone who answers a question with anything so "functional" as a recursive algorithm must be a stack-overflowing, head-in-the-clouds academic or simply an amateur. Hence why I bring up Scala and why I'm not much of a Haskell programmer: it's damn well readable and usable for people who aren't functional-programming gurus, you can write code in it that plays well with CPU and memory, you can use a wide ecosystem full of libraries, and it comes with just enough functional magic baked into itself in just the right way to make the "magic" parts (like the Option functor) easy to learn and use for people who don't care about functional programming theory. |