Skip to main content

doggie calculus

Richard Jones was CTO for a large retail company that relied heavily on e-commerce for most of its turnover. Aged 45, he’d been a software developer once and had risen through the ranks before reaching his current position. The responsibility of his position lay heavy on him but he took pride in the ability of his team and worried deeply when they weren’t performing.


This was one of those days. Development speed had slowed to a crawl and the defect rate was through the roof. Every time they fixed one defect, they created at least two more. He’d talked to the team and he knew they were doing everything they could but it just wasn’t working.

Richard knew they weren’t going to make their delivery date but he also knew he couldn’t talk to the board without a plan of action. A year or so ago, he’d engaged a coach to help the team improve their processes, which had a tremendous effect on the team’s performance and predictability. Was it time to and get the coach back?

Fast-forward a couple of weeks and the pair of them were enjoying a coffee outside the local Starbucks. Colin, the coach, had just told Richard the results of the static analysis he’d done on the team’s code.

“But my developers are brilliant, there isn’t anything they don’t know about Java, Web Services, AJAX… you name it, you won’t find anyone that knows more about it than this team” said Richard emphatically. “Everybody praises them for their solutions, we’ve won awards for the website and the customers absolutely love it.” He took a sip from his cup, “How can you sit there and tell me our system is poorly designed.”

“Ok,” said Colin looking him straight in the eye, “Let me tell you about my dog, Russell. Russell is good at catching balls. He always seems to be able to predict where the ball will land and get there first so he can catch it.”

“What’s that got to do with my team?” asked Richard.

Colin continued, “Does this mean Russell uses calculus to predict where the ball will land? I don’t think so. I think he gets feedback from his surroundings and adjust his position relative to the ball. When it’s close enough, he grabs it with his mouth. He doesn’t understand the underlying principles of ballistics at all.”

“I still don’t get it,” said Richard, looking puzzled.

“In a sense, your team is like my dog. They have excellent technical skills and they have excellent external design skills. They use those skills to deliver good-looking solutions and you reward them for it.” He leaned forward to make his next point, “However, the static analysis of the code tells us they have less understanding of the underlying principles of object-oriented design.”

Leaning back in his chair he continued, “The internal design of the code is poor and you’ve built up what we call a technical debt. This is what’s making it so difficult for them to deliver software. Your system is fragile – every time you try to make a change, you break something.”

“I see what you’re saying and I guess the analysis can’t lie, so how do we fix this?” Richard asked.

“We can train and coach your team, in design principles” replied Colin. “We can also teach them how to identify what we call smells in code and refactor them to improve the designs.”

“So some training for the team and everything will be fixed. I imagine we’ll need to spend some time reducing the technical debt, too?” said Richard, looking round for the waiter so he could pay the bill.

“The training is just the start,” said Colin as they walked back to the office. “You also need to start paying attention to internal design. Previously, you put emphasis on the external design and as a result, your team is good at it. Pay the same attention to the internal design and your team will become good at that too. Making static analysis part of the check-in process and doing team code-reviews are simple ways you can start to make the internal design more visible.”

They’re still working on it but Richard’s team are in a much better place now. The training gave them a new awareness of good design principles and prompted discussion amongst them. Implementing static analysis on check-in has forced them to pay continuous attention to the internal design of their systems.

Popular posts from this blog

The Limitations of Reward in Organisational Development

The ongoing inquiry into the Post Office Scandal[1] has recently brought to light disturbing evidence. It appears that Post Office investigators were incentivised with monetary bonuses for successful prosecutions and the confiscation of funds from sub-postmasters and sub-postmistresses affected by the faulty Horizon software[2].  As discussed in Dan Pink's book on motivation, "Drive[3]," the repercussions of offering extrinsic rewards without adequate safeguards can be severe. People might exploit the system, ignoring long-term consequences for the sake of immediate gains. The effectiveness of rewards, such as bonuses and salary increases, in motivating and disciplining individuals has been a subject of ongoing debate. While some argue that extrinsic incentives can drive desired behaviors and outcomes, there is a growing body of evidence suggesting otherwise. Let's explore the limitations of relying on rewards in these contexts, emphasising the significance of intrins...

Embracing AI - Augmented Intelligence

There is no denying that artificial intelligence (AI) has made significant strides over recent years, becoming more advanced and capable than ever before. With this progress, many have begun to wonder whether AI poses a threat to humanity, particularly our jobs, privacy, security, and overall well-being.  Some may argue that the rapid advancement of AI could lead to a dystopian world where machines rule supreme and humans become obsolete. However, it is important to remember that at its core, AI exists to serve us, not replace us. Instead of viewing AI as competition for human intelligence, we should consider it as an augmentation of our abilities.  This idea of 'Augmented Intelligence,' instead of Artificial Intelligence, highlights how powerful technology can enhance rather than impede human potential. Augmented Intelligence recognizes that humans and machines each possess their unique strengths, making them better together than apart. Humans excel in creativity, intuition, ...

Embracing the Promise of AI: Overcoming Fears and Musk's Paradox

In the face of groundbreaking technologies like AI, initial fears and uncertainties are not uncommon. However, history has shown that society often transitions from apprehension to wholehearted acceptance as the true potential of a technology unfolds.  When motor vehicles emerged in the late 19th century, society grappled with fear and uncertainty. Laws mandating a person carrying a red flag to precede each vehicle reflected public anxiety and attempts to mitigate potential accidents.  Similarly, society's current apprehension towards AI stems from fear of the unknown and its potential disruptive consequences. However, history shows that initial fears are often unfounded and subside with increased familiarity and understanding of new technologies. AI's capability to process vast amounts of data and identify complex patterns presents unprecedented opportunities for decision-making and efficiency. Organizations can unlock insights, make data-driven decisions, and optimize proces...