
Always Be Coding – How to Land an Engineering Job - davidbyttow
https://medium.com/tech-talk/d5f8051afce2
======
nbroyal
To properly prepare for these interviews you have to invest quite a bit of
time. At this point in my life (late 20s), my time is one of my most valuable
resources. So, the last thing I want to do is spend that time effectively
preparing for a data structures and algorithms exam. Each time I sit down to
brush up on the details of Prim's algorithm or the exact implementation of
quicksort, my eyes glaze over and I start thinking about how I'd much rather
be building or tinkering with something. So that's what I end up doing. The
interesting thing is that actually building stuff is good enough to get you an
interview, and, even though you've proven that you can actually code, you get
funneled through the same inane interview process.

And here's the kicker: none of this truly indicates if you have an exceptional
software developer on your hands or not. I've seen (read: personally
interviewed) people who've aced the current, en vogue style of questioning who
turned out to be awful developers and co-workers. Meanwhile, I know several
excellent engineers who were rejected. Everyone knows the process only kind of
works.

SV loves to complain about a talent shortage. And maybe there are pipeline
problems that need to be addressed. However, why not invest more time in
finding a process that's more effective with the talent that's already out
there? It always seemed like an obvious place to start, IMO.

~~~
31reasons
I feel exactly the same. I can master any and all graph algorithms under the
sun if I want to but why? Just for a job? I would rather be building things.

~~~
kamaal
Adding to that its not ever worth that much trouble.

    
    
        1. Master algorithms.
        2. Get a job at <insert a big famous web company>.
        3. ???
        4. Get rich.
    

What exactly is 3) ???.

Really if you are joining a big company. Whatever that company is. Way to
financial safety is not mastering algorithms and data structures. Its more
like knowing how to do politics, being your manager yes men etc.

And very rarely are you ever going to get some work where its going to demand
some algorithms mastery.

~~~
rdtsc
For CS graduates from some big name colleges that go to work on Wall Street or
other "finance" it is:

    
    
       1. Master algorithms
       2. Get a job at <...X...> & Co.
       3. Use Excel all day everyday
       4. Get rich.

~~~
taude
I interviewed at 7 investment banks on Wall Street after college. Never took
any of the jobs, however, I had friends who worked on Excel spreadsheets that
managed 100s millions in capital. This always amazed me.

~~~
rdtsc
They just want smart people in general. CS or not doesn't matter. It still
baffles me that they ask algorithms and CS questions then sit in you front to
Excel.

------
kanzure
Hiring is entirely broken. I don't think anyone is listening to developers. I
took some data about this (tracking pixel in a Developer Auction profile), but
someone did an even better job than me and posted in these comments:

<https://news.ycombinator.com/item?id=5730843>

I want a company that treats me with dignity and respect, even before and
during the interviewing pipeline. How a company treats people during
interviews is a huge indicator of how they treat people in general. I would
never subject my friends or family to the hiring practices that programmers
are exposed to regularly. Be proud about how you hire. Otherwise this weighs
heavily when I reject your offer.

I want a "1-hour guarantee" that I'll receive your considered offer after one
hour of interviewing, and not multiple hours of hazing. Otherwise, I'll stick
with consulting, thanks. Maybe there should be a site that compares the
interviewing pipelines of different companies, and then you can focus on the
ones that aren't entirely offensive.

Also, it would be awesome if one of you would actually look at my git
repositories before the interview and, you know, actually read my code. No,
looking at a "repository summary" doesn't count.

~~~
codex
Bootcamp in the Marine Corps is an example of a tough hiring practice. Are
your friends and family doctors or lawyers, per chance? Both professions use
grueling hiring marathons which are much, much worse than a software
engineering interview (residency and the bar exam). All other engineering
professions require a rigorous licensing process, whereas software engineering
is one of the cushiest jobs on the planet. In none of these professions do
they accept a casual "hey, take a look at this portfolio" means of quality
assurance. That's too easily faked. They test you, actively.

Standing in a room for a few hours writing on a wall is not exactly hazing; to
say it is reeks of entitlement, especially when many software engineering jobs
have a public trust: safety, privacy, reliability, and correctness standards
that demand a certain level of rigor. Software engineering is a very hot field
right now, and developers are in demand--but that doesn't mean you should turn
up your nose at companies that maintain their own stringent standards of
hiring.

