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

Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing ProcessIntetics
 
Agile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingAgile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingDimitri Ponomareff
 
DevSecOps and the CI/CD Pipeline
 DevSecOps and the CI/CD Pipeline DevSecOps and the CI/CD Pipeline
DevSecOps and the CI/CD PipelineJames Wickett
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesAshutosh Agarwal
 
Value stream mapping for DevOps
Value stream mapping for DevOpsValue stream mapping for DevOps
Value stream mapping for DevOpsMarc Hornbeek
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesMike Clement
 
The Four Keys - Measuring DevOps Success
The Four Keys - Measuring DevOps SuccessThe Four Keys - Measuring DevOps Success
The Four Keys - Measuring DevOps SuccessDina Graves Portman
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with GherkinChristian Hassa
 
#T3SCRUM: 12 principles of agile
#T3SCRUM: 12 principles of agile#T3SCRUM: 12 principles of agile
#T3SCRUM: 12 principles of agileak-itconsulting.com
 
Exin Agile Scrum Master - Course Preview
Exin Agile Scrum Master - Course PreviewExin Agile Scrum Master - Course Preview
Exin Agile Scrum Master - Course PreviewInvensis Learning
 
Code Review Best Practices
Code Review Best PracticesCode Review Best Practices
Code Review Best PracticesTrisha Gee
 
Agile Transformation and Cultural Change
 Agile Transformation and Cultural Change Agile Transformation and Cultural Change
Agile Transformation and Cultural ChangeJohnny Ordóñez
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in PracticeSteven Mak
 
Crushed by technical debt
Crushed by technical debtCrushed by technical debt
Crushed by technical debtScott W. Ambler
 
A Crash Course in Building Site Reliability
A Crash Course in Building Site ReliabilityA Crash Course in Building Site Reliability
A Crash Course in Building Site ReliabilityAcquia
 
Agile Placemat v9
Agile Placemat v9Agile Placemat v9
Agile Placemat v9Chris Webb
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test AutomationNaveen Kumar Singh
 

Mais procurados (20)

Agile Testing Process
Agile Testing ProcessAgile Testing Process
Agile Testing Process
 
Agile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated TestingAgile Testing Framework - The Art of Automated Testing
Agile Testing Framework - The Art of Automated Testing
 
DevSecOps and the CI/CD Pipeline
 DevSecOps and the CI/CD Pipeline DevSecOps and the CI/CD Pipeline
DevSecOps and the CI/CD Pipeline
 
Overview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practicesOverview of Site Reliability Engineering (SRE) & best practices
Overview of Site Reliability Engineering (SRE) & best practices
 
Value stream mapping for DevOps
Value stream mapping for DevOpsValue stream mapping for DevOps
Value stream mapping for DevOps
 
Software Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code GamesSoftware Craftsmanship and Agile Code Games
Software Craftsmanship and Agile Code Games
 
Agile 101
Agile 101Agile 101
Agile 101
 
Agile Methodology ppt
Agile Methodology pptAgile Methodology ppt
Agile Methodology ppt
 
The Four Keys - Measuring DevOps Success
The Four Keys - Measuring DevOps SuccessThe Four Keys - Measuring DevOps Success
The Four Keys - Measuring DevOps Success
 
Specification-By-Example with Gherkin
Specification-By-Example with GherkinSpecification-By-Example with Gherkin
Specification-By-Example with Gherkin
 
#T3SCRUM: 12 principles of agile
#T3SCRUM: 12 principles of agile#T3SCRUM: 12 principles of agile
#T3SCRUM: 12 principles of agile
 
Exin Agile Scrum Master - Course Preview
Exin Agile Scrum Master - Course PreviewExin Agile Scrum Master - Course Preview
Exin Agile Scrum Master - Course Preview
 
Code Review Best Practices
Code Review Best PracticesCode Review Best Practices
Code Review Best Practices
 
Agile Transformation and Cultural Change
 Agile Transformation and Cultural Change Agile Transformation and Cultural Change
Agile Transformation and Cultural Change
 
ATDD in Practice
ATDD in PracticeATDD in Practice
ATDD in Practice
 
Crushed by technical debt
Crushed by technical debtCrushed by technical debt
Crushed by technical debt
 
A Crash Course in Building Site Reliability
A Crash Course in Building Site ReliabilityA Crash Course in Building Site Reliability
A Crash Course in Building Site Reliability
 
Agile Placemat v9
Agile Placemat v9Agile Placemat v9
Agile Placemat v9
 
Agile Testing and Test Automation
Agile Testing and Test AutomationAgile Testing and Test Automation
Agile Testing and Test Automation
 
Agile 101
Agile 101Agile 101
Agile 101
 

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
 
Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaRuchi
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics IndiaSynergetics India
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaSynergetics India
 
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
 
Inductionproposal - Synergetics India
Inductionproposal - Synergetics IndiaInductionproposal - Synergetics India
Inductionproposal - Synergetics India
 
Induction Plan - Synergetics India
Induction Plan - Synergetics IndiaInduction Plan - Synergetics India
Induction Plan - Synergetics India
 
Productive Developer - Synergetics India
Productive Developer - Synergetics IndiaProductive Developer - Synergetics India
Productive Developer - Synergetics India
 
Induction Proposal - Synergetics India
Induction Proposal - Synergetics IndiaInduction Proposal - Synergetics India
Induction Proposal - 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

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 

Último (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 

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