SlideShare uma empresa Scribd logo
1 de 38
Software Craftsmanship http://www.londonswcraft.com @londonswcraft
Who the hell are we? Sandro Mancuso @sandromancuso David Green @activelylazy
Why are we doing this?  
Who the hell are you?  
How long have you been writing software?  
How did you learn your first language?  
Software Engineering     Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.     IEEE Computer Society's Software Engineering Body of Knowledge    
Software Engineering ,[object Object],[object Object],[object Object]
Software Engineering: The good ,[object Object],[object Object],[object Object],Space shuttle project - NASA (1968) "They Write The Right Stuff" - Fast Company article (1996)
Software Engineering: The bad ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Space shuttle project - NASA (1968) "They Write The Right Stuff" - Fast Company article (1996)
Software Engineering: The process   "People ask, doesn't this process stifle creativity? You have to do exactly what the manual says, and you've got someone looking over your shoulder," says Ted Keller (senior technical manager). " The answer is, yes, the process does stifle creativity ." Space shuttle project - NASA (1968) "They Write The Right Stuff" - Fast Company article (1996)
Software Engineering   Is Software Engineering right for your project?
Software Engineering for the masses The Good Enough Era...    ... and the simplest thing that could possibly work. "I'm going to deliver a system to you in six months that will have 5,000 bugs in it - and you're going to be very happy!"   Edward Yourdon Rise and Resurrection of the American Programmer (1996)
Agile Software Development We are uncovering better ways of developing software by doing it and  helping others do it. Through this work we have come to value: Individuals and interactions  over processes and tools Working software  over comprehensive documentation Customer collaboration  over contract negotiation Responding to change  over following a plan That is, while there is value in the items on the right, we value the items on the left more.
Agile Success ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cargo Cult Agile “ We do standups – so we're agile” “ We have retrospectives – so we're agile” “ We write user stories – so we're agile” “ I'm a Certified Scrum Master – of course we're agile”
Good enough is not always good enough     Many Agile projects are now, steadily and iteratively, producing  mediocre  software.
  "The original torch of the Agile message has changed hands, and is now being carried by the Software Craftsmanship movement."   Robert C. Martin (Uncle Bob)
What is Software Craftsmanship? “ Is an approach to software development that emphasizes the coding skills of the software developers themselves. 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” Wikipedia
What is Software Craftsmanship? A different definition “ It is a long journey to mastery. It is a lifestyle where developers see software as a craft and not as engineering. It's a commitment to perpetual learning and improvement of their craft. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism and pride back into software development”
The Software Craftsmanship Movement ,[object Object],[object Object],[object Object],[object Object]
Manifesto for Software Craftsmanship raising the bar As aspiring Software Craftsmen we are raising the bar of professional software development by practising it and helping others learn the craft. Through this work we have come to value:                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  
Beyond the Manifesto ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
What does it take to craft software? ,[object Object],[object Object],[object Object],[object Object]
How do we learn to craft software? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
University ,[object Object],[object Object],[object Object],[object Object],[object Object]
First job ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
On the job training  
Mentoring  
Software craftsmanship is 1. Continuous learning
How do we improve?  
Deliberate practice ,[object Object],[object Object],[object Object]
Software craftsmanship is 1. Continuous learning 2. Deliberate practice
Software craftsmanship is 1. Continuous learning 2. Deliberate practice 3. Pragmatism
Software craftsmanship  isn't ,[object Object],[object Object],[object Object],[object Object]
The Craftsmanship Journey ,[object Object],[object Object],[object Object],[object Object]
The Craftsmanship Discussion 1. How the team structure should be? 2. How can we define the “journey”? 3. Would promotion by public recognition work?
Questions? @activelylazy @sandromancuso http://www.londonswcraft.com

Mais conteúdo relacionado

Mais procurados

Agile Technology Delivery Process Mr
Agile Technology Delivery Process   MrAgile Technology Delivery Process   Mr
Agile Technology Delivery Process MrMurray Robinson
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints EfficientlyLemi Orhan Ergin
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologiesbijunairk
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous LearningMike Clement
 