~~~
ap22213
In a certain state of the economy, you're right. But, at least here in the US,
we currently have way more demand for good developers than we have supply.
Basic economics says that your model will not work.

For example, the company for which I work bills me out at $250 / hr. I get
something like 15-30 job requests from other companies a week. It would not
make any economic sense for me to pursue any of these other companies unless
the interview process was dead simple, transparent, and easy (and the total
compensation was _at least_ 15% higher than my current compensation). But, 99%
of them will only offer modest pay adjustment (%2-3?), and then they expect me
to sit through several hours of interviews. And, if I pass that nontransparent
process, they ask me to sign a ridiculous employment agreement that signs away
all my personal IP. Seriously?

The problem with recruiting today is that most companies who have good talent
understand how valuable their best talent is. They treat them very well. And,
the companies that want to obtain that talent completely under-offer their
side of the deal.

Another problem is that most developers suck at negotiation. I see lots of
anger on HN about not getting the 6-figure salary. Well, that's their fault
for not asking for it. If they're a relatively good developer (top 25%), they
should be making at least 6-figure, easy. And, if they're not, that's their
fault, not the fault of others that know their value and how to demand a cut
of it.

~~~
mason55
_> But, at least here in the US, we currently have way more demand for good
developers than we have supply. Basic economics says that your model will not
work._

The problem is that hiring someone who can't code doesn't help me. And a bad
engineer is worse than no engineer at all.

It's not like a grocery store where a bad employee is just really slow and a
really bad employee steals things costing me a percent of a percent on my
margins. A single bad engineer could theoretically destroy a company if they
were savvy enough.

Pretty much anyone who does technical hiring will tell you that it's way worse
to hire a bad candidate than to not hire a good one and interviews are tuned
for that. It's the opposite of the American criminal justice system. A no-hire
doesn't mean you're a bad candidate but a hire recommendation is very likely
to mean that you're a good one.

~~~
freework
> A single bad engineer could theoretically destroy a company if they were
> savvy enough.

This sentence does not compute.

Anyways, I think a big portion of the "hiring problem" is that companies are
too afraid of hiring a "bad" developer. They somehow have this notion that if
they fail to hire a great developer then its no big deal, but if they
accidentally hire a bad developer, their company will all go to shit. This
results in crazy interview multi-hour processes.

In the real world, the worst employees rarely ever negate the work of more
experienced workers. Thats like saying if you hire a bad teacher, students
will forget information rather than learn.

~~~
karlmdavis
> Anyways, I think a big portion of the "hiring problem" is that companies are
> too afraid of hiring a "bad" developer. They somehow have this notion that
> if they fail to hire a great developer then its no big deal, but if they
> accidentally hire a bad developer, their company will all go to shit.

I've worked in organizations where the hiring process the OP is advocating for
(short one hour, possibly non-technical, interviews) demonstrably led to
serious problems in that organization. Have you ever sat in on technical
software engineer interviews? It's beyond horrifying how many developers I've
seen that have a great resume, a decent portfolio, talk a big game, but
literally can't solve a fizzbuzz-style problem on a whiteboard. I'd say the
percentage in my area of developers who fail at this is at least 80%!

Think about that... if your hiring procedures are lax, possibly 4 out of every
5 developers on your team will be ludicrously incompetent. I don't care how
tight the hiring market gets; dumbing down interviews is simply not an option
with those kinds of odds.

If you haven't already seen it, you should read Atwood's article on the same
subject: "Why Can't Programmers.. Program?" [1].

[1] [http://www.codinghorror.com/blog/2007/02/why-cant-
programmer...](http://www.codinghorror.com/blog/2007/02/why-cant-programmers-
program.html)

~~~
freework
Youre under the assumption that "can't do fizzbuzz == can't program", "can do
fizzbuzz == can program", which isn't true.

