My Old Day Job – Part One

| #dayjob | #Kafkaesque | #ora |

I haven’t worked a real job for about six years. I just found my old forum posts about my last six months at the old job, and it reads like a descent into a Kafka bureaucratic nightmare.

I’m going to start re-posting them here. It’s a story in four parts. Please, enjoy. And if this reminds you of your current job, quit.

A bit of background: I worked for a software company. We did inventory control software, in Australia. Our head office was located in Overseasland (almost 20 hours behind us), and there was also a support crew, in a third country, operating on Overseasland time. The Overseasland crew did all the development, we were basically a long-forgotten arm of the company operating on our own for so long most staff back in head office didn’t realize we were more than just dealers. We wrote most of their documentation, and for a long time our boss was a third of the company – back when it was a three man operation.

So, there’s a history. We thought we were part of the company, they thought we were pains in the ass.

Let’s get going.

Jump to part two, part three, part four, final update.

May 26, 2011

So the company I work for has completely lost its shit. Please allow me to regale you with random tales from behind my desk…

We recently launched a beta, and it’s got some staggeringly basic bugs in it. I mean, we do accounting software, and out of nowhere the system is taking all the old, paid invoices and adding GST to them. Again. So invoices from three years ago, fully paid, are showing up again with the GST amount unpaid.

I reported this bug and the programmers canceled it, saying it was fixed in version X. I was using version X when I found the fucking thing, it says so right fucking there in the report.

A new report sorts by date by default, but if you click the Date header again it randomizes the list. Click it again and it reverses that random order. I submitted another bug report, saying in part “Also, It does not sort by date, except accidentally.”

I followed that up with a screenshot, described thusly: “This screenshot illustrates the reverse-random list of wrong numbers…”

I’ve gotten in trouble for making light of bugs before, as if maintaining a sense of perspective in the face of overwhelming idiocy and incompetence is a bad thing.

One time I suggested a company-wide wiki for managing all this crap, because we were using one in Australia and it was great. The next day I received a fairly rude call from the Overseasland CEO telling me to STFU and stop meddling in things I don’t understand.

A year later, one of his staff called me, saying they were installing that wiki, and could I assist?

Then they set it up and wouldn’t give me access to it.

A few years ago they launched a product specifically for our market, but without our involvement. It more or less died on the vine ’cause it was never finished and didn’t do a few things that we really needed here. They decided that no more work was to be done on it because it wasn’t selling, despite us not being able to sell it ’cause it didn’t work.

When we pointed out years later that we’d actually sold hundreds of them, more than enough for a full-time programmer to maintain and update and fix the damned thing, they decided to start development on a new product instead.

So they developed a new product specifically for our market, without telling us they were doing it, and without asking us what we wanted it to do.

When we asked management why we weren’t involved in the planning process, we were told that they discussed it and agreed the project would take longer if the Australian office was given a chance to participate.

Well, yeah, we’d have wanted it to work this time.

Our software is developed in another country, OverseasLand. A few things that are important there are not important here, and vice versa, but we’ve always punched above our weight and sold more units for a greater profit than the head office, considering the much smaller staff here.

When we recently asked for a credit card surcharge feature to be added to our software to bring us in line with literally all of our competition, they were adamantly against it ’cause this was just not done in OverseasLand, and furthermore as a customer they’d refuse to shop anywhere that did this.

The fact that it was accepted and common practice in Australia wasn’t important.

Head office had an e-commerce solution that suffered a lack of development for a year as the main programmer jumped ship halfway through and didn’t leave a lot of documentation or source code behind. Customers can’t do much with it, as the new programmers have been basically starting over with it, and besides, they wanted simple and not complicated, so customers had a limited set of features by design.

One day one of our newest customers, the nicest people you could possibly meet, finally had enough of waiting for a simple problem to be resolved, and emailed the CEO in OverseasLand.

The CEO then called me, and we had what I thought was a one-sided conversation where he ignored what I had to say and demanded I follow their established procedures for reporting customer issues, as if the customer going direct was somehow my fault.

