What will more effectively convince a hiring manager that you can produce results for them? Should you focus on making products? Should you complete programming challenges?
Past results are the best evidence of future results. But it’s hard to beat solving a problem before the eyes of your interviewer. Here’s Raul’s question:
Candidate Question: Preparing For Interviews
It’s me again! with another question. I’m interested in what you think.
So I’m deciding on where to put my free time, building something or practicing algorithms/DS problems, to get the better job/opportunities out there.
I believe that someone can learn how to build something in their normal job but in opposite, they need to study/practice specifically for algorithms/DS to be good at it.
Do managers think that a candidate should be expected to know how to build things just because they have worked before in a related field? and go straight to algorithms/DS questions because they want to see how the candidate thinks? or will they care about the candidate showing them what they have built and will not be very strict on your algorithmic/DS skills?
How does this work? what is you opinion? What is more impressive to you or for what do you look into a candidate when you hire him, that he has actually answered your algorithmic/DS questions or that he has built something?
For example: I had some coworkers that were really good at building whatever you liked but they did not know what Big O, BFS, DFS, Binary trees were etc…
So they clearly won’t be able to answer most technical questions on an interview but they are really good at building something.
Thanks for your time!
Thank you for your question, Raul. Before I give my own answer, realize that there are many important abilities that you need in order to be an effective worker. Managers often call these competencies. Each job opening will have three to five competencies that the hiring manager considers essential.
In this case I’ll limit my comments to a vague technical competency.
Results Matter Most
In short: a manager hires a candidate because she believes they will produce results. More specifically, the right results in the environment of the company she is hiring for.
The future isn’t known yet. So a manager has to guess at what information will most reliably predict good future results.
Time and again the best predictor of future results has been shown to be past results.
While it might sink you when naïvely applied to the stock market it’s really the first rule in hiring.
Have a Portfolio
If you have a product you’ve created yourself, and it’s sharp, then put that in your portfolio. That’s one of the best bits of evidence that shows you really can produce future results.
Unfortunately, many people don’t have compelling products they’ve made in isolation. When they talk about past results it’s often difficult to tease out what exactly they did versus their team. (I’m sure you’ve been part of a team with some free riders.)
No matter how good a portfolio a person has I want first-hand testimony to add to my list of evidences. I have a short list of people I trust enough to give a recommendation that fills that need for me. If you don’t have that kind of referral then I’m going to want to see you work.
Be Prepared to Audition
When I give a candidate a sample problem and ask them to solve it with me I specifically do not want them to solve it from memory. If the solution comes too easily then I’ll give them another one. I need to see them think.
At the same time, I don’t want to see them think abstractly. I don’t use brain-teasers or riddles. I ask them to solve a realistic problem that lends itself to basic analysis and problem solving.
- Do you think to restate the problem?
- Do you seek to divide it into smaller problems?
- Do you build up a solution using composition, looping, and branching logic?
These basic skills will be second nature to a developer that has really delivered solutions in the past. They will be a challenge to a scripter that has mostly use the search, copy, mutate formula for hacking together solutions.
If you haven’t formal training in computer science, or your past projects have been monotonous, then you might want to beef up your problem solving skills with intentional practice solving programming challenges.
Should you develop portfolio projects or should you solve algorithm problems?
- Have at least one solid portfolio project. Sharp and created (nearly) entirely by you.
- Be well practiced in learning new tools and finding novel applications. You might demonstrate these in one-off experiments in your portfolio.
- Know how to divide and conquer, recurse, and loop. (You can practice this a lot in programming challenges.)
In general I don’t hire you for the algorithms you’ve memorized but for the results you’ve produced with those algorithms. Tools (like algorithms) help you deliver. And you can’t use a tool you’ve never learned.