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…

Comparison: manual releases or automated?

I recently wrote about tradeoffs in automation. I thought it’d be nice to have a side by side comparison of manually documenting and releasing software, versus automation. Manual Documentation Automation Assumptions Many implicit assumptions. No incentive to be explicit. Author bias and perspective limit the utility. Everything is explicit, no assumptions. Culture This approach fosters a culture of cracking the…

Tradeoffs in Automation

Releasing software, to this day, is often a manual task. Scripts may be involved, but we still depend on human orchestration. Knowledge often remains locked away in individual minds. This is disastrous for many reasons. Even if we remember everything, each time we repeat a task there will be slight variations. After a few days, let alone months or years,…

The Death Of An Idea

“What if…?” The birth of an idea. Followed by the perpetuity of tortuous wonder about when to act on it. Fading in and out of consciousnesses every other day, or week if we’re lucky. We’re constantly wallowing in a sea of ideas. We can’t possibly drop everything and act on every idea that comes to mind. And, if we hope…

Making open source projects accessible with Vagrant

There are a plethora of fantastic projects online to learn from, and to start from, when developing software. Google just released a new Web Starter Kit; a set of tools and a template for building user interfaces that look great on all types of devices. Bootstrap, a project that’s been around much longer, provides a set of templates to make…

Adopting Continuous Integration

Back in March, I had the opportunity to talk with the .NET Developers Association in Redmond, WA about adopting continuous integration.

Fortunately my camera captured the conceptual portion, but decided enough was enough after 30 minutes. I’ve talked about continuous integration many times. This time I rebooted the talk with a focus on using objectives and value to drive the patterns and practices we apply as we adopt continuous integration. Otherwise, it’s easy to get lost in the sea of possibilities. I hope these principles help you pragmatically adopt and/or evolve a continuous integration practice for the software you support.