Archive

Engineering

The Future of Coding Environments

How would Scotty or Geordie go about writing code for the Enterprise? Would they write code at all? Would they just interact with the Computer via speech or holodeck, or would a keyboard of some sort still have a place? 

In any case, my interests have always stretched beyond matters of organisational effectiveness, beyond matters of human and humane relationships, and beyond matters of how the work of software and product development might better work.

One of my other abiding interests has been the nature of programming. Indeed I spent more than two years, decades ago, on conceiving, designing and implementing a proof of concept for the kind of development environment I’d like to use myself, when writing code. At the time, the work was codenamed “Simplicity”.

My core feature set / wish list includes: 

  • Editing source code directly in the AST, rather than editing source code in text files
  • Direct and incremental compilation of source code as it’s being entered
  • Multiple coders editing in the same AST concurrently
  • Live editing of the AST “in production” (with appropriate safeguards built-in)
  • One homogenous AST for each entire (live production) system
  • Source code control / version control features built right in (and automated away from distracting the coders)

OK, so this may not be the kind of development environment Scotty or Geordie would recognise. But it’s a world away from all the crap we have to put up with today.

Blockers

So why don’t we see more movement towards the emergence of some of these features in our development environments today? In a word: conservatism. Developers en masse seem disinclined – or unable – to look anew at their tools, and dream.

“The future is a foreign country; they do things differently there.”

– Bob

Further Reading

The Mjølner Environment ~ Görel Hedin, Boris Magnusson

 

Testbash Dublin and Organisational Psychotherapy

As I mentioned in my previous post, I’m just back from presenting an interactive session on Organisational Psychotherapy at Testbash Dublin. Some folks seemed confused as to the relevance of Organisational Psychotherapy to testers and the world of testing, so I’m happy to explain the connection as I see it. (And please note that many of my previous posts on Organisational Psychotherapy may also help to illuminate this connection.)

I’ll start by riffing on something Rob Meaney said during his presentation:

“Significant quality improvements [aren’t] driven by testing. They [are] driven by building relationships and influencing the right people at the right time.” ~ @RobMeaney #TestBash

Quality (and other) improvements come from improved relationships. This has been a theme on this blog for some years now. For example see: The Power of Humane Relationships.

I asked a key (for me) question during my session (several times):

“If we accept that (as per the Marshall Model) it’s the collective mindset of the organisation that determines its relative effectiveness, how do we propose to support the organisation if and when it choses to do something about its mindset?”

Unsurprisingly perhaps, I heard no answers, excepting my own proposal for a means to that end: Organisational Psychotherapy.

I wonder how many folks involved with testing ask themselves and their peers the question “How can our organisation become more effective at testing?”. Or, using the #NoTesting frame, “How can our organisation become more effective at delivering quality products and services?”

Fellowship

Organisational Psychotherapy is not just about improving product quality, however. Through improved relationships, and a shift in how the organisation relates to its people (i.e. from Theory-X to Theory-Y), the quality of life at work also improves. Put another way, we all have more fun, more job satisfaction, and get to realise more of our potential at work. Further, for all the folks that matter, their several needs get better met. And, as a bonus for the organisation itself, it gets to see its people more productive and engaged. What’s not to like?

Incidentally

I’ve also written elsewhere about using the Antimatter Principle in practical ways during software development. For example, during development we eschew requirements gathering in favour of incrementally elaborating hypotheses about the needs of all the folks that matter, and then conducting experiments to explore those needs. I can envisage teams that still need testers adopting a needs-focused approach to driving testing. For example, putting into place various means by which to answer the question “how well does our product meet the needs of the people that matter to us?”.

Practical Applications

On a related note, some folks asked me about practical applications of Organisational Psychotherapy in their day-to-day work as testers. Here’s just a few applications which immediately come to mind:

  • Improving communication with the people that matter (i.e. developers, fellow testers, management, stakeholders, customers, etc.). I find NVC (nonviolent communication) skills and practice particularly useful in this context.
  • Clarifying what works and thus what to do more of (Cf Solutions Focus). This can improve team retrospectives.
  • Helping the people that matter (including ourselves) feel better about what we’re doing (Cf. Positive Psychology).
  • Understanding each other’s strengths, with a view to having the right people in the right seats on the bus (Cf. StrengthsFinder).
  • Eliciting requirements (if you still do that) (Cf Clean Language).
  • Building a community (such as a Testing CoP or a multi-skilled self-organising product team) (Cf Satir Family Therapy).
  • Improved cooperation with higher-ups (empathy, Transactional Analysis, etc.).
  • Dealing with blockers to changing/improving the way the work works.

Invitation

I’d love to hear if this post has helped put my recent Testbash session in context.

– Bob

World Class? Really?

Some six years ago now, I wrote a post describing what might characterise a world class software / product development / collaborative knowledge work business.

In the interim, I’ve had some opportunities to work on these ideas for various clients. My consequent experiences, whilst in no way invalidating that post, have thrown up different perspectives on the question of “world class”.

Firstly, do you want it? Moving towards becoming a world class business involves a shed load of work, over many years. Do you want to commit to that effort? Even though the goal sounds noble, ambitious, attractive, does your business have what it takes to even begin the journey in earnest, let alone stick at it.

Then, do you need it? Absent powerful drivers spurring you on towards the goal, will you have the grit necessary to keep at it? Or will the initiative flounder and drown in the minutiae of daily exigencies, such as the constant pressure to get product and features out the door, to keep investors satisfied with (short term) results, etc.? And is the ROI there, in your context? If you do keep on the sometime joyful, sometimes wearysome path, and attain “world class” status, will the effort pay back in terms of e.g. the bottom line?

If your answers to the preceding two questions are yes, then we can get down to considering the characteristics of a world class collaborative knowledge-work business. What might it look like, that goal state?

Here’s my current take.

Context

Just in case a little context might help, here’s a variant of the Rightshifting chart which illustrates world class in terms of relative effectiveness (i.e. how effective are world class organisations relative to their peers?) The yellow area highlights those organisations (those at least circa 2.5 times more effective than the median) we might consider world class:

WorldClass

Fields of Competency

Any world class collaborative knowledge-work business must have mastered a bunch of different fields of knowledge. That’s not to say everyone in the organisation needs to have reached mastery (Level 5 – see below) in every one of the follow fields. But there must be a widespread acquaintance with all these fields, and some level of individual competent in each.

I suggest the following Dreyfus-inspired model for characterising an individual’s (practitioner’s) level of competency (or action-oriented knowledge) in any given field:

Level One (Novice)

The Novice level in each Field invites practitioners to acquire the basic vocabulary and core concepts of the Field. Attainment criteria will specify the expected vocabulary and core concepts. The Novice level also invites practitioners to acquire and demonstrate the ability to read and understand materials (books, articles, papers, videos, podcasts, etc.) related to the vocabulary and core concepts of the Field.

Level Two (Advanced Beginner)

The Advanced Beginner level in each Field invites practitioners to acquire the ability to critique key artefacts commonly found in the given Field. The Advanced Beginner level also invites practitioners to read more widely, and understand different perspectives or more nuanced aspects of, and peripheral or advanced elements within the Field.

Level Three (Competent)

The Competent level in each Field invites practitioners to acquire and demonstrate a practical competency in the core concepts in the Field, for example through the ability to apply the concepts, or create key artefacts, unaided.
The Competent level also invites practitioners to acquire and demonstrate the ability to collaborate with others in exploring and applying the abilities acquired in the Novice and Advanced Beginner levels.

Level Four (Proficient)

The Proficient level in each Field invites practitioners to acquire and demonstrate the ability to prepare and present examples and other educational materials appropriate to the given Field. The Proficient level also invites practitioners to acquire and demonstrate the ability to coach or otherwise guide others in applying the abilities acquired in the Novice, Advanced Beginner and Competent levels.

Level Five (Master)

The Master level in each Field invites practitioners to acquire and demonstrate national or international thought leadership in the Field. This can include: making significant public contributions or extensions to the Field; becoming a publicly recognised expert in the Field; publishing books, papers and/or articles relevant to the Field; etc.

The Fields

