My Least Favorite Form of Requirements

Just make it work like [system XYZ] does.

Ok, and exactly what does [system XYZ] do?  Is that really what the client wants?  You know it's a little difficult to reproduce in 5 months what originally took 10-12 years don't you?  Maybe we could prioritize which features really do get ported?

Two years ago I was part of a semi-successful rewrite effort of some truly heinous VB6 code.  The tribal knowledge was gone, and the code was extremely difficult to follow (hence the rewrite).  We ended up pulling most of the detailed requirements out by creating characterization tests by running inputs through the old code and setting up automated tests to ensure our new code did the exact same thing.  That's a double edged sword because the characterization tests aren't particularly readable or understandable — and you potentially end up rewriting existing bugs!

The absolute worst was a project I was on in 2003 where our mission was to "refactor" (we reused the graphics and threw away the rest, including the HTML) a purchased system until it was ready for production.  The business partner really wasn't interested in the project, so our total requirements were to make it work like XYZ.  The problem was that in this case XYZ was an unfinished prototype, so we basically made up the requirements the best that we could.  In the end, nobody walked away happy.

Actually, come to think of it, there was a vague functional spec written very early on that nobody ever looked at again.
 

About Jeremy Miller

Jeremy is the Chief Software Architect at Dovetail Software, the coolest ISV in Austin. Jeremy began his IT career writing "Shadow IT" applications to automate his engineering documentation, then wandered into software development because it looked like more fun. Jeremy is the author of the open source StructureMap tool for Dependency Injection with .Net, StoryTeller for supercharged acceptance testing in .Net, and one of the principal developers behind FubuMVC. Jeremy's thoughts on all things software can be found at The Shade Tree Developer at http://codebetter.com/jeremymiller.
This entry was posted in Ranting. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Carlton

    Just use Google does not fly when you customer has lots (>$200,000) of money to spend and management is only more than willing to help them. You also cannot possibly use open source tools when there are $40,000 licenses to buy.

    Don’t get me started…

  • http://codebetter.com/blogs/jeremy.miller jmiller

    Name withheld,

    That really doesn’t sound like an easy project to get your hands around. I was part of a failed semi-rewrite several years ago where the legacy VB6 code had hundreds of undocumented hard-wired business rules baked into the code. At one point about two months into the project the one solo BA with absolutely zero hands on experience with the legacy code told me that she had completed the requirements document for the new replacement system. She was a bit upset with me when I laughed at her. I explained the hidden business rules in the existing system and she started to turn pale.

    That was attempt 2 of 3 to rewrite that particular app. As far as I know, attempt #3 is semi live but the legacy app isn’t completely dead yet 5 years later. And I bet the older COBOL legacy app that proceeded the VB6 code is still lingering too.

  • Name withheld to protect the guilty…

    I think I’ve found the worst of all worlds.

    Working on one now that is way over budget and the schedule is only a distant memory. And, yes, it basically started as “make a web application” that “does everything [XYZ] and [ABC] do”….. where ABC and XYZ were legacy apps written in Access with full control of the querying and reporting.

    Knowing what I know now… I’d RUN, not walk, away from this project. Started the project in ASP.NET 1.0, know migrated to 2.0 with AJAX…

  • http://codebetter.com/blogs/jeremy.miller jmiller

    What’s always killed me about the whole “make it just like Excel” is when the data is hierarchical.

    Isn’t the Google spreadsheet stuff supposed to be usable? I wonder if you could have just said “use Google”

  • Carlton

    How about “make a web version of Excel”? – I kid you not. The current “system” was a bunch of cobbled up Excel files and the end users did not know anything else. As a result, the customer wanted us to recreate Excel, but over the web.

  • BigJimInDC

    I’ll one up you, try “make it just like MS Access”! A co-worker at a past company was convinced that a system that ultimately would be built in VB6 was best prototyped in MS Access, including handing off the prototype to the customer to “play with”. Then 18-24 months later, after rounds and rounds of “well Access did that” “bug fixes”, few developers were left with hair still on their head :)

  • http://www.shawnhinsey.com Shawn

    Back when I did consulting work, the common refrain was “we don’t need requirements, just make it work like Amazon.” Oh, those were heady days!

  • http://www.adamgriffis.com Adam Griffis

    My most recent one was: “Make it work like Google” — draggable desktop, widgets, customization, etc. We had one year. We now have about a month left, and I hear (just the other day): “Actually, can you make it more like Yahoo?” Sigh.

  • http://codebetter.com/blogs/jeremy.miller jmiller

    Ok Tomas, I take what I said back. Just make it like Excel bugs me even more.

  • http://www.winterdom.com/weblog/ Tomas Restrepo

    I love those. Particularly when XYZ == Excel!