Several months back, I posted the story of a certain Java coder known best for the countless hours she dedicated to developing a key module a rather important information system (see The Brillant Paula Bean). As is the life with a contractor, Paula has since moved on to bigger and better things. Fortunately (for us), Paula has found a new home at Scott's company (not so fortunate for them).
Scott was in the final development phase of a project that, for the most part, had gone surprisingly well. Sure, the deadline was tight and looming, but the end was in sight and the final few weeks seemed like it'd be a smooth ride. In fact, it seemed like the project might even be completed before the deadline.
At the same time, Scott's team was growing. Management brought on a handful of new contract and full-time employees, and one of them, Paula, was assigned to work on the project. Scott was a bit reluctant; after all, the current project team could easily finish up all the tasks. But the project manager assured Scott that Paula was a J2EE expert and would have no problem handling even the most complex task on the project.
Scott figured that the easiest task to pick up would be to create a new workflow. His team had spent a few months building a workflow sub-system and several workflow components, so creating a new one would involve simply looking at the existing components to see how they work and implementing the new requirements. Scott estimated that he could finish it in a week. Paula said that she would have this finished in a few days.
Several weeks later, Scott followed up with her to see if she was able to get anywhere. She gave a very positive update: not only was she nearly finished with the new workflow, but she had a thorough understanding of the system and was ready to take on some bugs and other tasks.
A couple weeks passed and Scott was starting to get concerned. Though it was a small task, this new workflow was on the critical path and was holding up other items. No big deal, said the project manager, Paula is almost complete and it'd be OK if we deliver this project a little late, anyway. Better to let her learn the system that discourage her by taking it away.
Another week passed and now everyone was concerned. The project was already passed the deadline and there still were and handful of tasks that needed to be complete. Scott went to Paula to see if she could use any help. Sure, she said, I'm having a little bit of trouble getting this working.
Scott looked at the code file and immediately saw what the problem was. She based the code a bit too closely on the sample workflow that Scott had shown her. On this new class that was designed to implement a custom workflow for approving a purchase order, Paula had simply done a search and replace:
CreateNewUser --> ApprovePurchaseOrder
All of the other code and comments were left completely intact. Well, except the header comments. She did change Scott's name to her own. "Brillant", however, was nowhere to be found.