Sooner

We all know that nine women cannot make a baby in one month.

When developing a project schedule, projected duration can be calculated as
estimated effort divided by full time equivalent resources multiplied by
some P or “rho” factor of productivity usually a fraction between six and
eight tenths.

According to this formula, given an unlimited supply of resources, any
project could be done tomorrow.

Of course in real life, we don’t usually have an unlimited supply of
resources. And there are costs of on boarding per resource, and
collaboration. So even if we did have unlimited supply, we probably would
fail some financial constraint in that staffing model.

But we need to look at the work itself to determine how many resources can
be employed concurrently to get work done in parallel. What real and
assumed dependencies require work to be done sequentially? What can
overlap to allow more resources to be productive at the same time? And
finally, what design decisions have we made that impose constraints on our
parallelism?

If sooner is important, then you may have to design this baby so that nine
women can make it in one month.

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.

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.

Reality

Spent the weekend (really the last two weeks) preparing to engage some
business partners on a project whose plan got somewhat sideways.

Original estimates were smaller than really required. Requirements took
much longer to elicit because the business vision was not complete, nor
were all that participated invested in a vision.

There has been a lot of drama around this project, because business execs
felt deceived. While the project team felt like it had been
extraordinarily transparent.

Then someone said it. Business reality implied a fixed bid process. While
IT was working on a time and materials project.

It explains why business gets angry and hostile when we shed scope to meet
a date. Their reality is fixed bid.

Internal IT rarely does fixed bid estimates. There is no motivation. No
profit. We only ever bill what we spend. But what if we did? What would
we do with the profit?

Reality?