Well, it's official. As of yesterday afternoon, I am unemployed - at least until Monday when I start my new job. I promised that I would discuss my reasons for leaving. Here they are.
First, let me say the the decision to leave my old job was a very difficult one. While things weren't perfect there, it wasn't bad enough that I desperately had to leave. This is unlike the job I had before that. That time, it was easy to decide. I was miserable there, the boss was an asshole, and the pay sucked. At the job I just left, I can honestly say that's not the case. So why did I leave?
My decision to leave was not based on a couple of big problems, it was based on a lot of small problems that just piled up and made things unpleasant and uncertain there.
Did I have a bad boss? No. In fact I hardly saw my boss, and when I did, I got along well with him. He was a very smart guy who respected my abilities, and didn't talk down to me.
Was I working on uninteresting stuff? At first no. I got a chance to work on TCP/IP servers, XML, XPath, XQuery, and embedded databases, as well as various open source projects. It was fascinating stuff. I was greatly enjoying this project.
Were the pay and benefits bad? No. They pay was quite good and the benefits were good.
So, you may ask, if I was so happy with things, why did I leave? In short, it was a combination of too much bureaucracy and a developing sense of unease as to my future there.
Getting anything done in that company is a nightmare. I wrote about some of the process in a previous entry. It takes a minimum of a week or two to get even the most trivial of fixes out into production. Why? Because there are seemingly a million levels of approvals that you have to get every step of the way. You have to have a code review approval. You have to have a security review approval. You have to have business approval. You have to have DBA approval. You have to test it in development, QA, and Product Staging, along with approvals each step of the way. If even one approval is missing, the entire request is rejected and you have to start over. If one form is even slightly incorrect, the entire request is rejected and you have to start over. I've lost days due to forgetting to put a single 'X' on a form! This is absurd. I understand the need for security and all that, but it was getting ridiculous the number of levels of crap you had to go through to get anything done. I am a developer. It is my job to take a request for a program, make it work, and get it into the hands of the customer. When you spend weeks and weeks fighting procedures that seem to change on a nearly daily basis, it gets very difficult to do this. I essentially finished development on the project I was working on six months ago. The last six months of my life have been mostly involved in forms trying to gradually role this project out into production. Even now, 19 months after I started, code that I wrote over a year ago, is still not in production! This is ridiculous.
My project was sadly underfunded. I started working on this project in about January of 2005. I was doing back end server development on the project full time for an entire year before we were finally given enough money to bring on several full time developers to do the front end on this project! Essentially, the front end was a year behind! I was already a year ahead of the rest of my team. They've been playing catchup ever since. For most of the first year of this project, my team consisted of TWO people (not including the project mananger). Those two people were me and my QA tester. Considering the amount of work that needed to be done on this project, this meant that much less resources were devoted to this project than should have been. On top of that, we were operating on a limited budget. This budget was scheduled to run out at the end of August (this month!). That means that, finished or not, this project essentially gets abandoned until next year (January) when they can get a new budget and continue the project. This means that I'm staring down a big question mark. When the project budget runs out, what will I be doing between the end of August and January of next year? I am a C++ developer and I frankly didn't see much other C++ work around the company. It seemed to me that most of the rest of the work around there was programming in Visual Basic 6 (a very old, outdated, and unsupported programming language) or ColdFusion (an old web development system). I really had no interest at all in either of these technologies, and the thought of having to do these two things full time for at least five months didn't appeal to me. And that's not even to say that had I sweated out those five months of unpleasantness, that come January I would be restored to this project and restored to doing what I like and what I am good at. Could I have done the work? Of course, but it would have bored the crap out of me.
Another thing that really wore me down was when they moved me from the building I was in to the other building. In the first building, I had a desk, in a fairly quiet area, with a nice 18" LCD that was very comfortable to look at for long periods of time. Granted my desk was next to the department printer and in a relatively high traffic location, but it was still fairly quiet and I was able to concentrate on my work. My project was very complex and required a lot of concentration on my part to get it right. Now, I *like* that it was an intense project. It kept my interest and I enjoyed the challenge. This all changed when I got moved to the other building. When the move happened, we were told to move our computer, but leave our monitors at our old desks. I had found out where I was moving to in the new building and had gone over to investigate. It turns out that my new location was not only going to be in a smaller desk, with no desk space and no bookshelves for books, but I would be losing my nice LCD monitor in favor of a serious piece of crap CRT monitor. On top of that, this room I was getting moved to was also housing the customer service department. This means I had to sit in a room with several dozen other people who's jobs it was to answer phone calls from customers and help them with problems. This means that I would hear constant talking coming from all around me. This constant noise would destroy any hope I had of concentrating on my work. You do not put programmers working on complex apps in a large, noisy room. That's just asking for bugs. And now that I am facing losing my good monitor in favor of a blurry, bulky monitor that takes up half of my desk, by itself, you can see how unhappy I was. I even went as far as asking my manager if I could keep my LCD when I moved over there. He agreed to let me put my LCD in his office before everything got moved. That way, when all his stuff got moved to his new office in the other building, I could just go over and reclaim my monitor from his desk and put it on my new desk. I did this. For the next week, I was the only person in that entire large room who had an LCD monitor... That was until Friday of that week, when I came in to discover that my LCD monitor had 'mysteriously' mutated into a CRT monitor. No explanation. No email asking me why I had an LCD. No email asking me if I had *permission* to have an LCD. Someone just decided to replace it, without any explanation or investigation. This was the straw the broke the camel's back. The day my monitor get taken from me, I decided it was time to leave. It turns out that this move to the large room was the catalyst that caused myself and others to leave the company. It was *that* bad of a move.
The incident with my LCD monitor also brings up another issue I had with this company. The equipment they gave developers to use was pathetic. It's bad enough that we are subjected to CRTs when decent LCDs are so cheap these days. But on top of that, many developers that I talked with had computers that had to be a good 5 years old and sadly out of date! You do not give a developer a 900Mhz Pentium 3 with an 8GB hard drive! Most computers didn't even have a DVD-ROM drive! How are you supposed to install development tools off a CD-ROM drive these days? It doesn't happen. How are you supposed to survive on an 8GB hard drive when Windows itself takes up about 1-2GB minimum, the developemnt tools take up another couple GB of space, and the development documentation takes up another couple of GB. You are left with struggling to work with maybe 1-2GB of HD space free on your hard drive. Combine this with a very slow processor and a lousy monitor, and it makes development work downright miserable. Developers deserve top of the line computers with a large LCD monitor and a large hard drive in order to be able to do their jobs efficiently. Some people may think that I am making a big stink over something as 'trivial' as the PC you use to do your job, but I don't see it that way. A developer's job is to write software. That PC is the tool he uses to do his job. Without adequate tools you can't do your job. I do not understand the logic behind paying a developer >$50K per year, but not wanting to spend $1000-$2000 on a decent computer so he can do his job! You are wasting much more than $1000-$2000 a year in lost productivity by giving a high paid developer a piece of crap computer.
So there you have it. It wasn't money or the lack thereof that drove me away. It was the work environment and the crappy equipment that did it. Hopefully certain people will read this blog and pass it around the company so they can understand better why the company is falling apart and why they are losing as many good people as they are.