The Phoenix Project DevOps Simulation - Paul Wilkinson
The Phoenix Project DevOps Simulation - Paul WilkinsonThe Phoenix Project DevOps Simulation - Paul Wilkinson
The Phoenix Project DevOps Simulation - Paul WilkinsonPink Elephant
 
Advice on how to get started — and ahead — in a career in DevOps
Advice on how to get started — and ahead — in a career in DevOpsAdvice on how to get started — and ahead — in a career in DevOps
Advice on how to get started — and ahead — in a career in DevOpsPuppet
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Codemotion
 
"Hack Your Project" by Andrea Fryrear and David Lesue
"Hack Your Project" by Andrea Fryrear and David Lesue"Hack Your Project" by Andrea Fryrear and David Lesue
"Hack Your Project" by Andrea Fryrear and David LesueMarcus Varner, MBA
 
Agile and-startups
Agile and-startupsAgile and-startups
Agile and-startupsanuvip
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Burr Sutter
 
Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Lemi Orhan Ergin
 
Agile basic introduction
Agile   basic introductionAgile   basic introduction
Agile basic introductionPreparationInfo
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneathHrishikesh Karekar
 
Automation is hard and we are doing it wrong
Automation is hard   and we are doing it wrongAutomation is hard   and we are doing it wrong
Automation is hard and we are doing it wrongJohan Abildskov
 
Industry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanIndustry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanBusiness901
 
Software engineering for CEOs
Software engineering for CEOsSoftware engineering for CEOs
Software engineering for CEOsGabriel Hamilton
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchMike Clement
 
Improving software quality for the future of connected vehicles
Improving software quality for the future of connected vehiclesImproving software quality for the future of connected vehicles
Improving software quality for the future of connected vehiclesDevon Bleibtrey
 

Mais procurados (20)

Agile Technology Delivery Process Mr
Agile Technology Delivery Process   MrAgile Technology Delivery Process   Mr
Agile Technology Delivery Process Mr
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
WinSmart Technologies
WinSmart TechnologiesWinSmart Technologies
WinSmart Technologies
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Why agile?
Why agile?Why agile?
Why agile?
 
The Phoenix Project DevOps Simulation - Paul Wilkinson
The Phoenix Project DevOps Simulation - Paul WilkinsonThe Phoenix Project DevOps Simulation - Paul Wilkinson
The Phoenix Project DevOps Simulation - Paul Wilkinson
 
Advice on how to get started — and ahead — in a career in DevOps
Advice on how to get started — and ahead — in a career in DevOpsAdvice on how to get started — and ahead — in a career in DevOps
Advice on how to get started — and ahead — in a career in DevOps
 
Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...Gluing it all together: How teams can build enterprise JavaScript application...
Gluing it all together: How teams can build enterprise JavaScript application...
 
"Hack Your Project" by Andrea Fryrear and David Lesue
"Hack Your Project" by Andrea Fryrear and David Lesue"Hack Your Project" by Andrea Fryrear and David Lesue
"Hack Your Project" by Andrea Fryrear and David Lesue
 
Agile and-startups
Agile and-startupsAgile and-startups
Agile and-startups
 
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
Teaching Elephants to Dance (and Fly!) A Developer's Journey to Digital Trans...
 
Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017Fighting with Waste Driven Development - XP Days Ukraine 2017
Fighting with Waste Driven Development - XP Days Ukraine 2017
 
Agile basic introduction
Agile   basic introductionAgile   basic introduction
Agile basic introduction
 
10x programmers - What lies beneath
10x programmers - What lies beneath10x programmers - What lies beneath
10x programmers - What lies beneath
 
Automation is hard and we are doing it wrong
Automation is hard   and we are doing it wrongAutomation is hard   and we are doing it wrong
Automation is hard and we are doing it wrong
 
Industry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanbanIndustry stories on agile, scrum and kanban
Industry stories on agile, scrum and kanban
 
Software engineering for CEOs
Software engineering for CEOsSoftware engineering for CEOs
Software engineering for CEOs
 
Taming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touchTaming scary production code that nobody wants to touch
Taming scary production code that nobody wants to touch
 
Improving software quality for the future of connected vehicles
Improving software quality for the future of connected vehiclesImproving software quality for the future of connected vehicles
Improving software quality for the future of connected vehicles
 

Destaque

Fostering Software Craftsmanship
Fostering Software CraftsmanshipFostering Software Craftsmanship
Fostering Software CraftsmanshipCory Foy
 
Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Carina C. Zona
 
Software Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughSoftware Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughKen Auer
 
Software Craftsmanship - 2
Software Craftsmanship - 2Software Craftsmanship - 2
Software Craftsmanship - 2Uri Lavi
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010Skills Matter
 
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...Howard Deiner
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship EssentialsEduards Sizovs
 
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Lemi Orhan Ergin
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringAndy Maleh
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGJose Casal-Gimenez FBCS CITP
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesMike Clement
 

Destaque (12)

Fostering Software Craftsmanship
Fostering Software CraftsmanshipFostering Software Craftsmanship
Fostering Software Craftsmanship
 
Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]Schemas for the Real World [Software Craftsmanship North America 2013]
Schemas for the Real World [Software Craftsmanship North America 2013]
 
Software Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not EnoughSoftware Craftsmanship: Agile Is Not Enough
Software Craftsmanship: Agile Is Not Enough
 
Software Craftsmanship - 2
Software Craftsmanship - 2Software Craftsmanship - 2
Software Craftsmanship - 2
 
Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010London F-Sharp User Group : Don Syme on F# - 09/09/2010
London F-Sharp User Group : Don Syme on F# - 09/09/2010
 
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...
The Manifesto for Software Craftsmanship – Because Post-Its and Legos Don’t C...
 
Software Craftsmanship Essentials
Software Craftsmanship EssentialsSoftware Craftsmanship Essentials
Software Craftsmanship Essentials
 
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
 
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software EngineeringSoftware Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
 
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SGSoftware Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
Software Craftsmanship - Sandro Mancuso - BCS Agile Methods SG
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 

Semelhante a Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010

Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Sandro Mancuso
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsmangoeran
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software EngineeringHeidi Maestas
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software CraftsmanshipSandro Mancuso
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingUtkarsh Khare
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovSvetlin Nakov
 
Lecture 01
Lecture 01Lecture 01
Lecture 01Rana Ali
 
A Software Problem (and a maybe-solution)
A Software Problem (and a maybe-solution)A Software Problem (and a maybe-solution)
A Software Problem (and a maybe-solution)YangJerng Hwa
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010Stephanie Magleby
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedJamil Goheer
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressmtoppa
 
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, Bucharest
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, BucharestSandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, Bucharest
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, BucharestMozaic Works
 
Software engg. pressman_ch-1
Software engg. pressman_ch-1Software engg. pressman_ch-1
Software engg. pressman_ch-1Dhairya Joshi
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTrivadis
 
CF Camp 2013 Software Craftsmanship for CFML Developers
CF Camp 2013 Software Craftsmanship for CFML DevelopersCF Camp 2013 Software Craftsmanship for CFML Developers
CF Camp 2013 Software Craftsmanship for CFML DevelopersKev McCabe
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers PerspectiveRichard Banks
 

Semelhante a Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010 (20)

Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011Software Craftsmanship - JAX London 2011
Software Craftsmanship - JAX London 2011
 
The Software Craftsman
The Software CraftsmanThe Software Craftsman
The Software Craftsman
 
Personal Note On Software Engineering
Personal Note On Software EngineeringPersonal Note On Software Engineering
Personal Note On Software Engineering
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developer
 
Software Craftsmanship
Software CraftsmanshipSoftware Craftsmanship
Software Craftsmanship
 
Unit1
Unit1Unit1
Unit1
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Lecture 01
Lecture 01Lecture 01
Lecture 01
 
A Software Problem (and a maybe-solution)
A Software Problem (and a maybe-solution)A Software Problem (and a maybe-solution)
A Software Problem (and a maybe-solution)
 
Make Tools
Make ToolsMake Tools
Make Tools
 
564 Class Notes July 27, 2010
564 Class Notes July 27, 2010564 Class Notes July 27, 2010
564 Class Notes July 27, 2010
 
Developing an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid JavedDeveloping an Engineering Mindset by Junaid Javed
Developing an Engineering Mindset by Junaid Javed
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
Chapter # 1
Chapter # 1 Chapter # 1
Chapter # 1
 
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, Bucharest
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, BucharestSandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, Bucharest
Sandro Mancuso - Software Craftmanship @ I T.A.K.E. Unconference 2013, Bucharest
 
Software engg. pressman_ch-1
Software engg. pressman_ch-1Software engg. pressman_ch-1
Software engg. pressman_ch-1
 
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - TrivadisTechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
TechEvent 2019: Artificial Intelligence in Dev & Ops; Martin Luckow - Trivadis
 
CF Camp 2013 Software Craftsmanship for CFML Developers
CF Camp 2013 Software Craftsmanship for CFML DevelopersCF Camp 2013 Software Craftsmanship for CFML Developers
CF Camp 2013 Software Craftsmanship for CFML Developers
 
Agile Development From A Developers Perspective
Agile Development From A Developers PerspectiveAgile Development From A Developers Perspective
Agile Development From A Developers Perspective
 

Mais de Skills Matter

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard LawrenceSkills Matter
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmSkills Matter
 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimSkills Matter
 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Skills Matter
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsSkills Matter
 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Skills Matter
 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Skills Matter
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldSkills Matter
 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Skills Matter
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Skills Matter
 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingSkills Matter
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveSkills Matter
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tSkills Matter
 

Mais de Skills Matter (20)

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
 
Serendipity-neo4j
Serendipity-neo4jSerendipity-neo4j
Serendipity-neo4j
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Plug 20110217
Plug   20110217Plug   20110217
Plug 20110217
 
Lug presentation
Lug presentationLug presentation
Lug presentation
 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
 
Plug saiku
Plug   saikuPlug   saiku
Plug saiku
 

Sandro Mancuso and David Green: London Software Craftsmanship Community: What is Software Craftsmanship - 06/10/2010

  • 2. Who the hell are we? Sandro Mancuso @sandromancuso David Green @activelylazy
  • 3. Why are we doing this?  
  • 4. Who the hell are you?  
  • 5. How long have you been writing software?  
  • 6. How did you learn your first language?  
  • 7. Software Engineering     Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.     IEEE Computer Society's Software Engineering Body of Knowledge    
  • 8.
  • 9.
  • 10.
  • 11. Software Engineering: The process   "People ask, doesn't this process stifle creativity? You have to do exactly what the manual says, and you've got someone looking over your shoulder," says Ted Keller (senior technical manager). " The answer is, yes, the process does stifle creativity ." Space shuttle project - NASA (1968) "They Write The Right Stuff" - Fast Company article (1996)
  • 12. Software Engineering   Is Software Engineering right for your project?
  • 13. Software Engineering for the masses The Good Enough Era...   ... and the simplest thing that could possibly work. "I'm going to deliver a system to you in six months that will have 5,000 bugs in it - and you're going to be very happy!"   Edward Yourdon Rise and Resurrection of the American Programmer (1996)
  • 14. Agile Software Development We are uncovering better ways of developing software by doing it and  helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.
  • 15.
  • 16. Cargo Cult Agile “ We do standups – so we're agile” “ We have retrospectives – so we're agile” “ We write user stories – so we're agile” “ I'm a Certified Scrum Master – of course we're agile”
  • 17. Good enough is not always good enough     Many Agile projects are now, steadily and iteratively, producing mediocre software.
  • 18.   "The original torch of the Agile message has changed hands, and is now being carried by the Software Craftsmanship movement."   Robert C. Martin (Uncle Bob)
  • 19. What is Software Craftsmanship? “ Is an approach to software development that emphasizes the coding skills of the software developers themselves. 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” Wikipedia
  • 20. What is Software Craftsmanship? A different definition “ It is a long journey to mastery. It is a lifestyle where developers see software as a craft and not as engineering. It's a commitment to perpetual learning and improvement of their craft. Software Craftsmanship is all about putting responsibility, professionalism, pragmatism and pride back into software development”
  • 21.
  • 22. Manifesto for Software Craftsmanship raising the bar As aspiring Software Craftsmen we are raising the bar of professional software development by practising it and helping others learn the craft. Through this work we have come to value:                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  
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. On the job training  
  • 30. Software craftsmanship is 1. Continuous learning
  • 31. How do we improve?  
  • 32.
  • 33. Software craftsmanship is 1. Continuous learning 2. Deliberate practice
  • 34. Software craftsmanship is 1. Continuous learning 2. Deliberate practice 3. Pragmatism
  • 35.
  • 36.
  • 37. The Craftsmanship Discussion 1. How the team structure should be? 2. How can we define the “journey”? 3. Would promotion by public recognition work?
  • 38. Questions? @activelylazy @sandromancuso http://www.londonswcraft.com

