software craftsmanship vs software engineering

Post on 06-May-2015

5.518 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

User Service

Mobile

Website

Order Service

Deal 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

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 CRAFTSMANSHIP AT GROUPON

SOFTWARE APPRENTICESHIP AT

GROUPON

Potential over Credential

6 Months with 3 milestones

A mentor oversees apprentice entire

period

SOFTWARE APPRENTICESHIPAT 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

SOFTWARE APPRENTICESHIPAT GROUPON

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

top related