CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Jeremy D. Miller -- The Shade Tree Developer

Under the hood and working with .Net, TDD, Software Design, and Agile Stuff

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.
 


Published Feb 20 2007, 07:33 AM by Jeremy D. Miller
Filed under:

Comments

Tomas Restrepo said:

I love those. Particularly when XYZ == Excel!

# February 20, 2007 8:07 AM

Jeremy D. Miller said:

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

# February 20, 2007 8:34 AM

Adam Griffis said:

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.

# February 20, 2007 8:44 AM

Shawn said:

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!

# February 20, 2007 8:49 AM

BigJimInDC said:

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 :)

# February 20, 2007 10:45 AM

Carlton said:

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.

# February 20, 2007 11:40 AM

Jeremy D. Miller said:

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"

# February 20, 2007 11:46 AM

Name withheld to protect the guilty... said:

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...

# February 20, 2007 12:06 PM

Jeremy D. Miller said:

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.

# February 20, 2007 12:20 PM

Carlton said:

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...

# February 20, 2007 5:17 PM

Sam Gentile said:

Ah Saturday morning where we can sleep in, ah no wait...I have kids to wake me up at the crack of dawn...

# February 24, 2007 9:12 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Jeremy D. Miller

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 previously worked as a systems architect building mission critical supply chain software for a Fortune 100 company and learned agile development practices as a .Net consultant at ThoughtWorks, one of the pioneers of agile development. Jeremy is the author of the open source StructureMap (http://structuremap.sourceforge.net) tool for Dependency Injection with .Net and the forthcoming StoryTeller (http://storyteller.tigris.org) tool for supercharged FIT testing in .Net. Jeremy's thoughts on just about everything software related can be found on his weblog "The Shade Tree Developer" at http://codebetter.com/blogs/jeremy.miller, part of the popular CodeBetter site. Jeremy is a Microsoft MVP for C#. Check out Devlicio.us!

This Blog

Syndication

News

All opinions expressed here constitute my (Jeremy D. Miller's) personal opinion, and do not necessarily represent the opinion of any other organization or person, including (but not limited to) my fellow employees, my employer, its clients or their agents.

About Me

"Best Of" Compendium

StructureMap (Dependency Injection for .Net)

StoryTeller (Supercharged Fit)

Build your own Cab

TestDriven

MVP