A few projects back, I was working with a team, that had a build server, they had automated tests, but they did not seem to care about them. At least not as much as I wanted them to care about them.
Mm, how do I motivate teams to care about their builds?
One of the things I came up with, was a Croissant build.
A croissant build is when
- we had enough checkins during the day (that was the teams size + 1) (yes I know that is not much, but I had to start somewhere)
- The build was never red (broken build) for more than 30 minutes
- The build was never yellow (failed tests) for more than 1 hour.
==> I as a scrum master brought croissants the next day.
It helped to show people how I important I found the build (I paid the croissants out of my personal money, and then knew)
What I don’t like about it, is that it thinks that motivation is extrensic, where I know it is intrinsic. To have less of this problem, next time I use this, I will ask the team what they define as a croissant build.
Question I received after explaining this to other people:
1) Shouldn’t a build be green/blue all the time?
Not in my opinion, if a builds stays green all the time people have been too careful.
(hence are not innovative enough)
2) They run all tests on their machine and see if it is broken there.
True I want people to run test locally. But I prefer them to run the test of the modules that the are working on. Not all tests, all the time. (This is true from the moment we have + a few thousands tests )
3) Should they not run all test before checking in?
Well I want people to check in as fast as possible:
- Write a test
- Make it green
- Run the related tests
- Do a get
- Run the related tests
4) My team has too much trouble syncing, when we checkin more often, won’t be have more problems?
Yes and no. You might have more often a problem, and the problems will be smaller and easier to solve. Hence the time you loose will be less. (On team level) On a personal level, the faster you check in, the bigger the chance is that you won’t have the problem but somebody else (who is waiting too long to check in.)
So no reason not to check in early.
5) What if after a while my teams get’s croissants every day, that is expensive.
You make the rules stricter.
Now it is
-more checkin’s every day
-less time to fix (this depends on the time the builds run)
-same rules but now for a week, instead of a day
-let them come up with some rules.