One of the things a good developer should always strive for is efficiency. Slow code should be improved if possible. Complicated steps should be simplified or removed. Finding a poorly-implemented process which is costing company time and streamlining it is usually a good thing, and means more profits, which means larger paychecks and bonuses, and happy bosses. Right?
This is a real company, but not where our story comes from
Dave had been working in the shipping department for a while when he discovered how the monthly shipping statistics were gathered. His coworker, Clarke, walked him through the process one day when Dave had some downtime.
“Everything comes in as Excel reports from our two software systems,” Clarke began. “Then I have to edit them to get them in the same format, combine them, and muck around with filters and sums to get the numbers the boss likes to see.”
Dave shuddered at the thought of manually hacking reports together. “How long does it take you?”
“It’s not too bad anymore, maybe four or five hours. Sometimetimes longer if I make a mistake.” Clarke shrugged. “It’s not hard, just tedious.”
“And this is each month?”
“Yep. It used to take me a few days until I got used to it.”
Dave thought for a moment. “The data isn’t complicated at all. I bet I could write a script to do most of it for you.”
Clarke’s eyes lit up at the suggestion. “Really?”
Together they went to their supervisor, an older gentleman named Rick who looked like he could retire any minute now. After a brief proposal, Rick didn’t seem impressed. “The current system works fine, I don’t think it needs to be changed.”
“I could have the whole thing written in less time than it takes Clarke to process one monthly report,” said Dave. “After that, all he’d have to do is click a button. We’re talking minutes instead of hours.”
Rick muttered something and dismissed them. Dave and Clarke left, unsure if they had permission to proceed.
Dave wrote the new system anyway. Once he’d received some older reports to understand the formatting, he spent a few hours of spare time to write up a fairly simple C# program to automate all the manual editing that Clarke had to do. With a long history of previous reports and the historical data, Dave proved the program’s accuracy by running it across a year’s worth of data.
It worked flawlessly. Creating the monthly report now only took about ten minutes, most of which was spent waiting on connections to the other software systems. Once it had all the data, it spit out the report in less than a second. When the next report was due, they generated it using Dave’s application and avoided hours and hours of Excel wrangling.
Rick was not impressed when they showed him their work. “How do I know if it’s right?” he asked. “I don’t really trust computers. I’ll have to verify everything myself now!”
And that he did. Rick spent the next two days printing out every daily-activity email for the previous month, calculating all the shipping statistics with a four-function calculator, and compiling results on a sheet of notebook paper. And because the emails were user-generated, not system-generated, they often contained minor errors which required even more time to correct. After several tries, Rick eventually had a report that agreed with Dave’s.
And this continued for a few more months. Dave’s program would generate an accurate report within minutes, then Rick would spend hours, if not days, hidden within a small fort made of printed emails, only to eventually come up with the same numbers.
Word got out on Dave’s accomplishment and he was soon offered a transfer to another department. The supervisor there was not afraid of modern technology and wanted to replace their current paper-based delivery manifest process with a computer-based solution that could save thousands of dollars in printing costs. Dave accepted the transfer and eagerly started on the new project. And last he heard, Rick had thrown away Dave’s little shipping report program and even the old Excel report system, instead dealing with stacks of printed emails and a four-function calculator to generate a handwritten report each month.