Software Craftsmanship VS Software Engineering

6,936 views

Published on

Published in: Technology, Education

Software Craftsmanship VS Software Engineering

  1. 1. SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon
  2. 2. OUTLINEDefinitionSimilarities and DifferencesApplications at Groupon
  3. 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. 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. 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. 6. SIMILARITYShared engineering and craftsmanship goals: • Meeting customer needs • Delivering high quality software • Ensuring timely release • Minimizing risk of failure
  7. 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. 8. ISSUES WITH ENGINEERINGEngineers often think that one has to learnall, most, or many best practices before successfullybuilding software.
  9. 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. 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. 11. MITIGATION IN CRAFTSMANSHIPCraftsmen often discover their own best practicesfrom their experiences, which often better fit theirsituations.
  12. 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. 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. 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. 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. 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. 17. SOFTWARE ENGINEERING IS ALIVE AND WELL AT GROUPON
  18. 18. SOFTWARE ENGINEERING AT GROUPON • System Health Measurability
  19. 19. SOFTWARE ENGINEERING AT GROUPON • Usability Design and A/B Testing
  20. 20. SOFTWARE ENGINEERING AT GROUPON • Release Engineering
  21. 21. SOFTWARE ENGINEERING AT GROUPON • Performance Engineering
  22. 22. SOFTWARE ENGINEERING AT GROUPONSoftware Architecture Website Deal Service Order Service Mobile User Service
  23. 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. 24. SOFTWARE ENGINEERING AT GROUPONIterative Development and Velocity Tracking
  25. 25. SOFTWARE CRAFTSMANSHIP ISPOPULAR WITH GROUPON ENGINEERS
  26. 26. SOFTWARE CRAFTSMANSHIP AT GROUPONApprenticeship program
  27. 27. SOFTWARE CRAFTSMANSHIP AT GROUPONInter-branch employee swap
  28. 28. SOFTWARE CRAFTSMANSHIP AT GROUPONPair-Programming
  29. 29. SOFTWARE CRAFTSMANSHIP AT GROUPONInternal Training CoursesOften given by Noel RappinAuthor of Professional Rubyon Rails andRails Test Prescriptions
  30. 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. 31. SOFTWARE CRAFTSMANSHIP AT GROUPONHosting Conferences and Meetups • Weekly GeekFest Lunch (public) • Weekly Brown Bag (internal) • Annual Groupon University (internal)
  32. 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. 33. SOFTWAREAPPRENTICESHIP AT GROUPON
  34. 34. SOFTWARE APPRENTICESHIP AT GROUPONPotential over Credential6 Months with 3 milestonesA mentor oversees apprentice entire period
  35. 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. 36. Q & A
  37. 37. REVIEWDefinitionSimilarity and DifferenceApplications at Groupon
  38. 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. 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
  40. 40. CONTACTAndy Maleh / Software Engineer / GrouponEmail: amaleh {at} groupon {dot} comTwitter: @AndyMalehBlog: http://andymaleh.blogspot.com

×