I'll tell you a secret. The first time I was asked to do fizzbuzz in an
interview I got it wrong. It was about a year ago. I have been programming
sine I was in middle school (I'm 29 now). Walking out of that interview was
probably the worst day in my entire life.

Ever since then, two things have happened. First, the lines of fizzbuzz are
forever etched into my mind. I can recite fizzbuzz verbally now. I don't even
need any writing utensil. For i in xrange 1 comma 101 colon if i mod fifteen
equals zero colon print "fizzbuzz" elif... [and so on]". This has come in
handy in interviews since. All you have to say is "fizzbuzz" and I go ahead
and write away. I don't even need the interviewer to explain the actual
wording of the problem.

And the second thing is that I now have absolutly zero interrest in hiring a
company that has fizzbuzz (or any other live coding portion) as part of it's
hiring process. If I'm at an interview and the interviewer tells me "we're
going to write code now", I'm done. If the problem is interesting I'll do it,
but if it's fizzbuzz or anything having to do with reinventing something, I'm
done. Not gonna work there.

I've struggled to put into words how to describe why I think live coding is
such a terrible thing to ask candidates during interviews. Joel Spolsky makes
a great point thats hard to argue against. If you're hiring a guitar player,
you want to hear him play. If you're hiring a programmer, you'd first want to
see them write code. I think the problem is that programming is kind of more
like song writing. You can't ask a song writer to go the white board and bang
out a new song. Even if you tell him exactly what the song should be about.
Song writing is a process, and so is programming.

------
archer174
Every time I read the word passion in one of these articles I cringe. This has
to be the most overused word in silicon valley. It's really just a convenient
way to abuse people. Can't work 90 hours? Not passionate enough. Have a family
commitment? Where's your passion? Passion. We get it already.

~~~
MisterBastahrd
Every time I read "engineer," I cringe. I don't give a crap how fantastic you
are at programming, if you don't have a college degree then you aren't an
engineer.

~~~
h0w412d
So your title isn't dependent on your accomplishments or abilities, but only
your schooling?

~~~
MisterBastahrd
Can you call yourself a lawyer because you enjoy reading your state
constitution? Can you call yourself an MD because you read r/poppit? No.

Engineer is a professional designation. It requires a BS, a series of exams,
and years of work experience. Engineers are regulated by professional
organizations. Unless you've gone through the training and the tests, you
aren't an engineer. You're a developer.

~~~
geebee
I disagree. In the vernacular, the term engineer is more casually used, like
scientist. Lawyer means member of the bar, Physician means licensed to
practice medicine. Engineer has multiple meanings depending on the context. A
patient in a hospital would be confused by a literature PhD claiming to be a
Doctor. I don't think a "sound engineer" or "special effects engineer" should
apply for a job in a construction firm with the title "engineer", but I don't
think the public is endangered by the ambiguity here.

That said, I strongly discourage software developers from using the term
"engineering", mainly because I don't want the PE folks to start thinking they
have any sort of business licensing software practitioners or getting involved
in evaluating their competence.

As a math major (abet one with an MS in Industrial Engineering), I put no
claim on engineering, and I dispute any claim engineering has over software. I
think CS is more a branch of math than of engineering - so if the PE folks
want to interfere in this, they can start by going back to college and taking
a couple years of real analysis, abstract algebra, complex analysis, advanced
linear algebra (with proofs, not some watered down "applications" course), and
number theory. When they're ready to pass an in-depth exam on those subjects
in order to get licensed to write code (after failing the first time), they'll
have a taste of what regulatory capture really means.

~~~
dragonwriter
> I think CS is more a branch of math than of engineering

It is, but designing software isn't CS any more than designing bridges is
physics.

~~~
geebee
I agree completely. I think that requiring an exam in these subjects to obtain
a software engineering license would be absurd - my point is that I don't
think its any more absurd than licensing software "engineers" under the PE
license.

I'm not really in favor of a professional license for software "engineering" -
but if there were, I'd say it should stand completely apart from the PE.

The PE exam writers should feel free to include whatever software questions
they like as they license, say, civil engineers, but they should stay in the
business of civil engineering.

------
dsowers
You can build a startup in the time it takes to thoroughly prepare for these
interviews/positions. Willingly subjecting yourself to this rat race is
essentially the same thing as stamping yourself as an "ibm man," in the words
of Jobs.

Who cares if you don't know the intricacies of all the hot algorithms of the
day. Spend your time creating actual value for the world, instead of
practicing just for the sake of impressing someone.

~~~
orangethirty
Are you suggesting that building a startup is merely an exercise in
programming?

I do agree that one should not participate in the idiotic way programmers are
currently being recruited by some companies. But that doesn't mean there
aren't good, BS free jobs out there. Jobs that are full-fulling and
economically adequate. Not everyone aims to be on the cover of Forbes. Some
people just want to program, and go home with the family. Oh, and fish on the
weekends. That's a perfectly good life to aim for. Better than what the rest
of the world may have.

~~~
dsowers
I'm merely suggesting that most engineers who take the time to study for these
interviews are probably good enough to make money on their own somehow.
Whether that is a startup, consulting, lifestyle business, or something
else... If people just focused on doing a lot of great work, then the jobs
will come to them.

I hate to see talented people wasting their time preparing for these
interviews. The opportunity cost is too high. These current hiring practices
are robbing the world of great software–code that will never exist because the
time was instead spent on superfluous interview tasks.

~~~
orangethirty
Yes, I understand your point. And its valid. Though I disagree with the part
where people who are good enough to do X might be good enough to start a
business, or consult. From my experience that has not been the case. I've met
and helped a lot of brilliant programmers along the way, and few of them were
capable of running or learning how to run a business. Note that I don't mean
that people can't learn, but my experience has shown otherwise. I wish to be
wrong.

~~~
eli_gottlieb
Meh. Running a business is a different thing from software engineering or
coding or computer-science. Why should everyone be suitable for a business
role?

------
taude
One of the problems that I have with this list is some of the stuff I just
haven't had to deal with since college, like implementing all those data-
structures like bubble sorts//binary search, linked lists, etc...In 15 years,
I've never had to implement one (when I was a C/C++ coder in the '90s, we used
3rd party libraries like Dinkumware). Interviews that ask these type of
questions are really skewed at hiring young people just out of school, and
favor people who memorize things by rote, not necessarily create/problem
solve. Even the author almost admits this by stating he solved problems for
two weeks prior to his interviewing...