Any business that aspires to world class status must attain effective competencies in a wide range of different fields. The following list suggests the fields I have found most relevant to collaborative knowledge-work business in general, and software / product tech businesses in particular:

Flow

  • Flow (product development) (n): the movement of the designs, etc., for a product or service through the steps of the design processes which create them.
  • Continuous Flow (n): The progressive movement of units of design through value-adding steps within a design process such that a product design or service design proceeds from conception into production without stoppages, delays, or back flows.
  • See also: Optimised Flow Demonstration (video)

Deming

  • * Many in Japan credit Bill Deming for what has become known as the Japanese post-war economic miracle of 1950 to 1960.
  • William Edwards Deming (October 14, 1900 – December 20, 1993) was an American engineer, statistician, professor, author, lecturer, and management consultant. Deming is best known for his work in Japan after WWII, particularly his work with the leaders of Japanese industry.

Risk Management

  • Risk management is the discipline and practice of explicitly identifying and managing key risks.

    “Risk Management is Project Management for grown-ups.”
    ~ DeMarco & Lister

  • Potential benefits include:
    • makes aggressive risk-taking possible
    • protects us from getting blindsided
    • provides minimum-cost downside protection
    • reveals invisible transfers of responsibility
    • isolates the failure of a subproject
  • Note; Many Agile practices are, at their heart, about risk management.

Mindset

  • Mindset a.k.a. collective (organisational) memeplex (n): A set of memes (ideas, assumptions, beliefs, heuristics, etc.) which interact to reinforce each other.

“A memeplex is a set of memes which, while not necessarily being good survivors on their own, are good survivors in the presence of other members of the memeplex.”
~ Richard Dawkins in The God Delusion

  • The “organisational mindset” is a set of beliefs about the world and the world of work which act to reinforce each other.
  • These interlocking beliefs tightly bind organisations into a straight-jacket of thought patterns which many find inescapable. Without coordinated interventions at multiple points in the memeplex simultaneously, these interactions will prevail, as will the status quo.

Requirements a.k.a. Needs Management

  • A more or less formal approach to identifying and communicating needs
  • Any approach that ensures that everyone involved in attending to the identified needs shares a clear understanding of the required outcome(s): “doing the RIGHT thing”.

Fellowship

  • A system of organisational governance based on the precepts of Situational Leadership and with a primary focus on the quality of interpersonal relationships as a means to improved organisational health and effectiveness.
  • More generally, paying attend to the quality and effectiveness of the collaborative relationships across and through the business (and the extended value network of which it is a part).

Cognitive Function

  • Cognitive function (Neurology) (n): Any mental process that involves symbolic operations–e.g. perception, memory, creation of imagery, and thinking; Cognitive Function encompasses awareness and capacity for judgment.
  • Effectiveness of collaborative knowledge work is dictated by both e.g. quality of interpersonal relationships and degree of Cognitive Function.
  • See also: Cognitive Science

PDCA

  • PDCA (plan–do–check–act, or plan–do–check–adjust) is an iterative four-step method used for the control and continuous improvement of processes and products. It is also known as the Deming circle/cycle/wheel, Shewhart cycle, control circle/cycle, or plan–do–study–act (PDSA).
  • Based on the scientific method, (Cf. Francis Bacon) e.g. “hypothesis” – “experiment” – “evaluation”.

Statistical Process Control (SPC)

  • Statistical process control (SPC) is a method of quality control which uses statistical methods. SPC is applied in order to monitor and control a process.
  • Key tools used in SPC include control charts; a focus on continuous improvement; and the design of experiments.
  • See also: The Red Beads and the Red Bead Experiment with Dr. W. Edwards Deming (video)

Lean Product Development

  • Lean Product Development applies ideas from Lean Manufacturing to the design and development of new products (See e.g. books by Allen Ward and Michael Kennedy)
  • Aims to improve the flow of new ideas “from concept to cash”.
  • Can also help raise levels of innovation.
  • Exemplar: TPDS (Toyota Product Development System)

