Archive for September, 2009

Firewalling Complexity: Eventful Lives Of The Chicken And The Pig

Had a long-ago ALT.NET Canada discussion with Oren about isolating complexity. It came back vividly after yesterday’s conversations at Agile Vancouver’s "Agile Methodology for IIBA" fishbowl.

Much of the initial group discussions were about the role of business analysts in a SCRUM environment and the role of developers when it comes to acquiring business domain knowledge. It felt very difficult to try to delineate responsibilities by hard and fast rules. My understanding of the gist of last night’s comments went something like this:

  • If all domain knowledge rests with the BA who hands off use cases to developers who do all things “technical” we are looking at a waterfall scenario with dangerous potential for meaning and purpose getting lost in translation. Continuous feedback and a view of the bigger picture are vital to get the details of the implementation right.
  • Without BAs, the bigger picture would be lost because developers will have little time to look beyond the current sprint.
  • Without BAs as intermediaries and “repositories of domain knowledge”, developers’ access to product owners and stakeholders would be too limited.

Observation by a panelist when trying to draw the line between more technical BAs and more “businessy” developers: “It depends. Not all BAs and developers are created equal. Not all teams are suitable for all approaches.”

Indeed. Add to this fact that the level of domain- and technical knowledge about a project fluctuates as members move on and new folks join.

As ever, the Engineering Mind turns to fighting entropy by technological means, with a new twist to layering:

Applications with “chickens” and “pigs”:

  • “Pig” layers are expert-only, git-yer-hands-off-that-code, for the hard core committed who know the domain and technology inside out. To quote from the loudest movie of 1998: “No touch anything. You’re all cowboys.” With luck, this is also the part of the application which is nailed down hard with lots of automated tests. Examples for pigs are the layering calculations part for a reinsurance workflow application,  route optimization for a dispatch system and similar knowledge-heavy bits and pieces.
  • “Chicken” lairs (Layers. I meant layers.) are for new kids on the block, folks in a hurry and people who are pigs in other projects and need to interface with our project without any interest or time for nuts & bolts. Examples for chickens: Updating contact information, reporting, generic functionality where the problem domain is familiar to most of us (new user signup, forgotten password, …).

“Pigs” are accessed via well-defined and documented facades which hide the underlying complexity. They may raise events which can be listened to by any chickens who care so they may extend the system without changing pig code and without the need for in-depth understanding of OO concepts such as when not to use inheritance.

The “What domain knowledge for whom” issue is simplified: “Pig” developers need a lot, “chickens” not so much.  There would even be some rough-and-ready guidance for refactoring: Move legacy systems towards separating chickens from the pigs.

If test suites for pigs exist at a level of granularity where mildly technical BAs can see whether they fit requirements, LAROS can’t be far behind.


September 18, 2009 at 9:10 am Leave a comment

TechDays 2009 Impressions: Dialog Refactors Mind

Thank you all who attended the “Refactoring for Fun & Profit” presentation. I had fun preparing it and learned a lot from some very smart people, not all of it about technology.

To me, TechDays was a reminder that nothing in the TwitterFacebookBlogospheroVerse comes close to old-fashioned human contact. It’s as if face-to-face dialog is the ultimate in full-immersion learning by experience. Preparing presentations for the Developer Foundations track was a lot of back-and-forth of ideas, suggestions, banter. Special thanks to Justice, Adam D., Stefan, Adam C.  and Peter – you guys rock! Thanks also to John Bristowe for making the track possible.

There were really good conversations after the sessions and at ALT.NET Vancouver’s Open Space at Mooses’s Down Under on Tuesday.

Dialog as "codeless refactoring”, anyone?  Shape shared understanding well enough in advance of implementing and maybe we’ll re-write a lot less? Nah. Give me a corner with a keyboard and screen. Go away. I’m coding.

September 17, 2009 at 4:16 pm Leave a comment