My Interview at Microsoft: Design a Kitchen
My Interview at Microsoft: Design a Kitchen
\
\
Right before I graduated college, I had an interview with Microsoft. The
interviewer presented a hypothetical scenario that I will never forget.
She said “I would like for you to design me a kitchen.” At the time, I
didn’t quite see the relation to software development. Why didn’t she
ask me about XML, Java, Unit Testing, and Design Patterns? So I I just
started in… “Do you want a counter-island?, Do you want track lighting?
Do you want steel or black appliances? What kind of flooring do you
want? Do you like tile?” It was clear after I finished that I had failed
her test. I’m sure there are some kitchen designers out there who may
design a kitchen like this, but they’re doing it wrong.\
\
I’ve been a software consultant for about four years. I just recently
reflected upon this question and then I realized what I had messed up.
When designing software, you need to think about three specific things.\
\
Problems - What problems are your clients having? What problem are
you trying to solve? Identify their pain points. I should have
identified what my Microsoft interviewer liked to cook. Does she
primarily bake? This would have helped me identify the placement
particular appliances. Maybe she would have needed a second oven. Does
she like to cook with others? Again, this would have helped with
placement. I should have asked what her current kitchen looks like. What
problems does she have in this kitchen? What are her favorite dishes to
cook? If she likes to cook a lot of Japanese… maybe she would benefit
from a Hibachi in the middle of her kitchen. I could go on and on. But
you must identify the problems that your clients are having. You must
observe these problems. They won’t always be able to articulate their
problems.\
\
Why - Why are your customers and clients making these requests? If
my Microsoft interviewer requested marble tile instead of wood, I should
have asked why. Maybe I would have learned that she lives in a tropical
climate with a lot of moisture; tile typically lasts longer. This may
have opened up the conversation to discuss more about environment
factors and her current kitchen. I designed some software for trucking
companies to plan which jobs their trucks should be at. The client
mentioned that they would like a projector with the software showing the
plan. I asked why. They told me that they wanted everyone in the office
to know the plan. I mentioned that it would be possible to network the
software and install a copy on everyone’s machine so that anyone could
just open the software and see the plan. They were ecstatic. They didn’t
think about the possibility. \
\
This teaches us another lesson, customers don’t know what you can
provide them. I’m reminded of Henry Ford’s quote: “If I had asked what
my customers wanted, they would have requested a faster horse.” This
demonstrates that customers and clients aren’t usually forward thinking
in the solutions that you can provide. Ford would’ve learned that his
customers’ problem was speed. This happens to us
quite a bit. We typically get requests for mobile software development,
but we don’t get much requests for web apps and desktop apps even though
cumulatively, we have more experience in the latter.\
\
Art - You are an artist. Very rarely should you present visible
design choices to your clients. Obviously, there are exceptions to this.
If I told you to design me a kitchen and you just gave me black
appliances instead of stainless steel appliances, I may be a bit miffed.
However, in the software world, I think it’s different. Very rarely
should you focus on the details of the design with your client. It
simply doesn’t matter. Many clients will present an abstract concept by
talking about ‘buttons’ and ‘icons’… just ignore those request and
figure out what they really need. Deliver art.\
\
Go now and build beautiful software, for you are an engineer,
philosopher, and an artist.
You can follow me on Twitter: @jprichardson
-JP Richardson
If you made it this far, you should follow me on Twitter. Follow @jprichardson
-JP