Ask HN: Career advice needed

20 points by UsernameTaken3 ↗ HN
Dear HN,

I am PhD student graduating soon and I am looking for career opportunities. I am having trouble with the job hunt though.

A little bit about me... I am not software engineer, but I do lots of programming in C/C++/OOP. I have done some advanced things, wrote many lines of code, and completed many projects. The catch is that I do all of my programming with the help of the interwebs.

I also work with the TCP/IP abstraction. My research is in the networking field where I try to improve communication streams. I test protocols, modify them, design them, implement them, whatever I need to do. I usually do this using C/C++.

I have an interest in security and cryptography. I took a few courses at school and I follow some online courses and forums. I implemented some crypto things for fun, such as AES-128 ECB, from scratch. I also worked on blockchain projects that required crypto knowledge and implementation of related methods. I implement my security/crypto projects in C/C++ as well.

The problem is that I am doing these job interviews where they ask me about implementing something for a BST or something similar. I am not successful at answering interview questions of this type. I understand the logic behind them but I do feel that these types of interviews are inadequate at measuring a candidates potential. Am I applying to the wrong jobs? Any suggestion are appreciated!

Thank You!

20 comments

[ 2.8 ms ] story [ 53.1 ms ] thread
Congratulations on the PhD and welcome to industry! This is your introduction to the bizarre hazing ritual we've had going for decades. Many many companies use the algo/ds knowledge filter as proxy for IQ test.

You get to decide between a) drilling leetcode for a couple of months, at which time you know the shibboleth and whisper it at large swaths of companies to gain admittance; or b) look for companies that go with a more liberal but likely still uncomfortable interview ritual.

Any examples of companies that are more liberal would be really appreciated!
> Am I applying to the wrong jobs?

I believe you're applying to the right jobs, it's probably just that the interviewers are trying to do what they think is the "popular" way of going about technical interviews.

Best way to handle this IMO - ask yourself: Are you ok with putting up with this in order to get the job? If so, study study study. Buy the recommended books (there are tons of HN threads on this topic) and study! However, if you decide that you're not going to be the monkey boy for anyone, only go so far as displaying that you know the fundamentals of sound programming (e.g., binary search, linked lists, all basic data structures, etc). None of the crazy/wacky/never-used stuff.

A lot of modern interviewing isn't about finding talented programmers, it's about finding those who know how to follow their (albeit implicit) rules. You study, we give you the job, you don't, we won't.

Edit: change "the" to "your" in last sentence

> A lot of modern interviewing isn't about finding talented programmers, it's about finding those who know how to follow their (albeit implicit) rules. You study, we give you the job, you don't, we won't.

From my perspective it feels like that. For some reason, it also feels like there is a gun pointed at me when doing these kinds of job interviews.

You are right, these questions are generally a terribly signal towards your capabilities or intelligence. They require a disproportionate amount of effort on your part. Now that we got the complaining out of the way, if you are interested in getting jobs in this industry, I'd recommend practicing implementations of these standard questions in your favorite language and just saving them somewhere to review occasionally. There's a pattern to most of the questions and they usually tend to fall on figuring out an algorithmic trick or using a special data structure. It's ridiculous how many things are solvable in an efficient manner with a hash table...in a contrived interview question that is ;)
For my next interview I will start talking about hash tables and hope for the best!
Well obviously make sure that it's the appropriate solution. I just find that many times the solution tends to favour a data structure which allows for constant time access. It really depends obviously on the interviewer.
(comment deleted)
Everyone complains about the white-board interview. And I get it: They are lame. But developers have been dealing with them for years, nobody has managed to kill them yet. You gotta learn to live with them.

These interviews are looking for specific things while you work through these problems. They do not necessarily want you to answer the question exactly correct. They want to see you work and see where you are at.

Intro level jobs are competitive right now. The search will be slightly harder but there are still jobs out there.

Know what is happening in these interviews before you go into them. There are a number of books specifically about code interviews and how to pass them. Read them. STUDY FOR THE INTERVIEWS instead of complaining as if you are owed a job.

