Sometimes we unwittingly allow our personal problems to spill into our work deliverables. This story illustrates how one person’s anxiety affects the experience of customers months later.
As Talia walked into work one clear Friday morning, she met her boss coming down the hall. The manager quickly filled Talia in on the latest news. The company was going to eliminate more engineering positions. Talia had survived the last round of layoffs, but she had graduated from college only two years ago and did not know if she would be able to survive again. Pessimism began to invade her thoughts. Would her young career be derailed before it was even off the ground? Did she have enough savings to last until she found a new one? She didn’t deserve this! Couldn’t the company save money somewhere else? Between thoughts of frustration and fear, Talia spent her Friday working on the complexities of a critical portion of a printer controller module. The code needed to be completed that day, so Talia tried hard to focus on her work.
When Monday morning came, Talia’s anxiety about losing her job had somewhat evolved, from fear to cynicism. After grabbing a cup of coffee, she sat down and looked at her printer controller code. The code was poorly written, but it was supposed to be finished the past Friday. So, she released the code to avoid giving management a reason to lay her off.
A year later, in another part of the country, Sharon was running late to her son’s first soccer practice. She was the assistant coach, so she didn’t want to be late. She sat down to print out the schedule for the season. After quickly typing out the schedule, Sharon hit the print button on her word processor and selected 25 copies to print. As the printer began to print, Sharon noticed that it was about to run out of paper. In the time it took her to get more paper, the printer had run out. So, she put the paper into the printer, but the printer didn’t recognize that it had been reloaded. So, she turned the printer off and back on. The printer now noticed that the paper tray had paper in it, but something was still wrong. It printed 20 pages of garbage instead of the schedule. When the printer finally stopped, Sharon tried again. This time everything worked since she had enough paper in the tray before the printer started printing.
On her way to soccer practice, Sharon mulled over what had just happened. Printers run out of paper quite often, you’d think they’d figure out a way to recover from such a common event. She resolved to hand-write the schedule next season and go to the library for photocopies on the way to practice. Why did the printer punish her for letting it run out of paper – it was as if the fine for running out of paper was 20 pages of wasted paper and ink.
Computer programming is one of the most mentally challenging exercises the human race has ever attempted.
Computer programming is one of the most mentally challenging exercises the human race has ever attempted. A programmer must keep hundreds of different bits of information straight at the same time. However, these relationships are often like a tower of cards: bump the programmer’s elbow and the whole tower comes crashing down.
To help developers manage the complexities of programming in a distracting world, much time and energy has been devoted to the creation and dissemination of efficient software development processes. However, the quality of products developed using a process is directly tied to how well people follow the process at each step along the way. A good process can bring discipline and focus to a good programmer, but it cannot turn a bad programmer into a good one.
Authors from Fred Brooks 45 years ago to Alistair Cockburn of today state over and over again that people are the dominant factor in developing good software. In The Mythical Man-Month, Fred Brooks states that there is a vast gulf of talent, skill, and discipline between the best and worst programmers. Many studies have shown that the strongest programmers produce elegant, easily maintained code, no matter the tool or language used.
So, if people are the most dominant factor of a software development project, factors that affect an individual programmer’s performance must be addressed: personal education/experience, the work environment, and personal character. In the story above, Sharon didn’t have a hard time with her printer because Talia was malicious. Quite simply, Talia’s experience, environment, and personal character kept her from creating a quality product. As developers pursue personal peace of mind, they will naturally develop programs that promote peace of mind.