After one brief, failed attempt to explain myself (I’ve set up a wiki and several other tools for our local office, which head office won’t even read, let alone participate in), I capitulated on every score, and shortly thereafter I sent Head Office everything they asked for, all the required issue documentation, in the required format. Except I screwed up the URL, so they couldn’t download it.

I went to bed, and in the middle of my night the staff in Head Office – a world away, in a different timezone – rolled into work only to find I’d prepared documents they couldn’t find. That’s about when the CEO went batshit insane.

I admit it, I should have checked the URL, mea culpa. Rather than call and wake me up, they (I imagine) ran around screaming and beating the shit out of each other all day until the next morning I came back to work to find an email from the CEO that said: our Australian server is crummy, I have a bad attitude, I’m sarcastic, I’m rude, I denigrate Head Office and make myself look good to the customers, I had to be begged and pleaded with to use proper procedure, and our entire office was hereby officially cut off from the E-commerce stuff, and could no longer sell it at all.


Years later I’m responsible for writing a working E-commerce interface to a popular web platform that works fast and efficiently and theirs is still nearly ready.

They wrote a new system for our customers who wanted to do email marketing, but it barely integrated with our software, is only a little bit better than a mail merge using free tools already available, costs more and more money as more emails are sent, and doesn’t fucking work. Attempts to make it work have been fruitless, the people responsible for fixing it go on holiday seemingly every month, and head office keeps asking us why we’re not selling any.

Our programmers wrote a new utility that continually monitors the database for changes and updates an e-commerce website continuously, with up-to-date information.

It also locks the database for its own purposes, and ignores the flag that shuts down the program and prepares the database for backups. Basically, since they released this, no one’s been getting complete backups of their data.

But that’s OK ’cause the fucking thing never worked anyway. This shiny new utility, designed to bring us into the future, doesn’t work in our office, and despite working with the programmers, installing 20 different debug versions and holding our tongues just right and facing north and sacrificing goats, it still doesn’t work.

Good job guys, good job. Feelin’ proud.

June 2, 2011

So my boss was given a contact in the head office to handle a few customer issues more directly, a sort of immediate representative within the corporate hive who’d be able to help us get answers for our customers.

So the boss emailed him some questions and a followup or two, and was immediately smacked down by management for asking questions via unofficial channels.

But that’s OK, really, ’cause all these ‘unofficial channels’ came back with was “Oh we fixed this bug” when the bug was clearly still very much a problem, and “It’s only been two months, what do you want from us?”

More than you’re prepared to give, I guess.

Yesterday someone asked about an outstanding problem, the one I mentioned earlier that fucks up our backups and doesn’t actually work. They asked for a recap of the attempts to fix it so far, and I told ’em who I talked to, when, what we tried, and where we were at last time we worked on it. Basically, we tried a mess of shit, nothing worked, all their efforts failed, then the guy went on vacation and I never heard from him again.

Their reply this morning was that the app works fine, there’s no reason it should fail to work here, and that it’d probably be just fine if only communications weren’t so sporadic when they last tried to help us with it.

It’s fucking sporadic ’cause we only get two hours a day and you went on a fucking holiday in the middle of it! Don’t you blame me!

Remember, there’s a two hour window in the morning where both our offices have people in them . Then they all go home while we’ve barely finished our first coffee of the day.

Then they had the nerve to suggest we sell it to customers anyway and head office would handle the installation and support for the feature. Guys, seriously, you can’t make it work for your own fucking company, we’re sure as shit not going to saddle customers with it then refuse to help them except for two hours a day when our only response is “Call this international number and hope.”

June 3, 2011

It used to be that anyone who needed the latest version of our software went to a fixed location to download it. Easy, right? Not easy enough for our programmers. The new version has a complicated, ugly and multi-step process requiring the users to enter an email address, wait for a password, log in, figure out where the software’s hidden, then download.

And if their email changes, or the guy with the password isn’t around, or they are downloading at home ’cause the internet at the shop is down, or any of a dozen other very good reasons, they can’t get access to the software. Just this morning I phoned head office and added an email to an old customer’s account. It’ll take ten minutes to start working, she told me.

Twenty minutes later it still didn’t work, and head office was gone for the day. So I either wait 22 hours for them to come back to work, or I have to log in, navigate, download 150MB, and upload it to our own servers and then send the links to the customer.

