|
|
|
| Non-WTF Job: C++ Developer at Good Grievance (Ronkonkoma, NY) |
| « 2.2: The Offshore Coordinator | This Application Sucks » |
Thanks to a generous anonymous donation, Hudson High (as we'll call it) was finally able to trebuchet themselves into the 21st century. In addition to buying new computers for the teachers and staff, they found a contractor that would build them the ultimate system to maintain every function in the school, top to bottom. After a few months the system was built and deployed.
As one of the school's sysadmins, part of Jason L.'s job was to support the software. And it didn't take long for his eagerness to learn the software to turn into confusion, and it didn't take long after that for his confusion to turn into horror.
They say you only get once chance to make a first impression, and this software totally blew its first impression (and every subsequent impression thereafter). The GUI... oh god, the GUI... It had one consistent feature across all windows — two (apparently randomly selected) retina-burningly bright colors applied as a gradient background. The top of the window would be, perhaps, the color yellow that you can only see by staring directly at the sun, and it would fade gradually into the color red that you could only see if your eyes were literally on fire.
The developer must have realized that these backgrounds would be pretty distracting, and that the welder's mask required to view the application made it hard to see the buttons. So the buttons were assigned even brighter colors, and to make them stand out even further, they'd . Each screen in the app had two to seven flashing, often unlabeled buttons with no tooltips (helpfully arranged in ROY G BIV order). If you wanted to know what a button does, hopefully you're friends with the original developer and can ask him.
Not unlike the basic survival skills everyone should know before entering the wilderness, Jason learned some common techniques to avoid breaking the software. The first rule he learned was if you see a flashing red button, do NOT click it. Without confirmation or any way to cancel, it clears the production database and starts you from scratch. Fortunately, it would only display for administrators.
The software suite was divided into several smaller components: (as we'll call them) InterLunch, InterPunish, InterPresence, and InterGrades.
InterLunch allows students to order their lunches, so long as what they wanted to eat conformed to InterLunch's standards. Would you like, say, a slice of pizza, some chips, and a soft drink? Tough — you can only order some quantity of one item. That is, you can buy a hundred slices of pizza if you want, but you have to decide whether you're going to eat or drink. And it was built to support only eight food items.
Since eight slots weren't enough to support the 70+ possible combinations of food items up for sale, the school went back to their old pen-and-paper system.
Intended to completely automate the school's discipline system, InterPunish had a host of features. "It even has a Detention Wizard," the programmer once boasted. The school even updated their disciplinary policies — each offense netted increasing punishments, starting with detentions, then in-school suspensions, expulsions, and finally being forced to stare at the InterPunish UI for a few seconds.
Ultimately, InterPunish didn't work out for the school since they required students to sign demerits, and there was no way to record this in InterPunish. Using it would've taken more time and energy than sticking with the old pen-and-paper system, so it was abandoned.
InterPresence was built to replace the pen-and-paper attendance system. Problem was that it only had two possible states: Present, and (unexcusedly) Absent. Even with doctor's notes and parental or faculty approval, excused absences were counted against the students.
Eventually they reached a compromise — InterPresence would be used only for Present and unexcused Absences, and for excused absences they'd be marked Present and have the absence recorded on paper. And after a little while, they completely reverted back to a paper-based system, leaving InterPresence with InterLunch and InterPunish.
This was the key part of the system — the other software was all well and good, but InterGrades was what really mattered. The goal was to have a single point of entry for all grades for all students, making it easy to pull class averages or drill down to a specific student and see how they were doing.
And it was about as successful as the other products in the suite.
Its first problem was with math. If I was to ask you what a student's grade was if she got 95% on everything she'd done, what would you say? Probably 95%. And you'd be right, using Earth math. But if you use InterGrades's proprietary math, you'd realize that the student was actually failing with a grade in the low 30s. When this was discovered, the school board decreed that all grades be recorded in the old pen-and-paper gradebooks.
These applications were built on an Access database, and the quirks of dealing with the database first appeared during installation. Specifically, the database path was case-sensitive, despite it being a Windows application. It also had to be in the first subfolder of a root folder on a network share, no exceptions. And the subfolder has to start with a dollar sign. And much like confirming your email address or password, the installer required that you enter the same path twice for verification.
Updates are handled like so:
This made things get real interesting at the end of the semester. With thirty teachers and a 100MB database, (300MB per request), it didn't take long for the network to go down.
Each product in the suite had one thing in common with all of the other products in the suite — the seizure-inducing UI and being completely useless. The developer genuinely wanted a happy client, however, and promised free data updates and support for (the rest of his) life if the school promised to test it in a production environment. And shortly after making that promise, he disappeared. It was total radio silence; ignored emails, unreturned pages, unanswered calls. Not only that, but he doesn't even live at the same place anymore.
The school tried and tried to make the most out of the software, but every product was completely useless to them. After blowing over $10,000 on the project just to go back to pen-and-paper, the board decided to do a gradual rollout of a commercially-developed web-based suite. And although the new software is working great, it doesn't have the neon gradient/blinky button UI they'd grown accustomed to.
|
Horrible use of colors on controls and window backgrounds?
Blinking text? (WTF!) Treating a path like a password? Access database backend? Well, all that just *SCREAMS* Visual Basic developer (and I use the term loosely) to me... :) -=- James. |
|
This article was like a massive traffic accident. Started with a head-on collision at 100mph. Then a 20 car-pile up. Then the truck carrying jet fuel jackknifes into the mayhem seconds before the high speed train smashes into the ensuing firestorm. Then the 747 appears on the horizon...
|
Re: The Detention Wizard
2008-06-26 10:58
•
by
AMerrickanGirl
(unregistered)
|
I'm tired of people lumping all VB apps and all VB programmers into one dismal group. There are plenty of well designed VB apps developed by talented professionals. You just don't hear about them on the Daily WTF. I develop primarily in VBA. Mostly Access front end and, if I get my way, SQL Server back end. Yes, Access is not the most desirable back end, but sometimes the company's vision or budget won't allow us to develop in the environment we'd prefer. Sometimes you have to work with the tools you're given. And there are plenty of incompetent software developers who create shitty apps using Java, C#, C++, Ruby, Lisp, Python and every other language known to man. VB/VBA people are just easy pickings because it takes the least amount of training to hack together a database, so a lot of bottom feeders end up creating crap. But not all of us! |
|
I've always referred to these kinds of apps as "garage apps". As in, someone with a business out of their garage pounded out this garbage on a keyboard. Using their feet. Encased in ski boots.
I've had the privilege of working with some of these things. I'm the lucky duck who gets to look them over and then explain why they can't be moved from Access to SQL. I suppose technically they could but management wisely decrees that it would not be cost effective to use their senior database analyst in such a manner and suggests the offending department hire their own contractor to do the conversion. And the support after the conversion. Wow. My management does one thing right. That's a switch. |
| « 2.2: The Offshore Coordinator | This Application Sucks » |