Emergence Drowns in a Waterfall

In July of this year I’ll be taking a class to become a certified ScrumMaster.  It will be the first industry certification that I’ve earned in my career–I’ve frankly never found them to be valuable so I’ve avoided them.  But as much as I’m passionate about building quality products, I’m even more passionate about the processes that enable building quality products.  And besides, what’s cooler than a title that identifies me as Master.

The classical model of software development follows the Waterfall Model–that is, each process completes a set of deliverables and they “fall down” to the next tier.  At least, that’s the theory.  In practice it usually works more like a set of walls that each group throws their deliverables over as they’re completed–and the team who receives that deliverable is asked to follow that deliverable explicitly.  The further “downstream” you are in the waterfall, the more frustrating this process becomes as you get further and further away from the true objective of the project.

Often we find that when we fill the requirements, we don’t really meet the objectives and happen upon a better way to meet the objective: this is called Emergence.  While attempting to reduce uncertainty downstream (often quite unsuccessfully), the Waterfall also restricts our ability to act on the Emergent Properties we discover in a system as it is built.  In my opinion, this restriction is the single largest cause of poor software design as it causes us to accept our requirements time leaps of faith over development time observations.

Emergent properties are very powerful tools to guide the way to great products and they should be embraced.  Scrum and other Agile methodologies support these properties while the Waterfall, with all pun intended, drowns them.  

Defining “Support” for Legacy Browsers

Jonathan Snook recently posted an interesting article titled Old Browsers: Do they still exist that explores the often hotly-debated topic of when it’s ok to pretend a legacy browser no longer exists.

My pragmatism comes into play, like that little devil and angel on my shoulders telling me each side of the story. The fact is, these are old browsers. Why haven’t these people upgraded? Why are all these people still using Firefox 2? So what if it’s a little (or a lot) broken for them. They should upgrade.

I think most of us as designers and developers would agree with that sentiment; they should upgrade!

The problem, as is often the case, comes from outside the design and engineering teams responsible for building these sites.  It comes from business folks and QA teams that truly believe that “support” means 100% equivalency across browsers.  Any designer or developer will tell you it’s a pipe dream and inevitably some concessions are made–but I’d be very interested to hear how much money is spent every year in this industry on trying to come as close as possible to identical cross-browser experiences.  This problem can be defined simply as a lack of consensus on the definition of “support.”

My classic argument has always been:

Cross-browser consistency is nice–but in no way critical.  The vast majority of any audience is only ever going to see your site in one browser so let’s instead of striving for identical experience let’s strive for working experience.

The core of the problem is that we, as stakeholders in our projects, are by definition not users.  As a stakeholder, we open the site in multiple browsers to test, we know the expeirence we want to deliver–and it’s easy to become frustrated when one browser behaves differently.

But to focus on the differences across browser is to ingore the truth: Your users aren’t going to see your site in every browser.   Users will experience your site in their chosen browser and any feature that is inaccessible in that browser will simply not exist in their eyes.  It’s called Progressive Enhancement, and its not a revolutionary concept.

It is, however, what can allow us to deliver a consistently working and functional experience to all users while still providing the “bells and whistles” to those who stay up to date.

Macro-level Support, that is, support for a site, is not about cross-browser consistency–it’s about cross-browser functionality.  It’s an important distinction.