Software Craftsmanship Joe Sims. “Large programming projects suffer management problems different...

34
Software Craftsmanship Joe Sims

Transcript of Software Craftsmanship Joe Sims. “Large programming projects suffer management problems different...

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/