SlideShare uma empresa Scribd logo
1 de 41
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

Mais conteúdo relacionado

Mais procurados

DevOps topologies
DevOps topologiesDevOps topologies
DevOps topologiesSushma
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Kari Kakkonen
 
How to implement DevOps in your Organization
How to implement DevOps in your OrganizationHow to implement DevOps in your Organization
How to implement DevOps in your OrganizationDalibor Blazevic
 
Introduction to Agile software testing
Introduction to Agile software testingIntroduction to Agile software testing
Introduction to Agile software testingKMS Technology
 
API Testing.pptx
API Testing.pptxAPI Testing.pptx
API Testing.pptxGurzuInc
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automationEran Kinsbrunner
 
Software Quality Gate.pptx
Software Quality Gate.pptxSoftware Quality Gate.pptx
Software Quality Gate.pptxssuser702665
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryJoost van der Griendt
 
Modern Software Architecture
Modern Software Architecture Modern Software Architecture
Modern Software Architecture Ahmed Marzouk
 
Lean and Kanban-based Software Development
Lean and Kanban-based Software DevelopmentLean and Kanban-based Software Development
Lean and Kanban-based Software DevelopmentTathagat Varma
 
Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence OCTO Technology
 
Agile - Scrum Presentation
Agile - Scrum PresentationAgile - Scrum Presentation
Agile - Scrum Presentationgihanlsw
 
Methodologies - Transitioning Waterfall to Agile
Methodologies - Transitioning Waterfall to AgileMethodologies - Transitioning Waterfall to Agile
Methodologies - Transitioning Waterfall to AgileTricode (part of Dept)
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAniruddha Chakrabarti
 

Mais procurados (20)

DevOps topologies
DevOps topologiesDevOps topologies
DevOps topologies
 
Software testing
Software testing   Software testing
Software testing
 
Scrum Refresher
Scrum RefresherScrum Refresher
Scrum Refresher
 
Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle Agile Testing – embedding testing into agile software development lifecycle
Agile Testing – embedding testing into agile software development lifecycle
 
How to implement DevOps in your Organization
How to implement DevOps in your OrganizationHow to implement DevOps in your Organization
How to implement DevOps in your Organization
 
Introduction to Agile software testing
Introduction to Agile software testingIntroduction to Agile software testing
Introduction to Agile software testing
 
Agile & Scrum Training
Agile & Scrum TrainingAgile & Scrum Training
Agile & Scrum Training
 
API Testing.pptx
API Testing.pptxAPI Testing.pptx
API Testing.pptx
 
New trends in testing automation
New trends in testing automationNew trends in testing automation
New trends in testing automation
 
Software Quality Gate.pptx
Software Quality Gate.pptxSoftware Quality Gate.pptx
Software Quality Gate.pptx
 
Flusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous DeliveryFlusso Continuous Integration & Continuous Delivery
Flusso Continuous Integration & Continuous Delivery
 
Modern Software Architecture
Modern Software Architecture Modern Software Architecture
Modern Software Architecture
 
Lean and Kanban-based Software Development
Lean and Kanban-based Software DevelopmentLean and Kanban-based Software Development
Lean and Kanban-based Software Development
 
Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence Accelerate : la vitesse conditionne l'excellence
Accelerate : la vitesse conditionne l'excellence
 
Agile Metrics 101
Agile Metrics 101Agile Metrics 101
Agile Metrics 101
 
Agile 101
Agile 101Agile 101
Agile 101
 
requirement documentation
requirement documentation requirement documentation
requirement documentation
 
Agile - Scrum Presentation
Agile - Scrum PresentationAgile - Scrum Presentation
Agile - Scrum Presentation
 
Methodologies - Transitioning Waterfall to Agile
Methodologies - Transitioning Waterfall to AgileMethodologies - Transitioning Waterfall to Agile
Methodologies - Transitioning Waterfall to Agile
 
Agile Practices - eXtreme Programming
Agile Practices - eXtreme ProgrammingAgile Practices - eXtreme Programming
Agile Practices - eXtreme Programming
 

Destaque

Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeFadi Stephan
 
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Lemi Orhan Ergin
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Andy Maleh
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Lemi Orhan Ergin
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipTheo Jungeblut
 
How to build a data warehouse - code.talks 2014
How to build a data warehouse - code.talks 2014How to build a data warehouse - code.talks 2014
How to build a data warehouse - code.talks 2014Martin Loetzsch
 
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Andy Maleh
 
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehRailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehAndy Maleh
 
The Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionThe Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionAndy Maleh
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Andy Maleh
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine PatternsAndy Maleh
 
