Impulsive Decisions

This Thursday, I sat outside a Best Buy for four and a half hours! To tell this story right, I have to tell it as it happened. I wanted to blog as I went, but my phone died in the middle, so I have to rewind a bit. So here we go..!

majora
Let’s do the time-warp agaaaaaain!

Friday, March 3rd at 12:01AM marked the release of the Nintendo Switch, Nintendo’s new console-portable hybrid. For the non-nintendo-fanperson, here’s a rundown: The “Console” itself is a medium sized tablet-looking rectangle. At home, the console can be placed in a dock which is then attached to a TV via HDMI cable. The controller is then two controller pieces with buttons and a joystick, each attached to a controller frame that provides the hand grips. On the go, the console can be removed from the dock and the controller pieces can be attached to the console, resulting in a device similar in style to a PSP.

The concept is exceedingly novel, but until Thursday at around 7PM (PST) I had decided not to buy a Nintendo Switch. More out of laziness than an actual lack of desire, I felt that I didn’t need a Switch. I had basically moved away from console gaming towards the glory (and sale prices) of Steam, and didn’t see a huge reason to change that policy now.

But gosh, LoZ: Breath of the Wild. That’s a link to Google results for “Breath of the Wild Reviews”. Click it. Seriously, click it. In addition to quite nearly flawless reviews across the board, we get link previews like:

So when I say Legend of Zelda: Breath of the Wild not only gatecrashes the list, but probably beats the lot as the greatest of them all, I hope you realise how serious an achievement it is. (source)

And

If everything remains the same, there’s a case to be made that Breath of the Wild is in the top three best reviewed games for as long as review … (source)

I was finally pushed over the top when Aaron (thanks Aaron!) sent me a compiled list of Breath of the Wild’s scores across some twenty-plus game reviewing platforms.

17122208_1315912368491823_1936983329_o
Anyone notice “Time” in there? Yeah, that’s Time Magazine.

Thus, at 7PM PST, with both the game and the system launching in five hours, I decided to jump on board. At that point, preordering was long past possible. The only way to get my hands on a Switch and the absurdly-well-reviewed Legend of Zelda: Breath of the Wild was to take matters into my own hands.

By which I mean wait in a line outside of Best Buy for four and a half hours.

IMG_20170302_232843.jpg
Nerds. Nerds everywhere.

To be honest, I got very very lucky. The first place I called (a Best Buy) said that their line was too long, but to try a different best buy half an hour further down the road. I called them and they said if I arrived then I had a very good chance of being early enough, so I immediately called an uber. Upon arrival, I was at position forty-seven in line, which made me fairly optimistic (as fifty is a nice round number to have shipped to you).

And so we waited.

This is what I’m really writing to talk about. Not the Switch and Breath of the Wild (I’m sure I’ll get to it soon enough), but the experience of waiting in line for a new console and game. I’d never done it before, and after doing it once, I can say I’d absolutely do it again! (And that I’d prepare better).

I was surprised by how friendly and outgoing everyone around me was. After a few minutes of awkward silence, we started talking about our favorite games and systems and why we liked them. One of the guys who lived nearby left and came back with snacks for everyone, which was amazing because my hastily thought out plan didn’t include provisions for sitting in one spot for four and a half hours. One couple came with a huge fluffy puppy who immediately took a liking to me (along with everyone else) and spent the night moving from person to person and licking our faces.

[Picture of Dog would go here, but my phone died before I could get one. Just imagine a huge dog with long black and white fur and little sharply pointed ears. You doing it? Great! Good imagining. Who’s a good imaginer? You are!]

At around ten thirty they handed out tickets guaranteeing us at least a Nintendo Switch and a copy of Breath of the Wild. This, of course, raised everyone’s spirits and made the rest of the night fly by. The fact that I found a Game of Thrones book in my backpack didn’t hurt.

Finally, the time arrived. The doors opened and we were herded inside into yet another line. Slowly, the line progressed as people exchanged their tickets for products and walked out, tired but triumphant. A little while longer, and it was my turn.

20170303_012111.jpg
“Aha!” You’re thinking, “a plot hole! You said your phone was dead.” Great detective work, hypothetical reader! I plugged it in when I got into the Best Buy.

Reflecting on the whole experience, waiting in line for four and a half hours was really, really nice. I cannot recall a single instance of assholishness. No one tried to cut, and when people left to go to the bathroom or pick up supplies, no one got angry at them for resuming their former position in line. When the time came and we were let into Best Buy, everyone proceeded in an orderly fashion. No one threw a fit when the specific version of the product or a specific add-on was no longer available when they reached the register. Everyone picked what they wanted out of what was available, paid, and left.

