I’m working on a project that is a
dynamic website that recalculates GANTT charts from a project server for interrelated
projects. There are thousands of projects, each with thousands of steps that
can have hundreds of states. Every step changed modifies the overall project
timeline across thousands of projects. Every project is modified several times
Client: Why does it take 45 seconds to
display a page?
Me: Because it calculates the project
timeline on all of the current entries on the project server. The project server
has no way of knowing what the current state is of the project timeline until
it does the calculation because the projects are constantly being modified. The
calculation is initiated when you load the page, and it takes about 45 seconds.
Client: Why don’t you precalculate every
possible permutation across every project and simply write out a page that
reflects that state, and instead of calculating every time, you just display
the page that matches?
Me: (doing the math in my head) The
number of possible output pages would exceed the number of atoms in the known
universe. In addition, to precalculate it all would require a supercomputer
running for thousands of years.
Client: (patronizing) So? A web page is just
bits on a hard drive, not actual physical atoms. All you have to do is buy some
more hard drives and some more CPU’s. You should know this.