Advertisment

Great art and the craft of software development

author-image
Abhigna
New Update

According to Pete McBreen's book ‘Software Craftsmanship - The New Imperative', the most successful project using a complete and robust software engineering approach was the space shuttle software.

Advertisment

Space shuttle software was 420000 lines long with 1 error. It lasted 11 versions with a total of 17 errors. Commercial programs of equivalent complexity would have 5000 errors.

This is a proof that using a rigid and structured approach is very effective at developing safety critical systems. However the costs are usually exorbitant and mostly software development with this approach does not work very well. It is in this context that the term Craftsmanship was introduced and compared or contrasted with the term Software Engineering.

One of the classical problems in Software Engineering is getting engineers to consistently use effective methods to code. For smaller teams, Craftsmanship is a more appropriate metaphor than Engineering for getting developers to work more effectively. Craftsmanship has been a model that has been used throughout history to effectively develop and disseminate arts, crafts and technology. By taking a sideways step towards craftsmanship the software community can advance the state of the art so that we can truly talk about Software Engineering.

Advertisment

What is Software Craftsmanship?

Software Craftsmanship is a metaphor that can radically transform the way we create and deliver software systems, with implications for the way we develop software, manage teams and deliver value to the users.

It is an approach to software development that restores a developer to a central role in large-scale projects, and shows developers how to master the skills they need to succeed in that role. It is a response by software developers to the perceived ills of the mainstream software industry, including the prioritization of financial concerns over developer accountability.

Advertisment

It also transcends "software engineering," demonstrating that quality software can't simply be "manufactured": it must be built by craftspeople with pride in their work, and a personal commitment to excellence. Just as the modern carpenter benefits from better tools, materials, and understanding, the modern programmer can benefit from better computers, reusable components, and more robust languages -- but only if he or she is prepared to treat the software profession as a true "craft."

History of Software Craftsmanship

Software Craftmanship was first addressed way back in 1992 and is not a new strategy. It picked up momentum after Pete McBreen's book ‘Software Craftsmanship - The New Imperative' was published in 2001. In his book, Pete presents an effective method to nurture mastery in the programmer, develop creative collaboration in small developer teams, and enhance communications with the customer. The end result-skilled developers who can create, extend, and enhance robust applications. The book also won the Productivity Award at the 12th annual Jolt Product Excellence and Productivity Awards.

Advertisment

Characterization of a Software Craftsman

A craftsman first of all believes that software is a craft. This is important because not everyone believes this. A craftsman practices his craft, always striving to become more skillful, to produce better software. A craftsman also takes pride in his work and strives to do the best job he can. He believes that writing good software requires skill and careful attention. That software is not something that can be manufactured nor can it be delivered faster by merely adding more bodies.

Best Practices to Evolve Into a Software Craftsman

Advertisment

"Baby steps" - is the key principle to be followed. Continuous Integration, Refactoring, Quality Assurance and other best practices of software engineering like Test Driven Development (TDD) and Agile software development etc. will help a developer in starting the journey into evolving as a Software Craftsman. The practice to; iterate always to give multiple feedback on the code implemented, automate as much as possible, take responsibility for and apply processes learnt and most importantly slow down to increase pace are some of the other attributes of a software craftsman.

Key Role of Agile Software Development in Achieving Software Craftsmanship

Agile Software Development is a key practice that offers many opportunities to software engineers to walk in the path of evolving into a software craftsman.

Advertisment

Successful Agile Software Development can be practiced only if the developer teams are self-managing and self-organizing. Self-management and self-organization will happen only if the teams are empowered. When teams are empowered, they have more ownership and pride in the work they do. This results in better quality output. These methods are practiced by many agile teams (especially Scrum teams). The Scrum Framework, introduced in 1995 by Ken Schwaber and Jeff Sutherland, also mentions that these practices go hand in hand with Scrum teams. Scrum's self-organizing development teams embody the empowered employees to drive learning up in the organization rather than have it dictated to them.

Finally I would like to conclude by saying that Software Craftsmanship is not a destination or a Goal. It is a journey every software professional should try to be part of and add value to his profession.

(The author is Principal Program Manager at EMC India Center of Excellence)

developer