Software Craftsmanship Raising the bar for software development

Slides:



Advertisements
Similar presentations
Colin Weaver The Eleven Essential Behaviours of Successful Agile Project Teams.
Advertisements

Lecture 1: Introduction to Software Engineering CSC301 – Winter 2011
Agile Software Development کاری از : مهدی هوشان استاد راهنما : استاد آدابی.
The Pragmatic Programmer I. About the textbook The Pragmatic Programmer is full of helpful suggestions for surviving programming It’s also enjoyably written.
E X treme Programming & Agile Modeling Copyright © 2003 Patrick McDermott UC Berkeley Extension
A little Software Engineering: Agile Software Development C Sc 335 Rick Mercer.
PROC-1 3. Software Process. PROC-2 What’s a process? Set of activities in creating software It involves creativity –hard to automate –Requires human judgment.
Ni.com Introduction to Agile and Scrum Speaker/Author: Paul Packebush Section Manager, Corporate Metrology Author:Logan Kunitz Staff Calibration Engineer.
Diane Pozefsky. Extreme Programming Flowchart
Alternate Software Development Methodologies
© ThoughtWorks, 2008 Improving Productivity and Quality With Agile Patrick Kua.
8 December Logistics  Sitterson 014 at 8 am Tuesday, Dec 14  Inviting all clients  Schedule will depend on client constraints ( once booked)
6 December ’s  60’s “Cowboys” wrote software anyway that they could Difference between best programmers and worst as high as 28:1 (many sources)
Agile Methods and Extreme Programming CSSE 376, Software Quality Assurance Rose-Hulman Institute of Technology March 23, 2007.
EXtreme Programming Quick Introduction Daniel Arraes Pereira Eduardo Lourenço Apolinário Ricardo de Oliveira Cavalcanti.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
Agile Software Development
Quality assurance of agile software engineering Shipeng Xu.
An Agile View of Process
ETHICS AND CODE OF CONDUCT: THE NIGERIAN INSURANCE INDUSTRY EXPERIENCE CIIN PROFESSIONAL FORUM 2013 THOMAS O S, NIA NIA.
An Overview of Agile L e a d i n g C h a n g e T h r o u g h C o l l a b o r a t i o n.
AgileCamp Presents: Agile Software Development. Good luck in your presentation! This slide deck has been shared by AgileCamp Kit under the Creative Commons.
Agile Software Development What is Agile? And How are we implementing Agile?
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Software Engineering Modern Approaches
Agile Web Development C. Daniel Chase University of Colorado at Boulder.
Chapter 4 Agile Development
Agile Software Development Brian Link
Agile and XP Development Dan Fleck 2008 Dan Fleck 2008.
AgileCamp Presents: Agile 101. Good luck in your presentation! This slide deck has been shared by AgileCamp Kit under the Creative Commons Attribution.
Extreme Programming Daniel Baranowski 3/29/06. What is Extreme Programming? An agile development methodology Created by Kent Beck in the mid 1990’s A.
T-unit: Tcl Unit Test Package Automated Unit Test Package For Tcl Procedures Final Presentation Joseph Boyle Loyola Marymount University.
Where Agile Business Meets Agile Development Agile Building Blocks: People Dave Yardley.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
1 Trends in Agile Development Kent Beck Agitar Fellow.
Principles & Values Partnership Expertise Teamwork Leadership Goals & Strategies Vision/Mission.
XP – Extreme Programming
Agile Software Development Jeff Sutherland, one of the developers started it In February 2001, 17 Tools: continuous integration, automated or xUnit test,
Test Driven Development Daniel Brown dxb17u. Introduction Originates from Extreme Programming (XP) Proposed by Kent Beck in Test Driven Development.
Day 3 - Processes. Meet your team managers  Either real world managing experience  or articulated well what a manager must do with examples  or included.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix B Agile Methodologies B.1.
AGILE XP AND SCRUM © University of LiverpoolCOMP 319slide 1.
1/2/12 Chapt 2 Iterative Evolutionary Agile. 1/2/12 (Rational) Unified Process A software development process – Flexible and open Other processes – XP.
Agile Methods Presentation By: Jason Abbett. Definition A process to rapidly develop software Many kinds of agile methods but few are practiced.
Extreme Programming. Extreme Programming (XP) Formulated in 1999 by Kent Beck, Ward Cunningham and Ron Jeffries Agile software development methodology.
SoberIT Software Business and Engineering Institute HELSINKI UNIVERSITY OF TECHNOLOGY 1 eXtreme Programming – one of the Agile Software Development Methodologies.
Clean Code and How to Achieve Zero Defects Jason Jolley Director, Application Development Micro Strategies, Inc.
1 Introduction to eXtreme Programming Remko Popma Azzurri Ltd.
AGILE PROJECT MANAGEMENT WITH TEAM FOUNDATION SERVER 2010 Brian Keller Microsoft.
Extreme Programming מתודולוגיה לפיתוח פרויקטי תוכנה.
Extreme programming (XP) Advanced Software Engineering Dr Nuha El-Khalili.
Industrial Software Development Process Bashar Ahmad RISC Software GmbH.
Coming up: What is Agile? XP Development Dan Fleck 2010 Dan Fleck 2010.
Embedded Systems Software Engineering
Chapter 5 Agile Development Moonzoo Kim KAIST
Manifesto for Agile Software Development
Appendix B Agile Methodologies
Software & Software Engineering Pertemuan-4 Dosen :Kundang K Juman
Johanna Rothman Create Technical Excellence Chapter 9
Software Craftsmanship
Chapt 2 Iterative Evolutionary Agile.
Test Driven Development
Chapter 3: Agile Software Processes
Coming up: What is Agile?
Being a Lead Developer on the Road
Projects, Assignments, and other Assessments
Agile Development – a new way of software development?
Appendix B Agile Methodologies
Extreme Programming Explained by Kent Beck
Presentation transcript:

Software Craftsmanship Raising the bar for software development Southern Fried Agile October 2015

Who am I? Chris Mair Software developer/architect at Wells Fargo. Open source: CodeNarc, GMetrics and MockFtpServer projects; Uptime Jenkins plugin.

What is Craftsmanship? Long journey to mastery

What is Craftsmanship? Improving Software Development Gaining mastery

What is Craftsmanship? More than just “high-quality work” Mindset and attitude

What is Craftsmanship? Reputation Integrity

What is Craftsmanship? Long-term career

A Brief History The Pragmatic Programmer, 1999 Software Craftsmanship, 2001 Manifesto for Software Craftsmanship, 2009 The Clean Coder, 2011 The Software Craftsman, 2014

The Pragmatic Programmer: From Journeyman to Master Andrew Hunt and David Thomas, 1999

The Pragmatic Programmer Care about our craft Sign our work

The Pragmatic Programmer Options, not excuses Knowledge portfolio

The Pragmatic Programmer Culture of testing Responsibility

Software Craftsmanship: The New Imperative Pete McBreen, 2001

Software Craftsmanship Antidote for software engineering Developer skill and experience

Software Craftsmanship Developer portfolio Maintainability Apprenticeship

Software Craftsmanship Controversial Longevity

Software Craftsmanship Controversial Outsourcing

Software Craftsmanship Controversial Maintenance is high-status Right of refusal

A Code of Conduct for Professional Programmers The Clean Coder: A Code of Conduct for Professional Programmers Robert C. Martin, 2011

The Clean Coder Craftsmanship Professionalism Responsibility Humility

The Software Craftsman: Professionalism, Pragmatism, Pride Sandro Mancuso, 2014

The Software Craftsman Technical excellence Care for your craft Invest in your career

The Software Craftsman Sharing Mentoring

The Software Craftsman Controversial “Many Agile projects are now, steadily and iteratively, producing crap code.”

Why? Agile hangover

Why? Lack of technical excellence

Why? Poor design and sloppy code Lack of confidence

Why? Software must remain easy, safe and inexpensive to change.

Why? Culture Quality and maintainability

Why? Autonomy Mastery Purpose

Values Professionalism Integrity Responsibility Reputation Continuous learning Pragmatism Humility

Professionalism Say “no” when necessary Clear and unambiguous commitments Mentoring

Professionalism Controversial Learn and practice on your own time

Professionalism Controversial Manage your own time

Professionalism “I didn’t say it was your fault, I said I was blaming you.” – Winston Churchill

Professionalism Controversial Is good code impossible?

Professionalism Controversial Is good code impossible?

Professionalism Controversial A series of unfortunate events…

Professionalism Controversial A series of unfortunate events…

Integrity Adherence to principles and values Courage

Responsibility Personal responsibility For your work For your personal development For your profession

Responsibility Responsibility accepted, not assigned

Reputation Quality Successful projects Satisfied customers

Continuous Learning Read Practice Fail

Pragmatism “Idealism is fine, but the cost becomes prohibitive as it approaches reality” – William F. Buckley

“Nothing so needs reforming as other people’s habits.” Humility “Nothing so needs reforming as other people’s habits.” – Mark Twain

Humility Honest about shortcomings Respect for others

Practices Consistent Shaped by values

Extreme Programming Software development discipline Values, principles and practices

Extreme Programming Test-Driven Development (TDD) Pair Programming Refactoring Continuous Integration Coding Standard Sustainable Pace …

Adopting Practices Productivity

Automated Testing Engineering rigor; hygiene Required

Automated Testing Controversial Not a separate task

Automated Testing Defect Cost Increase (DCI)

Automated Testing Testing is a skill Testing improves design

Automated Testing

Automated Testing Manual testing

Other Stuff …

Code Quality Productivity Transparency Procrastination

Code Quality Quality is always expected!

Legacy Code Scary codebase Tests and “seams” Working Effectively with Legacy Code Tests and “seams”

Your Career

Your Career Controversial Getting promoted away from your craft

Managers Collaboration Enlightened managers Transparency

Compensation Controversial Pay based on value

Compensation Controversial More valuable than managers

Craftsmanship vs Agile Complementary Process versus technical discipline Building the right thing; building it right

The Manifesto for Software Craftsmanship 2009 http://manifesto.softwarecraftsmanship.org/

The Manifesto for Software Craftsmanship “As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:”

The Manifesto for Software Craftsmanship “Not only working software, but also well-crafted software”

The Manifesto for Software Craftsmanship “Not only responding to change, but also steadily adding value”

The Manifesto for Software Craftsmanship “Not only individuals and interactions, but also a community of professionals”

The Manifesto for Software Craftsmanship “Not only customer collaboration, but also productive partnerships”

Criticisms of Manifesto Impossible to disagree

General Criticisms Romantic notions and nostalgia

General Criticisms Prima donnas

Challenges Developer discipline

Challenges Customer responsibility Economics

Challenges “Adolescent surety”

Challenges Internal quality

Call to Action Raise the bar

Call to Action

Call to Action Passion and Mentoring

Call to Action Maintenance as a high-status job

Call to Action Technical practices

Call to Action Testable and maintainable

Call to Action Skepticism and resistance

That’s All Folks… Thank you

References Extreme Programming Explained: Embrace Change, 2nd Edition, Kent Beck, and Cynthia Andres, Addison Wesley, 2004. Working Effectively with Legacy Code, Michael Feathers, Prentice Hall, 2004. The Pragmatic Programmer: From Journeyman to Master, Andrew Hunt and David Thomas, Addison- Wesley, 1999 The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso, Prentice Hall, 2014 Software Craftsmanship: The New Imperative, Pete McBreen, Addison-Wesley, 2001 The Clean Coder, Robert C. Martin, Prentice Hall, 2011 Drive: The Surprising Truth About What Motivates Us, Daniel Pink, Riverhead Books, 2011. “Programming is not a Craft”, Dan North, 2011 (http://dannorth.net/2011/01/11/programming-is-not-a- craft/) The Manifesto of Software Craftsmanship, 2009 (http://manifesto.softwarecraftsmanship.org/)

Image Credits http://www.doceatdoc.com/wp-content/uploads/2012/05/10-things-you-must-give-up-to-become-a-doctor.jpg http://contentmanager.faithnetwork.com/FAITHNETWORK_UserFileStore/imagelibraries/ministries/9525adbe-5f29-4962-af4c-a49ef897fa71/Career/career_development.jpg https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRV4oEmREth5LWmFJ7zpYp1ffcCOIdBsseYQE3-T5iwxBNsv48i http://www.globalnerdy.com/2008/03/20/i-find-your-lack-of-tests-disturbing/ https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQIecHY2lxm4mrMmO1bDmH_kNf1wS9zqnOxWU9xjqFgnRysU6gWTg https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQKMOs_4W-8soJ_HxlP5qXjYfe6CWQmrE9gDQDyHRgADrA9mMoJ https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQvj3U5hiRqY7pBv0lw3Y6vgI2dsPqAYHZURil8b_gjoV_LRA0q https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQoIhWnSCEor9NRfnDjPfouG2VU40aONGuSv4xNtI8zAy0nbiob https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTNuZ-ZO8Ny4LEl0LkiYiShoE1NS39V-q-FglCmh3hpCk_o2aZAkQ https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcT9IBYzI6OnuMEcaZsZOFJNpNrgeOtMtjc4SfTgdFIKre-cOdjW https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcR18AKStkC12h3ZwHy9Z5a4eThsd0Yvpy5o9fQcOf9rdoYMZMS7