5 ms·
I agree with some of what you said here, and maybe i have misunderstood what you're trying to convey, but allow me this little rant here... Some of it seems ex
by deanproxy 15y ago
I agree with some of what you said here, and maybe i have misunderstood what you're trying to convey, but allow me this little rant here...
Some of it seems excessive. I've been developing in C and Java for 11 years now. I make a tad under $100k and live in Atlanta, Ga. I have yet to need to know or discuss failure modes of the GC by heart, how to detect them and work around them by heart, how the JVM team did generics and possible alternatives, nor to know keyboard shortcuts by heart. I have however come across these things in my career and had to takle them. Guess what I did? Googled. Then I got back to writing code, what my job soley exists for.
It seems absurd that any company would require these things. If I was interviewed at a company asking me to talk about these things in the interview, I would walk out simply because I would feel it was completely irrelevant to how good of a software engineer I am. I really hate being interviewed by people who are more interested in asking obscure questions that just want to prove how smart they are (when we all know they probably just looked up that question/answer before the interview), rather than talk to me about coding and problem solving.
Things like memory use, basic algorithms, what design patterns are, collections, code quality, software development life cycle, unit testing, general coding problems, maybe some things about hibernate (if you use it), basic database knowledge, their favorite language and why and let's not forget overall personality and how they will fit into your team are far more important areas to cover. Not some obscure questions that will be used maybe once in your lifetime or on extremely rare occasions at the new job that can also be looked up on google when you need an answer for that rare occasion.
I even shutter when I think about design patterns being discussed because they're so over used and bad developers focus way too much on putting well known ones into their code base even when it may not be called for and just create so much more bloat for no good reason other than to feel like they're smart. An understanding of design patterns is great, but forcing people to describe any of them but the well known basics is just dumb.
The interviews my team gives exist around these things and I can honestly say we have yet to hire someone that didn't know their stuff very well and fit into the team nicely from the start.
I have only been without a job for a max of 3 months when I was laid off once and I have job hopped a lot, especially in my early career (which, there is a dirty secret there... That's how you make more money when you're staring off!). I have walked out in the middle of interviews before when it was clear that the person was asking obscure questions just to feel superior. I don't want to work with people like that...
Interviewers need to focus more on asking questions that software engineers face on a daily basis and less on odd and obscure things that can easily be researched in a short amount of time online when and if the problem ever presents itself.
I apologize if I got off topic or missed your point entirely. I was just having a conversation with someone about this very thing and it seemed relevant based on what I read.
- earl 15y agoWell, obviously not everybody knows everything and if you're a great candidate but you've never had gc issues with the jvm, any good interviewer will shrug and move on. Also, and I hope this was obvious, but my comments were directed at experienced engineers and new grads are graded differently. But knowing basic data structures? That's doesn't make a good candidate, that's a low bar of a prerequisite. And if you haven't put the effort in to learn at least one editor -- and I don't care of it's vim, emacs, eclipse, visual studio, intellij, etc -- really well, I'll give you a thumbs down. I'd expect someone to know how to use bash and the unix toolchain as well -- the ability to use the shell + command line tools will save you lots of time, and I'd be pretty pissed if I saw a coworker blow a day writing in java what would take 5 minutes in {bash, command line utils, ruby, perl, awk}. I expect particularly people whose strongest languages are java or c++ to know about design patterns. Saying you hate them and giving a good reason (I agree) is fine. But you ought to know what some of the common ones are. Similarly for generics -- most good java engineers have probably wondered at some point why eg if AA is a subclass of A, why ArrayList<AA> is not a subclass of ArrayList<A>. There are lots of different designs for generics, with different strengths and limitations, and I would be surprised if a great candidate hadn't been exposed to more than one design and spent some thought or an afternoon reading language blogs. Etc etc for gc. tl;dr -- knowing basic data structures doesn't impress me; if you don't, we'll just end the interview early and have a discussion with our internal recruiters into how the fuck such a bad candidate got brought in. And my description above is what it takes if you want me to go over to the vp of engineering or cto and say do whatever it takes to hire this person.
- nl 15y agoI have yet to need to know or discuss failure modes of the GC by heart, how to detect them and work around them by heart Knowing - and having experience of - the failure modes of your platform is one of those things that is invaluable. Knowledge of GC issues in the JVM is something that indicates (a) you've worked on applications that tax the JVM, and (b) you are the person who people turn to when the shit hits the fan. Sure, Googling will help here, but you need to have a pretty good understanding of the problem space in order to understand what to Google for. For example, how do you get from "the application is slow" to a query for "sizing the New Generation in the JVM garbage collector" unless you already know when to suspect GC issues, how to use jvmstat etc etc?