Before I immersed myself in the world of software testing, I learned a great deal about the realms of quality and craftsmanship by observing skilled artisans and doing hands-on work myself.
During my undergraduate years, I supplemented my education by working part-time in the jewelry manufacturing industry, where I had the privilege of observing actual production processes. Witnessing firsthand the meticulous attention to detail and unwavering commitment to quality that characterizes this field left an indelible mark on my understanding of craftsmanship.
Furthermore, my father's occupation as a carpenter exposed me to yet another dimension of quality and the artistry it entails. His skillful hands transformed raw wood into functional, aesthetically pleasing pieces, and this taught me the profound impact that meticulous care for quality can have on the end product.
I came to realize that quality was not just a concept but a tangible aspect of a product or service, and that striving diligently for quality could elevate any craft to a higher level of excellence.
My pursuit of quality extended beyond jewelry and woodworking, leading me to study the construction field. Here, I learned how quality played a pivotal role in ensuring the safety and longevity of structures. These varied experiences, each steeped in its own unique craftsmanship, laid the foundation for my career in software testing.
When I entered the software development domain as a tester, I couldn't help but draw parallels between the principles of quality and craftsmanship I had observed in my earlier endeavors and their relevance to the software craftsmanship. This ongoing comparison allowed me to view quality from both the user's perspective and the craftsperson's perspective, providing valuable insights into the art of creating exceptional software.
In this article, I share the aspects of quality common to many endeavors that I've discovered along my journey. Observing these parallels has not only enriched my understanding of software quality but has also illuminated the timeless principles that underpin craftsmanship and quality across diverse fields.
It's essential to recognize that the process of crafting the specific products I'm discussing in this industry incorporates a degree of mechanization. However, it's not as extensively automated as fully mechanized assembly lines. The fields I am discussing here can also be heavily mechanized for the creation process. In mechanized setups, procedures, testing and aspects of quality may vary.
Before we start making comparisons between software craftsmanship and other domains, let's first familiarize ourselves with the fields I’ll discuss here.
Understanding Jewelry Manufacturing
Jewelry manufacturing is a highly intricate process, especially when a manufacturer is producing jewelry in bulk, encompassing various designs and materials. In particular, creating studded jewelry involves a series of meticulous steps, including designing, casting, filing, setting, polishing, rhodium coating, and much more. Each piece of jewelry undergoes these multiple stages before it transforms into a marketable item. Let's delve into these processes in detail:
Designing: The journey begins with the creation of a jewelry design, whether it's sketched on paper or meticulously crafted on a computer as a model. During this phase, stringent quality checks are conducted to assess factors such as durability, attractiveness, uniqueness, and more. After the design passes these checks, it becomes an integral part of the catalog.
Casting: For each design, a mold is meticulously prepared. This mold serves as the receptacle for the molten metal, be it silver, gold, or any other chosen material, which is poured into it to give the jewelry its initial shape.
Filing: To achieve the desired level of smoothness and texture, the jewelry piece undergoes filing using specialized instruments. Additionally, it is buffed multiple times to attain a fine-grained smoothness and a basic shine. These filing and buffing processes are conducted both before and after the jewelry is studded with stones or diamonds.
Setting: The setting process involves the meticulous placement of jewels, whether they be diamonds, precious or semiprecious stones, onto the jewelry piece. There are various types of settings, each carefully chosen to align with the original design and the jewel's specifications.
Polishing: After setting, the jewelry undergoes a polishing stage to enhance its shine and overall smoothness.
Rhodium Coating: Some pieces of jewelry are further enhanced with a coating of rhodium, adding an extra layer of luster and protection.
Throughout each of these stages, stringent quality control and quality assurance measures are in place to ensure that the jewelry meets the highest standards of quality and craftsmanship.
When a contractor or carpenter embarks on a carpentry project their journey begins by understanding the client's vision for the wooden items they intend to create, such as beds, cupboards, sofas, and more.
To bring this vision to life effectively, the carpenter must grasp crucial details. This includes determining the intended location for these items, which informs the dimensions and specifications required. Additionally, the carpenter must consider the surrounding color tones, suggesting various design options. They may draw from well-established designs or collaborate with the customer to craft entirely new concepts. Furthermore, the carpenter must take into account the client's quality expectations and budget constraints, including factors like waterproofing, wood types, polishing, and laminating.
After all these specifications are meticulously noted, the carpenter proceeds to the crafting phase. Using an array of tools, they cut, plane, fill, chisel, and assemble various wooden parts to form the desired item. Throughout this process, each component undergoes meticulous inspection, employing tools such as right angles and measuring instruments to ensure precision.
Moreover, the carpenter maintains an ongoing dialogue with the customer, periodically showcasing the work in progress. This interaction seeks valuable feedback, allowing adjustments to be made as the project unfolds. This proactive approach prevents the need for extensive rework and minimizes the risk of discarding the entire project.
Construction is a complex and multifaceted process that involves a series of carefully orchestrated steps to transform a vision into a tangible structure. It all begins with meticulous planning and design, where architects, engineers, and stakeholders collaborate to outline the project's scope, budget, and aesthetics. After the blueprints are finalized and necessary permits secured, the site is prepared through excavation, grading, and foundation laying. Skilled craftsmen and laborers then step in, working diligently to construct the framework, walls, and roof, ensuring structural integrity. Plumbing, electrical, and HVAC systems are carefully integrated into the building, followed by insulation and drywall installation. As the construction nears completion, finishing touches such as flooring, paint, and fixtures add the desired aesthetic appeal.
Throughout this process, quality control and safety measures are paramount, with regular inspections and adherence to building codes. Finally, the project concludes with a thorough inspection, handing over the keys to the owner, marking the end of an intricate journey from concept to reality
A Common Thread Of Quality
Now, let's delve into the world of software craftsmanship, seeking to uncover intriguing connections between this discipline and the domains discussed above. Our aim is to examine closely the concept of quality across a range of products or services in these diverse fields, revealing the characteristics they have in common.
What Does Quality Mean?
Quality plays a pivotal role in the success of various industries. In jewelry manufacturing, the fortunes of any business rely heavily on the level of quality achieved. If a piece of jewelry falls short of the desired quality standards, it can adversely affect sales, lead to negative reviews, and even harm the brand's reputation. To be considered a high-quality product, jewelry must possess several key attributes, including attractiveness, smoothness, shine, durability, just to name a few. Quality in jewelry is determined by the extent to which it meets these specific criteria.
Similarly, in carpentry, the quality of furniture is judged based on its suitability for its intended purpose. Furthermore, if the furniture is easy to use, it can bring great satisfaction to the customer. Durability and aesthetic appeal are also vital factors. Thus, in carpentry, there exist distinct quality attributes against which furniture can be evaluated. A top-notch piece of furniture will excel in all these dimensions.
In the construction industry, a building is considered of high quality if it excels in terms of robustness, visual appeal, and other aspects of quality, much like jewelry manufacturing and carpentry.
In the realm of software development, a software product is deemed high-quality if it stands out in terms of ease of use, security, performance, functionality, features, user experience, and more.
It is evident from the above examples that in most fields, quality is defined by specific parameters or attributes that a product or service must excel in to be considered truly above par.
The Role Of Testing In Quality
The role of testing, whether in jewelry manufacturing, carpentry, or construction, is pivotal in assessing the quality of a product or its components.
In jewelry manufacturing, items undergo multiple tests, such as examining pieces under lenses at various production stages and assessing the strength of joints to ensure that stones or diamonds securely adhere.
In carpentry, a carpenter evaluates different aspects of materials and wood to determine their suitability for further use, including checking if the angles are perfectly right and assessing the surface's smoothness when planing.
Similarly, in construction, various tests are performed on the mortar used in building construction, including strength tests on the building's basic structure.
Drawing a parallel to software craftsmanship, we conduct diverse tests on software features or products, encompassing functionality, security, and performance tests.
In essence, across these domains, a test assesses specific parameters and yields indicators. Checking these indicators determines whether a product or feature meets the required quality standards.
In all of these fields, testing plays a major role in assessing quality. It's important to emphasize that testing is a comprehensive process that encompasses various crucial steps. In all of these fields, the central aspect of testing lies in the exploratory aspect of determining tests, the meticulous execution of those tests, the analysis of test results, the diagnosis of problems and risks, and the subsequent correction of identified issues.
In the realm of jewelry manufacturing, carpentry, and construction, this process involves designing specific tests tailored to the unique requirements of each domain. These tests are then carried out with precision, and the results are thoroughly examined. Any anomalies or deviations from the desired quality standards are meticulously diagnosed to pinpoint their root causes. Subsequently, corrective actions are taken to rectify these issues, ensuring that the final product or structure meets the desired levels of quality and reliability.
Similarly, in the world of software craftsmanship, the testing process follows a similar pattern. Tests are carefully crafted to evaluate the functionality, security, and performance of software features or products. The results are analyzed to identify any bugs, vulnerabilities, or performance bottlenecks. This diagnostic phase is crucial for understanding the risks associated with the software. After these issues are identified, software developers and engineers take corrective measures to address them, ensuring that the software meets the specified quality and performance criteria.
In summary, testing is not merely about running a few checks; it's a comprehensive and iterative process that plays a central role in quality assurance across various domains. It involves designing, executing, analyzing, diagnosing, and correcting to ensure that the end result meets the desired standards of excellence and reliability.
Quality Control And Quality Assurance
In the realm of jewelry manufacturing, a manufacturer typically assembles a team of experts who specialize in ensuring product quality at various stages of production. These individuals are responsible for conducting rigorous quality checks on each piece of jewelry throughout the entire manufacturing process. This systematic process is commonly referred to as "quality control." Those assigned to quality control carefully scrutinize each jewelry item, providing feedback to the artisans responsible for crafting them and managing the progression of finished items through specific stages.
To illustrate, consider the process of filing in jewelry manufacturing. When a worker claims to have achieved the desired level of smoothness on an item, they submit it for inspection to a quality control expert. This expert assesses whether the filing has been done correctly. Based on their evaluation, they may either approve the work or return it to the worker with feedback for further refinement. This meticulous oversight throughout production is what characterizes the practice of quality control in jewelry manufacturing.
Additionally, the jewelry manufacturing industry employs another approach known as "quality assurance," which is more proactive in nature compared to quality control. In quality assurance, every worker is equipped with the means to assess whether their work meets the desired quality standards. They are provided with tools such as lenses to conduct self-checks. Moreover, the manufacturer implements measures like regular workplace inspections, examinations of casting materials, and assessments of all machinery and equipment involved to prevent defects from occurring in the first place.
Turning our attention to carpentry, although carpenters may not employ the terminology "quality assurance" or "quality control" as frequently, they engage in similar activities. A supervisor or a more experienced individual overseeing a woodworking project routinely inspects the wood to ensure it attains the desired smoothness, adheres to correct angles, and meets various quality parameters. In carpentry, quality assurance holds significant importance, as rectifying errors can be costly, often requiring the entire defective wooden piece to be discarded if preventive measures were not adequately enforced.
In the construction industry, the terms "quality control" and "quality assurance" are commonly used. Quality control in construction focuses on identifying and rectifying problems through testing, observation, and inspection. This process is reactive and aims to fix issues that arise during construction. On the other hand, quality assurance emphasizes a proactive approach, involving meticulous planning, documentation, training, education, and continuous improvement efforts to prevent problems from occurring in the first place.
In the field of software engineering, both "quality assurance" and "quality control" have been established practices for many years. In software engineering, quality control primarily revolves around identifying problems and risks while software is being developed or during the creation of its components. This often entails comprehensive testing of functionality, features, performance, security, and other aspects of the software after it is coded. Conversely, quality assurance in software engineering focuses on instituting preventive measures through best practices, planning, and documentation to avert problems or risks before code is written or finished. Given the high cost associated with rectifying software bugs at later stages of development, many organizations incorporate prevention and early detection techniques to ensure the overall quality of their software products.
The Importance Of Feedback Cycles
The concept of a "feedback cycle" holds significant importance in various fields, and it plays a key role in ensuring the quality and success of different endeavors. Let's explore how this feedback cycle is employed in jewelry manufacturing, carpentry, and construction, and draw parallels to the world of software development.
In the intricate world of jewelry manufacturing, the feedback cycle is a cornerstone of the process. Manufacturers recognize the critical importance of obtaining feedback on the overall quality of a piece of jewelry as early as possible in its lifecycle. The rationale behind this practice is straightforward — rectifying issues or imperfections in later stages can be immensely challenging and costly. To illustrate, consider a scenario where a piece of jewelry is not filled properly, and this issue surfaces only after it has been adorned with precious gemstones like diamonds. Correcting such a mistake at this stage could entail the risk of damaging the gemstones themselves. Hence, at every phase of jewelry production, quality control experts diligently provide feedback on the work completed. Moreover, feedback from customers and individuals closely connected to customer preferences is also sought. This emphasis on early and frequent feedback is instrumental in ensuring the overall excellence of the final jewelry product.
In the realm of carpentry, the feedback cycle is equally indispensable. When a carpenter meticulously planes a piece of wood, they continually assess whether the horizontal level of the wood remains intact. Feedback isn't limited to self-assessment; carpenters routinely seek input from supervisors and senior colleagues to verify that the project adheres to the specified requirements. A striking example highlights the significance of feedback in carpentry: one of the craftspeople working with my father once proceeded to craft a frame based on certain assumptions while my father was temporarily absent. Later, it was discovered that these assumptions were inaccurate, resulting in the need to discard the entire frame. This incident underscores how feedback serves as a crucial mechanism for validating assumptions. Additionally, contractors actively solicit feedback from customers during the furniture-making process, enabling them to gain insight into the specific vision and preferences of the customer, which might not have been initially clear.
In the construction industry, feedback mechanisms vary slightly. Customer feedback typically arrives towards the project's conclusion when everything is in place. However, some builders adopt a proactive approach by conducting trial showcases of under-construction properties, allowing potential buyers to visit and provide feedback on the ongoing construction. Internally, feedback is regularly collected on materials, work quality, and craftsmanship through supervisors and workers.
Drawing parallels to these fields, the world of software development has also embraced the critical role of feedback and the feedback cycle. Since the inception of the agile development methodology, software creation has evolved to operate in iterative cycles that enable feedback to be integrated early in the development process. Feedback is actively sought from various stakeholders, including customers, product owners, and testers. Software is released incrementally, with each iteration providing an opportunity for feedback, adjustment, and improvement.
Whether in the delicate craftsmanship of jewelry making, the precision of carpentry, the construction of buildings, or the dynamic world of software development, the feedback cycle is an invaluable tool for ensuring quality, validating assumptions, and ultimately achieving success in any endeavor.
The Role Of Tools
Tools are key in bolstering the overall quality of various fields. In the realm of jewelry manufacturing, a range of optical instruments, such as microscope eyepieces, is employed to obtain magnified views of items. Additionally, various tools like grips and wax molds aid in the assessment and refinement of quality. These tools serve the crucial purposes of measurement, observation, and correction.
Similarly, in carpentry, craftspeople use tools like right angles and various angles to ascertain the precision of joints and edges. Measuring tapes are employed to determine if an item adheres to the correct dimensions, while instruments like calipers contribute to the overall quality assessment. The tools in carpentry primarily enable the measurement and observation of various aspects.
In the construction industry, tools are instrumental in gauging specific criteria such as strength, rigidity, and angles. These tools facilitate the measurement, assessment, and observation of quality parameters.
In software engineering, various tools serve to conduct automated checks as well as to measure, assess, and observe software characteristics. For instance, browser development tools can gauge and test the software's performance under simulated conditions like slow network speeds and varying resolutions. In software engineering, tools are indispensable for evaluating, testing, and observing software across a spectrum of quality parameters.
Pay Heed To Differences
While we have indeed drawn several parallels between software engineering and other fields in terms of quality, it's essential to exercise caution and refrain from blindly applying identical methodologies from those fields to software engineering. This caution is rooted in the fundamental differences between software engineering and well-established fields that have been practiced for millenia. Craftspeople in these traditional fields have honed their processes over time, whereas software engineering, a discipline that is only a few decades old and that does not result in a physical product,, lies in its heavy reliance on communication and other dynamic aspects of work.
It is essential to recognize that when drawing inspiration from other fields, the nature of their creation processes plays a pivotal role. When extensive automation is involved in manufacturing, such as the use of machines or assembly lines, it can significantly influence the quality goals, constraints, and procedures. This dynamic introduces a multitude of factors that affect overall testing and quality assurance. So when you compare quality practices in heavily automated production processes to quality practices in software, where sapient activity by people prevails over automation, caution is warranted. While we can certainly draw parallels based on fundamental quality principles, it's crucial to recognize that each field has its specific knowledge requirements and intricate details to consider.
The implementation of quality concepts may vary significantly from one field to another due to these inherent differences. Quality itself can take on different meanings in each field, and we cannot blindly adopt quality parameters from one field to another. This is primarily because software products serve distinct purposes compared to the products or items produced in other fields. Therefore, it's imperative to tailor quality approaches to the unique characteristics and demands of software engineering.
Understanding quality in various fields such as jewelry manufacturing, carpentry, and construction can provide us with valuable insights into how it manifests in all craftsmanship. What I learned from other fields allowed me to draw intriguing parallels between these traditional domains and the world of software engineering.
In each of these fields, quality is a cornerstone of success, and it is defined by specific attributes and parameters that a product or service must excel in to be considered high-quality. Testing plays a pivotal role in assessing quality, and it involves a comprehensive process of designing, executing, analyzing, diagnosing, and correcting to ensure that the end result meets desired standards.
Quality control and quality assurance are practiced across all these domains, with a focus on proactive prevention and early detection of issues. The feedback cycle is instrumental in validating assumptions and continuously improving the quality of the final product. Tools are employed to measure, assess, and observe quality parameters.
However, it's crucial to exercise caution when applying methodologies from traditional fields to software engineering, as software development is inherently different in its dynamic nature, heavy reliance on communication, and the unique characteristics of each project.
In the end, the parallels between these fields serve as a reminder of the timeless principles that underpin craftsmanship and quality across diverse domains. While the specific implementation may vary, the pursuit of excellence and the commitment to delivering high-quality products and services remain constant, whether you're crafting jewelry, building furniture, constructing structures, or developing software.
For Further Information
- What You Looking at? Modern Art and Testing in the Blink of an Eye, with John McGee
- The Surprising Benefits of Exploring Other Disciplines and Industries, with Conor Fitzgerald
- Lessons From Famous Detectives for Testers, with Geoffrey van der Tas