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

           Website
                                        Deal Service

                                Order Service
           Mobile
                         User 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
SOFTWARE CRAFTSMANSHIP
     AT GROUPON

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
APPRENTICESHIP AT
    GROUPON
SOFTWARE
         APPRENTICESHIP
          AT GROUPON

Potential over Credential

6 Months with 3 milestones

A mentor oversees apprentice entire period
SOFTWARE
          APPRENTICESHIP
           AT 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
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

Software Craftsmanship VS Software Engineering

  • 1.
    SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon
  • 2.
  • 3.
    DEFINITION One of theoriginal 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.
  • 4.
    DEFINITION On Software Craftsmanshipby 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.
  • 5.
    DEFINITION The book ThePragmatic 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.
  • 6.
    SIMILARITY Shared engineering andcraftsmanship 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 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.
  • 8.
    ISSUES WITH ENGINEERING Engineers often think that one has to learn all, most, or many best practices before successfully building software.
  • 9.
    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.
  • 10.
    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.
  • 11.
    MITIGATION IN CRAFTSMANSHIP Craftsmen often discover their own best practices from their experiences, which often better fit their situations.
  • 12.
    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.
  • 13.
    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?"
  • 14.
    DIFFERENCE While engineering isabout 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.
  • 16.
    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
  • 17.
    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
  • 18.
    SOFTWARE ENGINEERING ISALIVE AND WELL AT GROUPON
  • 19.
    SOFTWARE ENGINEERING AT GROUPON • System Health Measurability
  • 20.
    SOFTWARE ENGINEERING AT GROUPON • Usability Design and A/B Testing
  • 21.
    SOFTWARE ENGINEERING AT GROUPON • Release Engineering
  • 22.
    SOFTWARE ENGINEERING AT GROUPON • Performance Engineering
  • 23.
    SOFTWARE ENGINEERING AT GROUPON Software Architecture Website Deal Service Order Service Mobile User Service
  • 24.
    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
  • 25.
    SOFTWARE ENGINEERING AT GROUPON Iterative Development and Velocity Tracking
  • 26.
    SOFTWARE CRAFTSMANSHIP IS POPULAR WITH GROUPON ENGINEERS
  • 27.
    SOFTWARE CRAFTSMANSHIP AT GROUPON Apprenticeship program
  • 28.
    SOFTWARE CRAFTSMANSHIP AT GROUPON Inter-branch employee swap
  • 29.
    SOFTWARE CRAFTSMANSHIP AT GROUPON Pair-Programming
  • 30.
    SOFTWARE CRAFTSMANSHIP AT GROUPON Internal Training Courses Often given by Noel Rappin Author of Professional Ruby on Rails and Rails Test Prescriptions
  • 31.
    SOFTWARE CRAFTSMANSHIP AT GROUPON High Encouragement to Present at Conferences • Check out my talk Rails Engines Patterns at RailsConf 2012 on Apr 23, 2012
  • 32.
    SOFTWARE CRAFTSMANSHIP AT GROUPON Hosting Conferences and Meetups • Weekly GeekFest Lunch (public) • Weekly Brown Bag (internal) • Annual Groupon University (internal)
  • 33.
    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.
  • 34.
  • 35.
    SOFTWARE APPRENTICESHIP AT GROUPON Potential over Credential 6 Months with 3 milestones A mentor oversees apprentice entire period
  • 36.
    SOFTWARE APPRENTICESHIP AT 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
  • 37.
  • 38.
  • 39.
    REFERENCES Work at Obtivaand 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
  • 40.
    GROUPON IS HIRING Potentialover 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
  • 41.
    CONTACT Andy Maleh /Software Engineer / Groupon Email: amaleh {at} groupon {dot} com Twitter: @AndyMaleh Blog: http://andymaleh.blogspot.com