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