software craftsmanship vs software engineering

41
SOFTWARE CRAFTSMANSHIP VS SOFTWARE ENGINEERING Andy Maleh Software Engineer Groupon

Upload: andymaleh

Post on 06-May-2015

5.518 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP VS

SOFTWARE ENGINEERING

Andy Maleh

Software Engineer

Groupon

Page 2: Software Craftsmanship VS Software Engineering

OUTLINE

Definition

Similarities and Differences

Applications at Groupon

Page 3: Software Craftsmanship VS Software Engineering

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.

Page 4: Software Craftsmanship VS Software Engineering

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.

Page 5: Software Craftsmanship VS Software Engineering

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.

Page 6: Software Craftsmanship VS Software Engineering

SIMILARITY

Shared engineering and

craftsmanship goals:• Meeting customer needs• Delivering high quality software• Ensuring timely release• Minimizing risk of failure

Page 7: Software Craftsmanship VS Software Engineering

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.

Page 8: Software Craftsmanship VS Software Engineering

ISSUES WITH ENGINEERING

Engineers often think that one has to

learn all, most, or many best practices

before successfully building software.

Page 9: Software Craftsmanship VS Software Engineering

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.

Page 10: Software Craftsmanship VS Software Engineering

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.

Page 11: Software Craftsmanship VS Software Engineering

MITIGATION IN CRAFTSMANSHIP

Craftsmen often discover their own

best practices from their experiences,

which often better fit their situations.

Page 12: Software Craftsmanship VS Software Engineering

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.

Page 13: Software Craftsmanship VS Software Engineering

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?"

Page 14: Software Craftsmanship VS Software Engineering

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.

Page 15: Software Craftsmanship VS Software Engineering
Page 16: Software Craftsmanship VS Software Engineering

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

Page 17: Software Craftsmanship VS Software Engineering

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

Page 18: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING IS ALIVE AND WELL AT GROUPON

Page 19: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

• System Health Measurability

Page 20: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

• Usability Design and A/B Testing

Page 21: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

• Release Engineering

Page 22: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

• Performance Engineering

Page 23: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

Software Architecture

User Service

Mobile

Website

Order Service

Deal Service

Page 24: Software Craftsmanship VS Software Engineering

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

Page 25: Software Craftsmanship VS Software Engineering

SOFTWARE ENGINEERING AT GROUPON

Iterative Development and Velocity

Tracking

Page 26: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP IS POPULAR WITH GROUPON

ENGINEERS

Page 27: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP AT GROUPON

Apprenticeship program

Page 28: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP AT GROUPON

Inter-branch employee swap

Page 29: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP AT GROUPON

Pair-Programming

Page 30: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP AT GROUPON

Internal Training Courses

Often given by Noel Rappin

Author of Professional Ruby

on Rails and

Rails Test Prescriptions

Page 31: Software Craftsmanship VS Software Engineering

SOFTWARE CRAFTSMANSHIP AT GROUPON

High Encouragement to Present at

Conferences• Check out my talk Rails Engines

Patterns at RailsConf 2012 on Apr 23, 2012

Page 32: Software Craftsmanship VS Software Engineering

Hosting Conferences and Meetups• Weekly GeekFest Lunch (public)• Weekly Brown Bag (internal)• Annual Groupon University (internal)

SOFTWARE CRAFTSMANSHIP AT GROUPON

Page 33: Software Craftsmanship VS Software Engineering

Having a few Masters around• Michael Feathers, author of Working

Effectively with Legacy Code, and alumni of Uncle Bob’s Object Mentor software consultancy.

• Aaron Bedra, author of Programming Clojure, and contributor to the Clojure programming language.

SOFTWARE CRAFTSMANSHIP AT GROUPON

Page 34: Software Craftsmanship VS Software Engineering

SOFTWARE APPRENTICESHIP AT

GROUPON

Page 35: Software Craftsmanship VS Software Engineering

Potential over Credential

6 Months with 3 milestones

A mentor oversees apprentice entire

period

SOFTWARE APPRENTICESHIPAT GROUPON

Page 36: Software Craftsmanship VS Software Engineering

Apprentice pair-programs with different people

in different teams

Apprentice spends about 50% of his time on his

personal project

Apprentice presents his personal project to

senior developers (journeymen) at the milestones

SOFTWARE APPRENTICESHIPAT GROUPON

Page 37: Software Craftsmanship VS Software Engineering

Q & A

Page 38: Software Craftsmanship VS Software Engineering

REVIEW

Definition

Similarity and Difference

Applications at Groupon

Page 39: Software Craftsmanship VS Software Engineering

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

Page 40: Software Craftsmanship VS Software Engineering

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

Page 41: Software Craftsmanship VS Software Engineering

CONTACT

Andy Maleh / Software Engineer /

Groupon

Email:

amaleh {at} groupon {dot} com

Twitter: @AndyMaleh

Blog: http://andymaleh.blogspot.com