Archive

DevOps

The Creative Developer: Coding is Just Our Medium

How many software developers when asked what they do for a living reply “writing software”? Just about 100%, I’d guess. The very title of “software developer” implies we spend our days pounding out code, line after line of instructions for computers.

But is that truly an accurate picture? I would argue that the analogy of “writing” software promotes some problematic assumptions. It focuses purely on the technical aspect of coding, ignoring all the other important facets of bringing software to life. It perpetuates stereotypes of programmers as nerdy code monkeys, heads down in front of a keyboard all day. And it fails to capture the deeply creative process that software development entails at its best.

In reality, we developers don’t just “write” software – we attend to folks’ needs, crafting systems, experiences, solutions and above all, interpersonal connections. We collaborate, gather requirements, make trade-off decisions. We envision how people will interact with the products we craft. Code is simply our medium for bringing strategy and creativity to life.

Software development has as much in common with engineering, architecture or even storytelling as it does with coding. There is an artistry and imagination behind truly great tech-based products that goes far beyond syntax. The attendants of the future will be at least as fluent in humanities as mathematics or computer science.

So the next time someone asks what you do, don’t reflexively say you “write” software. Share how you attend to users’ needs, strategise solutions, and creatively work with teammates. Let’s put to rest the tired stereotype that developers are code-writing scribes! What we do entails far more multi-dimensional and meaningful attending to needs, products and people.

What’s Wrong with DORA?

DevOps Research and Assessment (DORA) has popularised four key metrics for measuring software delivery and IT performance:

  1. Deployment Frequency
  2. Lead Time for Changes
  3. Change Failure Rate
  4. Time to Restore (1)

According to DORA, optimising these metrics leads to higher productivity, profitability, and market share. But their laser focus on velocity overlooks quality of outcomes. DORA fails to emphasise whether software updates actually meet user needs or deliver more business value. See also: The Antimatter Principle.

Overly Prescriptive Approach

Promoting these four metrics applies a one-size-fits-all DevOps model that may not suit every organisation. DORA’s rigid framework limits flexibility for companies to tailor practices to their unique needs (and the needs of all the Folks That Matter™).

Shovelling Shit Faster

Nowhere does DORA stress measuring if software improves customers’ lives. Their model incentivises shipping code changes rapidly – without considering real-world impact. For example, faster deployment cycles could degrade instead of improve products if quality is not continuously validated.

DORA says nothing about ensuring “done” items provide tangible value to users. And lowering change failure rates matters little for those issues originating from deficient system architectures rather than deployment processes. Faster restoration loses impact without resilient foundations.”.

Quality Metrics

In essence, DORA overlooks a core, fifth metric: Quality of Outcomes. This measures whether frequent code deployments actually deliver business value and satisfy customers. Velocity means little without user-centric data on software effectiveness.

Their models push maximum development speed rather than solutions optimized for needs. Quality cannot be an afterthought. DevOps connects culture, outcomes, and technical execution. DORA would better serve the industry by emphasizing value over velocity.

Questionable Data Analysis

While DORA’s reports reference data from thousands of technology professionals, their research methodology and data analysis comes under scrutiny. For example, their surveys may have sampling issues or lack statistical significance testing of findings. Correlations around improved IT performance are presented as definitive without enough controlled studies.

Narrow Focus

DORA’s reports concentrate almost exclusively on internal software development lifecycle processes. But DevOps success depends on many human and cultural dimensions that DORA largely ignores. Collaboration, security culture, communication protocols, and learning disciplines play key roles as well.

Emphasis on Speed

In striving for faster delivery of technology changes, DORA overlooks the dangers of moving too hastily. Pushing out more deployments is not valuable if quality suffers. And accelerated velocity risks increasing technical debt and architectural risks over time.

Commercial Interests

While positioned as an impartial research organisation, DORA was founded by – and continues to promote – DevOps platform vendors. These commercial interests raise questions around potential bias in their perspectives and findings.

Conclusion

DORA has stimulated valuable conversations around improving development and operations. However, as with any prescriptive framework, organisations might choose to scrutinise its limitations and find the right DevOps model for their own needs. There is no universal approach for DevOps excellence.

Personally, I’d never recommend DORA to my clients.

Footnote

1) “Time to Restore” or “Mean Time to Restore (MTTR)” is one of the four key metrics that DORA highlights for measuring DevOps/IT performance.

It refers to the average time it takes to recover and restore service when an incident, outage, or defect that impacts users occurs in production. Some examples:

  • If a server goes down, MTTR measures how long it takes on average to get that server back up and running again.
  • If a new software update causes functionality bugs, MTTR measures the average time from when the defective update was released to when it was rolled back or fixed and normal operation was restored.

So in summary, Time to Restore tracks the speed of recovery from production issues and disruptions. DORA advocates minimizing MTTR to improve availability and reduce downtime impacts on the business.

Software Delivery Today

Software delivery today is in a state of crisis, and has been for decades. There is little recognition that available approaches are inadequate for meeting the needs of businesses of all stripes.

Of course, available approaches are seen as sufficient. But they do not deal adequately with the challenges we face in the day-to-day work of delivering solutions that meet folks’ needs. And in particular the need for predictability, flexibility and economy. We become swamped by the complexity of large solutions, lost in a maze of folks’ needs, and mystified by confusing and ambiguous priorities.

When we look at the typical mix of deployed solutions assembled from multiple sources, the situation is even worse.

The crisis in software delivery is far greater in overall magnitude at least than the situation of the early noughties. A situation that led to the spread of Agile approaches to relieve the burden of long timescales, delivering the wrong things, and highly risky schedules. The challenges are harder to solve and the costs of not solving them are in the $trillions. “The symptoms appear in the form of disengaged and demotivated employees, disgruntled and disappointed customers, unreliable, excessively expensive, untimely, inflexible and ultimately unsuitable solutions.”

