I'm a mid-senior level software engineer with 5+ years of industry experience and making $100,000+. I don't consider myself a bad software engineer, and yet I can't seem to solve some basic problems on a white-board in 30-60min (i.e. traverse a heap, merge sorted arrays etc).
I joined my company as an intern ~5 years ago & when I interviewed for the position I didn't have to solve any white-board style interview questions etc., since it was an un-paid internship. After a few months I had demonstrated my ability to write code they made me an offer.
When I now casually look around and apply for mid-to-senior level positions I cannot seem to get past phone (coding interview) part, that involves solving some basic algorithm on collabedit. I get nervous and given I need to solve (perhaps a simple) problem in an optimal/sub-optimal way in 30 minutes, my brain sort of shuts off and I cannot arrive at a clean solution, let alone solve the problem end-to-end.
I'm respected within the company, if you were to ask any colleague I have worked with whether I can write clean testable code that solves real business problems, everyone would attest that I absolutely can.
How do you create that environment of - "Coding under pressure and someone looking at your code while you're trying to think of how to solve a problem and your brain is thinking about everything other than a problem itself"???
One idea is to just keep applying and failing until I become immune to it. But each failure kind of brings me down, and makes me think that I'm a bad engineer.
Last thing I want to mention is that I don't blame the process itself. I think white-board style questions eliminate a lot of bad candidates.
I know that the process has to be rigorous because those jobs pay well. But there's also extreme examples like the inventor of homebrew that got rejected by google because he couldn't reverse a binary tree.
What’s your goal? I assume, get a new, higher paying job. What’s the barrier? Interview style coding problems, apparently.
So, things that will help you achieve your goal (IMHO):
- Buying and reading cracking the coding interview
- practice solving problems on sites like hacker rank and leet code
- when you practice, try simulating interview conditions. Use pen and paper or a whiteboard if your interviews will involve that
The more familiar and mundane the problems become, the less likely you are to feel nervous with an audience. Just practice the problems until it is like tying your shoes.
If asked to tie your shoe with someone watching, would you be so nervous as to be unable? If so you may have some serious anxiety issue you might want to work on before starting a job search.
Things that definitely won’t help you achieve your goal:
- ruminating on life’s injustices
- ruminating on your own shortcomings
- comparing your self with others
- ruminating on the decidedly capricious and error prone hiring practices of Silicon Valley companies.
Life is not fair and there is a time and place to think about those things. But doing so is counter productive to your goal, so I wouldn’t recommend it at the moment.