Software Craftsmanship vs Software Engineering (Lightning Talk)
-
Upload
andymaleh -
Category
Technology
-
view
6.590 -
download
3
description
Transcript of Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship
vs Software Engineering
(lightning talk) Andy Maleh
Software Engineer Groupon
Outline • Definitions of Software Engineering & Craftsmanship • Similarity and Difference • Applications at Groupon
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.
Definition • On Software Craftsmanship by Pete McBreen:
Software development is a craft, it blends science, engineering, mathematics, linguistics and art.
Definition • The book The Pragmatic Programmer paints
software craftsmanship as similar to traditional medieval European craftsmanship
Similarity • Shared engineering and craftsmanship goals:
o Meeting customer needs o Delivering high quality software o Ensuring timely release o Minimizing risk of failure
Issues with Engineering • Engineers often seem to believe that they can build
software with complete control and predictability.
Issues with Engineering • Engineers often think that one has to learn many
best practices before successfully building software.
Issues with Engineering • Some engineers seem to think that best practices
apply in every situation.
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.
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.
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?"
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.
Software Engineering is alive and WELL AT
GROUPON
Software Engineering at Groupon
• System Health Measurability • Usability Design and A/B Testing • Release Engineering • Performance Engineering
Software Engineering at Groupon
• Software Architecture • Verification and Acceptance Testing • Iterative Development and Velocity Tracking
User Service Mobile
Website
Order Service
Deal Service
Software craftsmanship is popular with GROUPON
engineers
Software Craftsmanship at Groupon
• Apprenticeship program • Inter-branch employee swap • Pair-Programming • Internal Training Courses
Software Craftsmanship at Groupon
• High Encouragement to Present at Conferences • Hosting Conferences and Meetups • Having a few Master craftsmen around
Review • Definitions of Software Engineering & Craftsmanship • Similarity and Difference • Applications at Groupon
Contact • Andy Maleh / Software Engineer / Groupon • Email: amaleh {at} groupon {dot} com • Twitter: @AndyMaleh • Blog: http://andymaleh.blogspot.com