Don Reinertsen’s Work

  • Don Reinertsen is the author of three of the most definitive and best-selling books on product development.
  • His 1991 book, Developing Products in Half the Time is a product development classic.
  • His 1997 book, Managing the Design Factory: A Product Developer’s Toolkit, was the first book to describe how the principles of Just-in-Time manufacturing could be applied to product development. In the past 16 years this approach has become known as Lean Product Development.
  • His latest award-winning book, The Principles of Product Development Flow: Second Generation Lean Product Development, has been praised as, “… quite simply the most advanced product development book you can buy.”

Neuroscience

  • (Cognitive) neuroscience is concerned with the scientific study of the biological processes and aspects that underlie cognition, with a specific focus on the neural connections in the brain which are involved in mental processes.
  • (Cognitive) neuroscience addresses the questions of how psychological/cognitive activities are affected or controlled by neural circuits in the brain. Cognitive neuroscience is a branch of both psychology and neuroscience, overlapping with disciplines such as physiological psychology, cognitive psychology, and neuropsychology.
  • See also: Cognitive Function

Theory of Constraints

  • The Theory of Constraints (TOC) is a management paradigm originated by Eliyahu M. Goldratt.
  • TOC proposes a scientific approach to improvement. It hypothesises that every complex system, including manufacturing processes, consists of multiple linked activities, just one of which acts as a constraint upon the entire system (the “weakest link in the chain”).
  • TOC has a wide range of “thinking tools” which together form a coherent problem-solving and change management system.

Self-organisation

  • Self-organisation (n): Ability of a system to spontaneously arrange its components or elements in a purposeful (non-random) manner. It is as if the system knows how to ‘do its own thing.’ Many natural systems such as cells, chemical compounds, galaxies, organisms and planets show this property. Animal and human communities too display self-organization.

    “An empowered organization is one in which individuals have the knowledge, skill, desire, and opportunity to personally succeed in a way that leads to collective organisational success.”
    ~ Stephen R. Covey

Quantification

  • In mathematics and empirical science, quantification is the act of counting and measuring that maps human sense observations and experiences into members of some set of numbers. Quantification in this sense is fundamental to the scientific method.
  • See also: Tom Gilb

Systems Thinking

  • Systems thinking provides a model of decision-making that helps organisations effectively deal with change and adapt.
  • It is a component of a learning organisation – one that facilitates learning throughout the organisation to transform itself and adapt.
  • See also: Peter Senge, Russell L. Ackoff, Donella Meadows, etc.

Psychology

  • Psychology (n): the study of behaviour and mind, embracing all aspects of conscious and unconscious experience as well as thought. It is an academic discipline and an applied science which seeks to understand individuals and groups.

Argyris

  • An American business theorist, Professor Emeritus at Harvard Business School, and known for his work on interpersonal communication, organisational effectiveness, double-loop learning and learning organisations.
  • See also: Action Science.

Psychotherapy

  • Psychotherapy (n): interventions which facilitate the shifting of perspectives and attitudes, and thus, human behaviours.
  • See also: Organisational Psychotherapy

To the above list of Fields, I invite you to add any which may have specific resonance or relevance to your own business.

And then there are the lists of technical capabilities you need to be present in your various business functions, too.

Aside – CMMI

As an aside, CMMI also provides an extensive list of “capability areas” ( circa 128 different areas, last time I looked) focussed on engineering capabilities. Note: I find the CMMI list useful, but only as a primer, not as a full-blown recipe for success.

Summary

All the above begs the question: how to get there? And, how close are you to world class, so far?

– Bob

Means and Ends

How often do we try to “improve” our product and services, and the revenue and profit therefrom (i.e. the ends), and how often do we try to improve the way the work works, the way we develop those products and services (i.e. the means)?

Folks have needs related to the way the work works, in many ways just as profound as the needs they have of the products and services (features) resulting from that work.

To illustrate what I’m talking about, here’s a short list of some of the needs folks can have related to the way the (product development) work works:

  • Ongoing information (development schedules, quality levels, costs, plans, etc.)
  • Confidence (e.g. that milestones and Due Dates will be hit)
  • Growth
  • Learning
  • A sense of purpose (are we spending our time on stuff that matters?)
  • Integrity
  • Connection (e.g. human connections, relationships between people)
  • Appreciation
  • Harmony
  • Achievement
  • Etc. (and lots more possibilities in e.g. this Needs Inventory)

This post is an invitation to apply the same considerations to the explicit and intentional design of the way the work works, as we do to the way our products or services under development work.

In my previous post, “Antimatter Evo”, I explored the twelve principles associated with the Agile Manifesto, and proposed a way to radically simplify those twelve principle down to, essentially, one (“Attend to folks’ needs”).

May I invite you to consider the impact on your development efforts of applying the same principle – the Antimatter Principle?

Does your current approach – to defining and improving the way the work works – attend to the needs of the people that matter?

Blind Spot

In the typical product development situation, each new product (or service) that enters development is handled much like all those which have gone before. Outwith major revisions to the way the work works (say, adopting a revolutionary new approach such as Agile), incremental improvements to the means of development can occur, and occasionally do. Yet with both Kaikaku (revolutionary change) and Kaizen (incremental change), change is rarely connected to better serving the needs of the “folks that matter”. Put another way, change most often serves the product and its users, and rarely the folks impacted by the way the work works.

How blind is your organisation, presently, to the ability of its development efforts to meet the relevant needs of the people involved in those efforts?

What if we applied ourselves to understanding the needs of the people that matter, as they pertain to the way the work works? What effect might that have on the social dynamic, the relationships between different people and groups, on productivity, and on the general success of our development efforts?

– Bob

Antimatter Evo

Tom Gilb has long been known for his “Evo”(evolutionary) approach to software engineering, and more recently for his sharp criticisms of the Agile Manifesto (99% of which I agree with).

In a recent (February 2018) PPI Systems Engineering Newsletter, he authors the feature article “How Well Does the Agile Manifesto Align with Principles that Lead to Success in Product Development?”, describing in some depth his issues with the Agile Manifesto, its Four Values and Twelve Principles.

Apropos the latter, Tom comments at length on each, providing for each a “reformulation”. I repeat each of these twelve reformulations here, along with a translation to the vocabulary (and frame) of the Antimatter Principle:

1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Tom’s reformulation: Development efforts should attempt to deliver, measurably and cost-effectively, a well-defined set of prioritized stakeholder value-levels, as early as possible.

Antimatter translation: As early and frequently as possible, in the course of developing e.g. a new product or service, we (the development team) will identify, quantify, and subsequently measure, a well-defined set of the needs of all the people that matter, and deliver, as early and frequently as possible, stuff that we believe meets those needs.

Antimatter simplification: Our highest priority is to continually attend to the needs of everyone that matters.

2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

Tom’s reformulation: Development processes must be able to discover and incorporate changes in stakeholder requirements, as soon as possible, and to understand their priority, their consequences to other stakeholders, to system architecture plans, to project plans, and contracts.

Antimatter translation: Our approach to developing new products or services enables the development team to discover and incorporate changes in the needs of anyone that matters, and the members of the community of “everyone that matters”, as soon as possible. The development team has means to quantify, share and compare priorities, and means to both understand and communicate the impact of such changes to the community of “everyone that matters”.

Antimatter simplification: Handle changing needs, and changing membership of the “everyone that matters” community, in ways that meet the needs of the people that matter.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Tom’s reformulation: Plan to deliver some measurable degree of improvement, to planned and prioritized stakeholder value requirements, as soon, and as frequently, as resources permit.

Antimatter translation: Plan to deliver some measurable degree of improvement to the planned and prioritised set of needs (of the people that matter) as soon, and as frequently, as needed.

Antimatter simplification: Deliver stuff as often as, and by means that, meets the needs of everyone that matters.

4. Business people and developers must work together daily throughout the project

Tom’s reformulation: All parties to a development effort (stakeholders), need to have a relevant voice for their interests (requirements), and an insight into the parts of the effort that they will potentially impact, or which can impact them, on a continuous basis, including into operations and decommissioning of a system.

Antimatter translation: Have established means through which we continually solicits the needs of the people that matter, means that are well-defined and well-understood by everyone that matters. These means provide: an ear for the feelings and needs of the people that matter, and feedback on the consequences (impact) of attending to those needs.

Antimatter simplification: Share needs and solutions as often as, and by means that, meets the needs of everyone that matters.

5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

Tom’s reformulation: Motivate stakeholders and developers, by agreeing on their high-level priority objectives, and give them freedom to find the most cost-effective solutions.

Antimatter translation: Motivate everyone that matters by agreeing on everyone’s needs, and give everyone, as a group, the freedom to collaborate in negotiating the trade-offs, priorities, and most cost-effective solutions.

Antimatter simplification: Motivate people to the degree that, and by means that, meets the needs of everyone that matters.

6. Enable face-to-face interactions.

Tom’s reformulation: Enable clear communication, in writing, in a common project database. Enable collection and prioritization, and continuous updates, of all considerations about requirements, designs, economics, constraints, risks, issues, dependencies, and prioritization.

Antimatter translation: Provide communications that meet the needs of everyone that matters. Manage these needs, including negotiated solutions, just as all the other needs in the endeavour.

Antimatter simplification: Facilitate sharing of information, feelings, needs, etc. to the degree that, and by means that, meets the needs of everyone that matters.

7. Working software is the primary measure of progress.

Tom’s reformulation: The primary measure of development progress is the ‘degree of actual stakeholder-delivered planned value levels’ with respect to planned resources, such as budgets and deadlines.

Antimatter translation: The primary measure of development progress is the ‘degree of actual needs met’ with respect to the planned, prioritised and quantified set of needs of everyone the matters. Note: Assuming end-users or customers are amongst the set of people that matter, this demands the product or service in question is in active service with those people, such that we can measure how well (the degree to which) their needs are actually being met. And don’t forget the needs pertaining to how the endeavour is being conducted!

Antimatter simplification: Choose a primary measure of progress that meets the needs of everyone that matters.

8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Tom’s reformulation: We believe that a wide variety of strategies, adapted to current local cultures, can be used to maintain a reasonable workload for developers, and other stakeholders; so that stress and pressures, which result in failed systems, need not occur.

Antimatter translation: Proceed at a pace that meets the needs of everyone that matters. Manage these (dynamic and potentially conflicting) needs, including negotiated solutions, just as all the other needs in the endeavour.

Antimatter simplification: Choose a pace that meets the needs of everyone that matters.

9. Continuous attention to technical excellence and good design enhances agility.

Tom’s reformulation: Technical excellence in products, services, systems and organizations, can and should be quantified, for any serious discussion or application. The suggested strategies or architectures, for reaching these ‘quantified excellence requirements’, should be estimated, using Value Decision Tables [45, 1, 2], and then measured in early small incremental delivery steps.

Antimatter translation: Aim for a level of technical excellence and good design – and any other quality-related attributes – that meet the needs of everyone that matters. Manage these (dynamic and potentially conflicting) needs, including negotiated solutions, just as all the other needs in the endeavour.

Antimatter simplification: Agree on attributes of quality, and levels of quality, with respect to the means of the endeavour, that meets the needs of everyone that matters.

10. Simplicity – the art of maximizing the amount of work not done – is essential.

Tom’s reformulation: We need to learn and apply methods, of which there are many available, to help us understand complex systems and complex relations. [1, 2, 46, 47, 48, 49] and succeed in meeting our goals in spite of them.

Antimatter translation: Aim for a level of simplicity – and any other quality-related attributes -that meet the needs of everyone that matters. Manage these (dynamic and potentially conflicting) needs, including negotiated solutions, just as all the other needs in the endeavour.

Antimatter simplification: Spend effort only where it directly attends to some need of someone that matters.

11. The best architectures, requirements, and designs emerge from self-organizing teams.

Tom’s reformulation (A): The most useful value and quality requirements will be quantified, and will use other mechanisms, including careful corresponding stakeholder analysis [1, 51, and 52], to facilitate understanding.

Tom’s reformulation (B): The most cost-effective designs/architecture, with respect to our quantified value and resource requirements, will be estimated and progress tracked, utilizing a Value Decision Table with its evidence, sources, and uncertainty. They will be prioritized by values/resources with respect to risks [45].

Tom’s reformulation (Simplified, combined): We will use engineering quantification for all variable requirements, and for all architecture.

