The first company I ever worked for had no testing cycle and no mechanism for bringing users into the design process. Code went directly from the developers' hard drives into the hands of the users - who usually gave it one look and sent it back since it didn't do the three most important things they needed.
I was deeply relieved when a prominent developer whisked me away to her company in Boston. My new outfit used versioning software and ran an up-to-date version of my programming language. I was bedazzled!
The first six months were wonderful. Then, one day in February the owners sent out for pizza, called the developers together, and announced that it was now our duty to produce a new product destined to take over a missing piece of the market pie by Christmas.
The owners wanted to start beta testing in four months, which - even though we had never coded a beast like this - didn't seem totally unreasonable. Unfortunately, my boss "Lydia" was never able to find a group of users who could help us define what they might actually want from such a product. Ultimately, she decided to write the specs herself. I should have seen disaster coming.
Six months later we had a workable prototype. Beta testing, here we come! The first boulder hit us when users explained that the product was useless unless it could talk to multiple back-ends - SQL, Oracle, and so on. Lydia's spec was designed for SQL only. Other issues came up. Meetings were called, specs were rewritten.
Lydia and I scrapped most of the code we'd written and spent the next six months re-engineering everything to be the same... only different. Finally we had another prototype, there were only a few minor bugs to work out. Beta testing, here we come!
That Friday afternoon, Lydia and our lead tester/accountant were downsized. The project plunged into chaos for weeks. My new boss assured me that my position was secure and promised me time off, a bonus, a better cube, and a faster computer if I'd carry on without Lydia.
A new lead developer, "Joe" was assigned to work with me. After a week of reviewing the prototype, Joe announced that it was awful. The code was bad, the specs were wrong, everything would need to be redesigned. Since the product could not be released in its present form, my pay rise evaporated, along with any hope of a few days off (I got the cube and the computer, but I still felt cheated).
By the time we reached beta testing for the third time, the project was almost two and a half years behind. Miraculously, the users actually liked the product this time. But before I could breathe out (or receive my long-delayed bonus), the boss announced Phase Two. Before the product "really started bringing home money," we'd need to deepen its scope in several critical areas. Bonuses were delayed indefinitely.
Last week, the phone rang. It was a woman I had met through a local programmers group who wanted to know if I would be interested in a position with her company.
OK, every programming development has issues, but could they be worse than three years of coding and recoding this dumb product without one bonus or word of praise? My eyes started to sparkle.
I know there will be issues at the new development. But maybe they'll be different ones.