September 17, 20XX
Dear Susanna,
I hope the fresh start of a new college semester finds you well. I have great news! I've just signed a 2-year contract with one of the world's largest investment banks, and will be helping to maintain a next-generation trading platform.
This is the sort of programming assignment I've dreamt of since being in your shoes, imagining what post-college life might bring. In these first few years, my naiveté was rewarded with arcane VB6 apps and moldering SharePoint servers—but no more! I can't wait to start.
I shall log my experiences for your edification. Whenever you feel discouraged, remember my example and know it won't be much longer before you, too, realize your dreams.
-Frederic
Day 1. I expected the words to flow from my fingers with electric thrill, dear sister. Instead, I write to you now in a mood of deep bemusement.
The morning began well enough. My cubicle, laptop, phone, and network credentials were furnished to me straight away: a true rarity in the business world. Then my new boss took me to meet the genius behind the cutting-edge trading platform I'd been told so much about. He's a man they simply call The Architect.
The moldy smell of expired sandwiches hung about his cubicle. The man himself had sharp, beady eyes and a patronizing smile. He's either plumbed the universe's darkest machinations firsthand, or he believes he has.
My boss asked The Architect to give me a quick preview of the trading platform. I was genuinely excited to see what cutting-edge, next-gen software looked like.
The Architect obliged, remoting into the server hosting the application and launching it. On his monitor, the splash screen appeared, displaying a Greek soldier posing like Zeus. I realized he looked familiar.
It was The Architect's face Photoshopped onto a warrior's body.
A spine-curling cringe settled over me, which I struggled to suppress. This was no sign of world-class software, rather the opposite. I don't recall anything else. Now I'm alone in my cube, shuddering in dread of all that's yet to come.
No, I mustn't succumb to pessimism. Perhaps The Architect simply has a bad sense of humor. Worry not for me, Susanna. The next time I write, it will be in much higher spirits.
Day 2. Can this be real? I've sat down with my first coffee and have barely begun to look into the code base, and I'm already horrified by what I see. The main file, which is just for bootstrapping, contains over 10,000 lines of spaghetti code. The comments and log files contain multiple instances of Who cares?, Bah, and other expressions of futility.
The other developers are starting to filter into the office now. Peeking over the cubicle walls, I see plainly the hopelessness in their eyes.
I feel as though I stand at the edge of an abyss. Though I can't see the vast chasm below, I'm aware it's terribly far down, and the darkness stretching in between is fraught with uncertainty.
Day 5. It gets worse. Further dealings with The Architect's code have revealed more horrors, Susanna, things you must promise me never to permit within your own software projects:
- The
Listener
interface has apublish()
method. - There is a class named
NothingIsSomethingElse
with a single method,wireUp()
. - Many functions and constructors require 256 parameters- or more!
- The container classes follow no standard convention.
Map
has<V, K>
as the template arguments. - There are templated functions that take up to 12 template arguments.
- Instead of using conventional terms like "source" and "sink," The Architect insists upon terms like "faucet" and "basin."
And the trading platform is every bit as horrific as the code lurking beneath. Running in production, each process requires 48 GB of RAM, consumes 350% CPU when the system is idle, and spawns anywhere from 10,000-20,000 threads. During full garbage collection, a process may stall for as long as 3 minutes.
People depend upon this monstrosity for their financial futures? God help them. God help us.
I've spoken to some of the other developers. They say The Architect's code is so complicated that only he can modify it. They're resigned to the application being this way.
I'm not. For my own sanity's sake, I shall start listing all the things we can improve, and take it to the next status meeting.
Day 10. Alas, all hope is lost. When I'm not looking at eye-bleeding code, I'm looking at my inbox—currently full of emails from The Architect, scathing emails shaming any member of the dev team who dares to make a mistake or question him. One of these emails is addressed to me. Another is addressed to an unfortunate soul who'd dared to use inheritance in her latest work.
720 more days of this nightmare. It's too late for me, Susanna, but not for you!
Change your major!
SAVE YOURSELF!