Thursday, February 10, 2011

When the bug in the system is actually a person


A rookie programmer's purchasing order system works perfectly -- until the new corporate managers start laying off employees


An IT recruiter came to one of my classes when I was a junior in college, and about 30 of us turned over our resumes. As a barely employable computer science student, I jumped at the chance to get hands-on experience and income while completing my studies, as well as work toward a programming job that could offer full-time employment after I graduated.
One of two companies called back for a second interview. I somehow beat out the competition, although I had to bluff my way through trivia concerning the adventures of a fellow called Link and his girlfriend Zelda.

At my new job, I had some free time between configuring new equipment and resetting passwords. In order to fill the hours between schoolwork and to gear myself up for the coming "real job," I worked on developing a purchasing system my boss could use to help him with the process of ordering equipment. It would keep track of what he ordered, who approved it, when the order was filled, and a lot of other business logic. The old Lotus Notes system his group was still updating with this information had a variety of problems, so the team was subject to a lot of manual input and searching that ate up precious time.
Off the Record submissions
The system I was building had to send emails automatically to alert people in the approval chain. At one point during development it accidentally emailed the vice president about a multi-million-dollar order, but he was pleased to see things were proceeding well. There was a buzz around the office in anticipation of my slick, new system.
Around the time I had it demo ready (and was about to graduate), the worst happened. The project I was supposed to work on full-time after getting my degree was canceled, and dozens of people were deserting the company like rats on a sinking ship. I guess a couple of the developers couldn't get jobs, so management proposed that they "help" with my little project. Since I was completely inexperienced, I thought this was a great idea.
After several weeks of endlessly refining the requirements for a system that was all but completed, graduation day was almost upon us, and one of the execs had found work for me elsewhere in the company in another part of town. The clock was ticking, and I wanted to deliver a working system to my old boss before I left.


I told the senior developers that I didn't have time to continue with all the edits they wanted on the requirements document because I had to fix the last few bugs before I left. One of them was furious and screamed at me in an open cubicle farm about how I was to do what he said. I never spoke with him again after that, but I did finish developing my system and put it into use. It worked as expected, and my boss was pleased.
A couple of months later, while neck-deep in the debugger on my new project, I got a call from my old boss. Something was wrong with my purchasing system. Purchase orders weren't getting filled, and he figured my system had a bug. It was a disaster. Would I come take a look?
I really liked him (and it was my first "baby"), so I drove out. After some digging, I found that there were no technical problems -- none. The system worked perfectly. I started to walk around to people's offices and asked what had happened. Everything was working as it should.
Finally, I got to the liaison who was supposed to actually place the order with the vendor. Had she gotten the email from my system? Yes. Did she write the check to the vendor so that the order could be placed? No.
We'd recently been bought by a larger company, and in the ensuing chaos corporate shenanigans had triumphed once again. The new corporate managers were downsizing people like this liasion so that they could "consolidate resources," and they told her not to fill any purchase orders "the old way." She was clearly disgruntled and checked out since she knew she was on her way out the door. To her, not doing things "the old way" meant not doing them at all. Why should she care?
I'd found the "bug" and explained to my old boss what had happened.
I lost touch with my old boss and don't know what happened with the system I developed under the new corporate managers. But one thing this experience taught me was that no matter how excellent the software might be and how perfectly it solves the problem, it might end up as shelfware due to forces outside of your control. Whenever this happens, I learned from this incident that it's best to just shrug and move on.