Notas do Editor

  1. Welcome to the first London Software Craftsmanship Community meeting.
  2. David Green - Java developer; gambling - Writing software 20 yrs; commercially for 10
  3. Passionate about software Believe software can be better; we can be better Keep seeing same mistakes: - complexity, technical debt - typists, not craftsmen - software factory Didn't write the book – I'm no Bob Martin just passionate professionals Bring community together so we can all learn - share experiences/ideas Its about you – ask questions Phones silent
  4. How many ppl are programmers? Everyone stand - Java - C# - Python - Ruby - PHP - Anything else? Anyone not a developer? - PM - Agile Coach - Anyone else? Summarize – good mix, mostly...
  5. Programmers stand again - Over the age of 30 sit down (need rest) - Anyone still in university? - Rest sit
  6. Programmers stand Sit down if: - taught yourself first language - learnt first language at university - learnt first language at work
  7. Let’s talk about software engineering
  8. Software crisis – extremely large projects Hardware still being developed Hardware worth millions National security and people’s lives at risk Bugs could be catastrophic
  9. -Software Engineering can be very effective for critical systems
  10. Money is not a problem Thin slice of NASA’s pie Most expensive dollar-per-line project One of the most expensive software organisations
  11. -Development process seen as production line -Coders not developers -Creativity was forbbiden
  12. - Cheaper hardware - business at all sizes needed software; Could not afford to pay $35m per year Not expensive hardware nor life-threatening situations. - Process had to be adapted impatient and lower budget businesses - New process aimed faster and cheaper development - Most adopted were the iterative and incremental (RUP) - Evolution to the Agile software development methodologies Yourdon also wrote Decline and Fall of the American Programmer (1992).
  13. - Biggest success of various methodologies - Defined the last decade - Moving away from engineering – to empirical approach. Inspect & adapt. Unknowns - Process people; process police Individual responsibility; encouraging right interactions - Working software – not doc; Project success: amount of doc - Seen both sides of contract negotiation Not productive – who's paying - Change is the only constant; “ how are we tracking against the baseline plan?”
  14. This year's IT Project Success Rates Survey 200 individuals; US, Europe & Asia 12% of agile projects failed; 18% of traditional projects failed Mike Cohn tells story of salesforce.com Big scrum adoption – 200 engineers virtually overnight Compelling story of how scrum, agile can improve delivery
  15. Richard Feynman: 1940s remote islands in South Pacific Natives never seen modern civilisation. Allied troops build temporary base of operations. Setup airstrip, control tower, don headphones Call down great metal birds from the sky Valuable cargo shared with the natives When troops leave, cargo stops coming Natives view cargo with religious significance They build airstrip out of bamboo, coconuts for headphones- but metal birds never come back Agile adoption in danger of doing same Visible behaviours without understanding the ideas
  16. Agile became synonymous of Scrum (Process oriented) XP practices were not largely adopted Quality is overlooked by managers and dev team -Projects failing. - No specifications or diagrams anymore. - Management process improved but development still production line with unskilled and cheaper workers.
  17. Agile is a success Agile became synonymous of Scrum and a project management tool Improvement not at the desired level proposed by creators -Agile not used as proposed -Not being used to improve the quality of code delivered -Not being used to create long-lasting software
  18. I don't think that this definition really catches the essence. It's a bit cold and dull.
  19. - A bit more passion here. - better metaphor - software as a craft, creative process and art. Pride of our work professional and pragmatic during implementation.
  20. 2009 – Conferences in US, UK and other European Countries 2010 – Code retreats more popular around the globe.
  21. Well-crafted software: Greenfield / brown field 5 year-old legacy we are scared to touch. Software Hostage, bad code. must be maintainable and predictable. steadily adding value: Not just add features / fix bugs. Software as asset. Keeping tidy stretches life-span and ROI. Boy Scout Rule community of professionals: what we are doing here tonight Our responsibility for training the next generation Our responsibility for moving the industry forward. productive partnerships: Question requirements, propose improvements. Our best interest to make a software succeed. build reputation Partnership with customers. Shift of perspective bringing advantages to the customer.
  22. PC story 9-5 People in the audience Musician play guitar, Accountant new regulation, chef restaurant Bad code slows us down Professional developer Time constraint and req not excuse Long lasting, high quality, robust, maintainable, testable Cares about ROI Care about reputation
  23. Looked at various methodologies; but what about individual developer? What does it take to craft great software? Creativity & problem solving Design as art; inspired; inspiring; hard to understand “ Problem solving easiest part, which problem to solve is hardest” Judgement; pragmatism. Need experience Observe others; bitter personal experience Computer science, understand the machine Know a language, source control, TDD, pair programming Excel in all four areas to craft great software
  24. If we're to excel in all four areas – a lot to learn How many did a sw eng / comp sci degree? How many been on training course? How many read programming books? How many go to conferences?
  25. All very interesting; good theoretical foundation. How much is actually used in industry?
  26. Graduate has lot to learn Right that uni doesn't teach this Who had to learn this? Who has taught it?
  27. Then start learning alphabet soup: SOAP, JMS, RMI, Spring, Hibernate etc.. etc... Learn thru books; colleagues or training courses here at skillsmatter How many have been on training courses? - SCJP - CSM - other courses? SCJP – good programmers who haven't; poor programmers who have CSM – everyone & their aunt. Great course. Danger of being devalued
  28. How many mentored someone new to company? How many kept that going beyond first 3 months? Personally found mentoring hugely valuable - continuous feedback - pass on his knowledge - improve judgement – impossible to learn thru books, courses
  29. We need continuous learning: - degree courses - training courses - feedback (pair programming / peer review) - books - conferences - mentoring
  30. Practice, practice, practice! Crafting software: learn by doing Deliberate practice
  31. Kata is an exercise – designed to allow student to learn through practice and repetition - removes commercial constraints - focus on learning Dojo – take problem and work thru as a group - normally one pair; others observe - pair rotates every 5 minutes Code retreat – longer format; work thru a problem numerous times - delete code after each iteration - add constraints to an iteration (no arrays, no ifs)
  32. Only way to improve practical skill is to do it Deliberate practice allows us to focus on learning
  33. Recall "Judgement" from earlier slide Understanding how others make decisions Competence over certification Pragmatism over specific processes Mentoring over training
  34. Software craftsmanship is about a community of professionals raising the bar of software development, by continually learning through deliberate practice and the sharing of knowledge, experience and ideas.
  35. -better metaphor -Apprenticeship more learning than teaching; Apprentice -> journeymen: public recognition; work without assistance, verifiable work Journeymen: acceptance of the responsibility for creating robust, high-quality applications and acceptance of the craftsmanship approach. Work for different masters A master needs to take journeymen and apprentices under his wings and provide an environment which they can practice their craft. Becoming a master: Not a certificate or exam. Mastery is achieved by sequence of successful projects; Recognised by other software developers and customers Constantly recommended. Ages to build this reputation.
  36. - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?
  37. - Promotion - from apprentice to journeyman - from journeyman to master - Team structure - Mater craftsman: 1 master, 3 journeymen, 9 apprentices - Chief Programmer Team - Ivory tower? Dependency on a single person? Hierarchy? What about self-organised teams? - The journey - Work for different masters - Change jobs frequently?