
Ask HN: How to keep yourself prepared for potential interviews? - hidro
I&#x27;m a software engineer with more than 5 years experience. There have been more than 1 time I am contacted by big companies for interview opportunities. And every time I find myself in a position where I&#x27;m totally unprepared for it.<p>I know the drill, and I know my skills. I&#x27;m not terrific with algorithm problems. I need preparation and frequent practice to stay sharp. In the past, I have tried spending 1-2 hours each day to practice. But as I gain more experience, I find myself spending more and more time working on side projects, exploring things that interest me, solving problems at a different scale. I can&#x27;t really keep myself motivated to practice random algorithm problems anymore.<p>I do want to be prepared when the chance comes, but I can&#x27;t balance my time. What would you do if you were me?
======
falcolas
To be frank, I have never gotten a job I've really enjoyed which required me
to know my algorithms in an interview. Such questions are a negative indicator
which indicate to me that the interviewer is more interested in showing off
than getting things done.

The only practice I keep up with is talking to people. Being able to maintain
a conversation with a non-technical person for more than a minute will has
furthered my career more than any amount of algorithmic knowledge.

~~~
joezydeco
This is great advice.

One good way to start is to take a project that you've been heavily involved
with and create a small presentation out of it. Draw up the architecture in
Google Docs, keep any confidential stuff out of it, add some screen captures.
Print it out and keep it in a small binder.

Practice explaining the project in under 5 minutes. Try it out on some friends
that might not understand the tech completely. Rehearse questions and answers
that people might ask.

Being comfortable speaking like this with management and future coworkers has
worked well for me, more so than FizzBuzz on a whiteboard.

~~~
jtheory
This is excellent advice specifically because it's not about "prepping for
interviews"; honing these skills simply makes you more valuable to any
company, and it's an aspect of your capabilities that you _can_ show off in a
decent interview process... so take advantage of that.

~~~
joezydeco
Just to add to my comment above, I recently did a round of hiring for a new
embedded engineer. I had a handful make it to the in-person interviews.

When asked about previous projects, almost every single one waved their hands
and tried to explain how they glued widget A to framework B and <magic> got
product C.

 _Exactly one candidate_ brought materials to show things he had worked on and
how the skills he used in those projects applied to the work we were doing.
You could see eyes light up when he was asked "so, tell us about <project z>"
and he smoothly pulled out some pages to show.

He blew everyone else away and got the offer.

~~~
collyw
Did you ask him to bring stuff in advance?

~~~
joezydeco
Nope. And I always carry materials on my interviews even if I'm not asked to.
It's not much more work to carry a small 3-ring binder along with the notepad
and resume folder I typically carry to an interview.

 _(Protip: always carry extra copies of your resume to interviews. There 's
always someone that is missing theirs and it's nice when you hand them an
extra copy)_

------
fsk
I reversed my attitude for interviews. If the employer has an interview
process that doesn't respect my time, my experience, and my ability, then I
don't want to work there.

My attitude isn't "As a candidate, I failed that interview." My attitude is
"That employer failed to have a process that enabled them to hire someone as
awesome as me." I know that I'm a 10x-100x programmer at the places I've been,
and if your interview process can't identify that, then that's your problem
and not my problem.

~~~
perdunov
My takeaway from being both an interviewee and an interviewer is that the most
correct attitude after a failed job interview is "We don't match each other".

The interviewer is testing their own ability to properly conduct a job
interview as much as they're testing the candidate. I realized it when I was
interviewing candidates myself.

Also, people and companies are drastically, surprisingly and ridiculously
different. You may fail badly at one interview, and it means nothing, you can
just move on to the next company and prosper.

------
darkxanthos
Always be interviewing.

This has a few advantages:

* You get practice and insight into interview questions

* you always have an idea of your worth

* interviewing stops being something you only do when you NEED a new job. Now it's just a day to day thing and it's less nerve wracking. You don't really want a new job so the pressure is off.

* you may find a much better job and decide to take it.

I'm sure there's more positives as well. The downside is it takes time away
from other things including work. As you do it regularly though you'll find it
takes less and les time since your resume is always up to date and you get
better at weeding out companies you wouldn't want to work for.

~~~
swombat
I wonder how you would feel if the reciprocal attitude was adopted by your
employer - i.e. if they continually interviewed potential replacements for
your position, to:

* get practice at interviewing people for your role

* have an idea of what your market worth is, so they can use this in salary negotiations

* stop interviews being a difficult process they only do when you leave

* keep the option of finding a better candidate and replacing you on such occasions.

I'm going to take a wild guess and assume you would not tolerate that from
your employer. It would show a lack of respect, trust, engagement, etc,
basically it would convey to you that your employer doesn't even care about
maintaining an appearance of giving a damn about you as a person. You've only
just started there last week, and they're already thinking about firing you
and replacing you with someone better.

Personally, whilst I think the attitude of getting upset because someone
leaves the company is immature, I also think your attitude is disrespectful
and shows such a contempt for the place where you're working, such an extreme
lack of even the remotest sense of loyalty, that I wouldn't want to employ
someone with your attitude ever.

This is without even delving into the fact that you're imposing a tax on the
system, taking time away from your current employer (presumably with this
attitude you're quite happy to pull sickies to cover your frequent job
interviews), as well as other potential employers (interviewing people costs
time and money; interviewing people who have no interest in changing jobs is a
total waste of money for the company). If everyone suddenly behaved like you,
regularly applying to even just a dozen jobs a year even though they have no
intention of changing jobs, the recruitment process would incur such
gargantuan costs that the economy would suffer, if not crash. Basically, your
suggestion above seems to convey that you only really care about yourself. At
least that's what it makes me feel from the really self-centred way you've
described it.

I'm sorry that this reads like a personal accusation, but you made statements
about your personal system of behaviour and I find that system deeply
objectionable.

If I got the wrong end of the stick (perfectly possible), please do correct
me...

~~~
jayvanguard
Companies do this all the time in various forms. Recruiting and HR are entire
departments at most companies.

Don't get confused and start acting like a corporation is a person with
feelings.

~~~
jacquesm
Ah, but some corporations are run by people with feelings. And for small
corporations the situation is a bit different than for a larger one. The
turning point is roughly around the time the CEO no longer knows the first
name of everybody that works in the company.

------
sumitgt
I have reached a point where I am comfortable enough with implementing things
that I do not need to practice as long as I understand how it works. So I get
to spend all my free time on side projects just like you.