~~~
base698
What you're claiming is a straw man of the processes I've personally seen. In
most good interviews they ask you something specific to implement, such as how
do you implement a code complete feature in an IDE or an event logger. There
will be some obvious naive solution that would be slow with any reasonable
amount of data. They want to see if you can use the data structures in
practical way.

The expectation is that if you're smart enough you can reason to a more
optimal solution even if you haven't seen a trie in 15 years.

~~~
taude
Agree...maybe I read too much into the listed algorithms, because you're
suggesting real-world scenarios where some of these concepts can be applied.

But I will say, as never having used a graph search like Dijkstra's in any of
my work, the idea of studying this to take a hiring test still goes with my
theory of learning something by rote. If someday I need to implement the
concept, or use it, I'm sure I'll go figure it out. I had to do this awhile
ago with a Levenshtein distance for computing similar string matching. Had
someone asked me in an interview, I'd have completely failed at it.

------
norrec
I've been a junior developer for almost 2 years now at a fairly large company.
At my current position, there hasn't been a single task thrown at me that I
have not been able to complete with ease. I've worked with multiple languages
and technologies that I was not familiar with at all when I started. I tend to
figure them out pretty quickly and get on with the task at hand. I've built a
bunch of side projects (not all of them completed) and have put them on Github
per this article's suggestion.

Having said that, I get paid very little and am generally bored with the work
I'm doing now so I'm looking for a new opportunity. I do very well on phone
interviews but I'm absolutely terrible at onsite interviews that involve any
white board algorithm problems, algorithm optimization questions, etc. This is
a combination of low self esteem/intimidation I feel during these interviews.
I've done maybe 3 or 4 of these and they've all gone terribly. It's come to
the point where I have stopped applying for positions that interest me and
that I feel that I would be a great fit for because I know the style of
interview that I'll be facing. I've determined that I either need to come up
with an idea of my own that I can turn into a steady income or that I need to
leave this field and find something else to do.

What do you guys think? Am I just a terrible developer or is it just a matter
of practice? Like someone else mentioned above, I try to sit down and practice
but get distracted by the fact that I could be building something interesting.

~~~
VLM
"I've determined that I either need to come up with an idea of my own that I
can turn into a steady income or that I need to leave this field and find
something else to do."

What about consultant / project / contract work? Generally "the hiring
process" treats candidates for full time employment relatively poorly and
unprofessionally, but treats consultant / contractor types more
professionally.

Think about other professions. If you're hiring a plumber's apprentice, its
funny to ask them if they know which end of a plunger to hold, and watch then
squirm under the pressure. But if you talk to a real genuine licensed and
bonded independent master plumber and ask him to demonstrate unclogging a
drain before you'll offer a remodeling contract, he'll probably tell you to F
off and walk away to a more professional job. You can treat employees like
dirt, but not contractors.

