Software Engineers, A Word Please (really fucking long)

I have a really shitty job. Even if YOUR software did what it was supposed to, it’d still be a really shitty job. It’s about on par with lancing boils on the butts of rabid monkies. Please bear this in mind as I describe a typical day for me, okay? Thanks.

I’m a Customer Service Rep for a large cell phone company. I spend all of my time at work, except when I’m on break or in the can, at a computer terminal which is running your DOS based software program. Much of my day is spent listening to people who can’t understand something as simple as payment = service. (You know, if you don’t pay your bill, we turn your phone off, that kind of thing.) So when these folks call in and spend a good five minutes discussing intimate details of my sex life, and want to know how much money its going to take to get their phone turned back on, do you know what I have to do? You should, you wrote the software, but let me explain it to you anyways, okay?

Step One: Tell the customer that I’m going to have to put them on hold for about two minutes while I check on that. Now do bear in mind that this customer has already spent half an hour on hold, waiting to be connected to me. Naturally, what they want to hear is that they’re going to have to be put back on hold. Yeah, right! :rolleyes: Why do I have to put them on hold, you ask? I’m getting to that.

Step Two: The front page of the customer’s account shows what it says is their current balance. This is almost always incorrect. Don’t ask me why, you guys are the ones that wrote the software and you should know. So how do I find their correct balance? Easy. I click on the pull down menu marked “Inquiry” and select “Account Balance.” A few seconds later a window pops up on my screen with a long list of numbers and a total. This information is also incorrect. I close that window and open the account notes. In the account notes, next to my log-in ID, is another total. Again, this total is also incorrect. If I’m lucky, and there’s not too great a load on the server another total will appear in the notes in a few seconds labelled “background.” This total is, at last correct. Assuming the system ever bothers to give me that total. (Otherwise repeat Step Two until it does.) On to step three.

Step Three: I now have to find out why their total is so high. Because they will invariably ask me about it, so I might as well find out the reason before I go back to them. This is almost an easy process. I go over to the “usage” button and click on it. In a few seconds, it shows me the customer’s usage broken down into various categories, with a few exceptions. If the customer has multiple bundles of say anytime minutes or night and weekend minutes, the system will not show it to me. And unless I go to another screen, I will have no way of knowing that they have them. Then if they do, I will have to manually calculate their usage to see if there’s any overage. If I’m lucky, they’ve gone way over their anytime minutes and its caused their balance to exceed their credit limit. If I’m not lucky, then I have to poke around on a half dozen other screens to see if I can find anything else that might have caused their bill to be so high (assuming that they pay it with any regularity). If I can’t find it, I’m in trouble.

Step Four: I take the customer off hold and explain to them the deal. Another two minutes of them describing my habits with farm animals then ensues. Finally, they decide they want to make a payment. If they use a credit card, its over and done in no time. If they use a check, I’m fucked. Why?

Step Five: To take a check, you launch another program (all the while hoping your machine doesn’t crash), log into it, wait for it to connect with the central server, tell it you want to do a check by phone, and then manually enter in the customer’s 15 digit account number. If you’re lucky, the customer’s done this before and once you enter in their account number (And you’ve got to type all those digits in, no “cut and paste” allowed here!), all the various information will populate the necessary fields, if not, you get to enter it all in. Its a relatively straightforward process, except for two things: 1.) When you ‘tab’ to go to the next field there’s a ten second delay while the program “updates” itself. 2.) You have to enter their checking account number twice. Once in a field that shows asterisks instead of numbers, and once in a field that shows the numbers. You have to enter the account numbers into the field that shows the asterisks first, if you don’t, you’ll get a message box telling you that the account numbers in the two boxes do not match. Once that’s done, you click “Save” and a box pops up with a confirmation number. This number is absolutely worthless, but we give it to the customers anyway.

Those steps are what happens when things go right! When things go wrong, its an entirely different situation. (And keep in mind that I’m only supposed to spend eight minutes talking to any given customer at a time.) Now, if I can’t figure out why their service has been cut off, I can try and bullshit the customer in hopes that they’ll buy it, cough up some money, and go away. Or, I can credit their account just enough to get their phone turned back on and let somebody else worry about it when the customer’s phone gets cut off and they call back in demanding to know why. Guess which choice I pick. If you picked anything other than the second one, you probably have to remind yourself to breathe on a regular basis.

That, of course, isn’t the worst part of my day, no, no, no. Its bad, but its not horrible. Horrible is what happens when someone calls into change their phone number because they moved.

Now, I foolishly thought when I started there that this would be a simple process of typing in their new address, and their new phone number would pop-up, along with the programming instructions for their phone. I was young and naive, to think so, I’ll admit.

