One memorable day, I was asked to take over a programming project that had "gone South" -- ominous words.
The background: This was the second project we'd taken on with a customer we'll call "Acme," a small hardware company that manufactured aviation components. The first project had been a monitoring system in which we wrote the software for Acme's hardware.
[ Get a $50 American Express gift cheque if we publish your tech experiences. Send your story of a lesson learned, of dealing with frustrating coworkers or end-users, or a story that illustrates a relevant takeaway to today's IT profession to email@example.com. | Get a new tech tale delivered to your inbox every week in InfoWorld's Off the Record newsletter. ]
It was such an unpleasant experience that our company owners promised we would never do business with Acme again. Hardware delays, accusations, arguments over responsibility, and disagreements over payment all had made the project difficult. On top of that, "Bob," Acme's director of engineering, was a verbally abusive, vulgar, profane, and completely unpleasant person. It was well known that he had over 100 percent annual turnover in his shop.
Fast-forward a year and a few rounds of executive golf and we were somehow doing another project for them.
This time, we were told, was going to be different: The project was a simple addition of one new component to the system we wrote, was backed by a multinational aerospace conglomerate, and was going to wrap up in six months. Acme was sending prototype hardware within six weeks, and our company's project manager quickly and easily created a software specification that was tightly bound to the hardware requisition. It was a small, focused upgrade.
Unfortunately, at six months, the project was nowhere near complete. We hadn't even received any prototype hardware. This is when I was asked to take over.
I learned that the reason we didn't have any hardware was because Acme was re-engineering the entire system. Nothing was the same, and no code from the original project was reusable.
The entire contract should have been renegotiated, but our company executives did not want that kind of hassle. Our project manager was tired of the mess and of dealing with Bob, so he pushed the project onto someone else: me.