software craftsmanship raising the bar for software development southern fried agile october 2015

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

Upload: holly-dawson

Post on 17-Jan-2016

228 views

Category:

Documents


0 download

TRANSCRIPT

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

Software Craftsmanship

Raising the bar for software development

Southern Fried AgileOctober 2015

Page 2: 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.

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

What is Craftsmanship?

• Long journey to mastery

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

What is Craftsmanship?

• Improving Software Development• Gaining mastery

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

What is Craftsmanship?

• More than just “high-quality work”• Mindset and attitude

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

What is Craftsmanship?

• Reputation• Integrity

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

What is Craftsmanship?

• Long-term career

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

A Brief History

The Pragmatic

Programmer, 1999

Software Craftsmanshi

p, 2001

Manifesto for Software

Craftsmanship, 2009

The Clean Coder, 2011

The Software Craftsman,

2014

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

The Pragmatic Programmer: From Journeyman

to MasterAndrew Hunt and

David Thomas, 1999

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

The Pragmatic Programmer

• Care about our craft• Sign our work

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

The Pragmatic Programmer

• Options, not excuses• Knowledge portfolio

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

The Pragmatic Programmer

• Culture of testing• Responsibility

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

Software Craftsmanship

: The New

ImperativePete McBreen, 2001

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

Software Craftsmanship

• Antidote for software engineering• Developer skill and experience

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

Software Craftsmanship

• Developer portfolio• Maintainability• Apprenticeship

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

Software Craftsmanship

• Longevity

Controversial

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

Software Craftsmanship

• Outsourcing

Controversial

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

Software Craftsmanship

• Maintenance is high-status• Right of refusal

Controversial

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

The Clean Coder:

A Code of Conduct for Professional Programmers

Robert C. Martin, 2011

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

The Clean Coder• Craftsmanship• Professionalism• Responsibility• Humility

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

The Software Craftsman:

Professionalism, Pragmatism, PrideSandro Mancuso, 2014

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

The Software Craftsman

• Technical excellence• Care for your craft• Invest in your career

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

The Software Craftsman

• Sharing• Mentoring

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

The Software Craftsman

“Many Agile projects are now, steadily and iteratively, producing crap code.”

Controversial

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

Why?

• Agile hangover

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

Why?

• Lack of technical excellence

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

Why?

• Poor design and sloppy code• Lack of confidence

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

Why?

• Software must remain easy, safe and inexpensive to change.

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

Why?

• Culture• Quality and maintainability

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

Why?

• Autonomy• Mastery• Purpose

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

Values• Professionalism• Integrity• Responsibility• Reputation• Continuous learning • Pragmatism• Humility

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

Professionalism

• Say “no” when necessary• Clear and unambiguous

commitments• Mentoring

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

Professionalism

• Learn and practice on your own time

Controversial

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

Professionalism

• Manage your own time

Controversial

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

Professionalism

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

– Winston Churchill

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

Professionalism

• Is good code impossible?

Controversial

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

Professionalism

• Is good code impossible?

Controversial

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

Professionalism

• A series of unfortunate events…

Controversial

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

Professionalism

• A series of unfortunate events…

Controversial

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

Integrity

• Adherence to principles and values• Courage

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

Responsibility

• Personal responsibilityo For your worko For your personal developmento For your profession

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

Responsibility

• Responsibility accepted, not assigned

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

Reputation

• Quality• Successful projects• Satisfied customers

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

Continuous Learning

• Read• Practice• Fail

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

Pragmatism

“Idealism is fine, but the cost becomes prohibitive as it approaches reality”

– William F. Buckley

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

Humility

“Nothing so needs reforming as other people’s habits.”

– Mark Twain

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

Humility

• Honest about shortcomings• Respect for others

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

Practices

• Consistent• Shaped by values

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

Extreme Programming

• Software development discipline• Values, principles and practices

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

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

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

Adopting Practices

Productivity

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

Automated Testing

• Engineering rigor; hygiene• Required

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

Automated Testing

• Not a separate task

Controversial

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

Automated Testing

• Defect Cost Increase (DCI)

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

Automated Testing

• Testing is a skill• Testing improves design

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

Automated Testing

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

Automated Testing

• Manual testing

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

Other Stuff …

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

Code Quality

• Productivity• Transparency• Procrastination

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

Code Quality

• Quality is always expected!

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

Legacy Code

• Scary codebase• Working Effectively with Legacy Code

• Tests and “seams”

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

Your Career

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

Your Career

• Getting promoted away from your craft

Controversial

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

Managers

• Collaboration• Enlightened managers• Transparency

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

Compensation

• Pay based on value

Controversial

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

Compensation

• More valuable than managers

Controversial

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

Craftsmanship vs Agile

• Complementary• Process versus technical discipline• Building the right thing; building it

right

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

The Manifesto for Software

Craftsmanship2009

http://manifesto.softwarecraftsmanship.org/

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

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:”

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

The Manifesto for Software Craftsmanship

“Not only working software,but also well-crafted software”

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

The Manifesto for Software Craftsmanship

“Not only responding to change,but also steadily adding value”

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

The Manifesto for Software Craftsmanship

“Not only individuals and interactions,but also a community of professionals”

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

The Manifesto for Software Craftsmanship

“Not only customer collaboration,but also productive

partnerships”

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

Criticisms of Manifesto

• Impossible to disagree

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

General Criticisms

• Romantic notions and nostalgia

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

General Criticisms

• Prima donnas

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

• Developer discipline

Challenges

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

• Customer responsibility• Economics

Challenges

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

Challenges

• “Adolescent surety”

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

Challenges

• Internal quality

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

Call to Action

• Raise the bar

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

Call to Action

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

Call to Action

• Passion and Mentoring

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

Call to Action

• Maintenance as a high-status job

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

Call to Action

• Technical practices

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

Call to Action

• Testable and maintainable

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

Call to Action

• Skepticism and resistance

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

That’s All Folks…

Thank you

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

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/)

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

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