I enjoy interviewing with different companies in different spaces.
Occasionally, I can’t get past the front door – some people get hung up on the fact that I do a lot of outside work and can’t believe that I can devote “full time” to a day job. These are always interesting conversations, having technical people talk to me about what I do in my financial life is always a bit tricky, for the most part they don’t understand the work I do or how I can manage time effectively.
Most of the time, I make it to a technical interview, which come in two flavors:
The worse of the two involves asking me relatively generic questions about architecture, design, or some esoteric framework questions, that I only know the answers to because I read too much Stackoverflow. I’m a fairly social guy and I can speak well, these “conversational interviews” are usually not much of a challenge. Occasionally, someone will ask me a good algorithms question, but that is pretty rare these days – and really, how many people are building systems heavily dependent on a good algorithm design?
The better of the two give me an actual coding challenge right off the bat – one of the online coding sites, or an open-ended “code this up and give us the code”. I love these, these are what I’m really looking for. Put up or shut up – and I have done both. Some of the more promising positions, products I loved, I failed miserably on their coding challenges (I'm looking at you Robinhood.io – it happens. It’s not often I have to write an integer to English language string representation in 30 minutes, or handle string tokenizing over a stream; I just don’t run across these use cases often, so it’s a bit off putting to write something on a short time limit; I always enjoy it, even when I know I’m going down with the ship.
I’ve had two instance where the coding challenge was exceptionally long.
The first a few years ago was for a quant trading operation. I’m not really looking to move from the Bay Area, but the guy’s office view (over Skype) might have enticed me, and I was looking for a new challenge. I was told I’d have eight hours from the start of the challenge to finish. GO! Write a program to simulate a tennis tournament (rules). A couple of prompts for set up variables, save the data to a database, output tennis language for the match. I don’t play tennis (contrary to my friend’s belief), I had some serious information overload and having no context sucked. No worries, I started plugging away, at the same time using design patterns I know I should have been using (but never actually used in practice) – this shit was being judged, code had to look good, show best practices, etc. In the end I finished in the 8 hour allotment with a few issues (I wasn’t proud of that code). The biggest issue was that player 1 always won - something was wrong with my random. I talked with their lead engineer for about 2 hours on the code, it didn't pass their muster - that's quite alright - but kids, pay attention, he said I had some grammatical errors in my cover letter and they nearly passed me over for that. Look it was 2am when I wrote that cover letter.
Earlier this year I had my second such challenge. This one was really up my alley. Build a simple portfolio management application (console or desktop). Connect to API for real quotes (thanks Yahoo). Save / Load from storage and provide basic portfolio analytics. I haven’t done desktop development in 10 years, but finance I know and I actually had a contract gig ~14 years ago to build a simpler, but similar application. This time my problem is that I know all the cool things I could do, so my code starts to have a ton of stuff that I’ll never actually get to implement because of time constraints. Additionally, I wasn’t able to take advantage of all the cool stuff I know desktop clients can do these days, because my experience is limited – async to keep the UI from locking, Observable Collections rather than throwing events and refreshing the entire grid. I never had time to color code positive and negative values, maybe one day I’ll clean it all up.
I love these interviews, but they are a ton of work and I’m finding it harder to devote a weekend to coding a random interview when I have plenty of coding for my own projects. I had to pass on a "weekend coding challenge" to build a full system - database, api, etc. I’ve got limits.