Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Craftsmanship

Similar presentations


Presentation on theme: "Software Craftsmanship"— Presentation transcript:

1 Software Craftsmanship
Jerry Fitzpatrick

2 Some Definitions Extracted from www.dictionary.com Engineering – Art –
The art or science of making practical application of the knowledge of pure sciences (e.g. physics or chemistry) Art – Any field using the skills or techniques of art (the class of objects subject to aesthetic criteria) Craft – An art, trade, or occupation requiring special skill Copyright 2009 Software Renovation Corporation. All rights reserved.

3 Software Engineering From Pete McBreen –
“A key failing of the software engineering metaphor is that it fails to place people at the center of the software development process.” “A very big gap separates requirements specifications and design specifications, and when we forget this distinction, we may confuse ourselves into thinking that software development is easy. Skilled developers are the only way to [ bridge the gap between requirements and design ].” Copyright 2009 Software Renovation Corporation. All rights reserved.

4 Traits of a Professional
A group exercise: what are the traits of a professional – in any field, not just software? Copyright 2009 Software Renovation Corporation. All rights reserved.

5 Traits of a Professional (continued)
Competent – Has suitable skill, knowledge and experience for some purpose Is ethical – Follows established rules or standards of conduct Is introspective – Is aware of things she knows and things she doesn’t know Has pride in workmanship – Prefers a job done well over a sloppy job Does not pretend to have knowledge or skills she doesn’t have Aspires to improve – Seeks more knowledge, more skill and better techniques Copyright 2009 Software Renovation Corporation. All rights reserved.

6 Ignorance Ignorance means a lack of knowledge
Completely different than “stupid” All of us are ignorant about many subjects Five orders of ignorance were defined in an ACM article in October 2000 – Somewhat tongue-in-cheek Psychological studies have shown somewhat surprising results about ignorance Story about bank robber and invisible ink. Copyright 2009 Software Renovation Corporation. All rights reserved.

7 The Dunning-Kruger Effect
The Dunning-Kruger effect is a mental bias in which unskilled individuals assess their ability to be much higher than it actually is. Conversely, highly skilled individuals tend to underestimate their competence, assuming that tasks which are easy for them are also easy for others. An irony from David Dunning – “If you’re incompetent, you can’t know you’re incompetent… the skills you need to produce a right answer are exactly the skills you need to recognize what a right answer is.” This quote is perhaps exaggerated. However, it reminds me of the old saying about “Knowing just enough to be dangerous.” Copyright 2009 Software Renovation Corporation. All rights reserved.

8 What is Software Craftsmanship?
Software Craftsmanship is simply an ideology that promotes professionalism in software development Not only doing things right, but doing the right thing The craftsmanship metaphor is based on age-old traditions in other fields Novices learn from junior craftsmen Junior craftsmen learn from senior craftsmen Senior craftsmen learn from master craftsmen There are many paths to experience But only a few paths lead to real skill or enlightenment Most people need a guide to find one of the paths to enlightenment An ideology is a manner of thinking or system of thinking. Experience itself does not lead to skill or enlightenment. Many paths lead nowhere. The trick is to find a guide who can put you on one of the paths to enlightenment. Copyright 2009 Software Renovation Corporation. All rights reserved.

9 The Craftsmanship Manifesto
Not only working software, But also well-crafted software Not only responding to change, But also steadily adding value Not only individuals and interactions, But also a community of professionals Not only customer collaboration, But also productive partnerships Copyright 2009 Software Renovation Corporation. All rights reserved.

10 A Story From Sandro Mancuso (1)
Asked to work for a very respected manager named Namur. On his first day, Sandro was assigned a small task and given a week to finish it. Sandro Mancuso is a developer, and author of the popular book “The Software Craftsman: Professionalism, Pragmatism, Pride”. Copyright 2009 Software Renovation Corporation. All rights reserved.

11 A Story From Sandro Mancuso (2)
To impress Namur, Sandro worked until midnight, slept a few hours, arrived early the next morning and rushed into Namur’s office saying “It’s done. I finished it. And it is working.” Copyright 2009 Software Renovation Corporation. All rights reserved.

12 A Story From Sandro Mancuso (3)
Namur stopped typing, turned to Sandro, then said “Making things work is the minimum I expect from someone who is paid for it.” From “The Software Craftsman”, preface, page xix. Copyright 2009 Software Renovation Corporation. All rights reserved.

13 A Story From Sandro Mancuso (4)
Namur spent an hour reviewing the 200 lines of code with Sandro, asking many questions and describing how the code could be improved. At the end, Namur said “How it is done is as important as getting it done. “Do you feel you could write this code in a better way now?” From “The Software Craftsman”, preface, page xix. Copyright 2009 Software Renovation Corporation. All rights reserved.

14 A Story From Sandro Mancuso (5)
After Sandro nodded yes, Namur deleted the entire code file and said “Excellent. Since you still have three days left, do it again.” From “The Software Craftsman”, preface, page xix. How do you feel about this? This may seem harsh, but Namur did two important things: 1) He emphasized his expectations of developers, and 2) He taught Sandro that the ability to write code is less important than writing GOOD code. Copyright 2009 Software Renovation Corporation. All rights reserved.

15 Points to Ponder Arrogance is not an accurate measure of competence
Arrogance is more likely to indicate ignorance Experience is not an accurate measure of competence A person can have years of experience, yet have few skills Trying is necessary for competence, but not sufficient Trying, by itself, does not produce competence Performance is the only true measure of competence The person can apply their knowledge to create something that not only works, but also is well-crafted Copyright 2009 Software Renovation Corporation. All rights reserved.

16 Final Notes There is a famous scene from Star Wars: The Empire Strikes Back, where Yoda asks Luke Skywalker to use the Force to lift his spacecraft from a swamp – Luke: All right, I’ll give it a try. Yoda: No. Try not. Do, or do not. There is no try. Boxers don’t succeed by working out and being clever. They succeed by winning boxing matches. Copyright 2009 Software Renovation Corporation. All rights reserved.

17 References Software Craftsmanship: The New Imperative, Pete McBreen, Addison Wesley, 2002 The Clean Coder: A Code of Conduct for Professional Programmers, Robert C. Martin, Prentice Hall, 2011 The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso, Prentice Hall, 2015 Copyright 2009 Software Renovation Corporation. All rights reserved.

18 Questions & Comments Copyright 2009 Software Renovation Corporation. All rights reserved.


Download ppt "Software Craftsmanship"

Similar presentations


Ads by Google