This is more efficient how exactly?

Head Office has a new policy of shooting themselves in the foot. An old customer asked us for an extra user license as, after ten years of using our software, they were expanding from three terminals to four.

Rather than take their money and making everyone happy, head office tells us that the user needs to pay three years of updates before we can take their money for a new user. In over fifteen years this has never been our policy: you want to give us money, we’ll take it. That’s our policy.

I emailed head office and told them that if their new policy was to refuse money we wouldn’t be implementing it here.


The new beta version not only broke some fundamental components of our software in a spectacular fashion, it actually prevented anyone not using an English copy of Windows from logging in. Your locale is set to Malaysia? You can’t log in. Japanese users? Can’t log in.

You’d think they’d have learned something from that time it turned out that any country that dared use commas instead of decimals couldn’t install a license file (ie: all our German users) two years ago.

And it has been a problem with our software from day one that we can’t use any foreign characters in the software. This means we can’t sell to anyone who doesn’t speak, work and sell English-language products exclusively.

Fucking assclowns, seriously.

Also June 3, 2011

Head Office just emailed me about the foot-shooting user-purchase policy I mentioned in the last post. Basically, it seems that when I order a $130 part and they tack on $500 worth of additional charges, it’s some sort of upsell.

Rather than apologizing for it, they told me to send the invoice I sent our customer, so they could help us justify the price increase.

Say what?

You fuckers have never meddled in one of our sales like this before. We’ve been ordering extra users for fifteen years, I’ve been ordering them for six, and now – out of the blue – you’re fucking with us!?

June 6, 2011

Our company’s design philosophy has always been a little bit different than most. If I had to summarize it, I’d do so thusly: Rock solid record keeping with as little automation as possible, and a user interface we call The Thousand Tiny Cuts. As an example of how seriously we take these things, consider the following:

We’ve been pressing for some automation in one part of our software for years. It’d be a nice little addition for our smaller users, and a massive time saver for our larger customers. All our competitors do it, and recently our programmers finally relented and started work on this.

They cut us out of the design loop, preferring to get the desired functionality directly from our new, large customer who demanded it. If you know anything about programming, this is a terrible idea. The programmers have a vested interest in doing the least work possible, the customer thinks they know what they want but don’t understand the software or computers well enough to really communicate their needs.

So, as expected, the feature was added and it’s complete shit. Rather than saving a huge amount of time in a lengthy process, it cut about two clicks out of it. Rather than copy numbers already entered and fill in the forms automatically, it simply made it easier to get from part A to part B, where you still did all the same work twice.

Our customer was upset: this is no time saver.

Our programmers were adamant: 1% of the time the numbers might be different, so we make the user enter them twice to make sure they’re correct.

We were just flabbergasted. No matter how hard we tried to convince them that it makes more sense to auto-copy the numbers first, and let the user change them if they’re wrong, they refused. No way, that could lead to inaccuracies, no way no way no way. And besides, it’s done now, if you want it changed someone will have to pay for it.

This is a recurring theme over here. When something needs to be changed, someone should pay for it. It doesn’t matter if you’re adding functionality that would make the software easier to sell and more competitive. If a programmer has to work, someone has to pay him, and that someone should be a user.

Oh, our users are paying alright.

June 21, 2011

Like all Windows programs, you can find the current version of our software by going to HELP and selecting ABOUT. You say this to anyone who’s been using computers for more than a week and they know what you mean.

I just made a screenshot from every open app on my system now, and here’s what I found:

That’s how this shit works, OK? Everyone knows this.

But not at our company. A few years ago we had a question mark icon labelled Documentation. You’d click this to get, surprise surprise, the documentation. This icon was immediately below the HELP menu entry, which made sense. All the help you wanted was in one place. Want help? Click HELP. Want documentation? Click DOCUMENTATION.

But not anymore. For the last few years, we’ve had this:

Now, every single time you’re on the phone with a customer and you want to know the version, you say “Click HELP then ABOUT” and they click the big friendly icon and get taken to the DOCUMENTATION program. Where, of course, they don’t see the VERSION.

