I’ve mentioned some of my previous bad jobs in other posts, and said I’d blog about them.  Forthwith is story #1.  I want to talk a little about bad tech jobs, and the things I’ve learned from them, and maybe, hopefully, inspire some similar stories (unless you have had no bad tech jobs, in which case I hate you, and grats).  So everyone has had a crap job, before they got into their chosen career, be it a college McJob or something you did on summer break in high school.  But let’s talk about the crap development jobs we’ve had, jobs that have, at times, made us wish it was 1995 and we were delivering pizza again, living off tips.  I have had 2 such jobs as a developer, one right after the other as a matter of fact.  This post is about the second one (chronologically…it’s by far the worst on any scale)

 

It’s 2003.  I’m back in Florida after a year in Boston.  I happen across a job advertisement in the local paper looking for an experienced VB/Access developer.  After I lean over and puke, I swallow my programmer pride and give the guy a call.

 

So this guy (we’ll call him “Rob”) wants to interview me at like, 9pm.  He’s apparently a late worker/late sleeper, kind of a programmer cycle, so I’m down.  The business is a local manufacturing place that turns out is one of the leading providers of a piece of equipment needed by racing teams, and their product is in a ton of places, including a good portion of professional racing teams.  I’m not really into racing, but that was a cool little fact either way.  After talking to him a while (the “interview” was really more of a conversation just about…whatever) I picked up on the fact that this guy is extremely intelligent, self-taught, highly-motivated, and kind of a serial-inventor.  He uses the main business to fund other ventures.  At the time he was custom-making a pre-programmed CNC control chip (the promise of programming hardware was alluring, I won’t lie), and had a few other projects in the works.  He also had taught himself VB and Access and had programmed all of his internal software himself, for his accounting, inventory management, and various other business management tools.  What was compelling about his story is that while he was proud of his work in that arena, (and did well for a noob to be honest) he realized that it wouldn’t scale with his business and that he needed professional help.

 

Here was his proposition:  He programmed all this stuff because he couldn’t find a complete business management software package that works for small business owners and came for under $100K.  He wants to try to fill that space and make a software package that includes basic accounting, inventory management, sales, CRM, and so forth and price it around $25K (as a preliminary number).  He needs someone like me to take the thing soup to nuts, let it go through its growing pains right there at the shop, and put it out into the world.  The pay is right, the opportunity is interesting and I’ve never done packaged software before, but CRM and sales automation are right in my wheelhouse, so I’m in.  We go straight to Best Buy, pick up a laptop for me (I wanted a dell but he didn’t want to wait…it’s a common theme with him), and I’m off to the races.  I’m on salary, I can pretty much come and go as I please, it’s a fairly sweet deal.  Also, it doesn’t have to be VB or Access (and I sell him on why it shouldn’t) so we agree on .Net.

 

About a week later the warning signs start.  Roughly a week into the project he comes to me and wants to know what I’ve got.  I’ve got the rough draft of a spec, a first go at a database schema, and largely I’ve been researching the competition.  This seems like…normal stuff.  To me anyway.  Not to him.  His expectations were that I would have a good chunk of the accounting system done.  !!!!!  So I fight through being speechless and flabbergasted and talk to him about the project, about how you need to take the time to plan these things out, you can’t just jump in and start producing UI, and whatever else.  He seems to get it.

 

About a week later he wants to know where I’m at.  The cycle resets.  Then I hear the sentence I would hear many times over the next couple of months:  “I don’t know why [x] is taking you so long I could stay up and have it done in Access in one night.”  Some variation of that always came out.  There’s a good sign.  So now you have the classic case of someone who knows enough about programming to do little stuff and you know, have a conversation about it, but who has no clue how to translate that knowledge out into the larger scale.

 

So I prototype some UI, get the database schema finalized, and am working on the data layer after a few weeks.  I’ve got a basic spec and featureset that Rob approves of, and mostly I’ve altered my schedule to clash with his so I can avoid him and only have to deal with him about once a week.

 

Let me take a second to describe the work environment.  It’s a machine shop.  It’s loud.  There’s all kinds of noise going on, it’s one of those aluminum warehouse places so it’s cold as anything in there during the winter, when the phone rings in the office (where I am NOT located…I’m in a separate private section of the shop) it rings as a horrendous buzzer in the shop…and it rings all day.  Also they pump the country music 24/7.  I’m not a country music fan, but I can deal with it, but the problem is they have 2 CDs that they’ve burned, and they play them over and over, on repeat.  Alternating days.  And one of them has the same song burned on it twice in succession, so on a given day I would hear that song about 60 times.  It was not an ideal working environment for thought-work.  Also at first I didn’t have internet.  You heard me.  I dare you to try to do your job well without internet.  After a few weeks he got satellite installed (why satellite I’ll never know) and it was better then.  So I spent a lot of time working at home and working at Barnes & Noble in the café.  I cleared this with Rob and he was down, he knows it’s hard to work in the shop and that’s why his typical schedule was 3 or 4pm to about 5am.  Time when he could be alone and think.  So I thought we were all good.

 

