|
James Madison


|
Friends
think we can fix their computer. Software engineering has nothing to do
with getting a home computer to work. We build massive systems that move
terabytes of data across thousands of nodes to serve millions of people and
generate billions in revenue. But we buy our home computers from some
generic company like Dell, just like anyone else. If it breaks on warranty,
we call the company. If it breaks after the warranty, we get a new one.
That’s all we need to know about fixing a computer.
|

|
We grew
up playing video games. Our moms thought it was a terrible use of time.
We now argue that it was an early investment in our current careers. The
focus and dedication required to defeat the video games of our youth is not
unlike that required to drive the computer into submission at work today. Of
course, there are millions of kids who played video games who didn’t become
software engineers. So clearly, all those degrees and certifications must
matter too! But it all started with video games.
|

|
Society
thinks we’re out to get them. Not you or me individually of
course. Or, really, any particular software engineer they’ve ever actually
met. But somewhere out there, are people who are trying to hack into their
bank accounts, the national power grid, the global defense system,
something!—much like in this scene from Sneakers where the resident
genius finds that the bad guys have the code to break into anything.
Actually, we expend much effort specifically preventing such things, and have
proven quite successful at it.
|

|
Everyone
else thinks this is easy. Software engineering is easy—to specify. So
how much harder could it be to do? “We need undo/redo,” a manager once told
me. It took 3 seconds to say, and added 20% to the program cost. “Ever code
undo/redo?,” I wanted to say. But of course he hadn’t, so instead I
proceeded to explain reversible commands, stack traversal, system state
preservation…at which point his eyes glazed over and he withdrew the request.
|

|
We can
stop bullets! To quote Joseph Weizenbaum, “The computer programmer is a
creator of universes for which he alone is the lawgiver. No playwright, no
stage director, no emperor, however powerful, has ever exercised such
absolute authority to arrange a stage or a field of battle and to command
such unswervingly dutiful actors or troops.” When I am in the machine, I am
god!
|

|
We
spend a great deal of time on worthless tasks. Sadly, converting
software engineering skill into money requires actually having a job. And
most software engineering jobs come with many questionable tasks, as
iconified by the famous TPS Report in Office Space. So while advanced
problem solving may be at the core of our value proposition, we actually
spend as much time filling out time sheets and status reports as we do
engineering systems.
|
|