software craftsmanship joe sims. “large programming projects suffer management problems different...

34
Software Craftsmanship Joe Sims

Upload: coleen-jocelyn-dawson

Post on 24-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Software Craftsmanship

Joe Sims

“Large programming projects suffer management problems different in kind from small ones” – Fred Brooks, Mythical Man Month (1975)

• History / Current State of SE• What Is Software Craftsmanship• History of Craftsmanship• History of Software Craftsmanship• The Apprenticeship Model• Craftsmanship Values

History of SE

• “Software Engineering” introduced by 1967 NATO study group

• 1968 NATO Science Committee conference: Clear need to prevent software crisis

• “Software Engineering” used as title for the 1968 NATO Science Committee conference report

History of SE

• 1969 NATO Science Committee conference: How to prevent software crisis?

• Splits between theory, practice, and management ideologies

History of SE

• US DoD was one of the biggest players

• SAFEGUARD Ballistic Missile Defense System– Specially designed hardware– 5407 staff-years

Current State of SE

• Have both:– Large system engineering• “On board shuttle group” at Lockheed

Martin• 260 men and women, $35 million a year• “Yes, the process does

stifle creativity”

Current State of SE

• Have both:– Smaller software development• social networking• “Two guys built Twitter in two weeks”

Current State of SE

• Tom DeMarco, author of Controlling Software Projects: Management, Measurement, and Estimation

• “coming to the conclusion that software engineering is an idea whose time has come and gone”

• “Software development is and always will be somewhat experimental”

What Is Software Craftsmanship?

• Alternative to Software Engineering• Most developers not working on

“on-board” software• Raises the question: Practices and

process appropriate for all development?

What Is Software Craftsmanship?

• Software engineering chooses process over people

• Adapting the historically proven craftsmanship model can rejuvenate the software industry, by improving quality, and bringing significant rewards to not only the user, but the developers themselves.

History of Craftsmanship

• Back to the middle ages• Apprenticeship model–Master– Journeyman– Apprentice– Listen, watch, do, review

• Used still today: IBEW

History of Software Craftsmanship

• Sporadically explored since at least the early 90’s

• “Borland Software Craftsmanship: A New Look at Process, Quality, and Productivity”– “off the charts” productivity– “We are satisfied by doing real work”

History of Software Craftsmanship

• Andy Hunt and Dave Thomas, The Pragmatic Programmer: From Journeyman to Master

• Essential characteristics: – Early/fast adopter of new technologies– Inquisitive– Critical thinker– Realistic– Jack of all trades

History of Software Craftsmanship

• Pete McBreen, Software Craftsmanship: The New Imperative

• More dramatic changes• Idea of engineering software only

appropriate for very large or critical projects

• People before process

History of Software Craftsmanship

• First two software craftsmanship conferences– Software Craftsmanship 2009– Software Craftsmanship North America

Conference

History of Software Craftsmanship

Apprenticeship Model

• Fred Brooks: surgical team “rather than a hog-butchering team”

Apprenticeship Model

• Ken Auer, founder of RoleModel software

• Doing apprenticeships for a decade• “We have found that the age-old

technique of apprenticeship is both an effective way to keep our craftsmen fresh (and newcraftsmen up and coming), and also a cost-effective way to keep the costs down for ourclients…”

Apprenticeship Model

• 3 Phases, 6-18 months for each– Novice: Very little software

understanding– Apprentice: Can produce some useful

work, has a lot to learn– Intern: Can produce good work, but still

needs supervision

• Unpaid (or low pay)

Apprenticeship Model

• Robert Martin, award winning dev author, president of Object Mentor

• Team ideal:– One master– Three journeymen– Six to nine apprentices

Apprenticeship Model

• Master- > 20 years experience- Makes critical decisions, boss of the

project- Responsible for designing the system- Oversees all work done- Chief responsibility is to drive the

journeymen- Very high pay ($150k to $250k)

Apprenticeship Model

• Journeyman–> 5 years experience– Given responsibility to make some

decisions–Main teachers/mentors of the

apprentices– Oversees the work of apprentices– Average pay ($50k to $100k)

Apprenticeship Model

• Apprentice– Start with little or no experience– Become an apprentice instead of going

to university– Produce a lot of work that is reviewed– Last 2 to 4 years–Minimum wage, payment is in education

and experience

Apprenticeship Model

• Cost effective– One master (250k), three journeymen

(100k), and nine apprentices (10k) => ~650,000k

– About same cost as 13 developers at $50k each

Apprenticeship Model

• Swapping journeyman– Journeyman travel to learn under

different masters– 8th Light and Obtiva swapped senior

consultants for five days

Craftsmanship Values

• Learning– Learning is a lifelong activity– Not restricted to 9 to 5– Knowledge is an expiring asset

• Tools– Can produce better work– Gather and create collection over time– Responsible for own tools

Craftsmanship Values

• Signing your work– Accepting responsibility– Gaining recognition for good work–More personal

• Relationship with customer– Get feedback– Understanding formed– Continue working together– Demonstrated in XP

Craftsmanship Values

• Peer recognition– Licensing is impersonal– Personal recommendation is strong

• People are different– Variation in performance– Higher performance => higher pay

Craftsmanship Values

• Entire involvement– Involved from start to completion, and

beyond (maintenance)– Accept responsibility for success or

failure

In Conclusion…

• A defined system? No!• Idea for alternative approach that

diverges from established software engineering concepts and practices

• Currently being explored• Slowly becoming more mainstream

Questions?

References[1] 8th Light Inc. (2009). Software Craftsmanship North America. Retrieved from http://scna.softwarecraftsmanship.org/ [2] 8th Light Inc. (2009). Manifesto for Software Craftsmanship. Retrieved from http://manifesto.softwarecraftsmanship.org/ [3] Beck, K. (2000). Extreme Programming Explained. Boston: Addison-Wesley. [4] Brooks, F.P. (1975). The Mythical Man-Month: Essays on Software Engineering. Reading, MA: Addison-Wesley. [5] Coplien, J. (06/05/1994). Borland Software Craftsmanship: A New Look at Process, Quality, and Productivity. Retrieved from

http://users.rcn.com/jcoplien/Patterns/Process/QPW/borland.html [6] DeMarco, T. (2000). Software Engineering: An Idea Whose Time Has Come and Gone?. IEEE Software, vol. 26 no. 4.

Retrieved from http://www2.computer.org/cms/Computer.org/ComputingNow/homepage/2009/0709/rW_SO_Viewpoints.pdf [7] DeMarco, T., & Lister, T. (1999). Peorpleware: Productive Projects and Teams. New York: Dorset House Publishing Co. [8] Eischen, K. (2002). Software Development: An Outsider's View. Computer, 35(5). Retrieved from Academic Search Premier

database. [9] Fairly, R.E. (1985) Software Engineering Concepts. New York: McGraw-Hill. [10] Fishman, C. (12/17/2007). They Write the Right Stuff. Fast Company. Retrieved from

http://www.fastcompany.com/magazine/06/writestuff.html [11] Gorman, J. (2009). Software Craftsmanship 2009. Retrieved from http://parlezuml.com/softwarecraftsmanship/index.htm 

References [12] Haines, Corey. (2009, June 23). Conversation with Ken Auer [Video File]. Video posted to

http://programmingtour.blogspot.com/2009/06/conversation-with-ken-auer.html [13] Hunt, A., & Thomas, D. (2000). The Pragmatic Programmer: From Journeyman to Master. Reading, MA: Addison-Wesley. [14] Martin, R. (2009, April 1). Master Craftsman Teams. Message posted to

http://blog.objectmentor.com/articles/2009/04/01/master-craftsman-teams [15] McBreen, P. (2002). Software Craftsmanship: The New Imperative. Boston, MA: Addison-Wesley. [16] McConnel, Steve. (2004). Professional Software Development. Boston: Addison-Wesley. [17] NECA-IBEW (2008). Inside Electrical Program. Retrieved from http://www.nietc.org/templates/template3/template3.php?

page=65 [18] Park, A. (2008, Feb 25). The Brash Boys at 37signals Will Tell You: Keep it Simple, Stupid. Wired, 16.03. Retrieved from

http://www.wired.com/techbiz/media/magazine/16-03/mf_signals [19] RoleModel Software, Inc. (2009). Software Craftsmanship in Our Studio. Retrieved from

http://rolemodelsoftware.com/people [20] Sennett, R. (2008). The Craftsman. New Haven, CT: Yale University Press [21] Stone, B., & Cohen, N. (2009, June 15). Social Networks Spread Defiance Online. New York Times. Retrieved from

http://www.nytimes.com/2009/06/16/world/middleeast/16media.html [22] Wong, W. (2009, July 13). Employee swap gives two firms new perspectives. Ventura County Star. Retrieved from

http://www.venturacountystar.com/news/2009/Jul/13/employee-swap-gives-two-firms-new-perspectives/