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

The little things do matter

I, I mean, my friend, just wrapped up an article on object stereotypes.  At the last minute I decided to use an example from a system I worked on several years ago and many employers ago.  I think it was a great illustration of a particular design concept, but it's a better example of why small design decisions can have dramatic consequences for a company.  Let's hope that everybody involved with this system has moved on onto a happier place, and is wiser for the experience.  Just to start up the old argument about the relevance of architects on a project, I think the decision I'm criticizing here would be below the purview of many architects, but yet it had some sweeping consequences.

Here we go, a little bug goes kachewww!

  •  A very complicated business process is kicked off when a physical scanning device sends a socket message
  • Listening to the socket and the business processing is effectively the same piece of code.  IP addresses are hard-coded into the VB6 code.
  • The very complicated business process can NOT be simulated except in a testing lab that is set up with physical scanners.
  • Developers cannot adequately unit test the code, so more bugs make it into testing
  • The code does not exhibit separation of concerns, so it is very easy for a developer to cause regression bugs, which aren't easy to catch because...
  • Developers cannot efficiently unit test the code!
  • Testing is very laborious, making all projects in this codebase more expensive because of the increased time to adequately test the system.
  • Testing is very laborious, so the testers cannot adequately run enough test scenarios to completely test the system in the allotted time, which means...
  • An alarming number of bugs occur in production...
  • Leading to lost productivity in the factories...
  • Leading to lost revenue and decreased profitability...
  • Leading to angriness, bad feelings, and bad morale all the way around...
  • Leading to many good people leaving the division or the company...
  • Leading to a general loss of ability in the I/T division
  • Possibly contributing to the company trying very hard to move all software development overseas? -- that might not be justified, but I wonder if the offshoring plans would really be there if the I/T organization was achieving better result.


Oh yeah, at the time I was involved, there were not automated unit tests or deployment automation that could have made regression testing cheaper and test migrations easier and quicker.  Given better project automation, maybe the design wouldn't have been so bad.

Morale of the story?  You need to apply real design skill at the point of attack, regardless of whatever that person(s) happens to be called.  Pay attention to the little design decisions too. 



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