Assumptions

Sometimes it’s really beneficial to get a team all on the same page
before you start something. Starting a design initiative for a
software project is a good time to do this. One good way to get
consensus or at least to determine how far apart developers are
ideologically, is to document the assumptions that will guide your
design.

It is not really important how you document them, the purpose really
is to get the team to articulate and discuss and ultimately agree on
the values, methods, approaches, and ideas that will guide their
design (and ultimately their build process).

Laying out your assumptions before you try to make decisions could be
a great way to shortcut some of the inevitable disagreements caused by
unexposed differences in the religious beliefs held by software
developers. Software theology and design jihad go hand in hand.
Assimilating new members into a team, requires understanding their
religion, with a view to preventing heresy from creeping into your
designs, and ultimately your code base. Having to declare a jihad
against all things that violate layer isolation, or the normalization
in the conceptual domain model during the design review is a bad idea.
Better to get the differences out on the table early.

It also makes your documentation easier to read because the
assumptions need much less justification than the decisions you are
documenting, and frankly can get assimilated by new team members
faster. Most of the WTF’s in the design review meeting are really
poorly documented assumptions that one or another team member trips
over.

Most likely, though, the exercise will trip over semantics, and when
when you get down to the core values of the team, and what is really
important, good people agree more than they disagree, and they will
feel good about the things they agree on, and they will have a sense
of starting well, rather than a subtle dread of the design review,
expecting the “Here we go again…” approach.

Sufficiency

Sufficiency is a word that we don’t use very frequently. It has a high
correlation with enough.

In lean management circles, anything more than enough is waste.

So how much is enough? How good is good enough? How soon is soon enough?
How clean is clean enough? How fast is fast enough?

Often we reward people for going above and beyond the “call of duty”. Is
this not doing more than enough?

Marketing campaigns are specifically designed to encourage dissatisfaction
– to convince you that your current phone, car, service, etc is not enough.

They rely on the premise that the mere existence of “more” confers on you a
need or desire.

Your immunity to this is a predetermined criteria for sufficiency.

So here is my sufficiency question for the day. If I can get more for
less, can I also get less for even less? Why spend more for something
beyond sufficient?

A missing product role

Every product needs a champion. Trouble is, in the enterprise application
software space, sometimes this role is left unfilled.

Lately it seems like the enterprise space is dominated by project/program
methodology, more than software design methodology.

When your customer is the product owner, the team does not have a champion
to rally around.

With all the emphasis on cost and schedule (customer) who is the champion
of good ideas, of consistency, of integrity, of quality?

The customer certainly feels entitled to these things, but as a
non-practitioner, cannot lead us into practices that yield them.

Technical architect? Solution architect? Product manager? I think that
all these roles are defined too narrowly, and vested with too little
authority. I am looking for a champion – who takes on all comers to ensure
that the best decisions are made for the long term value of the product.

Productive communication

Sometimes I get e-mail at work where the thread consists of a long chain of
short messages, and in order to determine the needed response, it is
necessary to contemplate the thread from beginning to end. This is
especially heinous in corporations where required e-mail sigs and
disclaimers are chunky.

As each person adds their response, this contemplation becomes more and
more expensive.. Some times it almost feels like some folks are playing
ping-pong and responding just to get “the ball in someone else’s court.”

To make the conversation more productive, it would help to summarize the
conversation periodically within the thread – that alone would reduce the
processing time required by each participant. Take the extra 5 minutes to
clean up. It will bring the issue to conclusion faster.