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

Post on 17-Jan-2016

228 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Software Craftsmanship

Raising the bar for software development

Southern Fried AgileOctober 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 Craftsmanshi

p, 2001

Manifesto for Software

Craftsmanship, 2009

The Clean Coder, 2011

The Software Craftsman,

2014

The Pragmatic Programmer: From Journeyman

to MasterAndrew 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

ImperativePete McBreen, 2001

Software Craftsmanship

• Antidote for software engineering• Developer skill and experience

Software Craftsmanship

• Developer portfolio• Maintainability• Apprenticeship

Software Craftsmanship

• Longevity

Controversial

Software Craftsmanship

• Outsourcing

Controversial

Software Craftsmanship

• Maintenance is high-status• Right of refusal

Controversial

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, PrideSandro Mancuso, 2014

The Software Craftsman

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

The Software Craftsman

• Sharing• Mentoring

The Software Craftsman

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

Controversial

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

• Learn and practice on your own time

Controversial

Professionalism

• Manage your own time

Controversial

Professionalism

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

– Winston Churchill

Professionalism

• Is good code impossible?

Controversial

Professionalism

• Is good code impossible?

Controversial

Professionalism

• A series of unfortunate events…

Controversial

Professionalism

• A series of unfortunate events…

Controversial

Integrity

• Adherence to principles and values• Courage

Responsibility

• Personal responsibilityo For your worko For your personal developmento 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

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

• Not a separate task

Controversial

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• Working Effectively with Legacy Code

• Tests and “seams”

Your Career

Your Career

• Getting promoted away from your craft

Controversial

Managers

• Collaboration• Enlightened managers• Transparency

Compensation

• Pay based on value

Controversial

Compensation

• More valuable than managers

Controversial

Craftsmanship vs Agile

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

right

The Manifesto for Software

Craftsmanship2009

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

• Developer discipline

Challenges

• Customer responsibility• Economics

Challenges

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

top related