The Juice

the juice.png

I was recently asked (paraphrasing) what parts of the work of software engineering do I find “juicy” so I came up with this diagram. Any software engineering task involves both developers (if only me), customers (might be a client), and the processes of design and implementation.

The “external” blue lines are where the customer potentially interacts with the developers, the output of the design, and the implementation phase (you can probably imagine how Agile fits in this.) The “internal” red lines are where the developers interact with the each other and the design and implementation phases.

From a certain perspective, the left side represents the “process” and the right side represents the “results.” Process and results should be balanced – developers may discover they require training in new skills, teams adjust based on where the team is in the process, etc. The process creates results which the developer and customer team review.

The process – results flow iterates with each result. The earlier results are produced, the better for everyone because this is where “education” occurs, for example, the developers learn more about the customer’s requirements, the customer may refine their requirements (or change them!) Both the developers and the customers learn things during iterations which in turn create adjustments in the process.

The list of items within the boxes is basically just all the stuff that I find “juicy” – the more of those items that get checked off for a project, the more excited I typically find myself regarding working on the project.


Modern Agile: Reminds me of a Strip Club


InfoQ recently posted an article about something called “Modern Agile” (I guess they couldn’t call it Agile Agile, or Extreme Agile) and it takes an already loosey-goosey concept to new heights of vapor-process.

Agile is modernizing. Thanks to Lean and Agile pioneers and practitioners, we now have simpler, safer, speedier ways to achieve awesome results.

While that sounds like the tag line for a vibrator rather than a software development process, what really got me was this statement:

Modern Agile has no roles, responsibilities or anointed practices.

In other words, Modern Agile is, well, nothing.  Nothing that provides you with any intelligent, meaningful, concrete suggestion for how to go about building software.

Instead, it has four guiding principles:

  1. Make People Awesome
  2. Deliver Value Continuously
  3. Make Safety a Prerequisite
  4. Experiment and Learn Rapidly

Why am I reminded of an adult entertainment club?

But back to software development.  First, can we, as professionals, please stop using the word “awesome?”

Awesome: extremely impressive or daunting; inspiring great admiration, apprehension, or fear.

Riiight.  That’s something to aspire to, eh?  Like I want (even if I could) make my peers into something that fills me with apprehension or fear.  You can’t make other people awesome, they have to figure out how to be awesome.  And given negative aspects of that definition, I’m not sure I want to go down that path.

Continuous: continuing without stopping : happening or existing without a break or interruption

Really?  If I were a customer receiving uninterrupted software updates, I would be yelling “STOP! DELIVER A USEFUL SET OF IMPROVEMENTS THAT WORKS, NOT CONSTANT TINY CHANGES.”  The exception might be a critical bug fix, but as a customer, I do NOT want to be inundated with constant software updates.

Value: usefulness or importance

There you go.  Continuous value is sort of an oxymoron, especially when what is valuable in a software delivery is often something different for each stake-holder.

Safety: the state of not being dangerous or harmful

And Modern Agile, being a vapor-process, is sooo good at explaining exactly how that’s done.

Experiment: a scientific test in which you perform a series of actions and carefully observe their effects in order to learn about something.  Something that is done as a test: something that you do to see how well or how badly it works

Absolutely.  But sadly software development is hardly scientific.

Agile is something that I’ve always considered a bit ridiculous, and Modern Agile goes to the next level: the ludicrous, the absurd.  Modern Agile sounds great, especially in this new-age feel-good world of software development, but it’s ultimately a collection of words that mean nothing in any usable sense.  Just like a strip club.