Showing posts with label release cycle. Show all posts
Showing posts with label release cycle. Show all posts

Friday, 5 August 2011

The End of the World as We Know It

I wasn't concerned about finding a new job after I was done with Fjord Systems. Chucky had been hassling me for a resume; they needed someone like me at his new gig. Two of Fjord Systems' rivals had also approached me. I was pretty sure I could find work without any trouble, and I had my entire three month notice period to do it in.

About two weeks later, a Global Financial Crisis was declared and suddenly all of those opportunities went away. But it was October, and I was tired, and I still wanted to see the product out the door.

First thing I did was tell the team that I was no longer available after hours, and I was not working any more overtime. The immediate ramifications of this were that I was not going to conference into development meetings and I would not be returning to Sweden for the company 'conference'. The conference was a marketing gimmick; a holiday party that would last a week and would see customers from all over the globe descend on the offices in Sweden. I also knew, from the previous year, that almost nobody would be doing any work whatsoever for the entire month of December and half of January. I that wanted to leave quietly.

My work was pretty much done. Chucky had finished the drivers before he left, and I had finished integrating them when I gave my notice. Mostly my job consisted of writing unit tests and fixing bugs that arose because Anders starting messing around with the drivers. His changes were minor and really served only to break the interface or the unit tests. I suspect that this was a way of taking credit for Chucky's work by putting somebody else's name all over the version control system, but I stopped caring. Chucky had agreed to do any urgent maintenance that was needed in his drivers for six months  after his resignation (he did not give the required three months' notice), but there weren't any issues beyond the new ones Anders introduced, and then demanded that I fix in the interface. I complained the first time, but after that I gave up. They were minor changes. Many of the changes simply showed that the team had not understood the design as I had laid it out for them, but the software still worked well enough... it just meant that many of the features I had written sat dormant.

About a month later Martin sent me an email saying that he wanted to talk to me. He said he'd been trying to call me on my office line, but I never answered. I had been turning the phone off after 6pm, and there was no voicemail set up. I had said in my letter of resignation that I would no longer be available after hours. It took Martin six weeks before he thought to email me.

We arranged a time and I got on the phone with him, but I found that I wasn't really listening to whatever it was he was filling my ear with. I sat there remembering him making fun of my friends behind their backs, and I wondered what he'd said about me. I told him that I was tired of the work. I told him that I'd already done this same project when I had worked at ATB Software, and that the team's refusal to honour their promises meant that this product would not be as good as the one I had worked on two years prior. Even if it had been, it wasn't the work I had signed up to do. That work had departed when Jacob had been let go.

The product was released in January. It was substantially better than the prior version, since the new design, even compromised as it was, was at least cleanly-written and fairly efficient. The drivers worked and integrated into the software seamlessly. Despite my reservations, the UI team produced a very nice
new front end for the application from scratch and the product looked quite polished. Certainly, it presented a much shinier facade than the product I had built at ATB Software...

But it just wasn't as good. My product for ATB still rated in the top three of its kind when it came to performance and efficacy, and the new product from Fjord Systems stayed well below it.

But that wasn't my problem. I had quit my job at the middle of the biggest economic downturn in decades, and I was feeling fine.

Monday, 18 April 2011

Two strikes

There were three occasions when Bashir threatened my job, but in the end he was not the one who swung the axe, and mine was not the only head to roll.

In the first two incidents I can claim innocence. The third... not so much.

The first time, the warning came through my manager Eric, no Bashir. "Jared," he told me, "Bashir says I need to warn you that some people have complained about you."
"What did I do?"
"Well... it's the hours you work. You always leave by 5:30, and they stay until 6 or 8."
The other guys would start work at 9:30, 10am, even 11am sometimes. I was working normal business hours, as stated in my contract... not to mention nights and weekends when required, along with everybody else. I was certainly pulling my hours.

I think Eric could tell, from the look on my face, what I thought of this complaint. "I know you start work early," he said (which he did, because there was spyware on every employee's computer, monitoring our every move.).
"Are you asking me to come in to work later and leave when the other guys do?"

I knew that Vlad, who occupied an office close to mine, started work even earlier than I did and left before I did in the afternoon and I was about to bring this up, but Eric said "No, not really. It's okay, but Bashir says I have to tell you there's a complaint."
Which of course meant another black mark in my file, even though it was not something I had actually done wrong or could be disciplined over.

The second time I was threatened, it was over somebody else's mistake.

A device that our customers regularly used with our software had modified their data format, and because it was such a popular device we had no choice but to update our software. I was initially pleased to have had the work assigned to me, since it was the first time I had been given anything real to work on since the debacle of my first assignment. I was given a document written by Kerry which actually resembled proper analysis of the problem, too. It was actually looking good...

... until I actually saw what I was going to have to work with. The existing code for the prior version of the data format was convoluted, riddled with gotos and nested switch statements and bleeding across several dialogs. It was ugly. I gritted my teeth once again and spent a week on it, checked it in, and forgot about it.

A few weeks later, at the end of one of Bashir's quarterly release cycles, I happened to notice that Sam had checked in some code in the same area. Once the data was imported from the device our application would shell out to a Runtime Access app to allow the users to do some postprocessing and at that point it was unclear from the vantage of the C++ team what happened to the data at that point. Sam had tried to clean up that area of code (like I said, it was ugly and unintuitive). I was pretty sure that what he had done wasn't going to work, but there would have been no way he could tell: the problem was buried many layers deeper than the area he had been fixing. I gave it a try and sure enough, the importer was broken.

It was the day before the release and QA had already signed off on the new version. Sam wasn't in his office, so I went directly to Neelam and told her there was a problem. Then I went and got a coffee and moseyed back to my office to get on with my regular workload.

Ten minutes later I heard Bashir come storming down the corridor. "Who broke it?" he demanded. "The release is tomorrow. Who screwed the pooch?"
"Jared said..." said Neelam.
"WHO WAS IT?" he said again, in a voice that suggested that punishment was about to be meted out. "WAS IT PIKEMAN?"
I don't think he realized that I could hear him, despite the fact he speaking loudly in the hallway and my door was open. He certainly seemed surprised when I poked my head out and said "Nope," I said. "I'm just the one who found it. Would you like me to help Sam fix it?"
"Uh... yes, okay," he said. I think the only thing that saved me was the fact that I said that in the corridor where everybody else could hear it.

Sam and I fixed the bug within about fifteen minutes and that was it. The release would have gone out on time, except that on the following day the CD burner broke. I could have cried a river.

The third occasion that my job was threatened came about a year into my tenure at the company. There has been mysterious consultants wandering around the company and we all knew that something was afoot. About 6:30pm the next day I received a phonecall after work from one of my best friends in the building, Connor. "Pike, just want you to know that Bashir was looking for you this afternoon," he said. "He wouldn't say why, but he looked serious." Despite the earlier warning, it appeared that Bashir had forgotten that I worked regular office hours.
Next morning when I got in to the office I spotted Bashir coming out of the kitchen. "You were looking for me, Bash? What can I help you with?"
He looked startled. "No, no, I wasn't, it's nothing."
"Okay great," I said. I went back to my office, and forgot about it.

Late in the afternoon Eric came to my door, looking extremely uncomfortable. "Bashir wants to speak to you," he said. "Come with me." One the way to Bashir's office he ran at the mouth about the next tasks that I was going to be assigned. It was quite out of character for him and I realized that he was trying to reassure me.

Eric followed me in to the office and closed the door. I sat down in the seat Bashir indicated, and Eric stood behind me.

"Jared, you haven't been a very good employee lately," said Bashir. There were complaints in my file. I was recalcitrant about fixing problems where there was no clear resolution. I lacked enthusiasm. I was too critical of the codebase. I wasn't fixing enough bugs. He himself had observed me sleeping at my desk.

This was all true.

I said I was sorry. I didn't quite grovel, but I'm sure I was a pitiful, sitting there in the hot seat, fearing for my job and, more specifically, my work visa. More than anything else that happened to me at that company, the one thing I most regret is that display of contrition.

"I'm going to give you one more chance," he said. "Because you know a lot of stuff and you bring a lot to the table, but this is your only warning."

I was didn't quite believe what I was hearing. Had he actually said that to me? Every time I had tried to improve the quality of our processes and our code my input had been dismissed out of hand, and sometimes it had gone onto my permanent record. This sounded a little bit like validation.

Why the change of heart? My guess is that Eric (who I certainly had my differences with) had come to my defence when he thought I was being victimized. My opinions were unpopular with the senior programmers, but the junior programmers... especially the newest hires... seemed to privately agree with me. What I didn't know at the time was that a sea change was coming and that suddenly the company realized that it was going to need to demonstrate a more, ah... modern... approach to programming.

The following day layoffs were announced. Two programmers (dead weight;  who had been hired because they asked low salaries or they were friends of friends) were let go, as well as a handful of people in other departments.

The day after that, a stranger arrived to explain that our company had been acquired by a much larger one. Any questions?

I asked when we would be given the free t-shirts.

The stranger gave me a disbelieving look and then looked for another question. I think that Bashir was probably angry that he had kept me on. But, right after question time the t-shirts were duly passed out.

Despite my cynicism, I was thrilled and excited. There was a lot of fear in the business when that was announced, but I could not have been more pleased. Not only would this give me exposure to new technologies and new opportunities, but surely our new management would put our house in order. A new broom was exactly what we needed.

I had no idea what I was in for.

Monday, 4 April 2011

Bashir's Way


Things didn't go so well once we started to do things Bashir's way. Although his regime was better-organized than the chaos which had preceded it, it quickly became apparent that less was getting done under the new systems than we had seen under the old (in which the owner of the company yelled and screamed and threatened until the work was complete).

There were several reasons for this. Firstly, requiring all developers to keep their working copies of the source code on a single network drive mean that it took more than double the amount of time for us to do anything, just due to disk access.

Secondly, the red tape overhead was huge. In addition to the checkout forms, we had to update a spreadsheet with the work we were doing, we had to track our hours on quickbooks timer, we had to submit an hour-by-hour breakdown every week, and we had to sign in and out of the building every day. Bashir's answer? Add more tape.

Bash and Eric had turned the excel spreadsheet into an access database and then they came and asked me (The database guy) if I would write a front-end for it so that the dev team could use it instead of the excel spreadsheet. "I can, sure," I said, "But it's not going to work on Access."
"Why not, Jared?" asked Bashir, rolling his eyes.
"Access does not support multiple users. If you have fifteen developers on this thing all day it's going to break."
"Fine," said Eric. "I'll get Gavin to do it."
Gavin built it in record time. It took about a week before it blew up, and I heard Eric lamenting to Gavin (whose opposite was directly across the hall from mine) "How were we to know that access didn't support more than one user?"

Bashir's process, as he had explained to us with a great number of drawings and, was the familiar development cycle: Requirements are gathered, features are build, QA tests them, development fixes bugs  until is satisfied, software is released. Wash, rinse and repeat.



Despite everything--and there is a lot more, which I will discuss in future posts--development finished its first release on the scheduled day and the product went to QA for testing. Neelam and her single junior tester (a nineteen-year-old kid named Colin) went to work and a week later--the end of their QA cycle--they came back to Bashir with a list of which defects had failed QA. Bash was furious! The release was supposed to go out the next day, how dare we fail to fix some bugs the first time! How dare QA fail to rubberstamp the release?

I helpfully pointed out that Bashir's chart showed a cycle from QA to development prior to release, but his schedule did not allow for this. A corresponding black mark went into my personnel file. It would be a while yet before Bashir threatened to fire me for the first time.