Friday, January 14, 2005

The Life of a Computer Science Major - Author Unknown

Ask anyone who has stayed awake for thirty-seven hours consuming nothing but
Coke and Snickers bars and staring into a green CRT screen, if there is
anything glamorous about the world of computer programming. Look deep into
his bloodshot eyes, and try to detect any signs of joy among the red
streaks. Then, just for kicks, ask him why he does what he does, despite all
the pain it's causing. The most positive answer you'll get is, ``it feels so
good when it stops.''

Although computer sciences majors come in all sizes and shapes, each
possesses that essential ``nerd'' quality which led us to declare the major
in the first place. Some of us, the stragglers, are only part time nerds.
Unfortunately, over the past three years, an alarming number of lifers,
full-time nerds, have appeared. These are the really scary people who hang
around the terminal room regularly, with absolutely no purpose for being
there. People who'd rather sit around hacking on a Saturday evening than
lying stuporously drunk in one of the Dellys, or sleeping. This specialized
breed of computer nerds, affectionately known as the Computer Nazis, becomes
an increasingly large organization every semester. No one knows exactly
where they come from, since no one has ever seen a Nazi outside of the
computer center. Similarly, no one has ever tried to find one, either.

The leader of the Williamsburg Nazis, it seems, is a large Arabic slob we
shall call Abdul. Abdul typifies the model Nazi. Granted, he's not quite as
dweebish looking as you'd expect, yet somehow you know that he's not the
kind of guy you'd invite to dinner. He's loud, he's self-righteous, and he
can tell you anything about the computer system you'd never want to know.
Below Abdul are his Seargeants at Arms, Jeff and Andy. Though not quite as
loud as their leader, both possess voices which will rise above all others
at large gatherings. Jeff has a lisp and Andy is annoyingly nasal; everyone
in the department can imitate his favorite Nazi. Somehow, they're always in
your class. And today is no exception.

Larry, the instructor wanders in, dumps several folders on his podium, and
smiles at the class. Attendance is good today, for the first time since the
beginning of the semester. Ah yes. Today he is to hand out the specs for the
final program, an event not to be missed. Floating among the seemingly
carefree students is a definite air of uneasiness; a combination of hope,
anticipation, and dread. He passes out the assignment, announcing that he
will take questions regarding the program during the next class meeting.

Simultaneously, two hands shoot up in the front row. Apparently, Abdul and
Andy, the ``Sunshine Boys'', have questions which can't wait two days.
You've got to hand it to these guys. They're fast readers, and seem to zero
in on ambiguous phrases and logical errors in the description even before
the entire class has received the document. This time they've even caught
the instructor off guard with their rapid fire analysis of his instructions.
You can tell that Larry really wants to tell them off, but remembers his own
Nazi days.

Two days go by. It's Question Day. Again, Abdul and Andy have the floor.
Seems that the instructor's skeleton for the program didn't work for some
obscure test case, and caused their respective programs to bomb. Larry
apologizes to Abdul, and makes a few witty comments to Andy. Most of the
class stares in amazement with the patented Computer Science ``Holy Shit''
expression hanging off of their faces. Have these two guys actually finished
the assignment already? We haven't had the thing for forty-eight hours yet.
Hell, I don't even remember where I put my specs sheet.

Two weeks have passed. Monday morning. The project is due on Wednesday.
Questions are finally rolling in from people other than the Sunshine Boys. A
certain anxiety begins to well up in the stomach as the deadline approaches.
Serious doubts about finishing the program in time arise. Larry, ever the
entertainer, mentions that ``If you haven't started the project yet, you'll
never get it done.'' He means it, too. That night, the stragglers tackle the
machine for the first time in weeks, trying to make some sort of headway, or
at least translate the problem at hand.

There are two mutually exclusive techniques that are used in the early
stages of programming: The Software Engineering method, and the ever-popular
Brute Force strategy. Right from the start of our computer careers, we are
told that any problem can be broken down into manageable pieces, and that
these pieces can be linked together to form a logically constructed program;
the method used by Software Engineers. This process is time consuming, yet
incredibly simple. Keep the pieces as small as possible, construct each one
separately, get it to working, and plug it in. ``This method can be applied
to any problem you'll ever have to solve, in the field of computer science,
or in real life situations,'' says the textbook. Sure. If you've got the
time.

