Month: July 2014

So that shouldn’t be optional

User stories are a popular technique to organize software development. While many use them to record future work, they’re much more valuable as a means to enable effective communication. By using the As A, I Want, So That format, we capture three important things: who, what and why. The latter is what matters most. We can alter who and what,…

Hourly billing and cost plus pricing aren’t sustainable

I’m obviously passionate about value in software development. Committing to worthwhile results shouldn’t be taken for granted. All too often decisions are made and actions are delegated. Those that act have no understanding of purpose, desired results and the value of those results. They have no ability to correct course to ensure the results are obtained and the effort is…

Downstream cost of interfaces

Last week I mentioned the consequence of not fixing problems upstream. When we design software to be dependent on other systems, those systems become upstream dependencies. No interface to any system is “perfect,” there’s no such thing. But there are many systems that have interfaces that require excessively nuanced interpretation by downstream systems. This can happen for any number of…

I think I need

“I want”, “I need” Implicit in both statements is a crucial word. “I think I want”, “I think I need” The fact that we want or need something implies we have thought about it. At least long enough to utter the words. But it doesn’t imply how much thought, nor how rational. “I want” is much more powerful than “I…

Downstream cost of feature branching

Earlier this week I mentioned the consequence of not fixing problems upstream. A great example of this is the costs of long lived feature branches or long lived copies of a piece of software. Each copy has a set of isolated changes taking place. Integration is the upstream leak. Inevitably with many long lived copies of the system, integration becomes…

Mediating Purpose

Mediating communication can be perilous to effective communication. When two people communicate through a third, the message is guaranteed to be altered to say the least and often quite distorted, amid other concerns. Purpose and subjective value are what drive us to make decisions that lead to action. Mediating purpose, unlike mediating communication, only requires two people to wreck similar…

Commitment is the problem

Phased based software development, commonly referred to as waterfall, has taken a bad rap for at least a decade. And rightfully so in many situations. If we fall under the delusion that we can know everything in advance to accomplish a particular outcome, we’re going to have a rude awakening once we get started. No matter how hard we try,…

Copying (branching and forking) should be the exception, not the rule

Git has been wildly successful, partly due to its distributed nature and the ease with which we can create copies of projects. Copies come in several forms: branches within a repository, and clones/forks of an entire repository. The distributed nature allows us to copy an entire project locally and branch to our hearts content to carefully craft a set of…

Creating efficacious policies with incentives

All organizations have policies, hopefully to further their purpose. Unfortunately, many policies are simply rules without much consideration of efficacy. They tend to be things that create constraints without benefit or with unjustifiable benefits. Naturally these are difficult to enforce. People easily see through them. Whatever outcome was desired is lost in cracking the proverbial whip, only to sap the…