Software craftsmanship is an approach to software development that emphasizes the coding skills of the software developers and the role of the software craftsmanship is often considered crucial in Agile methodologies such as Scrum. Here, I will discuss one of the key principles of software craftsmanship, namely, the principle of ‘continuous improvement’ and how it applies to the work associated with Certified Scrum Professional – ScrumMaster (CSP-SM) exam.
Continuous Improvement and CSP-SM
Continuous improvement, as the name suggests, emphasizes an ongoing effort to improve products, services or processes. It is vital in software craftsmanship and is integral to the Scrum eponym. Typically, these improvements are gradual and incremental in nature but can also be breakthrough in nature.
Role of CSP-SM:
A Scrum Master, certified by CSP-SM, plays a pivotal role in driving and fostering a culture of continuous improvement within the Agile team. The Scrum Master needs to ensure that the team continuously learns from its experiences and applies these learnings to forthcoming sprints. This aligns with the philosophy of software craftsmanship that emphasizes mastery and continual learning.
Fostering a Learning Environment:
Encouraging a learning culture within the Agile team is critical for continuous improvement. The Scrum Master, in the capacity of a coach and facilitator, promotes learning and sharing experiences among team members. The Scrum Master leads by example and cultivates a culture where everyone is open to learning and improving.
Highlighting Areas of Improvement:
Aligning with the principle of software craftsmanship, a CSP-SM is expected to be receptive towards areas that need improvements. This could relate to technical prowess, soft skills, Scrum practices or anything else that would add value to the product or enhance team’s productivity. Retrospectives serve as great platforms for Scrum Masters and teams to highlight these areas and act upon them.
Continuous Improvement in Scrum Events:
Continuous improvement is embodied in various Scrum events. For instance, during Sprint Planning, the Scrum Master and the development team not only decide what to work on for the next Sprint but also discuss how to improve the way of working based on previous experiences. During Sprint Retrospective, the team reflects on the past Sprint to identify potential improvements in their processes or work practices.
Example
Let’s take an example. Consider an Agile team working on a software product that had issues with code quality in the past sprints. A CSP-SM encourages the team to follow the principle of software craftsmanship and adhere to better coding practices to improve the quality of code.
By doing so, the Scrum Master fosters a culture of continuous improvement within the team, encouraging them to regularly inspect and improve their coding skills in line with the software craftsmanship principle.
Conclusion
To sum up, the principle of ‘continuous improvement’, that is integral to software craftsmanship, plays an important role in the CSP-SM’s repertoire of responsibilities. Besides, the principle aligns completely with the foundational ethos of Scrum, further highlighting its relevance and importance in the pursuit of CSP-SM.
Practice Test
True/False: Software craftsmanship implies writing clean, maintainable code.
- True
- False
Answer: True.
Explanation: Software craftsmanship emphasizes the importance of writing code that is not just functional, but also well-crafted, meaning it is readable, maintainable, and structured.
Single select: Software Craftsmanship is primarily about:
- A. Writing code rapidly
- B. Fixing bugs only
- C. Quality over quantity
- D. Increasing software complexity
Answer: C. Quality over quantity.
Explanation: Software Craftsmanship centers on producing high-quality, professional-grade software rather than just focusing on speedy project completion or the volume of work done.
True/False: Software craftsmanship does not apply to Agile methodologies such as Scrum.
- True
- False
Answer: False.
Explanation: Software craftsmanship applies to every kind of software development methodology, including Agile and Scrum, where its principles help in delivering high-quality software incrementally and iteratively.
Multiple select: Which of the following are key elements of Software Craftsmanship?
- A. Clean code
- B. Code complexity
- C. Continuous learning
- D. Tests first approach
Answer: A. Clean code, C. Continuous learning, D. Tests first approach.
Explanation: Software Craftsmanship emphasizes writing clean, maintainable code, continuous learning, and prioritizes writing tests before actual development (Test-Driven Development).
True/False: Only the coding phase of the software development process benefits from Software Craftsmanship.
- True
- False
Answer: False.
Explanation: Software Craftsmanship principles apply to all phases of the software development process, from analysis, design and implementation, to testing, deployment, and maintenance.
Single select: Who coined the term ‘Software Craftsmanship’?
- A. Kent Beck
- B. Martin Fowler
- C. Pete McBreen
- D. Robert C. Martin
Answer: C. Pete McBreen.
Explanation: Pete McBreen is credited with coining the term ‘Software Craftsmanship’ in his book with the same name.
True/False: Learning and sharing are not considered as part of software craftsmanship.
- True
- False
Answer: False.
Explanation: Actually, continuous learning and sharing of knowledge with others are key aspects of Software Craftsmanship.
Multiple select: Software Craftsmanship advocates:
- A. Writing quick and dirty code
- B. Continuous learning
- C. Writing clean, well-structured code
- D. Ignoring user requirements
Answer: B. Continuous learning, C. Writing clean, well-structured code.
Explanation: Software Craftsmanship is about understanding that software development is a craft that requires continuous learning and emphasizes the writing of clean, well-structured code.
Single select: What is a common approach advocated by software craftsmanship for software development?
- A. Test-Driven Development
- B. Write code and then test.
- C. Ignore testing until the end.
- D. Start with performance tuning.
Answer: A. Test-Driven Development.
Explanation: Test-Driven Development (TDD) is a core approach advocated by software craftsmanship where tests guide the design and development of the solution.
True/False: Pair programming is an important part of software craftsmanship.
- True
- False
Answer: True.
Explanation: Pair programming is seen as a valuable technique in software craftsmanship as it promotes knowledge sharing and collective ownership.
Interview Questions
What is software craftsmanship?
Software craftsmanship is a set of principles, methods, and practices to produce software that is skillfully designed, reliably functional, and meets the clients’ needs. It implies a strong emphasis on professional development, continuous learning, and improvement of skills.
How does Test-driven development (TDD) apply to one’s work as an example of software craftsmanship?
Test-Driven Development (TDD) is a technique where the requirements are converted into very specific test cases. It makes sure that software code does exactly what the programmer intended it to do. This represents a crucial part of software craftsmanship, representing its stress on delivering functional, reliable software.
How does Continuous Integration apply to software craftsmanship?
Continuous Integration is a practice where developers integrate their code into a shared repository multiple times a day. This way, bugs can be detected and solved more quickly, enhancing the overall quality of the code, which is a fundamental pillar of software craftsmanship.
How does pair programming illustrate an element of Software Craftsmanship in one’s work?
Pair programming serves as an agile software development technique where two programmers work together on one workstation. It promotes knowledge sharing, code quality, and collective responsibility; fundamental values in software craftsmanship.
Can you illustrate how clean code applies to software craftsmanship?
Clean code is a principle of software craftsmanship that promotes writing code that is easy to understand, read, and enhance. The goal of clean code is to reduce the cost of code changes, thus making the software more maintainable.
What does refactoring represent in terms of software craftsmanship?
Refactoring is the process of modifying code to make it more efficient or maintainable, but without changing its behavior. This practice represents the commitment to quality and continual improvement in the software craftsmanship philosophy.
How does coding standards relate to software craftsmanship?
Coding standards provide guidelines for writing code, including things like indentation, comments, naming conventions, programming practices, and how to structure the code. Following coding standards is part of software craftsmanship as it leads to more readable and maintainable code.
How does Agile development relate to software craftsmanship?
Agile development stresses individuals and interactions, customer collaboration, and responsiveness to change. These principles align with craftsmanship’s commitment to quality, iterative improvement, and responsiveness to client needs.
How do Software Craftsmanship and Scrum relate?
Both Software Craftsmanship and Scrum value delivering high-quality, functional software, continuous improvement and adaptive planning. A scrum team that practices software craftsmanship will likely be more effective and deliver superior results.
How does the iterative and incremental development apply to software craftsmanship?
Iterative and incremental development practices involve the process of gradually adding to and refining the software project. These practices fortify the software craftsmanship principle of continually improving and refining the product quality.
What is the software craftsmanship manifesto and how does it apply to one’s work?
The Software Craftsmanship manifesto is a statement of the values that guide good software development. By following its principles (clean code, continually learning, etc.), a software developer can enhance their work quality, robustness, and overall professionalism.
How does a code review embody an element of Software Craftsmanship?
Code review involves evaluating each other’s code for potential errors and improvements, promoting knowledge sharing, and ensuring code quality, values at the heart of software craftsmanship.
How does mastery and professionalism relate to software craftsmanship?
The philosophy of software craftsmanship emphasizes continual learning and the pursuit of mastery in software development. It also underscores the importance of professional behaviors, such as meeting commitments and maintaining high standards.
How does the pragmatic programming concept align with software craftsmanship?
Pragmatic programming, which promotes adaptability, reuse, and pragmatism over following a rigid plan, aligns with the values of software craftsmanship, encouraging fine-tuning skills and adhering to high-quality coding standards.
Can you describe how cross-functional teams apply to software craftsmanship in the context of Scrum?
Cross-functional teams, where different skill sets collaborate closely, resonate strongly with software craftsmanship. By using their diverse skills cooperatively, these teams are able to achieve a high-quality output, adding to the value of the final product.