get faster - while you're getting better

23
Get Faster – While You’re Getting Better Solving the Tension Between Speed and Quality in Software Product Development

Upload: antoineg

Post on 01-Nov-2014

1.863 views

Category:

Business


0 download

DESCRIPTION

Presentation given 4/16/08 by Anthony Stevens at the Seattle Tech Startups monthly meetup

TRANSCRIPT

Page 1: Get Faster - While You're Getting Better

Get Faster – While You’re Getting Better

Solving the Tension Between Speed and Quality in Software Product

Development

Page 2: Get Faster - While You're Getting Better

The Race Goes To the Swift and The Bread Goes

to the Wise

Page 3: Get Faster - While You're Getting Better

What’s the Right Product?

You may not know until you’ve tried and failed a couple times – which is why product development for startups is so challenging

Page 4: Get Faster - While You're Getting Better

PayPal: “was really not founded to do payments at all.”

Flickr: “…was kind of a lark. It was a side project we built while we were in the process of building [a game].”

Hotmail started as a web-enabled database/PIM.

Page 5: Get Faster - While You're Getting Better

Maximize Your Advantages

• Flexibility• Speed• Lack of Bureaucracy

… and Minimize Your Disadvantages

• Time• Money• Uncertainty

Page 6: Get Faster - While You're Getting Better

“Reduce. Do as little as possible to get what you have to get done. Do less of it; get it done. If you’ve got two things that you need to put together, take away until they go together. Don’t add another thing. Because you and understand it better; you can analyze it more cleanly. The UI will be easier. Doing less is so important.”

-- Joshua Schachter, founder of delicious

Page 7: Get Faster - While You're Getting Better

Cost of Defects

Page 8: Get Faster - While You're Getting Better

Requirements Are Dead

• Your product will change

• You need to get to market fast

• Your expertise is in technology or sales, not technical writing

Page 9: Get Faster - While You're Getting Better

The trick is not to try harder avoid problems in the first place, but

increase your effectiveness and the efficiency with which you dispose of

the problems that come up

Page 10: Get Faster - While You're Getting Better

Long Live Agile

• Lean and Mean• Release NOW• Short, Fast Iterations (aka “sprints”)• Talk To Customers• YAGNI• Simple >>> Complex• Measure Progress By Working Code

Page 11: Get Faster - While You're Getting Better

Build Safety Nets

• What’s a Safety Net?Hint: It’s not just a practice that allows you to sleep better at night.

Page 12: Get Faster - While You're Getting Better

Source Control

• Check in early and often• Leave nothing out• TONS of options: CVS, SVN, Git, TFS, Vault• Backing up to thumb drive is NOT source

control!Best Practice: Tonight, Before You Go To

Bed, Set Up An Account With Unfuddle.com

Page 13: Get Faster - While You're Getting Better

Issue Tracking

• Set up a common, shared repository for bugs, issues, feature requests, tasks, etc.

• Lots of freeware available to fill this need• Review often

Best Practice: Write ACTIONABLE items in your lists.

Page 14: Get Faster - While You're Getting Better

One-Click Deployment

• Get as close as you can to being able to build and deploy your product in ONE CLICK

• Source Code• Build Your Database• Insert Test Data• Deploy to Server / Create Install Files / etc.

Best Practice: Every Week, Remove One Manual Step From Your Build

Page 15: Get Faster - While You're Getting Better

Continuous Integration

• This is a software service that runs your one-click build - automatically

• AKA “nightly builds”, “automated builds”• Cruise Control, Perforce, many others

Best Practice: Run Builds On Every Commit, and Fix Problems

Immediately

Page 16: Get Faster - While You're Getting Better

91% of successful Meerkats use Continuous Integration

Page 17: Get Faster - While You're Getting Better

Unit Tests / Automated Tests

• Myth: Unit Tests Slow You Down• Myth: Unit Tests Are Only Effective If You

Have 95% Code Coverage• Focus on the Squirrels• Like A Good Virus, Unit Tests Should Multiply

Over Time

Best Practice: Include Unit Tests In Your Continuous Integration Builds

Page 18: Get Faster - While You're Getting Better

Moving From the

Tactical to the Strategic

Page 19: Get Faster - While You're Getting Better

• Hire Selectively• Spread Ownership• Shared Vision and Goals• Be Honest• Have Empathy• Constant Feedback and Communication

Peopleware: Good People Are Always More Important Than A Good Idea

Page 20: Get Faster - While You're Getting Better

If You Aren’t Leveraging Other People’s Code, You’re Losing

• “Roll Your Own” = “I’ll be looking for a job in 6 months”

• Use Frameworks• Find and Use Cheap IT Outsourcing• Use Good Tools

Page 21: Get Faster - While You're Getting Better

Remoting

• Do Distributed Teams Work For Startups?• It’s a Tradeoff between Expertise,

Communication and Coordination –but which is most important?

• There is no best answer

Page 22: Get Faster - While You're Getting Better

Question Received Wisdom

• “You need a project manager”• “You need to be solid and stable before you

release”• “Language ‘X’ is the only good choice”• “You need a design spec”• “You need to staff up”• “You need funding”• “You need to own your hardware”

Page 23: Get Faster - While You're Getting Better

Thank You, and Good Luck!

Anthony [email protected]