I have a set of downloaded algorithm lectures by Robert Sedgwick from Coursera
(text version:
[http://algs4.cs.princeton.edu/home/](http://algs4.cs.princeton.edu/home/))
that I watch before every interview. I make it a point to do this even if I
think I remember it well. In fact, I now know parts of the course so well,
that I can watch it as 2x speed in VLC, and that refreshes everything in my
mind.

To be fair, I'm still in college, and all my interviews were for internship
positions and algorithms focussed, so it might definitely differ from your
situation. However, what I learnt from this set of videos has never failed me
with any of the big companies.

PS: I use scripts like these ([https://github.com/coursera-
dl/coursera](https://github.com/coursera-dl/coursera)) to download useful
courses from Coursera that I can then watch before interviews.

~~~
mojoe
How many hours does it take to watch the full set of algorithm lectures that
you downloaded, even at 2x speed? That sounds like a significant amount of
time.

~~~
sumitgt
Takes me a day

------
hopeless
Stop drilling pointless "interview questions" and instead prefer employers
that value your ability to do the actual work.

If you can build and ship side-projects your _preferred_ employer will hire
because of that, not some tricky interview question. You can safely reject
employers that want to, if you get the analogy, hire scrabble players instead
of writers

~~~
hopeless
also, what a sad indictment of the tech sector when someone thinks they need
to spend time practising interview questions instead of actually, ya know,
programming. Crazy stuff

~~~
whatthehack
When camels are on sale in the markets, buyers look at the animal's teeth to
find out if its a good healthy camel. They don't like to go and do scientific
health checkups. Same with tech candidates. Its better to brush up on algos :)

~~~
RogerL
Phone interviews, take home projects, all day grillings, we can't decide, come
back for more grillings, is not 'looking at the teeth'. Looking at my resume
and asking me to explain something on it is inspecting my teeh.

------
pathikrit
Do something like TopCoder SRMs or CodeForces rounds. They are not only fun
but they take up only about 2-4 hours of effort per week. You can judge
yourself how well you are doing compared to college kids and competitive
programmers. After the contest, read the editorial about the problems that you
could not solve during the contest.

After about 3-6 months of this, I can confidently say, I can pass the pure
algo/data-structure rounds of any company..

------
6d0debc071
> What would you do if you were me?

Ignore recruiters unless I was actively looking and start practising whatever
the relevant set of questions; silly flash card memory tricks, etc; were if
that became true.

------
iamthepieman
I just do interviews constantly. Not frequently but I keep my resume updated
and keep alert for relevant positions and some position that aren't an exact
fit as well. I will respond to recruiters and do interviews until I am pretty
sure that its not a good match. If I happen to find an awesome company to work
for in this way then that's just an added bonus. Basically I'm always on the
lookout for my next job.

------
g8gggu89
It seems like you've already identified that the problem is you needing to
know 'algorithm problems', so I would work on that. You shouldn't need to
memorize hundreds of random problems. I think a few simple (not requiring much
time to learn or to maintain) things would go a long way if you really are
willing to make yourself put in some effort. Learn how to do basic big oh
analysis. Learn how to apply recursion to simple enough problems, like the
boggle question. Learn how merge sort and quick sort work and be able to
implement them (they're not even that many lines of code). If you're already
working on side projects and solving problems at different scale, that should
help you naturally stay up on these things. Being able to talk about different
libraries you learn and how you worked at different scales should also be
valuable during an interview.

------
Nimi
Found myself in similar situations in the past. My tentative solution was to
maintain a corpus of resources for practice (beyond the usual suspects of
implementing the standard data structures etc.), and hope that when the chance
comes, 1-2 hours each day for a week before an interview would suffice. And
when I do practice, I don't use a code editor, either paper or plain editor
with no way to execute the code, simulating the (horrible) conditions of
interviews as best as I can.

Obviously, this doesn't get you the benefit of being constantly drilled, but
should provide some advantage. If you do care enough to get yourself a bigger
advantage, maybe try to clear a few weeks before a round of job searching (if
that's how you operate), then use those weeks for a few hours of practice each
day.

------
fsloth
I do the same as you. For me it's far more important to maintain energy level
and motivation in self improvement projects than to do some specific trick
question kata for a hypothetical interview. Some people like those, I can't
stand them.

I get a huge kick from algorithms when they solve a specific problem at my
current problem elegantly. I suppose for me my algorithm learning plan is to
constantly ask myself "what is the simplest form of data that I need and which
algorithms then process it most elegantly for my current problem".

The only thing I know for sure is a) people learn differently b) each must
find a learning strategy that fits his or her strengths the best.

------
guest
The real question is not how you as a well educated computer science
professional stay ready for interviews. The question is whether or not the US
economy is going to be able to handle integrating and making use of modern
technology in an efficient way, or if the US software industry will be
collapsed by incompetence in the same way the US auto industry was.

------
freedevbootcamp
Always be looking for a job. Always be interviewing. Because recruiters are
whores your boss will find out. Just tell them that you are looking for a part
time job. Schedule all your interviews during lunch or after work.

------
eranation
Interview cake newsletter is a nice weekly refresher to keep you sharp

------
dominic_cocch
Interview Cake is great:
[https://www.interviewcake.com/](https://www.interviewcake.com/)

