Many of you know that I worked at a place called Cecil for quite some time. The source of a great deal of joy and a great deal of stress for me for quite a few years.
Leaving a position like that, in a job like that, part of you (the vindictive mean-spirited part of you) kind of hopes the whole place will fall apart without you. That somehow, without your incredible insight/skill/talent/charisma, the whole operation will grind to a screaming halt.
Of course, that didn’t happen, they soldiered on and seemed to go from strength to strength, I was almost offended when (in my absence) they started breaking all the “rules” I’d ever assumed about software development…
- They hired a whole bunch of new developers, fresh blood, and let them loose to write a whole new interface without so much as giving them a specification.
- They did not take the time to “understand” the old code. How were they going to understand the business logic built up over 7 years?
- They created silos, where web development, middleware development and database development didn’t mix, in direct contravention of XP’s mantra “it’s all my code”.
- They relied on the brilliance of one key developer to implement 90% of the complex database access and middleware code, in direct contravention of any CMMI level you care to mention.
- They promoted a tester who had shown little aptitude for development (or even testing) to be “lead developer” against the advice of any management textbook I have ever read.
- They promised to rewrite the whole code base in .Net and make it all web based in a matter of months. They planned few contingencies.
But what really annoyed me is they seemed to be doing well despite all the above! The code was faster because they were no longer tied down to the legacy code, and they could cut corners by leaving out “superfluous” or “confusing” functionality.
As a rare measure of prudence, they ran the new interface side-by-side with the old (classic) interface. Now, I was never much of an interface specialist, I was normally across all aspects of the application, from database to javascript and everything in between, so I can’t take credit for the interface, but I certainly knew how to keep everything going without falling over.
Whenever there was a bug they couldn’t fix, they blamed it on the old developers and “the COM”. They refused to touch “the COM” so they still pay me an exorbitant amount of money to come in every now and again (no more than a few hours a month) to “fix” problems (normally adapting the COM to behave as they expect it to behave rather than how it was designed). When they finally decided to implement error logging they realised with a start that their “perfect” new code was throwing exceptions like nobody’s business.
Anyway, I felt a little vindicated today when I got a sneak peek at some feedback from users. Users were asked to comment on whether or not the old interface should be completely dropped in favour of the new one.
Within 5 minutes of the question being posted on the website, the first response came in: overwhelmingly no. The new interface was crap, users found it confusing, limiting, slow, bandwidth heavy etc etc. Over the next two hours or so, the responses poured in. From users who had faithfully used our software for over 5 years to users who had only just started using it, they all thought the new interface was a mistake.
Forgive me if I gloat, just a little. Maybe, just maybe, all that software development methodology stuff actually was important?