In conversations with our head office, they always rubbish the idea that this is somehow wrong, and rationalize it by saying no one will make the same mistake twice, after we patiently explain to customers that we’re fucking idiots who can’t design software to save our goddamn lives.

Well, that’s true, and I suppose batshit design choices like this also help keep people from recommending our software to other people, resulting in fewer people who’ll make the same goddamn mistake.

So, good job!

September 16, 2011

Our software runs on another company’s database engine. It’s similar to MySQL but more expensive, harder to use and generally more annoying. With the release of Windows 7 a lot of customers needed to upgrade the database engine ’cause the older versions didn’t handle Windows 7.

So any time a customer bought a new computer with Win7 on it we’d have to upgrade their whole network to Database Version 10, or the new computer couldn’t access the data. We’d send a request to head office for a Database 10 upgrade price, they’d tell us and we’d bill the customer.

Last night, quite out of the blue, they started billing us for Database 11, which doubled the cost for a lot of upgrading customers (9 to 10 = $500, 10 to 11 = $500 more).

So I asked them if Version 11 was out of testing, and was our new product now.

“Oh, no, 11 is still in testing, we can only install 10.”

But… You billed me for 11.

“That’s right. We’re charging for 11 now, but since we haven’t certified it we’re still installing 10, until 11 comes out.”

So a customer faced with an unwanted upgrade now has to pay double, but get the lesser product. No, thanks, we’ll stick to version 10. We don’t need 11, or the associated cost.

“Sorry, we deleted all the part numbers for 10. We can’t sell it anymore, ’cause we can’t invoice it.”

…So, in summary, they’re asking for double the money to sell a product no one asked for that they can’t actually deliver anyway.

September 23, 2011

Head office was supposed to take over our office at the end of last year. We extended it for six months because of the global financial crisis’ effect on business. June came and went, and we didn’t hear from them. So we kept on truckin’ as we do.

July came and went. I went on holiday. September rolls around, and finally we thought to ask them what their plans were.


They hadn’t really worked it out. Someone would be coming down to check the place out, but they didn’t know who yet.

Presumably someone with a passport would be a good start.

At first they wanted to move to an expensive new technology zone with good access and decent internet, never mind that the access wasn’t complete yet, the ‘freeway’ only had one lane each direction so far and the train station wasn’t due for another three to five years… And the rent was triple what we’re paying now, plus two hundred dollars a week for each parking space. On the bright side it wasn’t going to be a problem with congestion for another decade…

Then they did some research, (hurray) and announced a plan to move our office, from our prime location in Cheaprent at the intersection of three major highways and the train line, to one their consultant suggested – on the busiest (ie: jammed) freeway 40 minutes from all the current staff. Because new staff might not mind the commute to there, like they might here.

Yeah, favouring staff we don’t have. Good start.

Apparently they had planned to create an illegal company by putting together a corporate structure that would be OK in Overseasland but against the law here. We straightened them out on that and they were honestly surprised the rules were different.

No wonder they won’t change different spelling, or deal with software issues that annoy the shit out of our customers. They don’t even really believe us when we tell ’em the laws are different here.

Well, fuckers, you’re about to find out what the truth is.

And while I’m raging, I’d like to see as much thought and effort put into the fucking product as into planning fancy new expensive show-off offices in a country you’ve never visited. Our office may be a dive, but it’s cheap and it’s convenient and we get like two customers a year actually visit us. For real, no one comes here, we go to them. It was always thus.

Still no word on the database product they built our software on. We can’t use the new one and they won’t sell the old one. I suppose, technically, we’re illegally installing the old version for new and existing customers… But the alternative is to stop selling our software entirely, so. I guess it’s a risk we take.

So glad we made the decision to go with an expensive proprietary DB instead of something free…

September 23, 2011

One of the big selling features of our software is that a buyer can re-sell it later should he sell the business or whatever. The new user calls us, gives us a hundred bucks, and goes on his merry way with software legitimately licensed to him.

We’ve been doing it that way for years. Head office though makes the user catch up to date with all the software updates missed before they can relicense it…

A new user called recently, bought the software from a good customer who closed his doors last month, and wanted to re-license it. This software was way out of date, because it was a deprecated product we haven’t worked on in half a decade and any money spent on updates would be wasted. Head office wanted him to pay for updates. I argued against it. Head office wanted him to upgrade to a newer product. I argued against it.

Head office didn’t want this new customer, I argued that a hundred bucks and a new customer, from whom we’d probably get support and training purchases from in the future, was a nice cap to a dull afternoon. “Oh, if you think you can sell them support, we’ll authorize the new license.”

Why does making it easy for people to use our software seem like such a bad idea to these people?

October 12, 2011

Our Overseasland head office is going to be taking over our Australian shop soon, and the first thing they’re going to do is move to an expensive office across town from where we are now. They reckon it’ll be easier to attract new staff if they’re in a more central area, which makes a bit of sense, but the way they’re going about it, as any reader who started at the beginning of this thread might guess, is retarded.

We’re in the fine suburb of Cheaprent at the moment, half an hour from the CBD, near the junction of three major highways, and literally across the street from the train station. You might think it doesn’t get any better, but the head office boss refuses to consider staying in our post-flood Queenslander, a renovated house on stilts. Well yeah, I can’t blame him for that, but he also refuses to consider letting the property owner build a three-story office building here in its place. He also doesn’t care that we’ll be one of the first suburbs in the country to be wired for fiber broadband, his mind is set.

All he knows is we’ll get flooded and overrun with plagues of rats, ’cause that’s what he’s seen on the news in HeadOfficeLand. He doesn’t know the area he wants us in, except from expensive consultants who tell him it’s the next big thing.

So I’m looking at $450 per month for commuting expenses and an hour and a half per day travel time, to go work in an area I’d rather avoid to suit employees we don’t have because a man who doesn’t know where we are thinks it sucks compared to a place he’s never seen.

Actually that sort of seems par for the course around here.

October 14, 2011

Our Overseasland head office doesn’t understand the needs of Australia, and no matter how much we agitate for change, they steadfastly refuse.

One example is laybys (known as layaways there): they’re much more common here than there, but our layby functionality is cumbersome and half-assed. Head Office won’t fix it ’cause they don’t need it.

Another of the key things we need down here is a credit card surcharge function. In Australia retailers often charge extra for customers using a credit card, usually 2-3%, to cover the costs of accepting the card.  The credit card companies in Overseasland won’t allow this, but it’s standard practice here, at all but the largest retailers.

According to our dealers, all software packages sold here allow the retailer to do this. We don’t, and it baffles our dealers and users and prospective clients alike.

Every time we discuss this, Head Office doesn’t get it. The last time I brought it up, one of the managers there said:

My personal take is that I would not do business with someone that is going to charge me a surcharge, legal or not.

Well that’s just fine, but it’s beside the fucking point, isn’t it? We’re missing a feature our competitors have and our customers want. I pressed this to them, and was asked who’s going to pay for this modification?


I guess we are. The same way we paid to upgrade from DOS to Windows, the same way we made it work on Windows 7, the same way we added almost every goddamned feature for the last 25 years!

And yeah, when a customer does ask about new features, it costs a ton of money just to look into the feasibility, and then a much bigger ton of money to start working on it, and the feature usually doesn’t work right, and as of September 2011, we were told that all new features from now will arrive in May 2013 at the earliest.


October 17, 2011

Remember I recently talked about an ugprade to a new database back-end for our software? This product comes from another company and we’re stuck with it for many reasons, but mostly because no one really wants to agitate for a change that’d result in a cheaper, more user friendly product.

I can see that. No one really wants our programmers tied up for the next year rewriting and testing core functionality.

With all older versions of the database engine, for as long as I’ve been here, the only question we needed to ask our larger customers was “32 or 64 bit?” For smaller users we didn’t even have to ask that. We’d send the customer a CD, they’d install the engine like any other Windows program, and it’d just work.

With version 11, we have to ask in advance whether it’s 32 or 64 bit, Windows or Linux, and the MAC address of the network port, ’cause the new system dials home to verify its authenticity, and then locks itself to that hardware platform.

The old version could be moved to a new server. 9pm and the server melts down, you just reinstall the engine on a different PC, copy your data files, and you’re ready to get back to work.

