Building a site for people with big imaginations

Post on 06-Sep-2014

3,937 views 2 download

Tags:

description

The processes and techniques used at RedBubble

transcript

BUILDING A SITE FOR PEOPLE WITH BIG

IMAGINATIONSRedBubble

Mark Mansour

Software DeveloperHead of Technology at RedBubbleAgile and Iterative development proponent

Who are you?

How hard can it be to build a web app?

Did not have a shippable productCode was over engineeredFeatures were over specifiedToo much administration

Web App Development

what makes web app dev hard?

Web App Development

not sure

what makes web app dev hard?

Web App Development

not sure

can’t say

what makes web app dev hard?

Web App Development

not sure

can’t say

details evolve

what makes web app dev hard?

Web App Development

not sure

can’t say

details evolve

complex details

what makes web app dev hard?

Web App Development

not sure

can’t say

details evolve

complex details

change direction

what makes web app dev hard?

New Product Development

not sure

can’t say

details evolve

complex details

change direction

What is the best way to build a new product?

1. Good People

communicateprovide solutionsrespectfulcan learnmanagers getting out of the wayorg encourages gtd and gtr

1. Good People

communicateprovide solutionsrespectfulcan learnmanagers getting out of the wayorg encourages gtd and gtr

2. Good Tools

2. Good Tools

Communication

2. Good Tools

Communication

Development

2. Good Tools

Communication

Development

Testing

2. Good Tools

Communication

Development

Testing

Management

Communication Tools

Campfire and IRC are real-time group collab toolsWikisIM is just a must

Communication Tools

Development Tools

Version Control System - Subversion - UNDO + many programmersAutomation tools - rake, shell scripts, make, ant, Capistrano - reduce chances of things going wrongDatabase Refactoring - Rails migrations, LiquidBase

Development Tools

Version Control System

Version Control System - Subversion - UNDO + many programmersAutomation tools - rake, shell scripts, make, ant, Capistrano - reduce chances of things going wrongDatabase Refactoring - Rails migrations, LiquidBase

Development Tools

Version Control System

Automation tools

Version Control System - Subversion - UNDO + many programmersAutomation tools - rake, shell scripts, make, ant, Capistrano - reduce chances of things going wrongDatabase Refactoring - Rails migrations, LiquidBase

Development Tools

Version Control System

Automation tools

Database Refactoring

Version Control System - Subversion - UNDO + many programmersAutomation tools - rake, shell scripts, make, ant, Capistrano - reduce chances of things going wrongDatabase Refactoring - Rails migrations, LiquidBase

Testing Tools

Always in maintenance modetests automate the vefication processtests make you brave (to change your code)

Tests must pass before checking insave embarrasement

Testing Tools

Unit testing

Always in maintenance modetests automate the vefication processtests make you brave (to change your code)

Tests must pass before checking insave embarrasement

Testing Tools

Unit testing

Functional testing

Always in maintenance modetests automate the vefication processtests make you brave (to change your code)

Tests must pass before checking insave embarrasement

Testing Tools

Unit testing

Functional testing

Continuous Integration

Always in maintenance modetests automate the vefication processtests make you brave (to change your code)

Tests must pass before checking insave embarrasement

Management Tools

Management Tools

What

Issues - Bugs and new features

Planning

Management Tools

What

Issues - Bugs and new features

Planning

How

JIRA, Trac, Spreadsheet

Management - Story Board

What is a story?

What is a story?

Features, fixes or nonfunctional requirementsAs an <actor> <action>i.e. As a User I can view my account balancei.e. As an Administrator I can delete a userNot over specifiedEstimated (1 hours -> 16 hours @ RB, but 1-21 days at other places)

Not over specified * oral communication is preferred so there isn’t a bunch of details in the story card, but a summary and a reference to other documentation if what you are implementing is detailed (like a tax schedule) - the card donor (owner) should be available for questions

Estimate * Group estimates are good - whole team including customer. It doesn’t take long until everyone understands the estimation process

Embrace Change * Customers change their mind as they learn more so embrace it - if it impacts the estimate then tell them and make them choose what it replaces

What is a story?

Features, fixes or nonfunctional requirementsAs an <actor> <action>i.e. As a User I can view my account balancei.e. As an Administrator I can delete a userNot over specifiedEstimated (1 hours -> 16 hours @ RB, but 1-21 days at other places)

Not over specified * oral communication is preferred so there isn’t a bunch of details in the story card, but a summary and a reference to other documentation if what you are implementing is detailed (like a tax schedule) - the card donor (owner) should be available for questions

Estimate * Group estimates are good - whole team including customer. It doesn’t take long until everyone understands the estimation process

Embrace Change * Customers change their mind as they learn more so embrace it - if it impacts the estimate then tell them and make them choose what it replaces

What is a story?

Features, fixes or nonfunctional requirementsAs an <actor> <action>i.e. As a User I can view my account balancei.e. As an Administrator I can delete a userNot over specifiedEstimated (1 hours -> 16 hours @ RB, but 1-21 days at other places)

Not over specified * oral communication is preferred so there isn’t a bunch of details in the story card, but a summary and a reference to other documentation if what you are implementing is detailed (like a tax schedule) - the card donor (owner) should be available for questions

Estimate * Group estimates are good - whole team including customer. It doesn’t take long until everyone understands the estimation process

Embrace Change * Customers change their mind as they learn more so embrace it - if it impacts the estimate then tell them and make them choose what it replaces

What is a story?

Features, fixes or nonfunctional requirementsAs an <actor> <action>i.e. As a User I can view my account balancei.e. As an Administrator I can delete a userNot over specifiedEstimated (1 hours -> 16 hours @ RB, but 1-21 days at other places)

Not over specified * oral communication is preferred so there isn’t a bunch of details in the story card, but a summary and a reference to other documentation if what you are implementing is detailed (like a tax schedule) - the card donor (owner) should be available for questions

Estimate * Group estimates are good - whole team including customer. It doesn’t take long until everyone understands the estimation process

Embrace Change * Customers change their mind as they learn more so embrace it - if it impacts the estimate then tell them and make them choose what it replaces

What is a story?

Features, fixes or nonfunctional requirementsAs an <actor> <action>i.e. As a User I can view my account balancei.e. As an Administrator I can delete a userNot over specifiedEstimated (1 hours -> 16 hours @ RB, but 1-21 days at other places)

Not over specified * oral communication is preferred so there isn’t a bunch of details in the story card, but a summary and a reference to other documentation if what you are implementing is detailed (like a tax schedule) - the card donor (owner) should be available for questions

Estimate * Group estimates are good - whole team including customer. It doesn’t take long until everyone understands the estimation process

Embrace Change * Customers change their mind as they learn more so embrace it - if it impacts the estimate then tell them and make them choose what it replaces

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

Management - Story Board

Story Board - what we are doing this week • Purpose: it is a communication tool - not just for the team but for anyone who is interested. • It does not have all the details - see issue tracker or talk to customer • 3 columns - todo, doing, done • all items start in todo and are order, in priority, from top to bottom • when someone picks a story, they move it to ‘doing’ and put their avatar next to it • while stories are being worked on the customer is asked if they are getting what they expect - constant feedback. Customers love it. • A story can move to done when - a) another developer has reviewed the work; and b) when the customer has seen the code working on a demo environment

Overflow

3. Simple Development Process

KISSAgile and Iterative - Scrum and XPProcess keeps everyone on the same page

4. Ship it!

If you don’t ship it, it is just an elaborate art project

Ship the simplest thing possible (at first)* RB gallery example* release early & often - good enough - good enough for your users, for future maintenance and your piece of mind (PragProg). Like an artist, you need to know when to stop.* bring customers on the emotional journey

5. Fun

RedBubble Practices

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

RedBubble Practices

1. Good people

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

RedBubble Practices

1. Good people

2. Good tools

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

RedBubble Practices

1. Good people

2. Good tools

3. Simple Development Process

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

RedBubble Practices

1. Good people

2. Good tools

3. Simple Development Process

4. Ship it!

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

RedBubble Practices

1. Good people

2. Good tools

3. Simple Development Process

4. Ship it!

5. Have fun

There are no rules, there are only guidelines - if it doesn’t help you, then change it!

A week in software development

Monday

StandupCode Review

Tuesday

StandupFinalize planning

Wednesday

Early Morning StandupShowcaseClose it off

End of iteration ReviewFree time

Thursday

ReleaseKickoff

Start planning next week

Friday

StandupBeverages

An Iteration

Why do you want a good process? • a good process takes the day to day “what do we do now” conversations away so you can actually get down and do the work • Thursday is the start of the week, Wednesday is the end

What now?

Try Agile and Iterative Development

Try some new tools

Make a difference

Questions?

Mark Mansourmark@stateofflux.com

ResourcesBooks

“Pragmatic Programmer” by Hunt and Thomas

“Agile and Iterative Development” by Craig Larman

“A Rational Design Process: How and why to Fake It.” Clements, P., and Parnas, D

Scrum and XP from the Trenches - Henrik Kniberg

“The Art of the Start” by Guy Kawasaki

“Beautiful Code: Leading Programmers Explain How They Think”

Resources

Books

“Getting Real” - 37 signals

Websites

wikipatterns.com

Resources

Software

Subversion

CruiseControl.rb

Selenium

Buildix - VMWare virtual appliance for agile dev

JSUnit

PHPUnit

Resources

Software (more)

Rails

Capistrano

Rake

Rails Migrations & LiquidBase

Cake

Images

“Halo hula” - http://flickr.com/photos/rikabel/938699/“Gohper” - http://flickr.com/photos/janine-white/22328935/“Animal Tools” - http://flickr.com/photos/anavrin/194771480/“Bullets” - http://flickr.com/photos/rikabel/938699/“45 Freemont” - http://flickr.com/photos/thomashawk/130601011/“Big Red Button (Activated)” - http://flickr.com/photos/elliottcable/421568175/“”just two phonies”” - http://flickr.com/photos/21891888@N00/442674518/Stacked Focus Cogs - http://flickr.com/photos/balakov/763594852/Father of the Bride - http://flickr.com/photos/turekcsaba/663815522/DSC00360 - http://flickr.com/photos/makers/34995785/Different - http://flickr.com/photos/mwieczorek/427233916/Back in teh day - http://flickr.com/photos/ssmt/858582831/Flick - http://www.flickr.com/photos/7areega/305460999/haunted pirate - http://www.flickr.com/photos/j6photo/186650828/Are we talking about me yet - http://www.gapingvoid.com/0709arewetalking.jpg