1. SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon
2. OUTLINEDefinitionSimilarities and DifferencesApplications at Groupon
3. DEFINITIONOne of the original definitions of SoftwareEngineering (NATO SOFTWARE ENGINEERINGCONFERENCE 1968):Software engineering is the establishment of sound engineeringprinciples in order to obtain economical software that is reliable andworks efficiently on real machines.
4. DEFINITIONOn Software Craftsmanship by Pete McBreen:Becoming a good software developer involves a lot more thanjust learning to write programs. Software development is acraft, it blends science, engineering, mathematics, linguisticsand art.
5. DEFINITIONThe book The Pragmatic Programmer paints softwarecraftsmanship as similar to traditional medievalEuropean craftsmanship where an apprentice learns acraft under the guidance of a master gradually climbinghis way into becoming a skilled journeyman, eventuallybranching off on his own and working towards masteryof the craft.
6. SIMILARITYShared engineering and craftsmanship goals: • Meeting customer needs • Delivering high quality software • Ensuring timely release • Minimizing risk of failure
7. ISSUES WITH ENGINEERING Engineers often seem to believe that they can completelystreamline the process of building software, with completecontrol and predictability. And, this belief seems to be processindependent. In other words, even engineers who are strongadvocates of agile often believe that if you do a, b, and c, youwill get the results you want.
8. ISSUES WITH ENGINEERINGEngineers often think that one has to learnall, most, or many best practices before successfullybuilding software.
9. ISSUES WITH ENGINEERINGSome engineers seem to think that best practicesapply everywhere or in every situation. Moreexperienced engineers are aware that differentcontexts require different best practices though.
10. MITIGATION IN CRAFTSMANSHIPCraftsmen see software development more as anart that emerges and less as a science that can becontrolled, so they let time and experience shape uptheir skills in successfully completing softwareprojects.
11. MITIGATION IN CRAFTSMANSHIPCraftsmen often discover their own best practicesfrom their experiences, which often better fit theirsituations.
12. MITIGATION IN CRAFTSMANSHIPCraftsmen do not religiously follow even theirown best practices, often transcending them whenthey do not make sense in a new situation anymore.They thus rely more on their intuition and gutfeelings to succeed.
13. SOFTWARE ENGINEERING REVISITEDEven Tom DeMarco, one of the early key figures inthe software engineering world, famous for the quote"You cannot control what you cannot measure", recentlyrenounced the controlled development approach in anarticle posted by the IEEE, titled "Software Engineering:An Idea Whose Time Has Come and Gone?"
14. DIFFERENCEWhile engineering is about the macro goal ofdelivering economical software that is reliable andefficient, craftsmanship is about the micro processof mastering the skills to achieve that macro goal.
15. ENGINEERINGS GOT A BAD REPUnfortunately, engineering got some undeservednegative associations over time: • Strict • Big Up Front Design • Heavy-weight process (Waterfall?) • Everything is predictable • Measure everything
16. MOSTLY BECAUSE OF THINKING TRAPS Reactive vs Proactive thinking Getting too attached to words instead of seeking the meaningbehind them Accepting education from the media instead of digging forknowledge personally Silver bullet syndrome Black & White thinking
17. SOFTWARE ENGINEERING IS ALIVE AND WELL AT GROUPON
18. SOFTWARE ENGINEERING AT GROUPON • System Health Measurability
19. SOFTWARE ENGINEERING AT GROUPON • Usability Design and A/B Testing
20. SOFTWARE ENGINEERING AT GROUPON • Release Engineering
21. SOFTWARE ENGINEERING AT GROUPON • Performance Engineering
22. SOFTWARE ENGINEERING AT GROUPONSoftware Architecture Website Deal Service Order Service Mobile User Service
23. SOFTWARE ENGINEERING AT GROUPONVerification and Acceptance Testing • As a user who has seen the personalize wizard • When I advance past step 1 • And I refresh the page • And I open the personalize wizard • Then I should see the step I was previously on
24. SOFTWARE ENGINEERING AT GROUPONIterative Development and Velocity Tracking
25. SOFTWARE CRAFTSMANSHIP ISPOPULAR WITH GROUPON ENGINEERS
26. SOFTWARE CRAFTSMANSHIP AT GROUPONApprenticeship program
27. SOFTWARE CRAFTSMANSHIP AT GROUPONInter-branch employee swap
28. SOFTWARE CRAFTSMANSHIP AT GROUPONPair-Programming
29. SOFTWARE CRAFTSMANSHIP AT GROUPONInternal Training CoursesOften given by Noel RappinAuthor of Professional Rubyon Rails andRails Test Prescriptions
30. SOFTWARE CRAFTSMANSHIP AT GROUPONHigh Encouragement to Present at Conferences • Check out my talk Rails Engines Patterns at RailsConf 2012 on Apr 23, 2012
31. SOFTWARE CRAFTSMANSHIP AT GROUPONHosting Conferences and Meetups • Weekly GeekFest Lunch (public) • Weekly Brown Bag (internal) • Annual Groupon University (internal)
32. SOFTWARE CRAFTSMANSHIP AT GROUPONHaving a few Masters around • Michael Feathers, author of Working Effectively with Legacy Code, and alumni of Uncle Bob’s Object Mentor software consultancy. • Aaron Bedra, author of Programming Clojure, and contributor to the Clojure programming language.
33. SOFTWAREAPPRENTICESHIP AT GROUPON
34. SOFTWARE APPRENTICESHIP AT GROUPONPotential over Credential6 Months with 3 milestonesA mentor oversees apprentice entire period
35. SOFTWARE APPRENTICESHIP AT GROUPONApprentice pair-programs with different people indifferent teamsApprentice spends about 50% of his time on hispersonal projectApprentice presents his personal project to seniordevelopers (journeymen) at the milestones
36. Q & A
37. REVIEWDefinitionSimilarity and DifferenceApplications at Groupon
38. REFERENCESWork at Obtiva and GrouponThe Pragmatic Programmer book by Andy Hunt andDave ThomasSoftware Craftsmanship book by Pete McBreenSoftware Apprenticeship Patterns book by DaveHoover and Adewale Oshineye
39. GROUPON IS HIRINGPotential over CredentialRuby on Rails, Java, or System OperationsAgile, Test Driven Development, Pair ProgrammingPassion to foster a collaborative environment andpartner with business on delivering value