Reversing the technical interview (2017)
aphyr.com
aphyr.com
https://aphyr.com/posts/353-rewriting-the-technical-intervie...
Clever code doesn't help me in a hundred million++ line repo of code maintained by thousands of people. It is actively detrimental.
Still fun to pick apart for leisure.
The way I get around this is having a dsl no one but me sees that compiles to $lang of choice that everyone does.
Once it produced 20k lines of code in an afternoon. I didn't have to do any work for the next month and still was the top performer by commits.
Or were you making a joke?
"Stupidly out-of-spec code" or "Stupidly prematurely abstracted code" are more fitting to describe those kind of code.
I personally feel uncomfortable calling them clever code because they are not clever at all so that they are causing physical pain.
I'm fortunate to have a complete "creative-control" over a code several times. I frequently tell people to stop writing code that we don't need for the moment. Most of them are anticipation of reuses.
“If it were meant to be illegal,” you remind him sagely, “Sun Microsystems would have made it unrepresentable.”You can also use it to represent sum types and then pattern match on them. For instance, Python doesn't have a case statement. We could define an Either type as:
def Left(value):
return lambda Left, Right: Left(value)
def Right(value):
return lambda Left, Right: Right(value)
Left("failed, so sad")(Left=complain, Right=fh.write)
Right(b"great data")(Left=complain, Right=fh.write)
You can combine the techniques to get a list type without relying on nil: def Cons(head, tail):
cons = lambda field: {"head": head, "tail": tail}[field]
return lambda Cons, Empty: Cons(cons)
def Empty():
return lambda Cons, Empty: Empty()
my_list = Cons('a', Cons('b', Cons('c', Empty())))
def foldr(func, zero, list):
return list(
Empty=lambda: zero,
Cons=lambda cons: func(cons('head'), foldr(func, zero, cons('tail')))
)I despise whiteboard interviews and the hiring process in general and vowed to myself that I would do my own thing if ever given the chance.
I am fully in charge of the hiring process here. What I look for are good personalities, a passion for technology, and the ability to read code in the stack we use. I show the candidate a script that we run in prod which has all comments removed and ask them to walk me through it. Massive bonus points if the candidate is active on the internet (streams code sessions on twitch, contributes to open source projects, has side projects etc).
No brain teasers, traditional whiteboard challeneges, live coding sessions or take home projects.
"So I was a holding an interview and my interviewee was a witch who used Clojure to write a low level implementation of a list rather than using the one in the stdlib. And at the end of the interview she just flew off out of the window on her broomstick! Rude! Apart from anything else, when she was concentrating hard, black snow started appearing in the room, I just don't think that would work in the office. Hard no from me!"
You know, the testing tool that managed to show that pretty much every distributed system out there didn't live up to its claims about how it tolerated a variety of failure conditions.
If you're not able to appreciate him, that's your problem. Not his.