Diary of a Third-Class Programmer was originally published on September 27th, 2007.


Most first-class (consultants & employees) and second-class (contractors) programmers don’t realize that there’s an entire class of programmers below them. These programmers – the third-class programmers – work in Developer Purgatory with far less responsibilities, no latitude to make any decision at any level, and always get assigned the “dirty work.” In fact, some even consider it an act of charity to call these poor folks “programmers” at all.

Most third-class programmers are third-class for a reason. There is simply no way they could ever get a job anywhere else. Occasionally, recent graduates get sucked in to Developer Purgatory by the allure of a “real programming job,” never realizing the stigma that goes along with it. Andrew is one of these poor souls, desperately trying to get out. And this is his diary.

May-20: First day on the job! I guess the department is officially titled “Internet Administration” (whatever that means), and has some fun people it. Not at all what I expected from The Bank!

May-22: Met Diane today, she just started working on the “Repo” database project. She said she’ll definitely be asking for my help on it soon.

May-23: I met April today. She seemed nice, though it was a bit odd that her entire desk was covered with Pokemon merchandise and stickers. Her other passion, so she said, was playing First Person Shooter games online. Other than that, it’s been a slow first few days with nothing to do.

May-24: Met Steven today. He’s an ASP programmer for some internal sites. Later in the afternoon, he stopped by cube, worried. To quote: “You're going to have to help me on this, because I know absolutely nothing about ASP.”

May-27: Diane said she might need some help on the “Repo” database. She’ll let me know. I don’t have anything else going on.

Jun-04: Chatted with April (Pokemon girl) about Unreal Tournament. She’s in a “clan.” It is her mission, apparently, to run out into the middle of an open area and get shot down so her teammates could spot the enemy.

Jun-18: Don (our manager) got really peeved today. We were playing foursquare between cubes again, and the ball bounced twice in his. He should have been out, but he kept insisting that a desk-bounce doesn’t count as a bounce. Anyway, he stormed out of the office, saying he’ll never play again, and went home early.

July-08: Diane asked if I had free time to help her on the “Repo” database. I did, she said she’ll let me know soon how I can help.

July-18: Steven was really late today. Apparently, he was getting onto the train and his shoe got stuck in the door and left behind on the platform. He had to go back and fetch it.

Aug-20: Diane asked, again, if could help her on the “Repo” database. I said yes, again.

Aug-26: New guy, Colt, started today, transferred from Investment Banking. He moved here because he felt he was stronger in this area.

Aug-27: Colt, as it turns out, has an unhealthy obsession with firearms. Who keeps pictures of their guns in their wallet!?

Sep-16: Diane snapped at me today when I asked how she was doing. To quote: “I’m too busy working on Repo to chit-chat!”

Sep-17: Diane apologized for yelling at me. She’s been under a lot of stress with Repo.

Oct-09: Colt broke my keyboard today. I complimented his new shoes. “Thanks,” he replied. And then, he proceeded to grab a nearby glass of water and tipped it over onto my desk. This caused a large puddle of water that started dripping onto the keyboard. He then lifted up one of his legs, and put his shoe on the desk, in the middle of the water. He then grabbed his ankle, tugging at it, and said, “good grip in the wet too.” And then he walked away.

Oct-14: Another new guy, David, started today. He virtually wanted to move away from mainframes and basically move into web development. He basically got a lot more money than I did because he'd virtually been working at the bank longer. Basically though, he wasn't very good at web development. Oh, and he virtually spoke like this all the time.

Oct-22: Finally got to see the “Repo” database. It was literally three tables in an Access database and had a “form wizard” form called Form1. The form didn’t do anything. This is what Diane has been working on for six months.

Nov-04: Don asked me to review David’s code, as it was his first coding on a full-color screen. He had been working on a Budget Planner calculator that had lots of amounts the user could enter. Food, electricity, gas, etc. Next to each of these items was a drop down box with “Weekly,” “Monthly,” “Annually.”

Nov-05: I took a look at David’s code. I suggested that, instead of having twenty odd “Weekly,” “Monthly,” “Yearly” options throughout the page, he should put them into an array and reference that. He was happy to learn a better way of doing things.

Nov-08: David showed me his revised code. In the code now, there was not just one array, but about 20 arrays declared, each array containing “Weekly,” “Monthly,” and “Yearly,” with each drop down box pointing to a different array. I told him he should just be using one array, as they are all the same.

Nov-13: David let me know that he fixed the code again, so I took a look. This is exactly what I found:

arrayOne = "Weekly", "Monthly", "Yearly"
arrayTwo = arrayOne
arrayThree = arrayOne
arrayFour = arrayOne
...
[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!