software craftsmanship vs software engineering
TRANSCRIPT
SOFTWARE CRAFTSMANSHIP VS
SOFTWARE ENGINEERING
Andy Maleh
Software Engineer
Groupon
OUTLINE
Definition
Similarities and Differences
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:
Becoming a good software developer involves a
lot more than just learning to write programs.
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 where an
apprentice learns a craft under the guidance of a
master gradually climbing his way into becoming a
skilled journeyman, eventually branching off on his
own and working towards mastery of the craft.
SIMILARITY
Shared 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
completely streamline the process of building
software, with complete control and predictability.
And, this belief seems to be process independent.
In other words, even engineers who are strong
advocates of agile often believe that if you do a, b,
and c, you will get the results you want.
ISSUES WITH ENGINEERING
Engineers often think that one has to
learn all, most, or many best practices
before successfully building software.
ISSUES WITH ENGINEERING
Some engineers seem to think that best
practices apply everywhere or in every
situation. More experienced engineers
are aware that different contexts require
different best practices though.
MITIGATION IN CRAFTSMANSHIP
Craftsmen see software development
more as an art that emerges and less as a
science that can be controlled, so they let
time and experience shape up their skills
in successfully completing software
projects.
MITIGATION IN CRAFTSMANSHIP
Craftsmen often discover their own
best practices from their experiences,
which often better fit their situations.
MITIGATION IN CRAFTSMANSHIP
Craftsmen do not religiously follow even
their own best practices, often
transcending them when they do not make
sense in a new situation anymore. They
thus rely more on their intuition and gut
feelings 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?"
DIFFERENCE
While engineering is about the macro
goal of delivering economical software
that is reliable and efficient,
craftsmanship is about the micro
process of mastering the skills to
achieve that macro goal.
ENGINEERING'S GOT A BAD REP
Unfortunately, engineering got some
undeserved negative 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
meaning behind them
Accepting education from the media instead of
digging for knowledge 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 GROUPON
Software Architecture
User Service
Mobile
Website
Order Service
Deal Service
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
SOFTWARE ENGINEERING AT GROUPON
Iterative Development and Velocity
Tracking
SOFTWARE CRAFTSMANSHIP IS POPULAR WITH GROUPON
ENGINEERS
SOFTWARE CRAFTSMANSHIP AT GROUPON
Apprenticeship program
SOFTWARE CRAFTSMANSHIP AT GROUPON
Inter-branch employee swap
SOFTWARE CRAFTSMANSHIP AT GROUPON
Pair-Programming
SOFTWARE CRAFTSMANSHIP AT GROUPON
Internal Training Courses
Often given by Noel Rappin
Author of Professional Ruby
on Rails and
Rails Test Prescriptions
SOFTWARE CRAFTSMANSHIP AT GROUPON
High Encouragement to Present at
Conferences• Check out my talk Rails Engines
Patterns at RailsConf 2012 on Apr 23, 2012
Hosting Conferences and Meetups• Weekly GeekFest Lunch (public)• Weekly Brown Bag (internal)• Annual Groupon University (internal)
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.
SOFTWARE CRAFTSMANSHIP AT GROUPON
SOFTWARE APPRENTICESHIP AT
GROUPON
Potential over Credential
6 Months with 3 milestones
A mentor oversees apprentice entire
period
SOFTWARE APPRENTICESHIPAT GROUPON
Apprentice pair-programs with different people
in different teams
Apprentice spends about 50% of his time on his
personal project
Apprentice presents his personal project to
senior developers (journeymen) at the milestones
SOFTWARE APPRENTICESHIPAT GROUPON
Q & A
REVIEW
Definition
Similarity and Difference
Applications at Groupon
REFERENCES
Work at Obtiva and Groupon
The Pragmatic Programmer book by Andy Hunt
and Dave Thomas
Software Craftsmanship book by Pete McBreen
Software Apprenticeship Patterns book by
Dave Hoover and Adewale Oshineye
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
and partner with business on delivering value
CONTACT
Andy Maleh / Software Engineer /
Groupon
Email:
amaleh {at} groupon {dot} com
Twitter: @AndyMaleh
Blog: http://andymaleh.blogspot.com