No, here’s the proceedure I have to go through: I have to close their account, and then open a new account (retyping vast amounts of information in the process). And let’s hope that I’m having a good day and don’t forget to waive the early termination fee. Otherwise, the customer is in for one hell of a surprise when they open their next bill. And you know what’s really fun? Its when the customer is on an old plan of ours that’s no longer offered and has some groovy features (like say first incoming minute free), that none of our current plans have, do you know what I get to tell them? I get to tell them that they can’t have their old plan and they have to go with one of our new plans. All because you didn’t think about that when you originally wrote the software program and we have to compensate for your inadequacies, just like your wife does with the pool boy.

Even if the customer does have one of our current plans, there’s still entertainment aplenty for me! You know why? Because we’ve got roughly thirty different plans, and there’s all kinds of options you can get with each one. Now finding the right plan is tricky, but it can be done. You wanna know what the good bit about this is? The really good bit is this: There is a different option code for each plan, and they’re all coded almost identically! So if the customer wants the option of surfing the web from his cell phone, I have to scroll through a shitload of options all labeled “wirelessweb” with some kind of incomprehensable code stuck on either the front of “wirelessweb” or on the end. And these codes rarely, if ever match up with the kind of plan they go with. (In other words, say the customer has plan number 30 and he wants the web on his phone, the code for it is most likely something like “wirelesswebwb9” and not “wirelessweb30.”) Oh, and that’s assuming I can figure out if that’s the code for the web or text messaging (which is also labeled “wirelessweb”).

Now, I can see your eyes are starting to glaze over, so I’ll try and hurry this up. To top it all off, you guys feel the indescribable urge to do constant “enhancements” to the system, and you never bother to tell us before hand you’re going to be doing, or what they entail. Which means, for me, the proceedure that worked two calls ago, suddenly no longer works. Thanks, guys, really, I mean that. Because now I get the fun of figuring out what the new proceedure is on the fly and on my own. Assuming, of course, that your “enhancements” haven’t made the system more unstable than it already is and the program doesn’t crash while I’m trying to correct the glitch that caused Mrs. Flushbottom (a sweet little old lady on Social Security) to have a bill roughly the size of the company’s annual income.

Finally, let me say this: I do not know what kind of vending machine you got your degree out of, but I do know that if I ever meet you, I will kill you. Do you understand me? I will physically harm you. I will rip the flesh from your bones with my bare hands. I will tunnel through your abdomen, pull your head (which has been stuffed up your ass since you were born) out, and methodically begin tearing bits of flesh from it. I will continue to rip dime sized pieces of flesh from your body until there is nothing left. I will then distribute your mangled remains to every college, tech school, and university in this county as an abject lesson of what happens to people who can’t write code better than a three year old with broken crayons.

DOS?

That strikes me, somehow, as an incredible irony.

Though I am only a novice programmer and my trade is in field service of electronics, I must admit that the paradign for software creation is terrible. I’m not sure why it is terrible, because it is a pretty easy thing to get right, and I thank God every day that my company’s programmers listen to me and my coworkers about modifying code to be more internally consistent and user-friendly. Because guess what? Programmers don’t use the software. It is a product targeted for another group of people. And they (end-users) don’t know what you had in mind when you designed the interface for setting up a 96 well plate for the robot (sorry, we do stuff for the pharmaceutical drug development industry, so that’s my axe to grind).

the company will not fall if the software people are not pressured to bring a package to market, and the company will not fall if people use it before it is sent out. And when I say “people use it” I mean people who weren’t a part of the process of developing it. Because guess what? When we sell the product, it will be to people who have not used it before!

WHAT A FUCKING CONCEPT.

I blame project managers more than the programmers, but I’ve known quite a few programmers and many of them are rather snobby people who assume you know jack shit about computers, right up until the moment when they expect you to use the software they made. Then you are supposed to be some kind of genius.

But, dear OP, I would think that being a customer service rep for any sort of telephone service whatsoever (be that cellular, local provider, or long distance) must be, flat out, the most stressful job I can imagine. Mainly because the phone companies are filled with assholes, but that’s just IMO. You guys are the shield the execs hide behind when they are making decisions from within their dark, anal cave (re: heads up their asses).

Sorry, I just hate phone companies. If it weren’t for 10-10-220 I think I’d shoot my phone. Well, if it weren’t for 10-10-220 and if I had a gun. Then I’d shoot my phone. :slight_smile:

erislover, its worse than that. The program’s three years old, so why the hell it was even written in DOS to begin with, I have no idea.

You’re right about the phone company execs being anally located. Everything about that place is incredibly convoluted when it doesn’t have to be. If the accounting is anything like everything else in that place then I think we’ve got another Enron on our hands.

Yikes, Tuckerfan, what a nightmare. I wish I could say something that would make you feel better, but all I can do is sympathize. Sorry, man.

[Hijack]