We weren’t.  After a few weeks he comes to me and says that his wife tells him that I can’t be an exempt employee and that I have to go on an hourly system.  I’m pretty up on my employment law in Florida and explain to him that I very well can be exempt but the wife knows best and it is what it is, so I have to clock in now.  The real deal is that she wants to keep tabs on me.  See the wife is also the bookkeeper and office manager.  She doesn’t really support the project because my salary could have bought her a new Lexus (these people go through cars.  In the first 2 months of my being there they had a new Audi, new Mercedes, new Mustang, new Saab, and were thinking about some others).  She doesn’t understand what’s going on, and since my work can’t be measured by her in units that she can see and understand, she hates me and wants to find some way to quantify and exert control, so she makes up this story about salary exemptions and puts me to hourly.  Fine.  So I start doing a normal 8-5 (so I’m only exposed to about an hour of Rob at the end of the day) and freeze my ass off programming in my winter coat and sometimes gloves on the cold November mornings out there in the machine shop.

 

So after about a month Rob wants to know where his new accounting system is.  Do what now?  After a long and tense conversation, it appears that he had a few assumptions that I was not aware of. 

 

A) I would be building this such that individual pieces could be rolled out into production in his business and run side-by-side with the pieces of his Access stuff. 

2) That AP/AR would be first, and

iii) That the entire project would be complete and in beta in 6 months. 

 

Ok, that’s all news to me.  Obviously the first assumption has major impacts on planning and architecture that I hadn’t considered.  The second isn’t that big a deal once you know the first, and the third is unpossible, but not by so much that I couldn’t be “close enough” in 6 months that adding another month wasn’t a real big deal (you know how that goes).  After some further probing I get some more details.  What really needs to happen before this all goes down is he needs a way to reconcile the past 20 years of accounts receivable with bank deposits, because the IRS is kinda pissed and he needs to get this data to his accountant by Jan 1.   It is now Dec 1.

 

So let’s talk about this IRS data project.  20 years.  20 different Access databases, separated by year.  Roughly 15 different database schemas as he “improved” his design year to year.  There are entries for sales, and there are sometimes entries for deposit slips.  So I spend a good day studying the relationships and the data, backing up things in triplicate just in case, and then I get down to work.  I merge them one at a time, making schema merges as necessary, and slowly put together 20 years of financial data salad.  Sometimes I can match up exact amounts and exact dates, and it’s easy.  Sometimes I can’t, and those go into an exceptions table.  After a couple of days I have several thousand transactions matched up and only about 100 that I can’t massage to fit together.  I build a GUI for easily searching them and matching items up by sifting through the paper trail.  All in all bringing 20 years of mess down to only about a hundred manual exceptions was pretty good I thought.  I was proud.  And it only took a week.  I showed Rob the reports, the merged data, and the GUI tool.  He seemed pleased.  He told me to train his wife on it and she could match up the data.

 

Well the wife is always busy.  I finally get to train her just before Christmas.  That job done, I get back to work on the primary project.   I’m humming along pretty good in mid January, and have an alpha-ish version of the accounting system done. 

 

Then two bombshells hit in succession.  One, the wife didn’t use the tool, didn’t like it, or whatever, but didn’t say anything to me.  Rob comes to me well after the January 1 deadline wondering what’s up with the IRS project.  I tell him it’s been done and that he saw the software weeks ago and that his wife had been trained on it.  He tells me she doesn’t know how to use it and somehow he blames me for the whole thing.  Then, way out of left field, comes the directive that the whole software system, IRS project and all, is going to be done in Access 2003.  The reasoning is twofold. 

 

A) He likes how Access UI looks (OMFG!!!!) and

2) he can’t look at my C# code and tell what’s going on, and he wants to be able to get around in the code and maybe help add features when he feels like it (I swear to all that is holy I’m not making this up). 

 

I try to reason with him, about how if he wants to make commercial software for a wide audience he needs to consider a bigger picture beyond his tastes, about how he’s kicking 2 months of work right to the curb and starting over from scratch, about how bad an idea it is that he get in the code and that he hired me for a reason…he’s not having it.  So I start over.  I rewrite the IRS app first, train the wife, and then get back to work on the accounting application…going much more slowly because my Access chops are way rusty, having not programmed Access in 4 or so years.

 

For a while I had been looking to better deal the place, but this was it…I had to get out.  This place was Psychoville and Rob was the mayor.  In February I started making contact with some old friends and coworkers talking about a new gig they had going and meanwhile, I was giving this guy his money’s worth (I’m no thief) but I no longer gave the tiniest rat’s ass about the project, and I basically counted the days.  You know what it’s like to write the code when you lose the passion for the project…sure you still write good code, but it’s the bare minimum and you may as well be some outsourced guy from Bangalore for how engaged you really are.

 

To shorten up the drawn out end, I tried and tried to get him or his wife to use *either* of the IRS match-up tools I made for them, or even to send the auto-matched data on and get an extension, but they never did.  I came in one morning in March and Rob’s car was already there.  I knew what it meant and I welcomed it.  After making me sit there and wait for an hour or so (I used the time to clean what was left of any personal data off the laptop) he comes in, tells me it’s not working out, the IRS is on his ass and it’s partially my fault, and he’s giving me a week’s severance.  It was the first time I have ever actually been fired, and it even stung a little, I won’t lie, but after about 30 seconds of hurt pride time in my car I was so relieved to be rid of that place.  I took a few weeks off and moved on to the next thing.

 

So that, boys and girls, is the worst development job I have ever had.  I learned several lessons from it, and any time you can walk away from something with more knowledge or wisdom than you had before, it’s not a total write-off.  This post is now huge however, so I’ll wrap it here and lump the lessons learned posts together after I tell you about horrible development job #2 later this week.


Tags: