This is an excerpt from a letter I was writing to a friend who's out on a mission, with just a sampling of what I'm putting up with today.
Work hasn't changed. In fact, it's as wee-tawd-id as ever. I had to deploy a new link into Production last week. Now, you might think that adding a link to a page or two wouldn't be that big of a deal. I mean, how many ways could you screw up <a href="http://over.there.com">Go Over There</a>?
Well, let's see. Of course, they wanted a graphic to go with it. But this wasn't added to the design documents. Fortunately, this happened before I got here, so the full-time developer who actually did the work and had to deal with this "undocumented change" was ready and waiting to voice that fight. (It was disappointingly anti-climatic: "Why is this image here?" "I was told to, and they refused to update the document." "Oh, well, fine then.") But the image wasn't aligned neatly with the rest of the page. (Funny, the documentation doesn't describe how the non-existent image should be aligned.) So I got that all lined up, tested it with IE6 (no one's said anything about IE7 yet, which was just released and changes a lot of rules -- even xbox.com doesn't look entirely kosher in IE7), Firefox, and Opera, and called it good.
Then there was the requirement that this new text link (in addition to the graphic in the middle, a new text link should appear on the left) should replace this other link, not be shown in addition to it. Whoops, the developer missed that one. No problem. Go through the thirty-two files and comment out the link. (Yes, apparently, there are eight files that draw the left side, depending on what you have clicked; times four, one copy for each environment in the deployment chain.)
Gets to User Acceptance Testing. Bug gets filed about text overlapping in Mozilla. Eh? But it works in Firefox. No, not Mozilla Firefox, just Mozilla (the one that uses the old Netscape Navigator logo). Apparently the two browsers don't work exactly the same. So, I download Mozilla, view the page, note the problem, start playing with the tags to see what's throwing it off (yep, it's that non-existent image again; whole lot of work for something that shouldn't exist), fix it, and set up to deploy.
I don't know what I'll do if they find a bug in Mac IE or Safari; we don't have a Mac available.
So, we schedule the Production build. But before we go there, someone just happens to notice that there is a link missing in the secured site. (Most of the changes, including the non-existent image, were to the "unsecured" site (i.e. the login page, something they see before entering a username and password to get into a secure area), but there were a couple changes in the secured area.) What happened? Well, apparently there was a change made in production, deployed from the production maintenance branch, but that change was not added back to this development branch. Short answer, if we deployed, we would remove something that should be in production (and, in fact, is, as of now).
So we should just postpone the release until the code can be reconciled, right? Absolutely, if Marketing hadn't already published that this new link would be available. It's the age-old problem in this field. Marketing makes a promise, and we have to deliver. Fortunately, Marketing only promised the link on the unsecured site, so we could deploy that half of the project, and deploy the second half the next night.
I went home, prepared to call in at 8pm to a conference number while the deployment happens (standard procedure, get everyone involved to be present -- physically or virtually -- in case something goes wrong). As I'm listening to everyone going about their business, I learn that sometime between the time I left (about 5:30) and the deployment time, it was determined that there should be disclaimer text below the link graphic. (I've heard that came from the CEO, so it's not like just saying "no" was much of an option. And neither was postponing deployment to properly deploy the disclaimer text. Not a lot of space between this rock and this hard place.)
Ok, the next day, we get the secured code reconciled, and schedule the deployment. Since it is just a code change, this can be done mid-day (site content changes take down the site during deployment; code changes do not), and we were told to schedule the deployment for 4pm. At 1pm, we receive the final decision from a list of emails we didn't know were going back and forth all morning. The conversation goes something like this:
Business Users: What happened to the other link?
Product Manager: We removed it, per the requirements.
BU: But now people can't get to that link! We need it back!
PM: You signed off on the requirements, saying you'd give the URL to those who needed it! If you want it back, it is a change to requirements. So what do you want?
BU: Put it back.
So, I make the change, restoring the link in the thirty-two files that I had to remove because it said to in the requirements. So it's almost 2pm. We have a deployment at 4. I check the files in and request an immediate deployment to Test and UAT to get it ready for deployment. That goes something like this:
Project Manager: Get this out there immediately!
me: Get this out there immediately!
Source Control Management: Where are the release notes?
me: They need release notes.
PM: Forward on the email.
me: Here's the email.
SCM: These are emails, not release notes. I'm not deploying.
me: They won't accept this.
PM: (creates a change request) Here's the ticket number. Use that in release notes.
me: (creates release notes) Here are release notes.
SCM: (has gone home for the day)
At least now I know what a ping pong ball feels like.
This was the point where I let the PM talk to the manager in SCM and "let the grown-ups talk". Having me run back and forth wasn't doing anybody any good.
The weekly deployment meeting, which happened to be the next day, was entertaining as well.
Source Control Management: You didn't follow procedure.
Full-Time Developer: What procedure? We've never had this restriction before.
SCM: It's common practice.
FTD: What common practice? This is all new to us!
SCM: How did you get it deployed anyway? We didn't stage it for production, just test.
Deployment Manager: It was the same set of files; we didn't need a special stage for production.
SCM: You're supposed to get it from us. Otherwise, what's the purpose of SCM? (obvious pouting in tone of voice)
DM: SCM is supposed to be available for deployments. You went home!
SCM: My boss told me to go home!
All this for a stupid little link.
Did I mention that the project manager mentioned they were looking for full-time .Net programmers, and that she had mentioned this to the account manager about my status (contract to hire or not, and when I'd be available to hire)? She said she had no power to make any offers, but she was talking to me as if the offer would be coming. It was an effort not to laugh out loud. My poker face must be better than I thought, or she's just good at ignoring facial expressions. (Probably the latter; she's one of those who, once she gets talking, there's no stopping the locomotive.)
Hmm. You know, it's just possible that work would go more smoothly if they didn't randomly decide to take the database down for the day to "reload data", during the day, with less than a half hour's advance notice, sent only to a handful of people who don't seem able to forward that information to those of us trying to work within that half hour.
Back at work. Checking email. Hmm, a defect, let's see. This link doesn't appear on this form. Let's look up the requirements. Ah, link is "TBD". Well, I suppose if they want to see a link there, I can put it there, but somehow I don't think they'll like "TBD" as the target.
What else? Ah, a message from my PM, asking to please send the results of a test I was asked to run on Friday. I guess I'll reply, and attach the test results I sent to him Friday afternoon. This man is the master of chaotic management. How anything gets accomplished, I'll never know. But it probably fits with the rest of the company, which is likely why the other huge project of which I actually wanted to be a part is shutting down due to lack of progress. Lucky. They all get to move on to new projects, and I'm stuck here through Q1.
Oh neat. The DBAs decided to take our development database offline. Funny that I only hear about this decision in passing from one of the testers.
And I seem to be the designated release manager for the development team. And part of that is just "knowing" when code should be deployed.
I have put a fresh build on DevInt and have requested the move to System Test at 3pm. I will send out an email when I hear from ITSWS that the move has completed. When I receive confirmation that everything looks good on System Test and everyone approves deployment, I will schedule the move to UAT.
Want to take bets on how many people take notice? I can bet on one, only because he complains about process and lack of communication more than I do. And he has about as much power as I do to make people actually listen.
Ok, I've officially decided that I really dislike this job. When it's not even 9am and I feel the need to smack somebody, then something is definitely wrong. Apparently, two of the pages on their site are really serviced by a completely different provider at an entirely diffrerent URL. So the project we have that changes the header for the site isn't working on these other two pages (gee, imagine that). I raise the issue to those who might actually have the authority to coordinate, and after their emails go down a completely different tangent and I spell out the problem (and the possible solution on their end, since we have no control over their code), I suddenly receive no emails.
And this morning, they want to know when they can expect to see it working. "How about, after it's fixed?" I want to shout.
Incidentally, this is the same project that the Microsoft consultant put together. I seriously doubt he had any more knowledge about these two pages and how they work than I did up until yesterday, so I'm not saying it's his fault at all; I just find it an... "interesting" coincidence.
Wow. And it just keeps getting worse. For me to even attempt to give a play-by-play of what is happening now, putting the proper context around it, would be an exercise in futility. But in an quick summary: the release management person who was pouting back towards the beginning of this letter, is again deciding he won't do a release without a detailed description of every file that was changed; the tool that the Microsoft guy wrote to deploy SharePoint lists has a serious flaw in that it builds an XML document by simply concatenating user-entered strings (want to guess what happens when one of the user's values has an "&" in it?); the resident architect said to fix the problem with the images on the external site, all we need to do is send them the logos, because otherwise we have to pay them to update their code (note that (1) these logos are uploaded by users, so it'll be a changing list that now we have to somehow maintain across two systems, and (2) it won't magically fix the fact they're putting the URL in the WRONG PLACE); and the testers are all wondering why the latest updates haven't been deployed yet, and when that will happen.
And it's only Tuesday.