When I was thinking about software success stories to add my piece to recent meme one particular project came to my mind. Actually it had nothing to do with my influence on its result so it didn’t suit to the meme, but still I thought I’d share it. I consider the project as a success although it’s rather far from a classic example of well-crafted piece of software driven by a committed team of seasoned professionals. It was a bug tracking application which my very first employer had developed for their own projects.
Several information about Track, which was the name for the application (very creative name, indeed), shows it was far, far away from perfection when it comes to judging project/product management and software development processes.
1. Track was both proprietary and legacy project almost from its birth. Language it was written in (Clarion – yes, I know you consider it more as car audio manufacturer than programming language) fits well to the picture.
2. The application was treated as a putrid egg among developers. It wasn’t a core task for anyone. It was always a sure-shot candidate to pass to a newbie developer joining the team. Youngsters didn’t know what a nugget was handed to them.
3. As the result, developers working on Track changed several times which ended up with no particular style of coding. What more, at least a couple of them were learning the technology while developing the application. A great idea to create an example how the code shouldn’t look like.
4. No one really could remind the real testing period for Track. Developer’s tests were enough. Testing is overrated anyway.
5. Flexibility and Track doesn’t rhyme well. Actually it doesn’t rhyme at all. The number of things which were hard-coded and assumptions made during development was really impressive, although I’m not sure if that’s something to be proud of. It’s hard to imagine any other company which Track would show usefulness for.
OK, great start of the story of success, isn’t it? The story lying behind Track’s birth was simple – company bought quite expensive bug-tracking solution which unfortunately didn’t appear as useful as it had been expected. As company was paying the rent developing software they decided to write something similar but with needed improvements added. The rest is pretty well described above, yet every issue or decision can be quite well-grounded.
1. Track was proprietary but no one ever wanted to sell it to anyone. OK, one of our parachute-CEOs had the idea for a moment, but fortunately the application was just un-sellable. It was legacy but actually that wasn’t any issue here as no one ever wanted to sell it to anyone. OK, one of our parachute-CEOs had the idea for the moment, but fortunately the application was just un-sellable. The programming language was than the most intensively used one in the team and no one ever wanted to sell the application to anyone...
2. Having newbies working on the project the chances were good they had some time to spend on their non-core tasks. With seasoned developers it wasn’t always so obvious. And despite their opinion about spaghetti code and strange ideas with implementation it was quite a good lesson for youngsters what they could meet in the wilderness out there.
3. As far as the application worked somehow (it could be magically even, no one would complain) it didn’t really matter what the quality of code was. The goal was to make things done, and they were done indeed. Why bother?
4. Track was used in production so we were testing it everyday. And there were two categories of bugs: those which annoyed you so much you were able to convince the developer to fix them or those which you got used to and live with them. The former, as the definition tells, were fixed. And somehow being a director of the team you could submit much more issue to the first category. Strange.
5. The application wasn’t flexible but it suited to the very company extremely well. It was like a glove crafted especially for you. When we wanted some functionality to be added it was added. When we wanted to do some usability improvements, nothing easier. Everything under control, here and now, just for a couple of hours of development and another couple listening to rants of lucky developer.
The whole project was actually nothing close to whatever you can read about either proper software development or proper project management. However year after year I appreciate Track more and more. I’ve worked with several different bug trackers and neither one was able to deliver user experience on the same level as the good old Track. It wasn’t by any means a great application, trying to migrate it to different environment would be like a wild-goose chase, but in that very company that very project was a success.
It’s the definition of success or failure which can change the project from one to another, so don’t be too fast calling the project either one.