Introductory Series

This series is where it all starts. It contains the first set of posts that set the foundation for the rest of the site. The posts in this series are the following:

Problems in Programmers’ Paradise

I was talking recently to a software company CEO who admitted – with some shame – that he had lost control of his Engineering team. Many of the projects and products in his company were drifting along with seemingly infinite schedules, infinite scope and infinite costs. Given that he [...]

Read more...

How Did I End Up Here?

Before we get into any discussion of frameworks or models, let me talk about the process that landed me here. Many, many years ago, I stumbled across my first struggling development team. After nine years as a relatively successful entrepreneur, the sale of the company and a year of [...]

Read more...

Go with the Flow

In my 29 years of building software, I’ve learned to view the Software Development process as a flow. I’m sure that this doesn’t seem particularly insightful, so bear with me. We all know that there is a standard flow from requirements to coding, testing and through to delivery to the customer. [...]

Read more...

The Flow, Part Deux

In the previous post, I introduced a simple flow model and suggested that the most important part of the Software Development process is the part related to interaction with the Customer. I will continue to build on the model – let’s first add one small component to signify the [...]

Read more...

The First Autopsy

In my previous posts, I presented a flow model to help understand the “Order of Operations” for diagnosing and fixing Engineering projects. As well, I presented the concept of the Customer Membrane and asserted that anything that doesn’t pass across this is generally not important. To allow a better [...]

Read more...

Out of Order

Our next example is familiar to those who have made it to the end of a long software development project, only to find out that the finished product is completely unusable by the end customer. Let’s play “fly on the wall” for this next one – like any train [...]

Read more...

Too Big to Succeed

In the previous post, I introduced an example project that made it to the end only to discover that the system was completely unusable. Our next example presents finished software that is unusable in a different way – it collapses under the weight of real-world usage. I’m guessing that [...]

Read more...

Deeply Insecure

Very frequently, the news trumpets a story about a website or application that has been hacked, often resulting in the theft of user data such as credit card numbers or health information. The app or website is often a mature one and everyone involved is surprised at the oversight. [...]

Read more...

Objections and Objectives

So far, this series has been exploring some typical disastrous software projects. As well, I have presented a model for analyzing these projects, which so far seems to be able to explain why these projects went off the rails. But of course, it is my model and my examples, [...]

Read more...

A Single Step

This series of posts has analyzed a very real issue in software development – the fact that many companies have lost control of their Engineering function. In my experience, the solution is not a quick one, but in this post, I want to talk about the first step toward creating an effective team. [...]

Read more...