~~~
brightsize
Great example. I've thought of this many times myself -- how no customer would
ever treat a trade contractor in the way that companies treat candidates. My
electrician is not going to spend his valuable time letting me grill him on
questions about electrical power generation and distribution, RF engineering,
or even Ohm's law for that matter. When I think of it, I'm hiring him because
1) he's not a n00b, he's a journeyman, 2) he's been around - has some staying
power, and thus has most likely done satisfactory work, 3) the BBB is happy
with him, he must not have done any awful work, and 4) if he's on Angie's List
at all, most of the people there are happy with his work. If I were to try to
cop the attitude of "I'm thinking of hiring you, but you're going to get a
good, humiliating hazing first" I'd fully expect to be told to F-off and I'd
deserve it too.

------
mweibel

        Re-invent the wheel. 
        You should implement the most common data structures 
        in your language of choice. [...]
    

While I agree that it helps a lot understanding those data structures by
implementing them, it might be good to add "Don't use them in production!"
paragraph.

~~~
kyllo
Yeah, the funny thing about all the data structures & algorithms quizzes is
that the simplest solution is usually a recursive one, and the big-O
performance is sort of irrelevant because chances are you're using a language
that doesn't have tail-call optimization and you're going to blow the stack
frame for any large value of _n_ anyway.

~~~
gizmo686
Many recursive algorithms only require log(n) entries in the stack. Even if
you do start overflowing the stack, it is simple to take a recursive
implementation and turn it into an 'iterative' one, where you just manage the
stack yourself.

------
DanWaterworth
> Master at least one multi-paradigm language ... Some good candidates are C#,
> C++, Java, PHP, Python, and Ruby.

They all look imperative to me, what happened to multi-paradigm?

~~~
hjalle
Would not for example C# or C++ count as multi paradigm as it can be
considered to support both imperative and object oriented programming?

~~~
intractable
OO is a subset of imperative.

Can you name me an OO language which _doesn't_ support imperative programming?

~~~
eli_gottlieb
Smalltalk is pretty damn functional, actually.

------
fvox13
Why do so many people advocate reinventing the wheel? As far as I can tell, it
wastes a LOT of time, especially in the interview process. One of the
companies I interviewed with before I landed at my current job asked me to use
pencil and paper to re-implement a bubble sort in Python. Why? My job is to
build a house, not forge a hammer. And the fact that it was a bubble sort
instead of something... better... was like using a rubber mallet to pound in
nails.

I understand that, when you're learning algorithms and such, that there's no
substitute for implementing them, to learn them. But when someone with several
years of development experience comes in, with a portfolio to show, why waste
their time?

~~~
hackinthebochs
Its a step up from Fizzbuzz, but its the same sort of test. It tests whether
you have the capacity to think logically about a problem and code up a
solution. The mental faculties exercised when coding bubble sort (or any of
the so-called "CS puzzles") is the same sort of faculties that are required
when orchestrating the various modules when generating the response to an HTTP
request. This just strips all the fluff.

------
callmeed
Really good post, thanks David.

I'm really curious as to how you landed an _interview_ at Google (let alone a
job) without a college degree. My understanding is they are very strict about
that and it's hard to even get a foot in the door without a degree.

[disclosure: I'm on a 10 year "hiatus" from my senior year in college]

~~~
thaumasiotes
I was contacted by Google without them knowing I had a degree, although they
knew by the time I was scheduled for an interview. Apparently washing out in
round one of Google Code Jame 2012 was enough for them to seek me out. I
performed to expectation by similarly washing out of the interview.

Steve Yegge wrote that you should apply to Google, no matter whether you think
they'll take you or not, because it's a desirable position and the cost of
failing is low. I spent $200 on a hotel room (not reimbursable), $150 on
transportation from and to the airport (not reimbursable), $50 on baggage fees
(reimbursable), and two days of my salary (since I wasn't at work when
interviewing) (not reimbursable) in order to apply. This could be described as
"significant".

~~~
thedufer
They don't reimburse travel expenses for interviewing? That's surprising, and
a shame if its true.

~~~
thaumasiotes
They reimburse airplane tickets (well, actually they pay for the tickets
directly), but they don't reimburse "private transportation", e.g. getting
from the airport to the hotel.

------
rikf
The only recruitment process I know of that works is.

Step 1) Send the candidate a small unattended coding test they can do in a
couple of hours. If they pass great if they dont offer them feedback.

