Wednesday, August 06, 2008

Build Times

Oh I wish that the product that I work with could have build times like the linux kernel.
For example, for the kernel, I can literally rebuild my whole kernel (which is just what I use on _that_ machine) in about 16 seconds. This is _not_ using ccache or anything else - it's rebuilding the whole tree with -j16.

Obviously Linus has a machine with at least 8 cores if not a machine that has 4 quad core processors. Also, he has enough memory to keep the entire kernel tree in the buffers. In addition, the kernel is highly modular so there aren't as many dependencies between systems. This means that there aren't a lot of extraneous header files that would slow down the build.

If you know about agile, you know why this is important. Fast build times means:

  • An automated build that can let you know at the minimum that your project is/is not building.

  • Fast builds "probably" means that your product doesn't have a lot of dependencies if it is large and this lends itself to incorporating tests and running those test via automation as well.

The above is the beginning of continuous integration. It can help your software quality especially if you take it seriously and start doing the other things that go along with Agile processes.

No comments: