Throughout our careers we develop guiding principles, often based on the principles of others that resonate with us, perhaps coupled with our workplace experiences.
Often it is good to reflect on these principles, to review what principles have influenced our thoughts to-date and perhaps give us some direction for the future.
The purpose of this simple blog is to share 5 sets of principles that have influenced my thoughts not just on testing but on the wider topic of Quality.
10 Principles for Agile Testers
In their first book, Agile Testing, Lisa Crispin and Janet Gregory introduced the “10 Principles for Agile Testers”. These principles guided testers who knew what Agile was but didn’t understand Agile Testing. These principles are still very much relevant today.
- Provide continuous feedback
- Deliver value to the customer
- Enable face-to-face communication
- Have courage
- Keep it simple
- Practice continuous improvement
- Respond to change
- Focus on people
Context Driven Testing: 7 Basic Principles
Context Driven Testing is an approach developed by Cem Kaner, James Bach & Bret Pettichord. The principles are listed in their book “Lessons Learned in Software Testing”.
A benefit of Context Driven Testing is the fact that it is based on the context of a specific situation as opposed to applying “best practices”.
- The value of any practise depends on its context.
- There are good practices in context, but there are no best practices.
- People, working together, are the most important part of any project’s context.
- Projects unfold over time in ways that are often not predictable.
- The product is a solution. If the problem isn’t solved, the product doesn’t work.
- Good software testing is a challenging intellectual process.
- Only through judgment and skill, exercised cooperatively throughout the entire project, are we able to do the right things at the right times to effectively test our products.
Lean Principles – Lean, Waste and Kanban
5 Lean Principles
Lean was born out of manufacturing practices but in more recent times has transformed the world of knowledge work and management.
- Defining value
- Mapping the value stream
- Creating flow
- Using a pull system
- Pursuing perfection
7 types of waste
Taiichi Ohno described three categories of waste: Muda (wasteful activities), Muri (overburden), and Mura (unevenness). He, in turn, categorised 7 types of waste (7 Mudas).
Mary and Tom Poppendieck in their book Lean Software Development: An Agile Toolkit, then mapped the 7 wastes (Muda) to software development in the following way as described in this blog:
- Waste of inventory maps to partially done work (or work in process)
- Waste of overproduction maps to delivering extra or unneeded features
- Waste of extra processing maps to relearning
- Waste of transportation maps to handoffs
- Waste of waiting maps to delays
- Waste of motion maps to context switching
- Waste of defects maps to defects
Taiichi Ohno is credited with developing the first Kanban system. Kanban is a Process Improvement tool. David Anderson is seen as popularising the application of Kanban to Tech & Knowledge work.
Kanban Foundational Principles
- Start with what you are doing now
- Agree to pursue incremental, evolutionary change
- Initially, respect current roles, responsibilities and job titles
- Encourage acts of leadership at all levels
6 Core Practices of the Kanban Method
- Visualize the flow of work
- Limit WIP (Work in Progress):
- Manage Flow:
- Make Process Policies Explicit
- Implement Feedback Loops:
- Improve Collaboratively, Evolve Experimentally (using the scientific method)
Modern Testing Principles
Alan Page and Brent Jensen are the creators of the Modern Testing Principles. In Alan’s own words “Modern Testing adapts Lean, Agile, and DevOps philosophies to emerging business and industry realities. Like shift-left testing, it promotes testing earlier on in the software development lifecycle. Modern Testing emphasizes quality as a shared responsibility between developers and testers, with an emphasis on data.”
- Business First
- Accelerate the Team
- Always Learn and Improve
- Lead a Quality Culture
- Customer Is King
- Data Trumps Intuition
- Embrace the Change
Reading books like The Goal and The Toyota way made me think about Systems, which led to two books on Systems thinking. An Introduction to General Systems Thinking by Gerald Weinberg and Thinking in Systems: A Primer by Donella Meadows.
The principles of Systems Thinking are extensive and in all honesty, this topic is probably the most academically challenging of the principles I have encountered to date as there is so much depth to this topic.
Donella Meadows said “A system is an interconnected set of elements that is coherently organized in a way that achieves something. If you look at that definition closely for a minute, you can see that a system must consist of three kinds of things: elements, interconnections, and a function or purpose.”
This blog gives a nice overview of 6 of the key principles/tools.
- Feedback Loops
- Systems Mapping
Forming a set of principles
Often by analysing the Principles of others allows us to begin to develop our own Guiding Principles. The 5 sets of principles discussed in this blog, each have a personal takeaway.
1. 10 Principles for Agile Testers
The Importance of Communication, Collaboration and Continuous Improvement.
2. Context Driven Testing
Focus on the context i.e. the details of the specific situation
3. Lean Principles
Increase value and reduce waste.
4. Modern Testing Principles
Emphasis on shared responsibility for quality, being data-driven and customer-obsessed.
5. Systems Thinking
View Systems from a broad perspective.
So why not list the principles that have influenced your thinking and think about what your takeaways are.
These links helped summarise my thoughts in this blog.