Advice, Software

A Dialogue on Lateral Thinking

Cast: The Hare (interviewer #1), The Coyote (interviewer #2), and The Tortoise (interviewee).

Hare: Okay, that wraps up the technical portion of the interview. Now we want to ask you some lateral thinking questions.
Tortoise: Lateral thinking questions?
Coyote: You know, questions that challenge your ability to come up with non-obvious solutions? Or when you find a solution by throwing out all your assumptions? Here at Acme Corp., we pride ourselves in coming up creative solutions to problems.
Tortoise: Okay…
Hare: We’ll start off easy [1]. Acting on an anonymous phone call, the police raid a house to arrest a suspected murderer. They don’t know what he looks like but they know his name is John and that he is inside the house. The police bust in on a carpenter, a lorry driver, a mechanic and a fireman all playing poker. Without hesitation or communication of any kind, they immediately arrest the fireman. How do they know they’ve got their man?
Tortoise: Hmmm… Well, if they can immediately tell the profession of everyone in the room without saying anything, presumably everyone is dressed in clothes emblematic of their profession. I think the jumpsuits firefighters…

The Hare snorts in amusement.

Image Credit: MaxPixel

Tortoise: As I was saying, the jumpsuits that firefighters wear often have nametags on them. So they arrest him because he’s wearing a jumpsuit that says “John”?
Coyote: Not quite right, I’m afraid. You see, all the other poker players were women.
Tortoise: I don’t really see how… You aren’t next going to ask me the one about the surgeon operating on her son are you? This isn’t secretly the HR section of the interview?
Hare: No, you’re already through that.
Tortoise: Because I assure you, I do think women can do anything men can.
Coyote: We weren’t questioning that at all.
Tortoise: It just seems weird to have a problem that hinges on interpreting fireman in an archaic way. I’m given to understand that it’s essentially gender neutral now, although I thought firefighter was preferred… Sorry, this is a tangent. You said you had more questions.
Hare: How about you ask the next one Coyote.
Coyote: A man lives in the penthouse of an apartment building. Every morning he takes the elevator down to the lobby and leaves the building. Upon his return, however, he can only travel halfway up in the lift and has to walk the rest of the way – unless it’s raining. What is the explanation for this?
Tortoise: That’s a really odd way for an elevator to work. What time period is this?
Coyote: That isn’t important to the question.
Tortoise: Okay, I know this is a digression, but how can more information not be important to the question? Like this is basic scientific method. You formulate a hypothesis that is capable of being falsified by the world. Then you see if the world falsifies it. And you keep doing it until you have a hypothesis that doesn’t get proven false. It’s basically the same as test-driven development, come to think of it. Didn’t you just ask me if I did TDD?
Hare: We do TDD. We also write code on computers, not whiteboards. The interview doesn’t map quite perfectly to the job, but we have found how candidates perform on these questions often correlates well with their later performance.
Tortoise: Okay, if you say so. Um… maybe the elevator uses water as a counterweight, but the counterweight leaks a lot and only really works properly when it rains? I really don’t have a better answer.
Coyote: Nope. The man is a little person. He can only reach the button for his penthouse when he has an umbrella with him.
Tortoise: Couldn’t he just carry an extendable pointer with him and use that?
Hare: If it’s any consolation, I got this one wrong too. Now I like to visualize the guy as the kind of person who is so lazy he won’t do anything he doesn’t absolutely have to, even if doing it would save him time.
Coyote: Hare keeps insisting that getting this one wrong is a badge of pride, because it proves that you have a huge inferential gap to that kind of laziness.
Tortoise: That’s the most reasonable thing I’ve heard in the last five minutes.

Coyote snickers nervously.

Image Credit: Jitze Couperus

Coyote: Um… Well, one last question: Assume there are approximately 7,000,000,000 (7 billion) people on Earth. What would you estimate to be the result, if you multiply together the number of fingers on every person’s left-hands?
Tortoise: Oh wow, that’s… oh, I see! Zero. There’s plenty of people with no fingers, so the result has to be zero.
Coyote: I’m glad you got that one. When people try and write out a solution the whole thing gets out of hand.

Tortoise groans.

Image Credit: Eric Kilby

Hare: Actually, that brings up an interesting point. Are puns a form of lateral thinking?
Coyote: I don’t think so. I think puns are more of a brute force thing. You know roughly what you want to say and what you’re punning off of, so you can do a brute force search in your head for likely combinations.
Tortoise: Puns feel closer than those questions. When I think of lateral thinking, I think of a much less constrained solution space. I felt like those problems just tested my ability to be clever in the exact right way on command.
Coyote: What does having one answer have to do with it?
Tortoise: Well look at your first question. A priori, I don’t think any reasonable person would consider my hypothesis less likely than the “correct” answer. If I was in the room with the police, then obviously my answer would reflect reality less closely than the answer that John is the only man in the room. But without that information, it really is just luck if you stumble onto the one right answer. Anchoring effects mean it’s hard to generate multiple plausible answers. And because you’re anchored onto the “right” answer, you view my answer as obviously incorrect.
Hare: You honestly did fine on this section. You really don’t have to argue about your score.
Tortoise: It’s not about score, it’s about the principle of the thing! Even if lateral thinking is a useful quality in a software developer–
Hare: What makes you think it isn’t?
Tortoise: Lateral thinking, by definition, involves unexpected solutions. Answer me honestly: do you like reading code where someone did the unexpected thing? I’d rather an ugly but conventional solution to an unexpected one that’s “elegant”. I mean, there’s a reason no one uses Perl any more, right? “More than one way to do it” is a horrible philosophy for code that has to be read by many people!
Coyote: Tortoise has a point there, Hare. I remember when Perl programmers used to brag to me that they could write a web server in one line of code. It made me think of the scientists in Jurassic Park. Just because you can do something doesn’t mean you immediately have to go out and do it.
Hare: I don’t think programmers need to use lateral thinking all the time. But aren’t there often places where an unconventional solution saves a lot of time?
Tortoise: Name one.
Hare: What?
Tortoise: Name one unconventional solution you’ve implemented that saves time. Bonus points if you don’t need five lines of comments to keep everyone else on the team from being confused by it.
Coyote: I actually have one! I had to round to the nearest half to enable functionality that the designer wanted. I considered this horrible concept with recursive if-statements. But then I found out there was a much better way to do it. You just multiply your number by two, round, then divide by two. It’s one line and perfectly clear if you think about it for a second.
Tortoise: So why didn’t you ask me about that?
Hare: We have an interview script. We can’t just change whenever one of us comes up with a clever solution to a problem.
Tortoise: Then pick a few examples in your code where you actually had to think laterally and give them out as worksheets. At least that has a chance of accurately measuring our lateral thinking. And if we get it right, you have a convenient baseline in Hare here.
Coyote: Actually, I didn’t come up with the solution.
Hare and Tortoise: Stack Overflow?
Coyote: Stack Overflow [2].
All pause to consider this.
Coyote: Huh. So if I understand you correctly Tortoise, your point is twofold. One, lateral thinking isn’t a very important quality in a programmer. Doing things conventionally is actually more useful, because as Guido van Rossum pointed out when he designed Python, code is read more than it’s written.
Tortoise: That’s a really good way of phrasing it. How would you phrase my second point?
Hare: Actually, can I try this one?
Tortoise: Certainly!
Hare: The way we’re testing candidates on lateral thinking is pretty much invalid because there’s only one right answer and it’s the one we’ve already decided on. A better test of lateral thinking would be to give candidates some of the problems where lateral thinking was actually useful to us. And if we do this, we should be open to solutions that are different (or even better) than ours. Like your jumpsuit solution of the John problem.
Tortoise blushes
Tortoise: I think that sums it up well. And thanks.
Coyote: One thing I still feel weird about is treating lateral thinking as not that important.
Tortoise: I may have overstated my opposition a bit. I don’t think it’s unimportant. But I think there are many other skills that are more important and easier to test. Technical writing is a good example. It’s actually pretty easy to test someone’s technical writing and documentation abilities in an interview and that’s a skill a good programmer will use every day.
Hare: Or time estimation! I bet we could incorporate that really easily into the blackboard task.
Tortoise: Oh, that’s a really good one. I’m definitely stealing that for interviews I conduct in the future.
Coyote: I’ve got it!
The Tortoise and the Hare stare at him blankly.
Coyote: I’ve realized why I felt so bad about us not being enthusiastic about lateral thinking. I read a lot of science fiction and a lot of my heroes (like Ender, Breq, and Miles Vorkosigan) use lateral thinking to win. And you know how it is… when you read books like that, you want to imagine you’re like the hero. Admitting that lateral thinking isn’t that important to programmers feels like admitting I’m not like them.
Tortoise: Actually, I think Ender is the best example of convention being useful. A lot of what Ender did with Dragon army didn’t involve lateral thinking so much as it involved taking what Ender already knew worked from all of his experiments with his launch group practice sessions and putting it into systems where others could easily use it. This is the sort of thing you see really great programmers do. They make everyone else’s job easier by designing really good systems that transfer well. It was systems that let Ender win all of his battles but the last
Coyote: That’s a different way of looking at it.
Hare: It seems like in a lot of fields, lateral thinking is what makes people great, instead of really good. I’m think scientists and pro athletes, for example. And maybe that’s true in ours as well. But it also might be that what makes a really great programmer is their ability to build up systems that other members of their team can use.
Tortoise: And lateral thinking does help! Whoever it was on StackOverflow that came up with that answer, or whoever taught it to them, that person had to do some lateral thinking. And they’ve ended up saving a lot of programmers a lot of time with it.
Hare: But if we’re counting up total time saved, I guess Stack Overflow takes the cake, doesn’t it?
Tortoise: Yeah, Joel Spolsky and Jeff Atwood definitely showed how systems are incredibly useful to programmers.
Hare: Well now that that’s all cleared up, we’re actually out of questions. So do you have any questions for us?
Tortoise: So about your benefits package…


Footnotes:

[1] All puzzles in this dialogue taken from http://www.folj.com/lateral/ ^

[2] Specifically this question: http://stackoverflow.com/questions/6137986/javascript-roundoff-number-to-nearest-0-5 ^

Leave a Reply

Your email address will not be published. Required fields are marked *