Starting Your Journey in Quality Engineering: Essential Methods
Written on
Chapter 1: Introduction to Quality Engineering
Navigating the start of a career in Quality Engineering can be daunting, especially in today's fast-paced digital landscape with fierce competition and unpredictability. The vast array of approaches, including UX, Agile, Lean, DevOps, and SRE practices, can often lead to confusion.
One undeniable truth is that achieving quality in software delivery at speed is crucial for sustainability. This involves:
- Uncovering valuable user experiences with minimal effort and commitment.
- Creating basic software rapidly that can be scaled later without extensive rework.
- Establishing foundational elements that can enhance iterative processes.
Quality Engineering is instrumental in guiding us to choose the most beneficial practices, ensuring continuous value delivery throughout the software lifecycle. Its application is based on the five domains of MAMOS: Methods, Architecture, Management & Culture, Organization, and Skills. This article specifically emphasizes the methods necessary for producing Quality at Speed software, distinct from my previous discourse on Quality Engineering Methods, which covered additional methodologies without intertwining them with change management.
Section 1.1: OKRs, DoD, and DoR for Clear Direction
To achieve Quality at Speed software, it's imperative to set clear objectives and milestones that direct the team towards what is essential. The efficiency of these goals relies on well-defined roles and a shared understanding of the tasks that yield valuable software.
OKRs (Objectives and Key Results) serve to clarify priorities. This Agile methodology necessitates the definition of tangible outcomes that collectively fulfill an objective. OKRs should inspire all team members, be time-bound, and ambitious yet achievable.
The Definition of Done (DoD) and Definition of Ready (DoR) provide clear criteria for software deliverables, requiring a checklist for each type of deliverable to ensure that the team can maximize Quality and Speed during implementation. Without these methods, teams may experience a lack of focus and clarity, leading to wasted efforts, multiple revisions, and frustration. Even well-written code holds little value if it fails to meet user needs.
Section 1.2: Design Thinking and User-Centric Prototyping
Delivering a meaningful user experience is achieved through rapid, low-effort experiments. The competitive landscape demands that we provide optimal solutions for problems that potential customers are willing to pay to solve.
Design Thinking is a methodology centered on identifying the valuable elements that potential users seek. This approach involves quick iterations of value-hypothesis techniques to arrive at a Proof of Value (POV).
Personas represent digital audiences interested in the offered solution. By segmenting users into various personas, we can identify their distinct needs, allowing for tailored product offerings, customer journeys, and after-sales support.
Neglecting Design Thinking can lead to teams that operate in a business-as-usual manner, focusing inward rather than enhancing value for existing and potential personas. Consequently, users may quickly gravitate towards competitors who deliver Quality at Speed.
Chapter 2: Agile Frameworks: Kanban for Efficient Delivery
Starting with an Agile framework can be advantageous, but realizing value from Agile methodologies necessitates time and stability. For instance, implementing Scrum rituals requires time to gain visibility into the team's velocity. A quicker alternative is essential when starting.
Kanban is a streamlined method that facilitates just-in-time work. It prioritizes the most valuable tasks, limits work-in-progress according to the team's actual capacity, and minimizes upfront planning and forecasting. A variant known as Scrumban is also available.
The previously discussed methods of OKR, DoD, and DoR seamlessly integrate with both Kanban and Agile frameworks. Each backlog item should align with an OKR, including explicit expectations to consider it "Done" or "Ready."
Kanban is simpler to implement, eliminating the need for a comprehensive set of rituals or velocity calculations for effective sprint planning. The focus is on delivering what is expected as quickly as possible, which, in our case, means Quality at Speed software.
Section 2.1: Enhancing Quality Through Craft Governance
The intangible and subjective nature of software makes it challenging to unify the team's vision. A practical approach to enhancing the software process for Quality at Speed is to incorporate systematic reviews throughout its lifecycle.
Key checkpoints in the software lifecycle, from conception to delivery, can be reinforced by a review process:
- Priority Review: Evaluates the relevance of a task concerning the OKR.
- Requirements Review: Identifies overlooked elements such as accessibility or privacy.
- Architecture Review: Allows for a broader perspective on long-term objectives.
- QA Plan Review: Aligns stakeholders on testing scope and priorities.
- Code Review: Enables early improvements to code at a lower cost.
- Production-Ready Review: Ensures minimum go-live requirements are fulfilled.
Conducting systematic reviews at each stage is an investment that helps meet Quality requirements and reduce unnecessary rework. This approach combines shift-left and shift-right strategies across the software lifecycle, showcasing the comprehensive view of Quality Engineering.
To pragmatically implement these reviews, they should be integrated into the DoD and DoR at appropriate points. The priority for their implementation should be in the order listed, starting as early as possible in the software delivery lifecycle.
Section 2.2: Agile Testing for Optimal Techniques
Testing deserves focused attention. Often, it is misconstrued as a secondary activity performed after development, if at all, or merely as a task of automating use cases. However, it plays a crucial role in accelerating the process.
Agile Testing, introduced by Lisa Crispin and Janet Gregory, applies the Agile mindset to testing practices. It primarily utilizes the Agile Testing Quadrants to define the appropriate mix of testing across different product perspectives.
Establishing the testing priority requires alignment with the product's OKRs and the needs of the personas. For example, if the product must handle variable workloads, planning for spike testing in the performance category becomes essential, enriching the DoD and DoR.
Testing strikes a balance between value, risk, and confidence. Neglecting it can lead to persistent bugs and costly revisions, while excessive testing on unnecessary aspects wastes effort without adding value or reducing risks.
Conclusion: The Role of Quality Engineering Methods
These methodologies are quick to adopt and enable teams to concentrate on what truly matters with minimal effort and commitment. They represent an investment in your Quality Engineering ecosystem, allowing for further development without squandering initial efforts.
Some methods may prompt inquiries about incorporating automation into the process. For instance, why not implement automated functional testing within the software pipeline using Quality Gates? This is a valid consideration, necessitating the presence of CI/CD pipelines first.
The Architecture domain will provide the automation capabilities needed, along with scalability, as the goal is to grow your business with Quality at Speed software. Like the methodologies, fundamental architectural elements of Quality Engineering are essential.
Future articles will explore how to initiate work in the other domains of MAMOS. Until then, the contributions of these methods to Quality and Speed are now available in the ebook "On Defining Quality Engineering: Thrive Your Business with Quality at Speed Software."
Ready to embark on your Quality Engineering journey? Follow the QE Unit for more insights into Quality Engineering.
Clap this article if you found it helpful!
Discover essential tips for aspiring Quality Engineers and how to navigate your career path effectively.
Learn about the role of a Quality Engineer and the key responsibilities that define this vital position in software development.
This version preserves the original ideas and structure while using distinct phrasing and incorporating the requested YouTube videos and image changes.