Step 2) Invite them in for a pair programming test this should take max one
hour, they can spend 15-30 minutes with one or two people on the team solving
a problem.

You wouldn't believe the amount of people who have amazing looking CV's but
when it comes to actually coding they just are not up to scratch.

There is also obviously personality fit and other subtleties but thats the
basics.

~~~
nawitus
Note that many programmers get stress from the interview and perform
substantially worse.

------
csomar
Always coding and landing a job are kinda opposite in my opinion. If you are
looking for a job, then you have to _look_ for the job and that means little
time and interest for coding.

You are not also guaranteeing a position where you'll actually code something
or help develop something if you happened to get the job.

If you want to code, do agency consulting. Agency brings the work, manages the
clients, do the accounting, marketing and the stuff. You code.

------
javert
> “On a scale of 1-10, 10 being the highest, how would you rank your knowledge
> of C++?” ... Bjourne Stroustrap himself would rate himself probably an 8 or
> less.

Is there a citation for this, or a citation for something similar, or is this
just a guess?

If it's actually true, then score++ for people who complain that C++ is too
complex.

------
pvdm
Log(1)=0 If you interviewed once and got the job, your score would be 0.

~~~
lessnonymous
Similarly I'm 8 for 10 and have been working for nearly 20 years. So I get a
score of 80.

If I had an 80% success rate, but was 18 for 20 I'd score 117. To get that,
I'd need to be changing jobs every single year.

The score is not only totally made up but pointless and adds nothing to the
rest of the article. It's just there to suck you into the article.

~~~
itsybitsycoder
If you had an 80% success rate but were 18 for 20 you'd be some sort of
wizard. :))

Anyway, I think the author is assuming that each time you apply, you're
applying for multiple jobs, getting multiple offers, and turning down all but
the best one. I was a little surprised that my score was so low, too, given
that (as a junior) I've only had 2 on-site interviews but have received 4
offers, which gives me a score of 60. Meanwhile, interviewing for 100 jobs and
getting 60 offers gets you a score of 120.

------
acjohnson55
It's funny to me that items 1-6 in your technical tips pretty much boil down
to "be an A-average student in a CS/CprE program".

I think there's an alternative, and it fits into your ABC. Build useful
software. If you've got an idea, implement it, and if possible, open-source
it. In the process, you'll likely rely on a bunch of open source software, and
maybe you'll run into some limitations. Every limitation is an invitation for
<i>you</i> to contribute. And if you can build a bit of a track record,
instead of proving yourself with textbook algorithms, you can do by showing
your portfolio of actually code.

~~~
agentultra
I've rarely had interviewers actually seek out my github/bitbucket/xxx
repositories, bug reports, and code reviews.

I assume it's because they're busy "filtering" through hundreds of candidates
and don't have the time to read the thousands of lines of code I've written.

------
alashley
Great read. I think you're missing a link in there.

"Spend at least 40 hours coding solutions to different types of problems. One
of the best resources is TopCoder. Read this. Then try solving problems."

Did you mean to link to the top coder algorithm tutorials?

~~~
davidbyttow
Thanks! Fixed.

------
lnanek2
Good tips, although I'm not sure if the ratio means anything. When I was young
I'd happily apply to jobs even if I didn't match on everything in the ad, even
though the end chance of getting the position was lower no matter how well I
interviewed.

Now that I'm older and have a job I like I usually pop out a really high
salary number as early in the process as possible to scare away any companies
that would take a lot of work to interview with and then not be able to afford
me.

So you could have a very low ratio of offers for reasons other than your
interview performance. :)

~~~
davidbyttow
I made it clear that this doesn't mean "applied to" but actually onsite
interviews.

But your'e right, the ratio doesn't mean anything. ;)

------
christopheraden
While I might generally agree that the interview process is asinine and a rat
race, I actually use some of those formal methods and algorithms in my day-to-
day work--and I'm not even a computer scientist, nor do I have a CS degree.

I'll bet things are different in the startup world, but I've encountered
several instances where having a very crude understanding of time complexity
served me well. Hashing has been an especially powerful tool in my work, where
the size of the data I work with really highlights the difference between an
O(n) operation and an O(1) operation.