Test Driven Development for Embedded C
Test Driven Development for Embedded CTest Driven Development for Embedded C
Test Driven Development for Embedded CJames Grenning
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnugoeran
 
A developer's journey to craftsmanship
A developer's journey to craftsmanshipA developer's journey to craftsmanship
A developer's journey to craftsmanshipTekkie Consulting
 
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 MeetingSoftware Craftsmanship - 1 Meeting
Software Craftsmanship - 1 MeetingUri Lavi
 
Software craftsmanshippresentation
Software craftsmanshippresentationSoftware craftsmanshippresentation
Software craftsmanshippresentationMeagan Waller
 
Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing PainsJohn Stevenson
 
Intro to SW craftsmanship
Intro to SW craftsmanshipIntro to SW craftsmanship
Intro to SW craftsmanshipRoy Nitert
 
A case for Code craftsmanship
A case for Code craftsmanship A case for Code craftsmanship
A case for Code craftsmanship Nirmalya Sengupta
 
SW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsSW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsRoy Nitert
 

Destaque (20)

Software Craftsmanship - It's an Imperative
Software Craftsmanship - It's an ImperativeSoftware Craftsmanship - It's an Imperative
Software Craftsmanship - It's an Imperative
 
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
Software Craftsmanship - Building A Culture For The Future (GDG DevFest Istan...
 
Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)Software Craftsmanship vs Software Engineering (Lightning Talk)
Software Craftsmanship vs Software Engineering (Lightning Talk)
 
Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016Test Driven Design - GDG DevFest Istanbul 2016
Test Driven Design - GDG DevFest Istanbul 2016
 
Clean Code III - Software Craftsmanship
Clean Code III - Software CraftsmanshipClean Code III - Software Craftsmanship
Clean Code III - Software Craftsmanship
 
How to build a data warehouse - code.talks 2014
How to build a data warehouse - code.talks 2014How to build a data warehouse - code.talks 2014
How to build a data warehouse - code.talks 2014
 
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
Revised Rails Engine Patterns for Montreal.rb meetup Oct 16, 2012
 
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy MalehRailsConf 2014 Recap at Montreal.rb by Andy Maleh
RailsConf 2014 Recap at Montreal.rb by Andy Maleh
 
The Rails Engine That Could - In Motion
The Rails Engine That Could - In MotionThe Rails Engine That Could - In Motion
The Rails Engine That Could - In Motion
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
 
Rails Engine Patterns
Rails Engine PatternsRails Engine Patterns
Rails Engine Patterns
 
Test Driven Development for Embedded C
Test Driven Development for Embedded CTest Driven Development for Embedded C
Test Driven Development for Embedded C
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnu
 
A developer's journey to craftsmanship
A developer's journey to craftsmanshipA developer's journey to craftsmanship
A developer's journey to craftsmanship
 
Software Craftsmanship - 1 Meeting
Software Craftsmanship - 1 MeetingSoftware Craftsmanship - 1 Meeting
Software Craftsmanship - 1 Meeting
 
Software craftsmanshippresentation
Software craftsmanshippresentationSoftware craftsmanshippresentation
Software craftsmanshippresentation
 
Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing Pains
 
Intro to SW craftsmanship
Intro to SW craftsmanshipIntro to SW craftsmanship
Intro to SW craftsmanship
 
A case for Code craftsmanship
A case for Code craftsmanship A case for Code craftsmanship
A case for Code craftsmanship
 
SW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded SystemsSW Craftsmanship in Sioux Embedded Systems
SW Craftsmanship in Sioux Embedded Systems
 

Semelhante a Software Craftsmanship VS Software Engineering

An Agile Development Primer
An Agile Development PrimerAn Agile Development Primer
An Agile Development PrimerDerek Winter
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developerjeetendra mandal
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile waveNiels Bech Nielsen
 
Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, VarbergFredrik Wendt
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs CraftMagenTys
 
Agile software development
Agile software development Agile software development
Agile software development saurabh goel
 
How to become a remote web developer
How to become a remote web developerHow to become a remote web developer
How to become a remote web developerTuring.com
 
Release Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack ProjectRelease Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack ProjectRainya Mosher
 
Y3 ICT Lecture 6 Planning
Y3 ICT Lecture 6 PlanningY3 ICT Lecture 6 Planning
Y3 ICT Lecture 6 PlanningMiles Berry
 
Craftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møderCraftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møderBestBrains
 
Craftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-mødeCraftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-mødeRikke Veng Petersen
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaSynergetics India
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics IndiaSynergetics India
 
Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaRuchi
 
Prototyping & User Testing
Prototyping & User TestingPrototyping & User Testing
Prototyping & User TestingLaura Levisay
 

Semelhante a Software Craftsmanship VS Software Engineering (20)

