“Failure is always an option.” – Adam Savage
It’s 2006. I had just driven into Austin, leaving pregant wife and child in the Bay Area to start my job at Lombardi. It was the Friday before Memorial Day, and I was starting on Tuesday. I go by the office to say “Hi”.
Boss looks up, and says, “Oh, hi. How was your trip?”
“It was good! Glad to be here and looking forward to getting to work.”
“Yeah, we look forward to having you.” He gets up, and walks out of his office. He says, as he is walking away, “Don’t have time to chat now. Be here at 8:00 Tuesday for training”, and disappeared around the corner.
That was dismissive. And 8:00?
It’s 3 weeks later on a Tuesday morning at 8:25, and I have just woken up. I look at my Blackberry, and there is an email from Boss’ boss.
“MANDATORY MEETING IN MY OFFICE AT 8:30!!”
Oops. I send him email promising to be there at 9:15.
He rants and raves about the poor state of our web services testing. Wants a report on how to address it by 5:00 today.
I write the report as best I can after meeting with my people. Will require effort and people. I send it. I never hear about it again.
I discover that Lombardi pays once/month, and if you start after the 21st of the month, you don’t get paid until the last day of the next month.
It has now been 9 weeks without a paycheck for me, and we are out of money. I convince HR to accelerate my signing bonus, but there is a provision that says if I quit in the first year, I have to pay the pro-rated balance back.
One month in. I come to the sickening realization that the only way to significantly change the quality of Lombardi software is to change Engineering. Unit tests. Designing for testability. Code reviews. Design reviews.
At least we are using version control.
I figure that if I go in and challenge my boss and his boss, the VP of Engineering, to change Engineering, I will be shown the door, and will somehow have to pay back 90% of my signing bonus (which has already been spent; moving is expensive). And I will have to find another job. Or go back to Apple in California and ask for my job back.
I have already failed as a QA manager at this point.
I normally come in between 9:30 and 10:00, and stay until 6:00 or 6:30. Nobody is there when I leave. And when I come in, I start getting more and more hostile looks from people.
The employee handbook says that the workday is 8:30 until 5:30. I notice that almost everybody adheres to that religiously.
Really? Software engineers?
A few months in. I am having a discussion with my boss, his staff, and the product managers. I mention bug priority. I was told this:
- Lombardi has P1, and everything else.
- A bug is only a P1 if it impacts revenue.
- We defer all non-P1 bugs once a feature ships.
Yet, they can’t figure out how Apple ships such awesome stuff. They revere Apple like some kind of cult figures.
(Hint: Apple cares about non-revenue bugs, too)
A year in. We are working towards a new release of our software. Boss goes on family leave. We are supposed to be feature complete while he is gone.
There is no way we are feature complete. Nothing is finished. Too many issues are open. QA is ready to test, but there is nothing yet to test.
I can’t get the rest of the management staff to believe me or pay attention. I can’t get boss’ boss to pay attention.
Boss comes back, and realizes, looking at the same data that I was, that we are off the rails, and we are not feature complete. It’s as if I don’t exist.
2 months later. Boss’ boss calls me into his office. He wants me to develop a system using our software that polls our engineers on what they are working on every day.
I discover a major feature that we had added in the last release and that we charge extra for flat-out does not work. I have to figure out how my QA staff missed this point. This is a QA failure (but also an engineering failure, as it never worked, and the engineers that wrote it never tested it)
It takes me three weeks to put it into production. I get the distinct impression that management thought it should take 3 days.
I am now about 18 months in. I have been trying to hire another QA lead for over a year; finding QA candidates who can do any code whatsoever is proving to be very difficult.
I bring in one candidate who can do trivial programming over the phone. He bombs the interview.
One of my fellow managers says snidely that he should have never had to talk to somebody so unqualified.
I finally find a great candidate for QA Lead. Senior, smart, technical. We agree on a start date.
One of my other leads then changes departments, knowing that the new guy is showing up.
The Friday before he was to show up on Monday, he calls and says he’s not coming. Now I am down a QA lead.
My manager schedules at 8:30 meeting with me on a Thursday. It overlaps with the management staff meeting. I point that out to him; the management staff meeting goes away.
I have a bad feeling about this. I tell my wife the night before that I think that I am about to be fired.
8:30 meeting. Manager in a suit. Hands me a document. Says to read it and sign it.
I have been relieved of my responsibilities, as my position has been eliminated. My final day is the last day of the 3rd full month after this date (which is my severance). I can still use my desk, computer, and the Lombardi network as much as I want, especially if I am looking for another job.
Also, I had signed up for a PMP training course that was due to start a few weeks later. Lombardi would still pay for the course and reimburse expenses.
And I could transfer my phone number from the Blackberry to another phone if I wanted.
But there was no place for me anymore at Lombardi.
I go to my car and start it. I spend 15 minutes crying and sobbing, as scared as I have ever been. Wife and two kids are at home. What are we going to do?
I clear my head, and drive home to figure it out together.