There are ways to improve things a little, are they are slowly gaining recognition. But to achieve a fundamental jump in our delivery capabilities, we need to rethink what we doing, from first principles, and using a different frame.

– Bob

Further Reading

Firment, D. (2017). Tear Down The Wall Of Confusion. [online] Medium. Available at: https://cloudrumblings.io/devops-tear-down-the-wall-46656151d71d [Accessed 23 May 2022].

Product Owners Suck

Teams doing Scrum “by the book” will have a Product Owner. The Scrum Handbook describes this role thusly:

“The Scrum Product Owner is responsible for maximizing the value of the product resulting from the work of the Development Team. How this is done may vary widely across organizations, Scrum Teams, and individuals.”

It goes on to say:

“The Product Owner is the sole person responsible for managing the Product Backlog.”

i.e. the Single Wringable Neck.

Outwith Scrum “by the book”, many teams, Scrum or otherwise, will find themselves with a Product Owner, almost always, in practice, outside the immediate development team itself.

One characteristic common to every Product Owner role I have ever seen has been “push”. The Product Owner pushes work (features, stories, or whatever the unit of backlog) into the backlog, and thus onto the team. The Product Owner generally dictates the priorities of the work items in the backlog, too.

Here’s where the dysfunctions creep in. If we accept that we’d like to encourage intrinsic motivation in the team, and that Dan Pink’s three factors of intrinsic motivation apply (Autonomy, Mastery, and Purpose), then we begin to see how the typical Product Owner stance sucks the motivation away from the team by undermining their autonomy (they’re expected to do what’s pushed on them, with the priorities dictated), their mastery (focus is on delivery not learning), and purpose (the purpose is that of the PO, often opaque or little shared, not a shared common purpose across everyone involved).

Go Pull

I’ve seen clients where this push-oriented Product Owner role has served no one well. Not the Product Owner, nor the development team, nor the product, nor the customers. The Product Owner is worn to a frazzle trying to herd the developers, like cats, towards the outcomes he or she thinks the customers want. It’s most unlikely the Product Owner will know what features are valuable, and how they should work, before stuff gets in front of the customers anyway, and the delays in the “push” model just exacerbate this dysfunction.

Further, in the push model, developers have little opportunity to experiment and innovate. They’re often far better placed than the Product Owner or even the customers to spot opportunities for breakthrough innovations, both large and small, yet the push model basically precludes them from contributing in this way.

So why not turn it around? In my career, I’ve seen all the best products come from development teams that directly own the product. And, consequently, directly own the relationship with the customer. Often, not the whole team, as this might irk the customers – at Familiar we had one member of the development team act as “customer liaison” – a role which could rotate between team members if it started to become a chore for the person in question.

It’s unlikely the Product Owner will wish to do themselves out of a job, so how can we arrange things such that everyone has a better time than with the “push” model? And so we make even better use of the most valuable things the Product Owner has – product domain expertise and customer nous?

In the service (call centre, etc.) sector, Vanguard introduced the idea of front-line call staff taking all the calls, with limited (brief) training to handle the most common types of call, and with experts and specialists on hand to help them through handling the less common types of call as they arrive.

Transferring this idea to the Product Owner role, why not have the development team own the product, take all the decisions about features, stories and priorities – by pulling information from the customers – and whenever the development team has some questions they can’t answer themselves or in conjunction with the customers, have the Product Owner (now Product Domain Specialist or some such renamed role) on hand to pitch in and provide the missing knowledge or expertise.

I guess the Analytic minded organisations out there will feel uneasy about no longer having their hands around the Single Wringable Neck, but learning about Team Accountability might go some way to compensate for this?

So, let the teams suck (pull), instead of having the Product Owner push.

– Bob

PS Note that the above suggestion – to hand over core elements of the Product Owner role to the development team – assumes the development team owns the scope for the whole product, not just the software, and can collaborate and coordinate with other people and groups to ensure the whole product is delivered (whether incrementally for not). See also: Obeya.

Further Reading

The Transformation of O2 – A Vanguard Case Study in Reengineering Call Centres (pdf)

The Cold Wet Nose Of Reality

If you’re in the business of supplying IT services, especially software and product development, to your clients, you may be getting uneasy (again). Agile software development, and its close cousin, DevOps, are the latest in a long line of approaches promising to solve the “software crisis”. And like the many approaches that have gone before, their faults are beginning to show, and the chickens are coming home to roost.

As they say:

“…you can’t fool all of the people all of the time.”

I don’t doubt that many solutions providers and consultancies have the best interests of both their clients and their own staff at heart, and are not just focused on their revenues. And just like their antecedents, Agile and DevOps did look promising. But just as with those antecedents, time has shown the core ideas wanting. Or, more accurately, insufficient in the majority of cases.

Why Early Adopters Have Good News

Whatever the approach, its early adopters generally have good stories to tell, about good outcomes. And why not? These folks had the enthusiasm, the curiosity, the drive, and the grasp of the principles to make the approach work. Later adopters, absent some or all of these advantages, have struggled to see useful benefits. No matter what the approach.

That Nose

Truly, the cold wet nose of reality has been sniffing out the latent flaws implicit in Agile and DevOps from the outset.

Smarter Now

I’d like to hope that we’re collectively smarter now. That having seen so many promising approaches come and go, we might be on the verge of seeing beyond the superficial attractions of each new approach. That we may be, finally, developing the deeper lore that will show us why all our approaches to date have sooner or later failed us. I’d like to hope that, But in general, I see precious little evidence of it happening.

“A new type of thinking is essential if mankind is to survive and move toward higher levels.”
~ Albert Einstein

– Bob