Making a Difference
Software development gone wrong.
When Chris walked off the platform with a computer science degree in hand, he knew one thing for sure: He'd have to start all over again in the business world. And with a dizzying smorgasbord of technologies and a whole world of concepts never broached in school, Chris knew he'd need guidance from a mentor.
Fortunately, Chris didn't have to look too far. He was offered a job as a .NET Web developer and Gary, his new boss, was more than ready for the mentoring challenge.
"I'm going to take you all under my wing," Gary told Chris and two new hires also fresh out of college. "But I expect that, when you're in a position to do so, you'll mentor at least three others yourself."
"That said, let's get to work," Gary said as he handed the three rookies a photocopied sheet of handwritten notes. "We keep this list of change requests and bugs that we have to fix in the system. Now, who wants to take what?"
As the protégés read through the list and guessed at which items they might be able to figure out, Chris thought back to how much harder his professors made things out to be. Instead of just sitting around and figuring out what to do -- like he and his new coworkers were now doing -- they had to "task things out" and "assign" individual items to one another using some stupid "issue tracking" software. Clearly, their mentor knew how things really worked in the business world.
After they decided who would work on what, Gary offered a few pointers. "The code is all located on the 'WEBSERVER' server under the 'TEST-SITE' folder. Edit what you need to, but don't touch the 'PRODUCTION-SITE' folder. We'll make the changes there only after you've completed them."
Chris asked if they would be using source control. "Ha, ha, ho," Gary forced out in a condescending laugh, "you've a lot to learn about the business world.
"People will try to sucker you into the 'source control' nonsense," Gary said, "but it's totally stupid. Come on, haven't these people heard of backup?"
Reading and Writing
When Chris finally started digging through the code files, he noticed that most of the variables throughout were prefixed with "the." As in, If theOrdersStatus = "COMPLETE" Then theReturnValue = False. It was a bit different than what Chris was used to, so he asked his mentor about it.
"Ha, ha, ho." Gary forced out another laugh. "Your code should read like a sentence. 'If order status equals ...' sounds bad. 'If the order's status equals ...' works a lot better. Make sense?" It didn't make any sense to Chris, but he knew that he'd been in academia forever and would have to get used to the business world.
As the days passed, Chris and his fellow protégés learned more and more about the business world:
- Object-oriented programming belongs in an ivory tower.
- A "folder full of .CSV files" is almost always better than a relational database.
- Relational databases, too, belong in an ivory tower.
- Global Variables are significantly faster than local variables.
- Server Side Includes are much better than User Controls.
- Static methods are bad because they might be run twice, at the same time, by other code.
- Public methods should be deceptively named to foil would-be hackers.
Although Chris's coworkers were learning the ways of the business world just fine, Chris just couldn't bring himself to understand things. Despite condescending explanation after condescending explanation, Chris didn't get it and just kept asking more questions.
|Tell Us Your Tale
Each issue Alex Papadimoulis, publisher of the popular Web site Worse Than Failure, recounts first person tales of software development gone terribly wrong. Have you experienced the darker side of development? We want to publish your story. Send us your 300- to 600-word tale -- if we print it, you'll win $100 and an RDN T-shirt! E-mail your story to Senior Editor Kathleen Richards at firstname.lastname@example.org and use "DevDisasters" as the subject line.
"Hey Gary," Chris said timidly, "I read about how we can make 'friendly URLs' by just adding a few entries to the web.config file, or even by putting together an HttpModule that uses the RewritePath method." Chris was referring to the client's request to make its product URLs look like /Products /Kitchen/5-Level-Spice-Rack.aspx instead of /product.aspx? id=4412. "I mean, are you sure you want us to create a new page on disk every single time they add or edit a product?"
"Ha, ha, ho," Gary laughed in his all-too-familiar tone. "Sure, we could use a URL-rewriting HttpModule, but those are nothing but trouble. If you generate one .ASPX page per product, you know that each product has a page. And if we ever need to change the layout, we just regenerate all the products at once. Sheesh, you've still got a lot to learn!"
Actually, Chris finally did learn a lesson from Gary that day. As he wrote the hundreds of lines of code needed to generate the thousands of product pages, Chris realized that he needed guidance from a real mentor.
Alex Papadimoulis is a managing partner at Inedo LLC and publisher of the Web site "Worse Than Failure" (WorseThanFailure.com). He writes the DevDisasters page in every issue of Redmond Developer News.