Your SlideShare is downloading. ×
0
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Software Craftsmanship VS Software Engineering
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Software Craftsmanship VS Software Engineering

5,591

Published on

Published in: Technology, Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,591
On Slideshare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
83
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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
  • 40. CONTACTAndy Maleh / Software Engineer / GrouponEmail: amaleh {at} groupon {dot} comTwitter: @AndyMalehBlog: http://andymaleh.blogspot.com

×