Software Craftsmanship vs Software Engineering (Lightning Talk)

21
Software Craftsmanship vs Software Engineering (lightning talk) Andy Maleh Software Engineer Groupon

description

The recent emergence of the Software Craftsmanship movement in the last decade has been accompanied with quite a bit of confusion on what the movement is exactly about and whether it adds any value beyond previous software development movements, such as Agile and Software Engineering. In this short talk, Andy Maleh will define Software Craftsmanship, compare and contrast to Software Engineering, and provide examples on how both disciplines are playing out at the Groupon software development environment.

Transcript of Software Craftsmanship vs Software Engineering (Lightning Talk)

Page 1: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Craftsmanship    

vs    Software  Engineering  

(lightning  talk) Andy Maleh

Software Engineer Groupon

Page 2: Software Craftsmanship vs Software Engineering (Lightning Talk)

Outline •  Definitions of Software Engineering & Craftsmanship •  Similarity and Difference •  Applications at Groupon

Page 3: Software Craftsmanship vs Software Engineering (Lightning Talk)

Definition •  One of the original definitions of Software

Engineering (NATO SOFTWARE ENGINEERING CONFERENCE 1968): Software engineering is the establishment of sound engineering principles in order to obtain economical software that is reliable and works efficiently on real machines.

Page 4: Software Craftsmanship vs Software Engineering (Lightning Talk)

Definition •  On Software Craftsmanship by Pete McBreen:

Software development is a craft, it blends science, engineering, mathematics, linguistics and art.

Page 5: Software Craftsmanship vs Software Engineering (Lightning Talk)

Definition •  The book The Pragmatic Programmer paints

software craftsmanship as similar to traditional medieval European craftsmanship

Page 6: Software Craftsmanship vs Software Engineering (Lightning Talk)

Similarity •  Shared engineering and craftsmanship goals:

o  Meeting customer needs o  Delivering high quality software o  Ensuring timely release o  Minimizing risk of failure

Page 7: Software Craftsmanship vs Software Engineering (Lightning Talk)

Issues  with  Engineering •  Engineers often seem to believe that they can build

software with complete control and predictability.

Page 8: Software Craftsmanship vs Software Engineering (Lightning Talk)

Issues  with  Engineering •  Engineers often think that one has to learn many

best practices before successfully building software.

Page 9: Software Craftsmanship vs Software Engineering (Lightning Talk)

Issues  with  Engineering •  Some engineers seem to think that best practices

apply in every situation.

Page 10: Software Craftsmanship vs Software Engineering (Lightning Talk)

Mitigation  in  Craftsmanship

•  Craftsmen see software development more as an art that emerges and less as a science that can be controlled.

•  Craftsmen often discover their own best practices.

Page 11: Software Craftsmanship vs Software Engineering (Lightning Talk)

Mitigation  in  Craftsmanship

•  Craftsmen transcend best practices when they do not make sense in a new situation.

•  Craftsmen rely more on gut feeling and intuition to succeed.

Page 12: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Engineering  Revisited

•  Even Tom DeMarco, one of the early key figures in the software engineering world, famous for the quote "You cannot control what you cannot measure", recently renounced the controlled development approach in an article posted by the IEEE, titled "Software Engineering: An Idea Whose Time Has Come and Gone?"

Page 13: Software Craftsmanship vs Software Engineering (Lightning Talk)

Key  Difference •  While engineering is about the macro goal of

delivering economical software that is reliable and efficient, craftsmanship is about mastering the micro process that helps with achieving that macro goal.

Page 14: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Engineering  is  alive  and  WELL  AT  

GROUPON

Page 15: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Engineering  at  Groupon

•  System Health Measurability •  Usability Design and A/B Testing •  Release Engineering •  Performance Engineering

Page 16: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Engineering  at  Groupon

•  Software Architecture •  Verification and Acceptance Testing •  Iterative Development and Velocity Tracking

User  Service Mobile

Website

Order  Service

Deal  Service

Page 17: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  craftsmanship  is  popular  with  GROUPON  

engineers

Page 18: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Craftsmanship    at  Groupon

•  Apprenticeship program •  Inter-branch employee swap •  Pair-Programming •  Internal Training Courses

Page 19: Software Craftsmanship vs Software Engineering (Lightning Talk)

Software  Craftsmanship    at  Groupon

•  High Encouragement to Present at Conferences •  Hosting Conferences and Meetups •  Having a few Master craftsmen around

Page 20: Software Craftsmanship vs Software Engineering (Lightning Talk)

Review •  Definitions of Software Engineering & Craftsmanship •  Similarity and Difference •  Applications at Groupon

Page 21: Software Craftsmanship vs Software Engineering (Lightning Talk)

Contact •  Andy Maleh / Software Engineer / Groupon •  Email: amaleh {at} groupon {dot} com •  Twitter: @AndyMaleh •  Blog: http://andymaleh.blogspot.com