Intro
1 great software development: Pleasing your customer
Tom's Trails is going online
Most projects have two major concerns
The Big Bang approach to development
Flash forward: two weeks later
Big bang development usually ends up in a big MESS
Great sottware development is...
Getting to the goal with ITERATION
Each iteration is a mini-project
Each iteration is QUALITY software
The customer WILL change things up
It's up to you to make adjustments
But there are some BIG problems...
Iteration handles change automatically (well sort ot)
Your software isn't complete until it's been RELEASED
Tools for your Software Development Toolbox
2 gathering requirements: Knowing what the customer wants
Orion's Orbits is modernizing
Talk to your customer to get MORE information
Bluesky with your customer
Sometimes your bluesky session looks like this...
Find out what people REALLY do
Your requirements must be CUSTOMER-oriented
Develop your requirements with customer feedback
User stories detine the WHAT of your project...
estimates define the WHEN
Cubicle conversation
Playing Planning Poker
Put assumptions on trial for their lives
A BIG user stoW estimate is a BAD user story estimate
The goal is convergence
The requirement to estimate iteration cycle
Finally, we're ready' to estimate the whole project
3 project planning: Planning for success
Customers want their software NOW!
Prioritize with the customer
We know what's in Milestone 1.0 (well, maybe)
If the features don't fit, re-prioritize
More people sometimes means diminishing returns
Work your way to a reasonable milestone 1.0
Iterations should be short and sweet
Comparing your plan to reality
Velocity accounts for overhead in your estimates
Programmers think in UTOPIAN days...
Developers think in REAL-WORLD days...
When is your iteration too long?
Deal with velocity BEFORE you break into iterations
Time to make an evaluation
Managing customers
The Big Board on your wall
How to ruin your team's lives
4 user stories and tasks: Getting to the real work
Introducing iSwoon
Do your tasks add up?
Plot just the work you have left
Add your tasks to your board
Start working on your tasks
A task is only in progress when it's IN PROGRESS
What if I'm working on two things at once?
Your first standup meeting...
Task 1 : Create the Date class
Standup meeting: Day 5, end of Week 1...
Standup meeting: Day 2, Week 2...
We interrupt this chapter...
You have to track unplanned tasks
Unexpected tasks raise your burn-dovm rate
Velocity helps, but...
We have a lot to do...
...but we know EXAC, TLY where we stand
Velocity Exposed
5 good-enough design: Getting it done with great design
iSwoon is in serious trouble...
This design breaks the single responsibility principle
Spotting multiple responsibilies in your design
Going from multiple responsibilies to a single responsibility
Your design should obey the SRP, but also be DRY...
The post-refactoring standup meeting...
Unplanned tasks are still just tasks
Part of your task is the demo itself
When everything's complete, the iteration's done
6 version control: Defensive development
You've got a new contract BeatBox Pro
And now the GUI work...
Demo the new BeatBox for the customer
Let's start with VERSION CONTROL
First set up your project...
...then you can check code in and out.
Most version control tools will try and solve problems for you
The server tries to MERGE your changes
If your software can't merge the changes, it issues a conflict
More iterations, more stories...
We have more than one version of our software...
Good commit messages make finding older software easier
Now you can check out Version 1.0
(Emergency) standup meeting
Tag your versions
Tags, branches, and trunks, oh my!
Fixing Version 1.0...tbr real this time.
We have TWO code bases now
When NOT to hranch...
The Zen of good branching
What version control does...
Version control can't make sure you code actually works...
Tools for your Software Development Toolbox
6.5 building your code: Insert tab a into slot b...
Developers aren't mind readers
Building your project in one step
Ant: a build tool forJava projects
Projects, properties, targets, tasks
Good build scripts...
Good build scripts go BEYOND the basics
Your build script is code, too
New developer, take two
Tools for your Software Development Toolbox
7 testing and continuous integration: Things fall apart
Things will ALWAYS go wrong...
There are three ways to look at your system...
Black-box testing focuses on INPUT and OUTPUT
Grey-box testing gets you CLOSER to the code
White-box testing uses inside knowledge
Testing EVERYTHING with one step
Automate your tests with a testing framework
Use your framework to run your tests
At the wheel of CI with CruiseControl
Testing guarantees things will work.., right?
Testing all your code means testing EVERY BRANCH
Use a coverage report to see what's covered
Getting good coverage isn't always easy...
What CM does...
Tools for your Software Development Toolbox
8 test-driven development: Holdingyour code accountable
Test FIRST, not last
So we're going to test FIRST...
Welcome to test-driven development
Your first test...
...fails miserably.
Get your tests to GREEN
Red, green, refactor...
In TDD, tests DRIVE your implementation
Completing a task means you've got all the tests you need, and they all pass
When your tests pass, move on!
Simplicity means avoiding dependencies
Always write testable code
When things get hard to test, examine your design
The strategy pattern provides formuhiple imp!ementations of a single interface
Keep your test code with your tests
Testing produces better code
More tests always means lots more code
Strategy patterns, loose couplings, object stand ins...
We need lots of different, but similar, objects
What if we generated objects?
A mock object stands in for real objects-
Mock objects are working object stand-ins
Good software is testable...
It's not easy bein' green...
A day in the life of a test-driven developer-..
Tools for your Software Development Toolbox
9 ending an iteration: It's all coming together...
Your iteration is just about complete...
...but there's lots left you could do
System testing MUST be done...
...but WHO does system testing?
System testing depends on a complete system to test
Good system testing requires TWO iteration cycles
More iterations means more problems
Top 10 Traits of Effective System Testing
The life (and death) of a bug
So you found a hug....
Anatomy of a bug report
But there's still plenty left you COULD do...
Time for the iteration review
Some iteration review questions
A GENERAL priority list for getting EXTRA things done
Tools for your Software Development Toolbox
10 the next iteration:/f it ain't broke...you still better fix it
What is working software?
You need to plan for the next iteration
Velocity accounts for.., the REAL WORLD
And it's STILL about the customer
Someone else's software is STILL just software
Customer approval? Check!
Testing your code
Houston, we really do have a problem...
Trust NO ONE
It doesn't matter who wrote the code.
If it's in YOUR software, it's YOUR responsibility.
You without your process
You with your process
11 bugs: Squashing bugs like a pro
Previously on Iteration 2
First, you've got to talk to the customer
Priority one: get things buildable
We could fix code...
...but we need to fix functionality
Figure out what functionality works
NOW you know what's not working
What would you do?
Spike test to estimate
What do the spike test results tell you?
Your team's gut feel matters
Give your customer the bug fix estimate
Things are looking good...
...and you finish the iteration successfully!
AND the customer is happy
Tools tbr your Software Development Toolbox
12 the real world: Having a process in life
Pinning down a software development process
A good process delivers good software
Formal attire required...
Some additional resources...
More knowledge == better process
Tools for your Software Development Toolbox
Appendix 1 leftovers
Appendix 2 techniques and principles