Software craftsmanship

from Wikipedia, the free encyclopedia

Software craftsmanship ( English for "software craftsmanship" or "software craftsmanship") is a movement in software development that deals with the working methods and perception of the software developer profession . The aim of the movement is to make software development perceptible as an independent profession , as a craft (and not as an engineering discipline ) and to evaluate software projects according to developer responsibilities and not just from a purely financial point of view.

Classic view of software development

In the past, programmers were seen primarily as practitioners of a statistically and mathematically based engineering approach that was associated with attributes such as predictability, precision, low risk and low professionalism . The software developer is often seen as a hobby programmer or development engineer who has to be directed by project managers and product managers. The figure of the rather unworldly nerd became a symbol . Many software developers also like to withdraw to this position.

Parallels to traditional craft professions

The majority of software developers create custom software from which the client expects added value. The job of software developer is comparable in the demands on the result to the activity of a master craftsman, who also manufactures individual products with professional competence, which are supposed to fulfill a certain purpose for the customer.

An example is the electrician who creates the power supply for an apartment. An electrician, for example, has to take into account various requirements: The cables must be laid in a traceable manner and sufficiently dimensioned for future energy requirements. The fuse protection must be carried out properly, the electric stove and water heater should be able to be operated at the same time and, in addition, sockets should be available in sufficient numbers and in the right places. The electrician knows the latest technologies and gives the client competent advice. Under certain circumstances, however, he also has to make it unmistakably clear to the customer that cheaper suggestions (e.g. laying cables diagonally to save copper or installing less protection) are not a viable solution.

Just like the electrician, the professional software developer should also act responsibly and consider aspects such as business purpose, economic efficiency , quality standards , feasibility and legal requirements and, above all, represent them to their clients (customers, project managers, supervisors, etc.). Put simply, the professional software developer differs from an amateur programmer primarily through the code of values ​​according to which he acts and decides.

Professional ethos of software developers

This approach can be seen as the professional ethos of software developers. Software development is thus elevated to the status of a profession. In addition, there are requirements for standards , approval criteria, certification , permanent further development and generally applicable knowledge bases as mechanisms for the maturation of the discipline.

The Agile Manifesto as the basis

The Agile Manifesto, with its emphasis on “Individuals and interactions via processes and tools”, questions some of the assumptions presented at the beginning about the profession of software developer. The software craftsmanship manifesto expands the assumptions of the agile manifesto and, in the formulation of the basic ideas of software craftsmanship, refers metaphorically to the teaching model of medieval craftsmanship in Europe.

Origin of the idea

The movement is based on ideas from various authors. The books The Pragmatic Programmer by Andy Hunt and Dave Thomas and Software Craftsmanship by Pete McBreen establish the connection between software development and medieval craftsmanship. The philosopher Richard Sennett described software development as a modern craft in his book The Craftsman . Freeman Dyson complements the concept of software art with the mastery of using software as a driver for economic success:

“Despite the rise of Microsoft and other large software companies, software development remains largely a craft industry. Due to the enormous amount of specialized applications, there is still room for individuals to write software based on their unique knowledge. There will always be niche markets in which small software companies survive. The art of writing software will not become obsolete. And the art of using software creatively thrives even more than the art of writing software. "

After initial discussions, conferences were held in London and Chicago and a manifesto was drawn up. This is available online to collect signatories.

history

In 1992 Jack W. Reeves published his article What Is Software Design? (What is software design?) In which he postulates that software development is more of a craft than an engineering discipline.

The Pragmatic Programmer was published in 1999 . The subtitle of the English original edition, From Journeyman to Master , assumes that programmers go through several stages during their professional development from apprentice to master , a process that is also found in the handicrafts of medieval Europe.

In 2001 Pete McBreen published his book Software Craftsmanship . McBreen also makes it clear that software developers shouldn't see themselves as engineers, but that a different metaphor would be more appropriate.

In August 2008, Robert C. Martin , also known as "Uncle Bob", proposed a fifth value for the Agile Manifesto : Craftsmanship over Crap (literally: "Craftsmanship instead of crap"). He later changed his proposal to Craftsmanship over Execution ("craftsmanship instead of execution").

In December 2008, the first dedicated software workers met in Libertyville, Illinois with the intention of formulating the principles of software craftsmanship.

The founding manifesto was passed in March 2009. It is publicly available and can be signed by anyone who agrees with the ideas.

In April 2009, two companies affiliated with the movement, 8th Light and Obtiva, experimented with a 'softworker exchange', comparable to the traveling years of journeyman craftsmen. The Chicago Tribune was even worth an article on June 15, 2009.

In January 2010 there was a second software exchange between the companies Obtiva and Relevance.

The clean code movement also relies on the software craftsmanship.

Software Chamber

The Softwerkskammer as the German-speaking body of the movement was founded in 2011. The organizations primarily take care of the cross-company and interdisciplinary meeting of software experts and the promotion of exchange.

There are currently 21 regional organizations in Germany (4 of them in North Rhine-Westphalia alone), 2 in Austria and one in Switzerland.

Conferences

  • SoCraTes : Annual meeting of the local software workshops from Germany, Austria and Switzerland.

criticism

The software craftsmanship approach, especially the positioning close to the craft, is being questioned from various sides.

The programmer and consultant Dan North postulates in his article Programming is not a craft that software development or programming is not an activity related to the craft. In his opinion, the access restrictions are too low (anyone can become a programmer), the industry is too young and the products created do not bear the beauty of handicraft products. North also misses formulations such as “achieve results” and “delight customers” in the Software Craftsmanship Manifesto.

Permanent changes are cheap because no material is wasted, the software code only has to be rewritten. The question remains whether craftsmen can use software development methods, especially an agile approach, for their trades as easily as is the case with software.

Books and articles

  • Dave Hoover, Adewale Oshineye: Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman , Foreword by Ward Cunningham , O'Reilly ,, ISBN 0-596-51838-2 .
  • Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship . Addison-Wesley, 2008, ISBN 0-13-235088-2 .
  • Pete McBreen: Software Craftsmanship: The New Imperative . Addison-Wesley, 2001, ISBN 0-201-73386-2 .
  • Richard Sennett: The Craftsman . Yale University Press, 2008, ISBN 0-300-11909-7 .
  • Sandro Mancuso: The Software Craftsman: Professionalism, Pragmatism, Pride . Prentice Hall, 2014, ISBN 0-13-405250-1 .
  • Bill Pyritz: Craftsmanship versus engineering: Computer programming - An art or a science? . In: Bell Labs Technical Journal . 2003.

Web links

Individual evidence

  1. ^ Software Craftsmanship Conference . Archived from the original on February 6, 2009. Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. Retrieved March 24, 2014. @1@ 2Template: Webachiv / IABot / parlezuml.com
  2. ^ Software Craftsmanship North America . Retrieved September 3, 2019.
  3. Software Handwerkskunst Manifest . Retrieved September 3, 2019.
  4. http://www.developerdotstar.com/mag/articles/reeves_design.html
  5. http://www.infoq.com/news/2008/08/manifesto-fifth-craftsmanship
  6. ^ Wailin Wong: Employee swap gives two firms new perspectives . In: Ventura County Star , July 13, 2009. 
  7. ^ Wailin Wong: Open to the competition . In: Chicago Tribune , June 15, 2009. 
  8. ^ Dan North: Programming is not a craft on dannorth.net, accessed September 3, 2019