There is also the situation that is not created out of malice or greed, but out of lack of restraint and divergence of priorities between the authors and the users: compilation speed. When a piece of software makes me wait for it, I feel subservient to it. It feels like sitting in a state office, waiting until a civil servant decides to grant you an audience. Except there is no civil servant, there is only the computer. How much do I have to wait? It depends on the alignment of the stars, air humidity and will of the gods.

When I used to work in office, there was this one time when I had an urgent ticket from customer to resolve, so I made the necessary fix and started building it. Normally builds would take something like 15 minutes, provided they were incremental and this wasn't the first (clean) one. But they could also take hours. It was at the end of the working day, I was working hard on this fix, didn't even take a lunch break. I started building it and waiting, because I wanted to share the fix with the customer as soon as possible. 15 minutes passed... 30 minutes passed... 1 hour passed... 90 minutes passed... 2 hours passed... And it was still compiling. At that point I gave up, went out and started walking home. But due to not eating the whole day and then staying late waiting for the build to finish, now I was so hungry that my hands started trembling on my way home and I felt generally weak, on the edge of being able to reach home. The next day I found out this build took ~4h 30min.

The reason for this state of affairs: of course I shouldn't care that much about my work and just make the customer wait instead. Put my health and time above that. But another important reason is that the build times were so unpredictable: when I hit "compile", it could take anywhere from 3 minutes to 4.5 hours. There is no planning you can do around that. If it was just a fixed 3 hours, it would be even better, because then I could plan my day around it. But it being so unstable destroys everything. Of course, if every build took 3 hours, people making decisions would wake up and see that we've got a pathological situation and there is something seriously wrong with the project. But when you often hit 15 minutes, it's going to be brushed off. And for the C++ committee even though compilation speed may be an issue, it is never a priority. There are always going to be other issues which eclipse it.

Personally, I think a build for even a OS-size project like that shouldn't take more than at most 1 minute. Even the incremental times in this one are a travesty.

What I like about what was planned for Jai (still not released) is that it's designed to always make a clean build. And the clean builds need to be fast. There should be no reason to make incremental builds. They are hacks that make the situation worse, but make it look better. Suddenly you're dealing with weird bugs, because the build system did not detect a necessary recompile and used stale cache entries (happened multiple times to me). The compile times are unpredictable (see the above story of why that matters).

I've seen some Delphi jobs in my country a year ago I think. Maybe I should switch there...