Antimatter translation: Choose organisational structures and methods (teams, heroes, feature teams, self-organisation, quantification, etc.) for the endeavour that meet the needs of everyone that matters. Manage these (dynamic and potentially conflicting) needs, including negotiated solutions, just as all the other needs in the endeavour.

Antimatter simplification: Agree on attributes of quality, and levels of quality, with respect to the organisation of the endeavour, that meets the needs of everyone that matters.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Tom’s reformulation: A process like the Defect Prevention Process (DPP), or another more-suitable for current culture, which delegates power to analyze and cure organizational weaknesses, will be applied: using participation from small self-organized teams to define and prove more cost-effective work environments, tools, methods, and processes.

Antimatter translation: Aim to learn as much from our work as meets the needs of everyone that matters. Manage these needs, including negotiated solutions, just as all the other needs in the endeavour. 

Antimatter simplification: Pursue improvement, with respect to the means and organisation of the endeavour, that meets the needs of everyone that matters.

Summary

The key insight that emerges from this exercise in translation is this:

Once we have a more-or-less formal and established approach for identifying who matters and their needs, with respect to the endeavour at hand – and then tracking, negotiating and managing the evolving community of “everyone that matters” and their needs – much of the minutiae of the Twelve Principles, and debates thereon, evaporates.

In a nutshell: we must attend not only to the needs in the context of the particular product or service under development, but also to the needs of everyone that matters in the context of the means (conduct, organisation) of that development effort.

– Bob

Pillars

I was about to name this post “Pillars of TOC”, but after second thoughts I believe these pillars are equally useful outside of their immediate Theory of Constraints context.

Do you need to be able to think more clearly? Or maybe you know someone who would benefit from clearer thinking?

Goldratt asserts the pillars described below as foundational to “clear thinking”:

  • Inherent Simplicity
  • Every Conflict Can Be Removed
  • People Are Good
  • Never Say I Know

Pillar: Inherent Simplicity

This first pillar is a choice. An intention to look at situations as if they were always inherently simple. As if the nature of reality itself is simple (and harmonious).

“Reality is simple and harmonious.”

If we choose to proceed as if this were true, then we will be less likely to get trapped in looking for sophisticated explanations and complicated solutions. We will be less likely to channel our attention towards just those things we allow ourselves to see.

“The first and most profound obstacle is that people believe that reality is complex, and therefore they are looking for sophisticated explanations for complicated solutions. Do you understand how devastating this is?”

~ Goldratt, Eliyahu M.. The Choice, Revised Edition (Kindle Locations 213-215).

For clear thinking, we must choose to proceed as if we accept the idea of Inherent Simplicity, as a practical way of viewing reality, any reality. We may even go so far as to choose this as our approach to life in general.

“The biggest obstacle is that people grasp reality as complex when actually it is surprisingly simple.”

~ Goldratt, Eliyahu M.. The Choice, Revised Edition (Kindle Locations 219-220).

So what exactly do we mean by Inherent Simplicity? In a nutshell, Inherent Simplicity is the cornerstone of all modern science, as stated by Newton: “Natura valde simplex est et sibi consona.” We may translate this as “nature is exceedingly simple and harmonious with itself”.

Note: Goldratt states that with the Theory of Constraints, he takes a “Hard Science” perspective in all situations.

In practice, this means examining the cause-effect relationships within a given situation. And, contrary to our intuition, where we would expect some form of combinatorial explosion of complexity to result, Inherent Simplicity (and Newton) tells us that the system will converge, and common causes will inevitably appear as we drill down. If we drill down deep enough, we’ll find just a very few, or maybe even just one, root cause. So the result of systematically examining the cause-effect relationships in a situation leads us not to enormous complexity, but to wonderful simplicity.

If you doubt this, take a look at this article explaining the relative simplicity of two systems.

Hint: If I’m a scientist or a manager, I’m not so much interested in how difficult the system is to describe, but more in the difficulty of controlling and predicting its behaviour, especially when changes are introduced. The scientist or manager’s definition of complexity is: “the more degrees of freedom the system has the more complex it is.”

We’re not claiming that reality is not overwhelmingly complex; we acknowledge it in full. But what we are claiming that we can see things more clearly, think more clearly, when we choose to proceed on the basis that reality is exceedingly simple.

Note: We may begin to see how this perspective renders the idea of “complex adaptive systems” irrelevant.

Pillar: Every Conflict Can Be Removed

Let’s come back to the earlier proposition about Inherent Simplicity, that “Reality is simple and harmonious (with itself).”

We may choose to interpret “harmonious with itself” to mean that there are no contradictions in nature. In the material world. In “reality”.

“There are no conflicts in reality.”

For example, if we measure the length of a rod, by two different methods, and get two different answers, we don’t compromise. We don’t say “let’s split the difference and use the average between the two methods”. The contradiction between the two methods signals us that somewhere along the line we have made an erroneous assumption of some kind. And so we’ll go looking for that flawed assumption, and never accept a compromise. Such is the strength of our belief that there can be no contradictions in nature.

But this pillar is about conflicts, not contradictions. A conflict can occur any time we have opposing requirements, such as the need for an aircraft wing to be both strong and light. All undesirable effects (in the cause-effect relationships within a given situation) stem from such conflicts.

So this pillar is about choosing to proceed such that we treat every conflict like a scientist treats a contradiction. Which means, examining the conflict to uncover the inherent erroneous assumption(s), and refusing compromise as a way out.

“Don’t accept conflict as a given.”

Note: All forms of optimising and optimisation fall into the category of “compromising”. Such a waste of everyone’s time and talents.

Pillar: People Are Good

With this pillar, we come back again to the idea of harmony. This time we’re interested in another obstacle to thinking clearly: blaming others.

“Blaming another person is not a solution.”

In fact, in many cases, blaming others points us in the wrong direction, away from a solution. Even if the person we blame were to be fired, in most cases the problem will remain. Blaming is a sure-fire way to undermine the harmony in our personal relationships.

And we need that harmony, so that we can collaborate effectively with other people (our peers, our suppliers, our customers) in finding the solutions we seek.

So, we choose to proceed with the deep conviction that harmony exists in any relationship between people (even though in most cases, by default, we don’t bother to find and implement it). We choose to proceed on the basis that

“Win-Win is always possible.”

This perspective allows us to think more clearly, and find solutions that work for all parties involved, not just one side. Yes, it’s more work, but it gives our solutions much more stickability.

And, incidentally, for effective harmonious relationships, we have to care about the people involved. We have to invest the time and effort into knowing them and their true needs (cf. The Antimatter Principle).

Pillar: Never Say I Know

When we choose to proceed on the basis that we know about a situation, we’re unlikely to seek improvements, to check for holes in our logic or understanding, or to believe that the situation can be improved.

So, let’s always proceed as if we DON’T know. This choice can help us think more clearly, examine the situation afresh, and discover different, more effective ways of doing the things that need doing.

“Every situation can be substantially improved.”

Summary

You may see the above pillars as largely philosophical, as a way of looking at the world. Personally, I choose to see them as pragmatic, as a way of interacting with the world. And, returning to the notion of harmony, we may begin to see how all these pillars complement each other, harmoniously.

Harmony: “the quality of forming a pleasing and consistent whole.”

– Bob

Further Reading

The Choice ~ Eliyahu M. Goldratt and Efrat Goldratt-Ashlag

 

The One Perfect Way to Develop Software

[Tl;Dr: Being a Master of the perfect way to develop software is more of a handicap than an asset.]

Let’s imagine you’ve received a Matrix-style download of all the knowledge and skills necessary for Mastery of the perfect way to develop software. And you’ve applied this knowledge, and honed the skills, in several or many software development endeavours. And have the results to prove it.

Then you join a new-to-you organisation, and a new-to-you team, where of course you want to share your profound, highly valuable insights, capabilities, knowledge and skills with your peers, with a view to you all basking in the sweet success of the One Perfect Way.

Setting aside secondary issues such as the probability that there is no ONE perfect way, and that software development per se is maybe not what our customers are really interested in, what could possibly go wrong?

I’ll leave this question hanging. If I receive some expressions of interest, I propose to return to it in a future post.

– Bob

Further Reading

Characterizing people as non-linear, first-order components in software development ~ Alistair Cockburn

 

%d bloggers like this: