SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon
OUTLINEDefinitionSimilarities and DifferencesApplications at Groupon
DEFINITIONOne 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.
DEFINITIONOn 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.
DEFINITIONThe 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.
SIMILARITYShared engineering and craftsmanship goals: • Meeting customer needs • Delivering high quality software • Ensuring timely release • Minimizing risk of failure
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.
ISSUES WITH ENGINEERINGEngineers often think that one has to learnall, most, or many best practices before successfullybuilding software.
ISSUES WITH ENGINEERINGSome engineers seem to think that best practicesapply everywhere or in every situation. Moreexperienced engineers are aware that differentcontexts require different best practices though.
MITIGATION IN CRAFTSMANSHIPCraftsmen 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.
MITIGATION IN CRAFTSMANSHIPCraftsmen often discover their own best practicesfrom their experiences, which often better fit theirsituations.
MITIGATION IN CRAFTSMANSHIPCraftsmen 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.
SOFTWARE ENGINEERING REVISITEDEven 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?"
DIFFERENCEWhile 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.
ENGINEERINGS GOT A BAD REPUnfortunately, engineering got some undeservednegative associations over time: • Strict • Big Up Front Design • Heavy-weight process (Waterfall?) • Everything is predictable • Measure everything
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
SOFTWARE ENGINEERING IS ALIVE AND WELL AT GROUPON
SOFTWARE ENGINEERING AT GROUPON • System Health Measurability
SOFTWARE ENGINEERING AT GROUPON • Usability Design and A/B Testing
SOFTWARE ENGINEERING AT GROUPON • Release Engineering
SOFTWARE ENGINEERING AT GROUPON • Performance Engineering
SOFTWARE ENGINEERING AT GROUPONSoftware Architecture Website Deal Service Order Service Mobile User Service
SOFTWARE ENGINEERING AT GROUPONVerification 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
SOFTWARE ENGINEERING AT GROUPONIterative Development and Velocity Tracking
SOFTWARE CRAFTSMANSHIP ISPOPULAR WITH GROUPON ENGINEERS
SOFTWARE CRAFTSMANSHIP AT GROUPONApprenticeship program
SOFTWARE CRAFTSMANSHIP AT GROUPONInter-branch employee swap
SOFTWARE CRAFTSMANSHIP AT GROUPONPair-Programming
SOFTWARE CRAFTSMANSHIP AT GROUPONInternal Training CoursesOften given by Noel RappinAuthor of Professional Rubyon Rails andRails Test Prescriptions
SOFTWARE CRAFTSMANSHIP AT GROUPONHigh Encouragement to Present at Conferences • Check out my talk Rails Engines Patterns at RailsConf 2012 on Apr 23, 2012
SOFTWARE CRAFTSMANSHIP AT GROUPONHosting Conferences and Meetups • Weekly GeekFest Lunch (public) • Weekly Brown Bag (internal) • Annual Groupon University (internal)
SOFTWARE CRAFTSMANSHIP AT GROUPONHaving 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.
SOFTWARE APPRENTICESHIP AT GROUPONPotential over Credential6 Months with 3 milestonesA mentor oversees apprentice entire period
SOFTWARE APPRENTICESHIP AT GROUPONApprentice pair-programs with different people indifferent teamsApprentice spends about 50% of his time on hispersonal projectApprentice presents his personal project to seniordevelopers (journeymen) at the milestones
REVIEWDefinitionSimilarity and DifferenceApplications at Groupon
REFERENCESWork at Obtiva and GrouponThe Pragmatic Programmer book by Andy Hunt andDave ThomasSoftware Craftsmanship book by Pete McBreenSoftware Apprenticeship Patterns book by DaveHoover and Adewale Oshineye
GROUPON IS HIRINGPotential over CredentialRuby on Rails, Java, or System OperationsAgile, Test Driven Development, Pair ProgrammingPassion to foster a collaborative environment andpartner with business on delivering value