The contrast to standard Black Friday decorum in America could not be more stark. With that in mind, I have to wonder, what made this shopping experience so different? Some of it was the weather and the duration of waiting. We were waiting in the fifty-degree chill of a mild Californian winter, and for a mere six hours at the most. I assume that the atmosphere of waiting in a multi-day line in the snow would be exceedingly different. We’re also only waiting for a single product, and one who’s company makes a conscious effort to be family friendly and on the whole “nice”. I have to wonder what the same line would have been like if we were waiting for a new Playstation or XBox. (Here’s one theory).

There’s plenty to ponder, for sure. But for now, on to Breath of the Wild!

 

Hello, my name is Michael. I am able to invert a Binary Tree on a whiteboard. I answer code questions on the internet for fun. I love riddles.

This post is in response to this article. Read it and then come back; it’s not too long.

I actually really like Whiteboard interviews. I like taking them, I like helping people prep for them, I like mock giving them. I enjoy the puzzle and the straightforward goal. I find them WAY less intimidating than traditional “tell us about yourself” interviews, which scare me to death and I’m so glad I never have to take. I will always prefer technical interviews over non-technical ones because I’m still not sure what I’m actually supposed to do in a non-technical interview.

Clearly, I’m in the super tiny minority, and I’m trying to understand why. Sometime during years of TA’ing my knowledge of Java passed “useful for a job” into the land of “tiny details that will never matter in any context other than a Whiteboard Interview or JVM development”, so perhaps I’m speaking from an unfair standpoint of having more knowledge of absurdly small details that will never be useful on the job. (Though you never know. Knowing the actual explicit steps Java and similar languages take to initialize an object when you say “new” caught a bug today. Tsvi can vouch).

After reading the actual tweets again, though, I have to wonder if the problem isn’t the format but the questions being asked. I don’t see anything wrong with whiteboard interviews, but asking someone to code up bubble sort is worse than useless. It says nothing about their ability to think critically, made design decisions, or meaningfully choose data structures, but only whether or not they’ve memorized how to write bubble sort. For what it’s worth, I haven’t. (As far as algorithms go, though, I could code Dijkstra’s in my sleep. I taught it too many times to forget it).

The point of a whiteboard interview is two-fold:
First, to get a grasp of how well the person knows the language in which they are interviewing. It would be amazing if we could speak in pure logic and the computer would understand, but we can’t, and I believe a fast and flexible knowledge of at least one language (hopefully more) is a fair prerequisite of any software job. I don’t think there’s any other way of measuring this other than seeing it in person. For every project or class listed on a resume, you have no idea how much was done by the candidate themselves and how much they were helped along by others.
Second, to determine how their mind processes and works through technical problems. On a more general level than the language, did they understand the problem easily? Did they ask intelligent clarifying questions about requirements for a valid solution or the use of well-known public functionality? Were they able to talk out their thought process, and in the case of getting stuck, were they able to explain how and why they were stuck concisely and clearly? All of these qualities, I believe, are exceedingly important for every software position, and again the only real way to tell is to find out yourself.

I think the problem is not the format, but lazy interviewers/question writers. The whiteboard interview succeeds at testing these qualities when it’s testing the candidate’s ability to code, *not* their ability to recall and write a specific algorithm or data structure that could be found in full on such and such a page in such and such a book. Developing truly novel questions is hard, and keeping them novel and not leaked for interview after interview is next to impossible, but compared to Bubble Sort we can hardly do worse. This speaks to the diversity side of the issue brought up at the end of the article as well. If the problem doesn’t require or even reward rote memorization, hopefully the people who “spent as much of [their] scarce time as possible learning to code” won’t be punished for not having memorized quite as many algorithms.

In the pursuit of better whiteboard questions, I’ll leave off with the best whiteboard question I was ever asked (not for Google, but for one of my internships). It requires absolutely no knowledge of any language, only a basic understanding of arithmetic and I suppose Algebra. As such, it can be attempted by anyone even if they’ve never taken a single CS course. Nevertheless, it still accomplishes the whole goal of a whiteboard interview. Here it is:

Consider a new, exceedingly primitive language in which you have only the four following statements/control flows:
1) Initialize and set a variable to 0, such as x = 0.
2) Increment a variable, such as x = x + 1, also written as x++.
3) Loop, which takes a variable, and repeats the following statements in braces a number of times equal to the variable *when the Loop statement is first reached*. Thus:

x = 0
x++
x++
x++
y = 0
z = 0
loop(x) {
y++
z++
}

Would set both y and z to 3, as the loop body would be executed 3 times.

4) Return x, which yields x as the result of your computation. This must be the final line of your code, and cannot be within a loop.

Given only those four statements/control flows, write a function that takes a single argument `A` and returns a variable with value `A-1`.