None of us like the whiteboard interviews. It is a good dog-whistle for a good education which, despite what people say, is still worth something to these companies.

> STUDY FOR THE INTERVIEWS instead of complaining as if you are owed a job.

This isn't a bad point, though it would be stronger if you approached the subject with empathy. OP is clearly intelligent, but they're frustrated by a difficult, opaque process. Imagine yourself in the situation and try replying with some empathy.

I will study for any interview, I do not have a problem with that. During the interview when they asked me about BSTs, although I never used them in my life, I was still able to write some code using the instructions given by the interviewer. I can imagine that if I studied for them I would have done just fine.

When the interview was setup I was told it was going to be about gdb/valgrind. When the interview took place, BSTs were involved, I answered the basic stuff such traversing it, finding the min/max, some other functions, but I was not able to answer some tricky questions later towards the end.

That's fair, I should have been nicer. I am sorry.

I do still highly recommend picking up a book specifically about coding interviews as I have found them helpful

> feel that these types of interviews are inadequate at measuring a candidates potential

This isn't meant to measure potential. It also isn't to make you feel good about the process. It's to give the employer some assurance that the candidate can think through not only the problem but how to implement a solution. It's not enough to understand the theory and be able to write whitepapers about it. It likely exists because other candidates have got through the process but were not effective. It likely won't apply to you, but they just want to do some up-front filtering. If you want to find a research position that doesn't involve implementations as a deliverable, then perhaps you could apply for those if they exist.

>It likely exists because other candidates have got through the process but were not effective.

No, just someday someone decided to add this to interview process.

Exactly what kind of jobs are you applying to? Are they mostly software developer jobs?

I hate these kind of white board coding questions, but if its what you need to do to get the job you want, why not just bite the bullet and practice these kind of coding exercises? Clearly from your experience you are capable of learning/memorising this stuff..

Yes its a pain in the ar*e but if its what you need to do then its what you need to do.

My $0.02:

- try applying for an internship. One of our swe has a PhD in chemical engineering. They pivoted their career but started as an intern.

- are you looking for a job in the US? Are you a US Person (citizen or perm resident)? if so, be sure to explictly state that. Don’t just say authorized for work in US. That could mean OPT and many companies won’t bother with that and won’t bother to investigate. In general US companies are not allowed to require us citizens but they are allowed to require “perminant legal right to work in US”. That means citizen or green card.

Unfortunately I cannot do internships as I am out of time/graduating soon. Also, I was not able to do any internships during my program due to many reasons outside of my control/non-negotiable.

I am outside the US.

Let's get something big out of the way. Interviewing sucks. Interviewing after spending enough time in academia to get a PhD sucks even worse. I would equate it to devoting your entire adult life to learning how to think, then approaching graduation, needing a job and suddenly needing to learn how to think all over again. That's frustrating and you're pissed off for good reason.

An interview process is always hard, but I think you're in the midst of an exceptionally hard process. How are you caring for yourself? What do you do to relax?

My best advice, based on many frustrating interview processes is that when you're going through hell, keep going. That's been attributed to Winston Churchill, but I don't have time to research whether that attribution was correct.

If you keep going, you will get something. You're very, very smart. You can do this. You will do this.

Best of luck and if you need to vent, my email address is on my profile.

Thanks Hluska! I appreciate the venting option! Very little time to do things around here. My life is research, school work, course TA, chores around the house, and finally my favorite part, 6 - 8 hours of much needed sleep.

I will keep going at it, but these kinds of job interviews are definitely a turn off from the company itself.

1. Find a company that doesn't do irrelevant whiteboard/puzzle interviews. Here's a list: https://airtable.com/shr5TdnpVYVTpeRrN/tbluCbToxQ2knSLhh

2. Negotiate the terms of the interview: "hey instead of whiteboard puzzles here is some code I wrote that demonstrates my abilities."

3. Practice these, if you don't get anywhere. It's a bunch of work, but they tend to be repetitive. But you can also take control of the interview, e.g. by saying things like "I will write tests first", and sometimes the process for solving will impress them too.

Long version: https://codewithoutrules.com/2018/07/29/getting-a-job-withou...