Hacker News new | ask | show | jobs
by asher 3474 days ago
I'm at shopkick. We're a mobile app. We hire server, Android and iPhone engineers, but many will move across these platforms. We look for smart generalists. So, although we use Python on our servers, we don't expect server candidates to know Python.

Advice for senior engineers: brush up your practical programming. If you've been in an architect/leadership role, you may be rusty. Make sure you're comfortable on both whiteboard and keyboard.

If you spent the last 5 years writing iPhone apps, we expect you to know iPhone development pretty well. Memory management is the obvious area here.

Be ready to explain the most recent projects on your resume. Think outside the box - if you wrote code to process messages from a black box, how do you think the black box worked? If you consumed JSON messages, how much can you explain of JSON and JSON parsers? Many projects are so narrow in scope that we can't have a meaningful conversation about them, so be prepared to broaden into adjacent areas.

Advice for new grads and early-career engineers: have some solid, non-trivial code on github (or equivalent) and make sure we know about it. Be prepared to discuss it and explain design decisions. Few do this.

This post is my take on the question - what follows is especially subjective and not representative of shopkick:

Don't put stuff on your resume that you don't know. Or, brush up the skills featured on your resume.

Learn a scripting language, especially if you're a server engineer. People who only know Java/C++ are at a big disadvantage if they have to write code in an interview. How big? Turning a 5 minute question into 35 minutes is typical - and it gets worse. One very smart, very experienced man took 45 minutes on such a question. Of course, don't just port Java idioms to Python; learn Python idioms. Good languages are Python/Ruby/Perl. I think a HN reader probably doesn't need to be told this, but just in case. Properly used, scripting languages teach techniques which carry over to compiled languages.

Server engineers should be comfortable with either vi or emacs. And with basic Linux. Personally I find it astounding that a server candidate would be unfamiliar with ls and cat, but it happens.

I hope this is helpful and doesn't sound arrogant.

1 comments

Everything you said jives with me, with the exception of emacs. I know it's a religious topic to some, but I have to ask... do you regularly see servers without vi, but with emacs installed?
I guess I phrased that wrong - I think server candidates should know vi or emacs. No need for both.
Yeah that makes sense. I would say that everyone should know enough vi to get by, even if it's not their editor of choice, although I suppose there's _usually_ nano or pico.

After I posted my previous response I realized that I actually know a few emacs keybindings thanks to tmux, even though I've never used the editor. I use a lightly modified vim on my laptop, but I think it's best to learn enough of the defaults (of any application/utility) to speed up your workflow on a new host.

I guess this asks mainly is to weed out those who are not truly 'Nix-ish' people...