Brute Force can similarly be applied to any real life situation, and in the
early stages it's quicker than the Software Engineering method. It's
instinctive, spontaneous, and produces concrete results almost immediately.
Read the problem, get a general idea of where you're headed, and head there.
Start simply, and then build the sucker. If you don't understand something,
ignore it. If it doesn't work, throw it out. Assume you know more about what
you're doing than you actually do. It's kind of like picking a nice living
room set, and building a house around it.

Apparently, Brute Force is the way to go this time around. The first few pot
shots at the problem miss their target completely, but finally pieces begin
to fit together. Granted, there's no central structure here yet, but we've
definitely bought the living room set. And, with a little bit of pushing and
bending of good programming rules, we seem to have built the fireplace and
part of the upstairs bedroom. So far so good. Who says we can't finish this
in two days? Get a printout, go home, have a beer and watch David Letterman.

The Letterman show appears to have been a tactical error. Brute Force has
come to its inevitable halt, and the deadline is tomorrow. Bits and pieces
of the program are working just fine, but the major chunks are still in
shambles. The program has to be finished within the next eighteen hours. We
have not choice but to begin the Caffeine Airlift.

If it weren't for caffeine, many of us computer science majors would have
died back in sophomore year. Sometimes, there just aren't enough waking
hours in the day to accomplish everything that has to be done. The logical
solution is to eliminate some of the sleeping hours, through carefully
measured doses of coffee and Coke. Time release caffeine pills were in
fashion two years ago, but turned out to be entirely too efficient. It's
difficult to concentrate on programming when your body wants to tap dance.
In any shape or form, the Caffeine Airlift has saved us all.

Once the body is properly primed, the work begins. The computer lab
overflows with other desperate individuals, all heavily caffeinated, and all
decked out for the long night ahead. Grab a terminal, and start hacking.
It's comforting to know that everyone else will fail this project with you.
The mood is surprisingly relaxed, and jokes about impending doom begin to
fly.

Ten o'clock. Eleven hours and counting. Condition: guarded but stable. The
three Cokes in your system are making your legs bounce, but you ignore it.
Concentration is the key. The room fills to capacity, and the jokes
continue. Of course no one will finish, but who cares anymore? This is no
longer a project, but a mission. Actually, you've made amazing progress in
the last few hours, but won't admit it to the others. More fun to complain,
isn't it?

Midnight. The Jello Hour. The Jello Principle state that ``no matter what
quick solution you find for a given problem, it will still make you worse
off than you were before.'' Kind of like nailing Jello to a tree. The
temporary solutions look pretty for awhile, but are destined to fail in the
long run. After Jello hour, you get a whole new perspective on life. The
beard begins to appear. The empty Coke cups form a wall along the side of
your work space. You realize that you'll miss Letterman tonight. Short cuts
that simulate important program elements come to mind, are added to the
code, fail, and are discarded. The best rule of thumb is to try something so
unorthodoxly simple, that it could never work. Odds are that it will.

One thirty. You've watched half of your classmates walk out in stuporous
frustration. The die-hards remain, chugging caffeine in lethal dosages and
cursing quietly to themselves. And suddenly, the peaceful torpor of the
terminal lab is shattered by the unexpected arrival of the Nazis. Abdul
strolls in, flips on a terminal, and talks loudly to his partner Jeff across
the room. In the back of your mind, you wonder where Andy is tonight, but
the truth is you don't really care. Abdul is amused that we non-Nazis are
working on the same program they had finished nearly two weeks ago. Jeff
comments, through his speech impediment, that the program was ``trivial.''
Eventually, the Nazis become engrossed in their own work, whatever the hell
they do at two o'clock in the morning. Abdul has found some new way to amuse
himself, and yells for Jeff to come over. Jeff yells back that he's too
busy. Everyone wishes Abdul and Jeff would die painfully.

Finished. It's four AM, and the damn thing is finally in the can. Smile at
the amphetimized corpses as you leave, and wish them luck. The walk home
seems longer tonight. No cars. No birds. No noise. Life seems to have gone
on outside of the computer center. As you hit the bed, you know you're too
wired to fall asleep. It doesn't matter. You've won the game again. As your
body continues its tap dance, you realize that the process is going to start
again on Monday. No problem. Yeah, it's hurts for awhile. But it feels so
good when you stop....

No comments: