It seemed like a simple request. "Please add 'MAINT-CNTRL-ADMIN' to the cost center dropdown for client #876." It was also Scott A's very first assignment, having recently started as a web developer for the B2B merchandise reseller.

The ecommerce application he was hired to maintain was ASP-based and had been developed over the course of several years by an outside consultant. During the job interview, the system looked pretty decent: it tracked orders, inventory, products, etc. The UI wasn't wonderful, but it worked.

As for the request, Scott figured it'd be a matter of finding the cost center table and add a new row for that particular client. If only it were that simple. Since there was no "Cost Center" table — nor anything named anything similar — he decided to just trace the code to find where the dropdown got its data from. That's when the fun began.

The first thing Scott noticed was that there seemed to be a lot of include files. And the include files included a lot of other include files. And those files included even more files. Functions were being called and objects being created that he couldn't find the source for. After a short while, the entire site began to seem like one giant "choose your own adventure" novel, and it quickly became clear that simply opening up the target page and looking for the drop down wasn't going to be enough.

In desperation, Scott wrote a simple script that would trace all of the include files and display them in a nice pretty tree. Surely, he'd be able to find the files he needed to look at after that. Following is the output of what he got for one — yes, one — the pages within the website.