Leading Your Company into a Unit Testing State of Mind
Roy Osherove
Gil Zilberfeld
Poll
Tell us about your experiencePoll Box
What would you like to learn?Question Box
My Experience
Want to share your stories?
It’s been a long road…
And now you have to convinceYour team Your managerOther teams
You’re a champion!
Forces
Environment
Management
Champion (you!)
Implementation
Technical
Process
Dealing with resistance Make people in charge of the change Identify problem spots before beginning, and prepare
them with good answers Consult with key people before starting Start incrementally, with simplest things Start with a “pilot” project or team Create mini champions Send people to a course to convince them Bring an outside consultant
Emotional reasons Job Security Bad past experiences with specific
practices Feeling of loss of control Distrust Feeling cozy Fear of change Fear of words “Agile”, “Extreme”, “Pair
programming”..
Would vs. should Why should people change
We already know
Why would people changeAll the “logical” reasons are not enoughHow to convince themWhat makes them tickWhat makes them “anti”“what’s in it for me?”
Pain Solution
How can I change people? You can’t. You need to convince them to
change themselves. Give them an option
Don’t do it alone!
Where do I start?
Create buzz
ComplainBut only complaining doesn’t help
Talk about the solution
In your team
Teach others to write tests Continue to write tests Do it as part of code review
Get visible
Results Metrics
What else?
Talk about the competition Learn more
What’s next?
Continue Create a movement Lead Be a change agent
And then…
Make change happen in other teams!
Summary
It’s hard It’s been done before It’s all about people
You won’t be alone too long Fame and fortune awaits
Technical reasons
1. Not implementing supporting engineering practices
1. CI, Automated, test tools
2. Implementing technical practices badly
3. Too much Technical hardship Automated builds\tests\feedback..
Process Problems
1. “Full” process instead of small steps (just unit testing)
2. Not understanding where unit testing fits in the current process
3. Not including the whole team in decisions