I would consider the interviewer asking questions about algorithms to be a
sort of Fizz Buzz for the more technical positions. Perhaps it is misapplied
to be asking technicalities of algorithm questions to people that will be
doing more design-oriented work, just as it may be inappropriate to ask your
sales force applicants to write programs during their interviews.

That said, most of the interviews I've conducted would not have been able to
discriminate well the qualities that I believe make a great programmer. A
focus on code longevity, discipline in conducting code review, dedication in
writing unit tests, and how they search for information they don't know the
answer to are important qualities that a technical interview will largely be
unable to see.

------
wavesounds
Off topic: I know that formula is made up but it made me think of something.
How come nobody has fixed the log base 2 vs log base 10 problem of using log
on the internet? Probably the CS article vs Math/Physics article is a good
inclination but none the less it seems like a problem we should have solved by
now.

~~~
thedufer
Most of the times I've seen logs it doesn't matter, because it usually shows
up in big-O. However, the only unambiguous abbreviations I've heard of are ln
for log_e, log for log_10, and lg for log_2.

------
codex
These kinds of interviews essentially ask: are you willing to put in the time
to be one of the best in the world at what you do? Are you gritty, or wishy-
washy? If the answer is no, don't bother to apply. That's not an unreasonable
way to hire, in my opinion.

~~~
mc-lovin
It's also a matter of attitude. If you're not willing to put up with having to
study for what you perceive to be arbitrary interview questions, you probably
won't do well with all the other annoying things that can't be changed that
big companies tend to have.

Which is kind of what many people in this thread are saying when they say they
don't want to work for a company stupid enough to use algorithms and data
structures questions as their main interview method.

~~~
codex
It's the worst method out there--except for all the other ones. The problem
with the "here's my portfolio of work" screening method is that companies
generally expect a certain level of productivity (and IQ), and there's no way
to tell how long you worked on your portfolio. Did you write that code in two
hours or two years? Any code can be made to look good given an infinite amount
of time to polish it and test it. Behavioral interviewing questions, on the
other hand, just don't work for coders; too easy to bullshit.

The arguments against coding interviews seem weak, to me. They appear to be
rationalizations for not getting the job--an insult to the ego that must be
rectified by bending reality. They essentially boil down to, "I shouldn't have
to sweat these details; they're beneath me." But all of the greats sweat the
small stuff, almost obsessively, and pay their dues.

For the vast majority of mindless coding jobs out there, you don't need to hit
the high notes. But when you're moving the state of the art forward--indeed,
civilization forward, inventing what has not been invented before--you need
complete mastery. If you just want to build stuff, on the other hand, these
skills are unnecessary. But that's not engineering. That's construction work,
for construction workers.

~~~
sergiosgc
“Any code can be made to look good given an infinite amount of time to polish
it and test it„

Sorry, but no. Some code turds are beyond polishing... All you'll get are
polished turds.

------
wildmXranat
Bookmarked for future reference to this comment thread and the original
article .

I find that always coding mantra is just one version of a method that applies
to many other disciplines.

------
micromarty
I am a soon to be college grad and am currently going through the hiring
process at many companies. This article is pretty in line with what I have
been seeing so far.

------
bliker
Contrary to the title he is mostly talking about algorithms and CS stuff. I
think he just home-schooled his degree without actually getting a degree.

------
jgh
The page won't scroll on chrome for android :(

~~~
whirlwind23
"SPACE" for scrolling doesn't work on firefox (os x desktop) either.

~~~
cpeterso
I reported this Firefox bug just moments before reading your comment. <:)

<https://bugzil.la/874766>

~~~
jcoder
I reported this to Medium a week ago as well.

------
ivanist
Little bit of nitpicking: If x = y = 1, then value = 0. I wonder why he didn't
just choose value to be 100y/x.

~~~
thedufer
I suspect the log is in there to give you points for experience in
interviewing. I would argue that `log(x+1)` would make more sense, to avoid
that 0 issue.

------
jstanley
I've only ever had one on-site interview (and I got the job).

According to the formula at the top, my value is 0.

~~~
spullara
One data point yields no information.

~~~
vinceguidry
One data point definitely yields information, just no usable conclusions.

------
cafard
"Bjourne Stroustrap"? Yeah, I bet he'd get under a 9.

------
benburleson
So you learned how to interview well, so what?

------
gailees
Always be shipping.

------
lsiebert
heh... a variation of always be coding is what I went with for my blog name a
while ago.

