SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Agile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesAgile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesOnur Demir
 
Agile Pricing Models (webinar by Luxoft Agile Practice)
Agile Pricing Models (webinar by Luxoft Agile Practice)Agile Pricing Models (webinar by Luxoft Agile Practice)
Agile Pricing Models (webinar by Luxoft Agile Practice)Sergey Prokhorenko
 
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupComparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupBernd Schiffer
 
Agile Process Introduction
Agile Process IntroductionAgile Process Introduction
Agile Process IntroductionNguyen Hai
 
Agile transformation best practices
Agile transformation best practicesAgile transformation best practices
Agile transformation best practicesAllyson Chiarini
 
The 10 Steps to Becoming a Great Agile Coach
The 10 Steps to Becoming a Great Agile CoachThe 10 Steps to Becoming a Great Agile Coach
The 10 Steps to Becoming a Great Agile CoachLeadingAgile
 
Scaling an Engineering Team
Scaling an Engineering TeamScaling an Engineering Team
Scaling an Engineering TeamDashlane
 
Low code platform and Outsystems
Low code platform and Outsystems Low code platform and Outsystems
Low code platform and Outsystems Dzung Nguyen
 
Agile Assessment Version 1.0
Agile Assessment Version 1.0Agile Assessment Version 1.0
Agile Assessment Version 1.0Ciprian Mester
 
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Atlassian
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practicesjackcrews
 
Scrum and the agile development process
Scrum and the agile development processScrum and the agile development process
Scrum and the agile development processjhericks
 
Azure Boards.pptx
Azure Boards.pptxAzure Boards.pptx
Azure Boards.pptxNitin Sethi
 
{Re}designing a Developer Portal
{Re}designing a Developer Portal{Re}designing a Developer Portal
{Re}designing a Developer PortalPronovix
 
Agile software development
Agile software developmentAgile software development
Agile software developmentRajesh Piryani
 

Tendances (20)

Agile Requirements Gathering Techniques
Agile Requirements Gathering TechniquesAgile Requirements Gathering Techniques
Agile Requirements Gathering Techniques
 
Agile Pricing Models (webinar by Luxoft Agile Practice)
Agile Pricing Models (webinar by Luxoft Agile Practice)Agile Pricing Models (webinar by Luxoft Agile Practice)
Agile Pricing Models (webinar by Luxoft Agile Practice)
 
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupComparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
 
Agile Process Introduction
Agile Process IntroductionAgile Process Introduction
Agile Process Introduction
 
Agile transformation best practices
Agile transformation best practicesAgile transformation best practices
Agile transformation best practices
 
The 10 Steps to Becoming a Great Agile Coach
The 10 Steps to Becoming a Great Agile CoachThe 10 Steps to Becoming a Great Agile Coach
The 10 Steps to Becoming a Great Agile Coach
 
Scaling an Engineering Team
Scaling an Engineering TeamScaling an Engineering Team
Scaling an Engineering Team
 
Lean Product Roadmaps
Lean Product RoadmapsLean Product Roadmaps
Lean Product Roadmaps
 
Low code platform and Outsystems
Low code platform and Outsystems Low code platform and Outsystems
Low code platform and Outsystems
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Agile Assessment Version 1.0
Agile Assessment Version 1.0Agile Assessment Version 1.0
Agile Assessment Version 1.0
 
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
Agile Values, Principles and Practices
Agile Values, Principles and PracticesAgile Values, Principles and Practices
Agile Values, Principles and Practices
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Scrum and the agile development process
Scrum and the agile development processScrum and the agile development process
Scrum and the agile development process
 
Azure Boards.pptx
Azure Boards.pptxAzure Boards.pptx
Azure Boards.pptx
 
{Re}designing a Developer Portal
{Re}designing a Developer Portal{Re}designing a Developer Portal
{Re}designing a Developer Portal
 
Agile software development
Agile software developmentAgile software development
Agile software development
 
Scrum Process
Scrum ProcessScrum Process
Scrum Process
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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
 

Plus 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
 

Plus 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
 

Dernier

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbuapidays
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
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
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 

Dernier (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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
 
+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...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 

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