The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Introduction
IntroductionIntroduction
Introduction
 
Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
An Agile Development Primer
An Agile Development PrimerAn Agile Development Primer
An Agile Development Primer
 
How to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software DeveloperHow to become a Software Engineer Carrier Path for Software Developer
How to become a Software Engineer Carrier Path for Software Developer
 
Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Agile Injection, Varberg
Agile Injection, VarbergAgile Injection, Varberg
Agile Injection, Varberg
 
Product Vs Craft
Product Vs CraftProduct Vs Craft
Product Vs Craft
 
Agile software development
Agile software development Agile software development
Agile software development
 
How to become a remote web developer
How to become a remote web developerHow to become a remote web developer
How to become a remote web developer
 
Release Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack ProjectRelease Engineering Downstream of an OpenStack Project
Release Engineering Downstream of an OpenStack Project
 
Poor Man's Kanban
Poor Man's KanbanPoor Man's Kanban
Poor Man's Kanban
 
Y3 ICT Lecture 6 Planning
Y3 ICT Lecture 6 PlanningY3 ICT Lecture 6 Planning
Y3 ICT Lecture 6 Planning
 
Craftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møderCraftsmanship 2016 -BestBrains Café-møder
Craftsmanship 2016 -BestBrains Café-møder
 
Craftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-mødeCraftsmanship 2016 - BestbBrains Café-møde
Craftsmanship 2016 - BestbBrains Café-møde
 
Induction Plan - Synergetics India
Induction Plan - Synergetics IndiaInduction Plan - Synergetics India
Induction Plan - Synergetics India
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - Synergetics India
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics India
 
Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics India
 
Prototyping & User Testing
Prototyping & User TestingPrototyping & User Testing
Prototyping & User Testing
 

Mais de Andy Maleh

Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalAndy Maleh
 
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupBecoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupAndy Maleh
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...Andy Maleh
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in RubyAndy Maleh
 
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Andy Maleh
 
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbUltra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbAndy Maleh
 
Software Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsSoftware Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsAndy Maleh
 
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsSoftware Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsAndy Maleh
 
The Rails Engine That Could
The Rails Engine That CouldThe Rails Engine That Could
The Rails Engine That CouldAndy Maleh
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsAndy Maleh
 
Simplifying Desktop Development With Glimmer
Simplifying Desktop Development With GlimmerSimplifying Desktop Development With Glimmer
Simplifying Desktop Development With GlimmerAndy Maleh
 

Mais de Andy Maleh (11)

Fukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - OpalFukuoka Ruby Award 2023 - Opal
Fukuoka Ruby Award 2023 - Opal
 
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby MeetupBecoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
Becoming a SOC2 Ruby Shop - Montreal.rb November, 5, 2022 Ruby Meetup
 
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ... Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
Montreal.rb 2022-10-05 - Glimmer DSL for SWT - Ruby Desktop Development GUI ...
 
How I Built My Code Editor in Ruby
How I Built My Code Editor in RubyHow I Built My Code Editor in Ruby
How I Built My Code Editor in Ruby
 
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014Ultra Light and Maintainable Rails Wizards at RailsConf 2014
Ultra Light and Maintainable Rails Wizards at RailsConf 2014
 
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rbUltra Light and Maintainable Wizards in Rails at Montreal.rb
Ultra Light and Maintainable Wizards in Rails at Montreal.rb
 
Software Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for RubyistsSoftware Design Trilogy Part II - Design Patterns for Rubyists
Software Design Trilogy Part II - Design Patterns for Rubyists
 
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for RubyistsSoftware Design Trilogy Part I - Responsibility Driven Design for Rubyists
Software Design Trilogy Part I - Responsibility Driven Design for Rubyists
 
The Rails Engine That Could
The Rails Engine That CouldThe Rails Engine That Could
The Rails Engine That Could
 
How I Learned To Apply Design Patterns
How I Learned To Apply Design PatternsHow I Learned To Apply Design Patterns
How I Learned To Apply Design Patterns
 
Simplifying Desktop Development With Glimmer
Simplifying Desktop Development With GlimmerSimplifying Desktop Development With Glimmer
Simplifying Desktop Development With Glimmer
 

Último

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Último (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

Software Craftsmanship VS Software Engineering

  • 1. SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon
  • 3. 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.
  • 4. 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.
  • 5. 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.
  • 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 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 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.
  • 15.
  • 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 IS ALIVE 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.
  • 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. Q & A
  • 39. 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
  • 40. 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
  • 41. CONTACT Andy Maleh / Software Engineer / Groupon Email: amaleh {at} groupon {dot} com Twitter: @AndyMaleh Blog: http://andymaleh.blogspot.com