Thursday and Friday there are hundreds of kids
coming
to Google for National Engineering Week and somehow I got roped into
giving the big tech talk to all of them. (I have to learn to stop doing
that whole "volunteering" thing.) So how do you keep 100+ middle school
children entertained for an hour while you talk about the ultra-snore
topic of What It's Like to Be An Engineer?
(An important note on terminology: When I say "engineer" I mean
"software engineer" as in my title at Google, and not "engineer" as in
"UofT engineer who thinks it's hilarious to march outside of my dorm
room at 7 am every Sunday morning for all of first year, and play in
their engineering band, and laugh so hard at themselves that they can't
even play their instrument properly". Just so we're clear.)

I start out by talking about how there's two types of problems. There
are problems like "
3 + 2x = 9, solve for x" which clearly have a
right answer. (I make a joke about "if you know what the answer is, I
know some of my colleagues who'd like to hire you when you're a little
older". The smart kids chuckle.)
Then there are problems like "
Aliyah doesn't like Brian but has to
work with him on their group assignment" which doesn't have a single
clear solution.
Engineers work on problems in the middle. Sometimes there's a right
answer, sometimes there's no right answer, and often there are just good
answers, better answers, and "the best answer we can think of right now"
answers, and that's okay.

Another important point is that engineers are lazy. Engineers don't
like to work hard and like to come up with ways to make their lives
easier. This is how innovation happens.
One day an engineer caveman got tired of having to wait for the sun to
rise whenever he wanted it to be light out, so he invented torches. But
torches go out quickly so you always had to light a new one, so lazy
medieval engineers invented lanterns and lamps that used oil which
lasted longer. But it was dangerous and still had a very limited life
and had to be replaced all the time, so modern lazy engineers invented
lightbulbs. And one day engineers will invent even better ways to bring
light to us.
Laziness breeds innovation. Tell that to your parents the next time
they tell you to mow the lawn. (Not-really-funny chuckles.)

Software engineers program computers, which is kinda like a recipe. I
take them through this recipe, each step. Then we talk about all the
waiting that happens.
I divide them into groups and they have to brainstorm ways to make this
faster. Some will go in the direction I'm hoping, others will come up
with crazyass shit that's okay too.

We go through their ideas and when parallelization comes up (without
them knowing that that's what it is), we switch to this slide and talk
about how you can reorder things and do things at the same time in order
to have less waiting.
We discuss that this is like talking to a friend while you do dishes, or
watching TV while you wait for a phone call -- it's doing multiple
things at the same time whenever you can -- and how planning these
things is an important software engineering skill.

We talk about how every day you spend 3 minutes making your bed and how
long that is, but 100 hours for building a robot is soooo much longer.
Except if you'd spent that 3 minutes every day building a robot 5.5
years from now, you'd be done by today and would never have to make your
bed again. So sometimes a huge investment is worth it for something
that's going to be done over and over again.
What's that? Did I just teach them that O(1) is better than O(n)?! OH
NO YOU DIDN'!! OH YEA I DID!!! BAM! My middle school kids just got an
intro to algorithmic complexity and didn't even know what hit them.
Take that, CSC148. Ahem, moving on.

Okay so if you do the same thing over and over again enough times its
worth optimizing. A great example of this is Google. We get
hundreds of millions of people searching on Google every day. So
if the search page becomes 1 second slower, each of those hundreds of
millions of people have to wait an extra second which equals thousands
of hours of time spent just waiting. Crazy, right?
(Trivia for the folks at home: when I increase the google.com results
page by a single milisecond, I cause
over a day of time waiting
across all the visitors that day. So in a lifetime, my 1ms increase
causes over a lifetime of waiting. In other words, I basically killed
an entire lifetime with my change. Mindblowing. No pressure.)

I ask what's wrong with this kettle. Nod when the audience tells me
that someone who pours it is going to burn their hands. We discuss the
concept of engineering also being about designing things that work.

We talk about how bigger wheels on bikes makes them go faster, but if
the wheels are too big, you can't get on the bike, or the wheels are too
close together.
I ask them to take their piece of paper and draw a bike that can seat 3
people. Then we talk about how if they're in front of each other,
turning corners is hard; if they're beside each other, balance is hard;
if they're on top of each other, not being decapitated by tunnels is
hard. Then I ask them to design a bike for a million people on an
infinitely wide field. They draw for 5 minutes. (Mad props to the dude
sitting next to me on the shuttle this evening for suggesting this
activity.)
For extra coolness, during their tour later in the day they'll see the
Google bike that seats 8 people.

We talk about what types of people are good for designing security. I
tell a story about the uniform rules at my high school and how people
used to break them without
actually breaking the rules, and how
this is exactly the kind of mindset that makes a good security
engineer.
Who doesn't like a good rule-breaking story?
(Thx to fLufFy for the idea, and for the name for my biography, "How To
Be Slightly Evil")

Here's all the people that security engineers have to worry
about.
Your mom who can look at your computer while you're in the bathroom,
your ex-best friend who you told your password to, a disgruntled
employee who works at your phone company, an evil hacker who wants to
break into your system, someone who wrote a virus that infects your
friend's computer, and the person who you accidentally sent an email to
because you typo'd your friend's email address.
We talk about which of these you can guard against and which you can't,
and why.

End on a positive note about responsible engineering. The solar panels
on our Google roofs (10,000 solar panels that can power 1,000 average
californian homes), the bikes, plug-in cars and shuttles that Google
provides to its employees, and then if we have some time I talk about
how computers run really hot and you have to cool it off and some of the
things we're doing at our data centers to be environment-friendly.

And there you go. Bam. They just learned about queueing theory, big-O
complexity, design, security, and morality-in-engineering and didn't
even know it.
We end with an inspirational message and then they run off and grab
their delicious Google lunch.
And that, ladies and gentlemen, is how you entertain and educate 100+
middle school students for an hour.
Ever since I was a kid, I've chatted with friends online around the
world. That's nothing new, nor exciting. But recently I've been
hanging out with Toronto friends online in a new way: not in a "hey,
let's chat and have a conversation" kind of way (that even a telephone
could deliver), but
hanging. The act of really doing nothing.
Just sorta being in each others space.
A good example of this is a few weeks ago, Deelia and I watched TV
together. We timed hitting "play" on an episode of The Office and both
just kinda watched, every so often laughing, but otherwise not really
actively communicating. We were hanging.
Ever since fLufFy got a fancy new laptop, we've been able to videochat
with each other, and this has become sort of the ultimate of hanging,
coast to coast.
This morning she VC'd me while I was eating an apple at work and she was
eating breakfast at a cafe. Two weeks ago she watched me make cookies
while she and Mr. N ate dinner. It's like being able to have a window
in the background that leads to a friend's house. It's not about
actively having something to communicate, it's just hanging.
This is clearly what technology was made for. So I can glance over and
watch fLufFy's facial expressions while she chews.
PS: This whole episode reminded me of
this
old post. Reading through the comment stream down to the bottom
made me laugh.