Hope you don’t mind me butting in, but if you’re using 10-10-220, you’re still paying too much. Check this website to compare 10-10 companies and their rates. Some of them aren’t available in some states, so make sure to check each company’s website for details. I’ve been using 10-10-811 for state-to-state calls and instead of a minumum 99¢ with a 20 minute minimum & 7¢ after (which 10-10-220 charges), it’s 50¢ with only a 10 minute minimum and 5¢ after.

But I just perused that site again, myself, and 10-10-636 is even cheaper – 15¢/3 minute per call minimum and 5¢/minute after – so I’m going to have to see if their service is available out here.

I use 10-10-719 for my international calls to Europe and it’s only 9.9¢ per minute with a 3 minute minimum. Still looks like it’s the best deal.

Anyway, check it out and save yourself some money!

[/Hijack]

It’s all because of money. Many software companies (such as the one I work for) would love to have usability labs and run studies and spend a lot of effort making things incredibly easy and intuitive for the user. However, many software companies (mine included) are not making a profit, so don’t have the luxury of doing such a thing.

So we just do what we think is right, and hope the customer agrees.

Anyway, for the problems described, I think the Software Engineers aren’t the ones to blame, it’s the Product Marketing that failed to assess the needs of the customer. I don’t think there’s a group of Software Engineers out there that would choose to code for DOS.

When I finish my current gig, have your company hire me as a consultant. :smiley:

Not only would I write you a nice GUI to spec with a speedy SQL backend, I happen to enjoy working with end users. In defense of the software developers who created the program you use, I have worked for companies that went extremely far out of their way to segregate me from the end users who would actually use the product. I don’t usually stick around those places for very long.

There are a number of minor things a developer can do to make an end users life easier. Hot keys and programmable macros come to mind as those that are often not included due to budget or time constraints (and sometimes developer ignorance). In your situation, if having information on many different screens was unavoidable, you can be damn sure it’d be a breeze to get there. Hell, I’d even make the popped-up screen semi-transparent, so you could see through to the other info in the background.

Next time there is software developed for your department, volunteer to be business analyst that works with the development team.

Not possible, that’s all handled at the corporate offices, which is several states over from where I live, and the likelihood of me sticking around that shit hole long enough to get promoted to a position where I could participate in such a thing is almost non-existant. Its going to take a supreme effort on my part to drag my ass to work tomorrow after the day I had today. (My Friday is the rest of the world’s Monday. Guess which is the busiest and shitiest day to work. Monday.)

Well, supposedly they do test the stuff in a lab before they inflict it upon us. But then again, considering some of the lies they’ve told us about lay-offs, etc, etc, I doubt that they have been testing it in a lab.

Tuckerfan, have your company contact me, I can re-write that app from the ground up as a windows app with all the bells and whistles you could ever hope for. :smiley:

Which phone company is it? Is it Sprint PCS? It is, isn’t it? Just, um, nod your head or wink or something.

I worked as a CCR (no, not a CSR, a CCR. Because we “cared.”) for PCS for awhile. The system went down ALL the time. I worked at the second busiest store in the nation and there were, at most, four of us working the lines. Wait times averaged an hour or more. The police were called over riled up customers on a weekly basis.
The program itself was a maze to work through. I’ve thankfully blocked most of it from my memory after almost three years, but I remember that just checking someone out for an accessory (not looking into a bill, not activating a phone or switching a plan, just them giving us money and us handing them the product) took about 5 minutes. We had to look up their information in the slow ass computer, find their account, scan the product, determine what payment they were using because all math had to run through the computer so it could keep track of the cash and receipts that should be in the register, type our user names and passwords in each time so we could be credited with the sale, and then wait for the computer to process the payment and spit out a receipt.
This was, of course, the fastest thing we did. Heaven help you if you had a problem with your bill. You’d better have brought a book because 15 minutes per customer was not that uncommon.

: pats Tuckerfan consolingly:

I feel you pain. Boy do I ever feel your pain. I’m Helpdesk for a telco that is converting all its apps from DOS-based (well, actually, VMS 5.1 based) to Windows-based.

The VMS application we were using for billing/service orders was finally working properly, so the execs decided we needed a new system. We’ve been trying to get this Keenan/Metasolv abortion to work properly for months. Just think, Tuckerfan, of the joys inherent in a system cobbled together by two companies that are natural competitors. :rolleyes:

/whine/
We want our VAX back.

Enderw24, I can neither confirm nor deny that Sprint PCS is my employer, however, I can say that you have certainly provided an accurate description of the system that I am using. :smiley:

EasyPhil, if only it were that easy.

NICE. Thanks for the great link! I have NO long distance carrier so I don’t get nabbed by their stupid rates, hidden fees, and annoying phone calls. I love the 10-10 numbers! :slight_smile: :slight_smile: :slight_smile: