One company we worked with had a six month wait for endusers who requested a new desktop PC. Furthermore, users never seemed able to obtain the latest PC models until they had been shipping for six months or more. These complaints mystified the account sales representative of the PC supplier as the company seemed to have an adequate PC procurement budget and routinely purchased the latest PC models. Not until we had spent some time with the IT organization did we identify the problem. Each PC purchased by the IT group was delivered to a main warehouse. As capital equipment, the PC needed to receive a property tag before it could be delivered to the end user . Property tags were the responsibility of the finance department and finance had only one worker responsible for placing property tags on PCs and all other office furniture. IT was well aware the company had long suffered from a five month backlog to tag property, but did not consider it their responsibility or problem.
Streamlining IT and related infrastructure is the responsibility of every member of your software development organization. This doesn't mean getting rid of mainframe production disciplines just because you are moving to a client server environment. Modern software development needs more infrastructure and processes than ever before. Much of this infrastructure can be automated or otherwise streamlined. This does, however, take initial resources to accomplish. For instance, mainframe programmers never gave backups a thought the operator always took care of that. How many PC developers, on the other hand, have lost work because someone, usually themselves , forgot to backup their disk drive. The solution, of course, is not to stop work ten minutes early and force everyone to do backups , it is to install a network-wide backup application. However, someone has to purchase and install the backup utility which is an initial cost. In the long run, however, a good backup program will pay for itself many times over.
Another area where IT infrastructure must be streamlined without sacrificing robustness is in production acceptance. Ten years ago, an application might be upgraded every twelve to eighteen months. Production rollout meant taking the mainframe down over the weekend to install the new application. Today, network-centric architectures make it possible to roll out application upgrades over a worldwide network on an as-needed basis. In these environments production acceptance testing and rollout procedures need to be more complete than ever. You do need to worry about what happens when a user executes a Java applet out of their browser's cache after its been updated on the server or how to recover from a partial database update if a network link is severed. Furthermore, given the larger audience of users that these incidents could affect, automated rollback and recover procedures are even more important.
Today, everyone in a software development organization has to take responsibility for every aspect of quality. From gathering the first requirements to rolling out the deployment hardware, quality needs to be inbred into the DNA of every development organization. Quality, however, cannot come about by chairing yet another committee to decide what next year's quality goals should be, as depicted in Figure 4-3. Successful software projects, those of high quality, come about from organizations that have a streamlined IT infrastructure where everyone is concerned everyday about what will make their project successful. More often than not, a developer or other team member may not even use the name quality to refer to a process they are following. It just becomes part of what they set as their personal minimum bar of performance.