Continuous Integration: Not Just for Large Teams
Recently, a beta tester of pulse asked a fair question:
I can see the benefits of automated build software for large software teams. Would pulse considerably benefit a development team of 1-5?
Now, I am surely biased, but my answer is most certainly yes. Firstly, there are many benefits that apply to both, such as frequent testing, testing outside of the developers’ environments, early detection of integration problems, isolating changes that introduce problems, and so on.
It is also fair to say that some of the benefits for large teams do not apply to the same degree for a team of 1-5. For example, as the team grows the chance of an integration problem increases even more rapidly due to potentail semantic conflicts between changes committed by various developers. Even when the developers are all disciplined enough to update and run tests locally (which we all are, right? ? ), there is still a greater chance of a submit race. For large teams the continuous integration server can also be a great way to communicate recent project activity, as developers are notified of builds, and the web UI may allow you to see recent project changes.
Smaller teams do not have such problems with submit races and typically find communication much easier. However, some of the benefits of continuous integration are more important to small teams than to large ones. A prime example is the increased frequency of testing. Without continuous integration, tests are only run as frequently as the developers run them. The fewer developers, the less frequent the testing. Problems take longer to show up, especially intermittent bugs (those nasty blighters that only show up once every 364 test runs). If your tests run every fifteen minutes on your continuous integration server, even those intermittent bugs can’t hide for long. Further, small teams necessarily have a smaller number of environments that they are naturally testing on during development. Adding another one, even a single continuous integration server, is significant. Lastly, a smaller team, with naturally limited resources, needs to apply automation even more aggresively than a large team. Dedicating one or more engineers to release and integration management may not seem like a big deal to a large team, but for a small team that may be a third of the manpower!
Although they benefit in different ways, I wouldn’t say a large team needs CI more than a small one, or vice-versa. Experience has taught me that once a team employs continuous integration, whether it be 2 or 200 strong, the engineers will never want to do without it again.
——-
Into continuous integration? Want to be? Try pulse.
This entry was posted on Thursday, May 11th, 2006 at 8:30 pm and is filed under Continuous Integration, Project Automation, Technology. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

May 11th, 2006 at 10:58 pm
The biggest problem with tests by developers is that when they test, they usually don’t check out first. So their local tests may work, but the whole project won’t. And there can be situations where every test on every developer machine succeeds but without constant checkouts the developers don’t realize their project tests as a whole don’t work (or worse their project won’t build).
This is even more important for open source projects. Your local project builds and tests run fine, but checkouts from the public repo don’t build. Lots of people will move on before someone notifies you of the problem.
May 25th, 2007 at 7:54 pm
I fully agree, take a look at my related article:
http://jefspalace.be/cms/Reason+for+continuous+integration