6 ms·
Spot on. Asking questions about esoterica (defined as any language feature that's >0 levels above their current level of knowledge!) is useless. I'd rather get
by xsmasher 15y ago
Spot on. Asking questions about esoterica (defined as any language feature that's >0 levels above their current level of knowledge!) is useless.
I'd rather get a candidate to write some (relatively simple) code using what they do know about the language, and then we can dive into the code and see if they really understand what it does, and what happens if I poke this or prod that. I don't even care what language they use - although if they pick one I don't know it may be harder for them because I'm going to ask pointed questions about how parameters and equality work in that language.
The interview "question" is just a starting point for a conversation. Trick questions and minutia don't serve that purpose at all.
- astrodust 15y agoExactly. It's not if they know the answer that matters, but if they can determine the answer. Poor interviewers only test knowledge, not ability.
- stcredzero 15y agoPoor interviewers only test knowledge, not ability. Right. There are lots of very capable people who have optimized by offloading a lot of information from their heads because they can get it from their tools. These are very different from cargo-cult programmers who are only guessing about which completion in their IDE they should use. However, the two types will be unable to answer many of the same questions when away from their IDE.
- horsehead 15y agoPerhaps a dumb question, but why would you use an IDE? I'm learning Python (my first language), and have found about the only thing useful to me in IDLE (the IDE for python) is the autotab function. Am I missing something? Or are IDE's a waste of time? (I usually just use gedit, fyi, on my ubuntu box)
- caw 15y agoParticularly for Java, where there's a lot of boilerplate that can be autogenerated IDEs are very useful. IDEs are great for method signatures and completion, as well as integrated debugging and unit tests (1 click run the tests again, add in your breakpoint and check your variable). Some languages lend themselves to IDEs easier than others. For Ruby I use textmate, for Java I use eclipse. For Perl I use vi, and when I did .NET I used Visual Studios.
- foobarian 15y agoIn the case of Java and Eclipse, and our million LOC codebase, the IDE provides a breathtaking boost in productivity. I find the main benefit to be the realtime compiler which catches compile-time errors, followed by ease of navigation through the codebase, and the remote debugger and code inspection. I often think that not having this tool would be like what primates' self-awareness must be like: a glimmer of insight, but even the simplest thought requiring impossible effort, as in a thick fog.
- Retric 15y agoIMO, the little things add up fast. Syntax highlighting can make things easier to read. Linking ('s and )'s let's you close a conditional without counting the number ('s less the number of )'s. Syntax aware re-factoring let's you safely change all x's to index etc. Built in language support allows you to catch many syntax errors before you hit compile and the help goes on and on. PS: And don't forget the big things like built in debugger support.
- hythloday 15y agoThe main things I like in an IDE are discoverable functionality (e.g. in Visual Studio, variables that changed since the last breakpoint are red--I'm sure gdb has acquired this ability since I first looked at it but it's questionable if I'd've ever gone looking for it on my own) and refactoring (e.g. changing the name/signature/return type of a method throughout your codebase). IDEs are typically big wins when you're writing in statically typed languages (especially ones without a REPL) and less so in dynamic ones - in Python I'd be perfectly happy in Notepad for at least 75% of my programming because I do so much exploratory programming in the REPL.
- DannoHung 15y agoI don't think esoterica is entirely useless in an interviewing context. I've interviewed a few people for language centric positions before and one thing I liked to ask was, "What feature or piece of this language do you find interesting or frustrating?" Someone who's worked a lot with a particular technology is bound to have something meaningful to say. I suppose they could just not be particularly thoughtful about their tools, but I like working with thoughtful people.
- pgeorgi 15y agoThe problem is with requiring knowledge about a certain set of "esoterica". Your question is fine: it's open-ended, the interviewees can answer whatever they feel like (and you can assess their knowledge of the language to some degree), and ideally you get a nice little discussion going, that also covers other topics. On the other hand "What's up with that explicit keyword and constructors in c++?" is a pop quiz questions.
- trustfundbaby 15y agoI agree ... as long as you don't use said esoterica as an immediate qualifier/disqualifier, it can give you an interesting insight the depth of knowledge a candidate has about a particular language. That being said, there are people who know crazy minutae but get into a team and simply can't turn out code at the rate you need them too, for whatever reason. Definitely have to watch for that and pay more attention to how they actually construct and write code.
- xsmasher 15y agoAgreed. I've met some "language lawyers" that know the standards and libraries by heart, but can't seem to combine them to solve problems. Or they can, but they create overblown space-shuttle architectures that solve a metaproblem that far exceeds the actual problem at hand.
- dalke 15y agoI've found that I don't think about languages that way. I think of things more like "I want to achieve goal X; what are the interesting or frustrating aspects with respect to that goal?" For example, someone asked me once about the warts in Python. I started thinking about complaints I've heard others say, like Python 2.x's "print >>fileobj" syntax. I understand the reasons for and against it, but I nearly only use print statements for debugging, so it's not one that I want to bring up. Or there's the lack of block syntax, which Smalltalk/Ruby developers love, but Python has different ways to handle most of the underlying requirements. So there I'm thinking about the different aspect of Python, trying to figure out which ones I want to bring up, but I hadn't fully considered the other issues with the language, in order to figure out which is the most relevant, but then, I don't know how to rank the relevancy because the question was structured without any rank preference. Now if you had asked "... when used for systems programming ..." or "... as a programming language for scientists ..." or "... compared with Perl ..." then I would find it much easier to give the thoughtful answer you're looking for. I had the same problem a couple of years back at our monthly Python meetings. We did a code refactoring exercise: given code, make it better. I had a really tough time because I couldn't figure out what "better" meant. The exercise code worked, although it mixed business logic, database interface, and presentation into a single file. But without an idea of the direction the code was supposed to go for the future, I couldn't figure out why anyone would want to modify working code.