With the new version, if your server dies after hours, you have to coordinate with our office (which is closed) to liaise with our overseas office (which is closed) to contact the database company (which is closed) to get the license revoked and re-authorized for the new temporary server. I can see this process taking at least 24 hours, especially if the customer fails to provide the right details the first time.

And they get to do it again when the replacement server is installed. Hopefully they’ll be wise enough to do this during office hours.

Ah Insanity. My co-worker.

October 19, 2011

A dealer of ours was trying to install our new product (the one developed without any input from anyone who actually uses it) and ran into trouble. Our software can talk directly to credit card machines to process payments, but this feature is not often used ’cause it’s expensive and complicated, and we’re installing a low-end product that people buy when the budget isn’t limitless.

So our dealer gets out there, tries to make it work, and fails. After several hours of fucking with it, it continued to fail, and we got involved. What worked on one of our test platforms in the office didn’t work on the other, and it didn’t work for our dealer or his customer either, so we made the decision to turn the feature off while we talked with our Head Office programmers about it.

But we couldn’t turn it off, once it was turned on.

So what was a fairly major annoyance became critical as a customer was suddenly unable to process credit cards at all, with our software.

That was yesterday.

Today our head office sent through a screenshot of their internal license generating software, highlighting two checkboxes that need to be active to make the credit card thing work properly. The license they sent us had only one of these options active, so this was the problem (they said).

They’ve never let our Australian office make licenses, we don’t have access to this software. I’ve never even seen it before, and I asked him what I was supposed to do with this screenshot.

Apparently he just wanted to show me that they knew what the problem was, and that a fix was on its way.

Of course, they didn’t send the new fixed license, I still had to go back to the appropriate department and tell them what was wrong and ask for the new license.

And then I checked our other software, which is very similar and runs on the same foundations. It works fine with only one of these boxes checked. I have this sneaking suspicion our dealer will spend more time on this problem today without it actually working.

October 26, 2011

We still haven’t worked out how to turn off the function mentioned in the previous post, that the customer wants to be rid of. Our big flagship software works no problem, on and off with ease. This entry level product is built on the same foundations, but is crippled. Developed for us, without any input from us.

It’s basically orphanware, they haven’t updated the original version in four years (though they have the nerve to ask us why we don’t get our customers to pay the upgrade fee every year).

The new version is on programming hold until we sell more. We can’t sell more ’cause it’s full of bugs.

Like this one. The dealer still can’t turn that feature off, the customer’s upset, and the feature itself is causing all sorts of havoc. When turning it on, it forces you to enable a whole host of compliance functionality to bring it in line with a software standard that is important in Overseasland, but not relevant to us in Australia.

It’s supposed to make your software secure, by encrypting any parts of the database that could conceivably be used to store a credit card number, even if you never ever do so. It forces you to change your password every 90 days, whether you want to or not, you can never use the same one twice, and each new password has to have a certain length, a number, and punctuation. It makes you answer a lengthy quiz about your business practices, paying lip service to the idea of security without actually doing anything about it.

It’s a recipe for hatred, and we can’t turn it off. Head office says it has to stay on ’cause compliance is mandatory. The fact that no one here wants or needs it doesn’t matter.

So this poor user not only has a function active he desperately wants killed, he’s forced to suffer a host of other annoyances as a result.

And we still can’t turn it off. The one guy who knows how it works is on holiday, the head programmer can’t figure out why it’s not disabling itself, the dealer’s desperate to save the sale and the customer is, I’m sure, burning effigies of us every hour.

May 30, 2011

Our programmers wrote a new utility that continually monitors the database for changes and updates an e-commerce website continuously, with up-to-date information.

It also locks the database for its own purposes, and ignores the flag that shuts down the program and prepares the database for backups. Basically, since they released this, no one’s been getting complete backups of their data.

But that’s OK ’cause the fucking thing never worked anyway. This shiny new utility, designed to bring us into the future, doesn’t work in our office, and despite working with the programmers, installing 20 different debug versions and holding our tongues just right and facing north and sacrificing goats, it still doesn’t work.

Good job guys, good job. Feelin’ proud.

[ Feb 23 2018 ]

Got something to add?

Your Comment