Saturday, October 20, 2012

Veteran Status

OhJesusGod 

I'm sitting in a conference room when the tonnage of the situation finally hits me.

The Builder is laying it all out - and I'm converting into real world.
A customer walks into a store, looks at a TV on a shelf...

Customer: Looks like a good set. How much does it cost?

Rep: Well, there are a lot of possible configurations. If I know exactly what options you want - I can give you a more accurate price. I need some personal information first.

Customer: ....

Rep: (Smiles wordlessly)

Customer: Can I get a ballpark figure?"

Rep: I don't want to mislead you with a guess.

Customer: Okay, here's my name and address and... (scans list of options disinterestedly) Okay, I'll have this one option. What's the price?

Rep: You need to choose a payment plan.

Customer: I'm not buying, I just want the price.

Rep: The price depends on the payment plan you choose.

Customer: What if I chose the basic payment plan?

Rep: The price would be higher.

Customer: But you would give me the price?

Rep: Yes.

Customer: And I could change my mind later if I wanted to buy, right?

Rep: No.

Customer: What?

Rep: Well, technically you could, but you'd have to leave the store and come back first. And you'd have to provide your personal information again - and pick your options.

Customer: Okay, that makes no sense.

Rep: Well, from my point of view, it makes perfect sense.

Customer: Obviously, you are a total idiot. Goodbye.
This is the scenario I must stop. To be precise, this is the scenario that a team of professionals must stop.

Also, to be fair, from a certain point of view - this scenario does make sense. This would be the same point of view where Obi-wan tells Luke that Vader killed his dad and isn't completely full of sh!t.

I digress.

Left to its own devices, CorpWorld would happily barf up big hunks of stupid like this - and they would just happen.

To prevent this, CorpWorld employs teams of people who push back on these ideas and try to present how the customer would experience them. This is not a specialized discipline, either. Loads of people have the same initial reaction to ideas like these.
Why the F$#& would we do that? It's totally stupid!
Sadly, veterans of CorpWorld have learned that pushing back on stupid is thankless and endless toil. Oh, they'll still have their initial reaction - It's totally stupid! - but then they'll lay back and let it happen.

But laying back on this stuff is not what they pay my group to do. We propose the obvious solution:
  1. Instead of asking the customer to pick a payment plan before they see the price, DON'T.
  2. When they ask for a price, show them the price without a payment plan.
  3. If they choose to buy, show them the payment plans and their respective prices and allow them to pick one.
Obvious, yes. But it is a grave mistake to assume that this change will be technically simple - or embraced by the decision makers.

Many, many meetings later - we have convinced the Sales group of the wisdom of this approach. They control the public-facing web application and they agree that choices about paying should wait until after the end user has seen a price and tells us they want to buy.

Wheels go into motion. Any web app is going to hook up with a back end, and just because we can make the changes on the front end doesn't mean we can accomplish this in the back-end systems.

The primary system we need to deal with is the Mothership. Mothership is a beast of a system that is simultaneously replacing numerous legacy systems and absorbing huge changes to its offerings.

And they're not done coding.

And we're connecting to them. They are a massive, upstream dependency written in 50-foot letters of fire.

We meet with Mothership, explain what we're up to and what we want. It takes an unbelievably long time, but we get approval to do what we ask for.

We will ask for payment options later in the process. Huzzah!

All this means is that our app will do this and when it talks to Mothership it will not blow up.

Which is good, but there are other things we need to address. Like a lot of web applications, just because you think you've started a single process doesn't mean you are dealing with a single system. Frequently, a single task involves numerous systems and subsystems. One of the systems that our particular task will hit involves a subsystem that I'll call WeSaySo.

In order to accomplish what we want, we need to ask WeSaySo to make a change to a set of controls. Currently, those controls support two choices. We need them to support four.

Hardly a deal breaker, but in secure online environments, things are never simple. We meet with WeSaySo, they are not receptive - but eventually they agree to support what we are trying to do.

There will be four choices. Huzzah!

Fast forward a year. We're six months from go-live.

You think I exaggerate? I. Do. Not.

My team is called in to meet with WeSaySo again. Since everything has sign off, I don't have to go. I leave it to Spock and the Machine. The Machine is awesome. I want to be them. They have everything organized, remember everything, and are unbelievably nice to boot. Spock is there to destroy your stupid ideas. They live to find questions you have no answers for. Clients fear them, developers stand aside when they pass.

Whatever WeSaySo has to say, they can say it to Spock and the Machine.

The Machine returns from the meeting to inform me that WeSaySo won't add the additional two options to their application, thank you very much. We're all mystified, since they clearly indicated that they would. A year ago.

This is the Machine's area, and they crush it. Follow up meetings are held, sign offs are reviewed and WeSaySo's upper management agrees with us. Yes, they will add the two options.

Months go by.

We meet again with WeSaySo to discuss some error messages and their rep, ISaySo, questions us - again - about the additional options.

We cannot add these to our application. We don't have the budget. You should move these options back into your application - we have some suggestions about where they should go.

Um...

Spock and the Machine go to town. We - again - point out that these decisions have been made, twice now. And we - again - discuss the reasons behind them, in hopes of winning them over with logic.

WeSaySo is not interested in logic. They appear interested in preserving their application as it currently functions. No changes, no hassles, no additional expense.

What is remarkable about the repeated exchanges we've had up to this point is their consistency:
  1. Each begins with No, we will not change our application.
  2. Each ends with Now that you've spoken to our management, yes - I suppose we can do that.
  3. The period between meetings is used to utterly forget item 2.
  4. Another meeting is then scheduled to discuss item 1.
At this point, wheels above my head go into motion. One of our bosses has dealt with WeSaySo before and they've had it. They call a big meeting to review - yet again - what is being asked for and what has been agreed to in the past. This will be a room full of our folks and (significantly) both WeSaySo's management and ISaySo. [It should be noted that WeSaySo's management appears incapable of reining in their subordinates, or even of realizing that they are on different pages.]

We are geared up for confrontation and I've been asked to show visuals on exactly what we want and explain it all again.

WeSaySo is all sweetness and light. They say what we're suggesting is fine. In fact, they have some other changes for the page  they would like made as well.

Would we mind mocking up how the page would look with these changes?

They go on.

Also, we've been asked to make this other change by our common client. Can you mock that up as well?

We're like...

Um.... sure. I mean, this is your application and you've been resisting any changes like you were defending your children, but I suppose if these ideas are coming from you, you must be okay with them.

So we do that. Mock up some quick and dirty versions of how the screen would look with their changes.

They're good with it.

Then we get an email from one of WeSaySo's developers. Rather, we are forwarded a message from a WeSaySo developer sending ISaySo a message that says:

The screen will not allow us to add these additional options. There simply is not enough room as you can see from this screenshot.

The attached screenshot shows the existing screen layout with four options with the longest label text they could think of gunking up the page. You can practically hear their glee:
Guess we can't do it. Sorry. *smirk*
Unfortunately for WeSaySo, they've sent this to the Machine. The Machine pulls together yet another meeting and I get a greenlight from our manager to mock up a page like a person would if they wanted this information to fit and - Lo, and behold! - it fits with room to spare. I do a half dozen versions to show there are numerous ways to do this.

The boss loves this. WeSaySo's management does as well, they say their team does as well.

ISaySo? Not so much. They respond with a list of new requirements that the screens must meet that (strangely) never came up before, despite the fact that they impacted the very suggestions made by - you guessed it - ISaySo. Most are trivial copy changes but one is a requirement to include Button B.

Button B is useless. This is self evident. It is redundant interface that would highlight an additional unhappy path to the user. Unhappy paths will always outnumber the happy path, but you should highlight the happy path and try to lower the visual impact of all the unhappy choices. Besides, all of our screens have a Button A, which performs essentially the same function.

ISaySo is convinced that this particular page needs both Button A and Button B. We try to reason with them:
But they do the same thing...
ISaySo is not moved.
Button B actually does a little more than Button A. We feel having both is better for the end user.
We move to hard data:
We've run metrics on Button B. Virtually no one is using it. Virtually no one is using Button A for that matter, but considerably more people use Button A.
We send this to ISaySo and copy as large an audience as possible. ISaySo submits to the data.
Since metrics support this, I can support removing Button B.
Deep breath.

The other item that ISaySo has a problem with is the error validation treatment we've put together. We've asked WeSaySo to make their screen look like our screen and display errors like we do.

WeSaySo's current error message treatment highlights fields with errors (which is good) and displays  message text that (and I'm not making this up) appears in a grey box at the bottom of the page that says - in effect:
Information is missing and/or wrong.
A user who scrolls down to read the error message is told two very different things: one or both of which is true. The user who keys on "missing" when they've entered data is going to wonder what is missing. The person who focuses on "wrong" is going to wonder exactly what is wrong.

WeSaySo's current application will not tell them this.

Obviously, this is crap user interface. Everyone can see this, right?
Not everyone:
Since we're trying to keep our costs down, we want to keep the current error treatment.
Okay, a second ago, ISaySo was arguing for a totally redundant and unused Button B on the grounds that it improved the user experience. Now, ISaySo's against making clearer error messages because of money?

Before any of our team hits send on their respective rants - our client blasts an email to everyone:
The error messages will look the same on all screens. Make the change.
I could kiss them. I threaten to. They tell me to stay away from them - they like me as a colleague...but, stuff like that. WeSaySo's developer responds with a smokescreen: But...We'll need to increase our estimates! But the client says 'fine' and end result is that WeSaySo will adopt our error messages.

We limit it to this:
  1. look like our errors; and 
  2. distinguish between "Required information is missing" and "Required information is present, but invalid."
Huzzah!

We move on. At this point, flush with success - we (foolishly) identify Field X as a completely useless piece of interface within the WeSaySo application. We ask if it can be removed.

Before we're through asking we-
NO!!
We ask why this is so. We're told there is a technical reason. We speak to WeSaySo's technical resources and are told that - actually removing Field X would make their job easier. It really doesn't do anything other than change an element on the interface - something that can be done based on other user inputs.

Okay. We revise our mockups and remove Field X. We have a meeting to review this fact and other development issues. ISaySo says nothing, but their developers have lots of questions. We write down a list of items for moving forward.

And we go forward.

Weeks later, out of the blue, I get an email from one of WeSaySo's developers:
My clients are asking why Field X isn't there on your mockup. Can you send me a revised mockup? Thanks.
I'm like What? Field X was removed. You know this.

ISaySo jumps in.
What makes you think Field X was removed?
Because it's useless. There are other ways of doing what it did, and because you were there when we discussed taking it out.

ISaySo disputes this. Claims we never involved them in the discussion. As the discussion was in person and (foolishly) we did not email notes with the mockup immediately after the meeting - we have no hard documentation of this fact.

ISaySo's developers come to the rescue, they point out that they can accomplish the Field X effect without actually having Field X. ISaySo eventually relents, but is clearly not happy - and fires off an angry email to our manager about leaving them out of decisions affecting their application.

Deep breath. I make the rounds to all the WeSaySo developers and make sure they had the same understanding we did. Field X was coming out. They are not upset. They think the change is good. As a matter of good form, I mention to my manager that I should go talk to ISaySo and smooth things over.

Coincidentally, my manager is about to do that very thing and asks me to come along.

We arrive at ISaySo's desk and they are there pouring over printouts of the mockups I've made. They are comparing the ones with Field X with the ones that don't have it. There are a host of marks and comments on every sheet of paper. ISaySo does not look happy.

My manager starts in with a mea culpa: "We're sorry this mix up happened - it was never our intention to leave you out of this process."

ISaySo responds with, No, no, I'm sure this was all a misunderstanding. Going forward we should make sure to copy everyone in on the discussions.

We agree.

ISaySo agrees that removing Field X is actually a good thing, and they are pleased with how the screen will ultimately look. They were just concerned because they had done some work testing the old design and will now have to do it over.

We completely understand. And we apologize. There is music and soft lighting. My manager is about to offer up some goodies from our candy tray-
Now about this Button B...Why did you remove it?
*Record scratch*

Uh, come again?
Button B. It used to be on the screen. And now it isn't.
Soft lighting is gone. ISaySo is pointing accusingly at my updated mockup where - the horror! - there is the complete absence of Button B.

I'm mentally rewinding to ISaySo telling us we can remove it. I'm looking at ISaySo's screen and (I am not making this up) ON THEIR F-ING SCREEN is the very email where ISaySo is telling us we can remove Button B. Their exact words are scrolled off the screen, but it is absolutely the same email. I am certain of this.

The thought that ISaySo could have this on their screen AND simultaneously be questioning why Button B is missing breaks something deep inside my brain. My higher logic functions begin eating each other:
But, but, this is the same person who...
...and now they're saying...
..What ARE they saying...?
I respond with the same logic we used in the past.

Button A does the same thing. And.. no one is using it.

I have this foolish hope that this will jar ISaySo's memory and they will reverse course.

No, they plunge ahead with their full blown re-run:
Button B actually does a little more than Button A. We feel having both is better for the end user.
At this point, my manager is ready to give up the ship. They've come to bury the hatchet over Field X's removal. This is why they are bowing and scraping before ISaySo. They've never heard the Button B discussion and they are not up for another row. They're looking at me with a "wrap this up" expression - so I opt to abandon diplomacy.

We took it out because the metrics said no one is using it - and everyone was okay with it.
WHO was okay with it?
I finally point to the email on ISaySo's screen. That's the email with the metrics. Scroll down.

They do, until they see their name followed by:
Since metrics support this, I can support removing Button B.
Instantly, their demeanor changes. They hurriedly open up an email from their lead developer (which I note is WSS dev lead saying, "Look, here's something else that is different!") and tell them to hold off - that they actually approved removing Button B. ISaySo apologizes for the mix up.

My manager and I exchange pleasantries with ISaySo, and walk off - feeling very pleased with ourselves.

So, we move on. The (surprisingly problematic) issues of "Add two options," "Remove Field X" and "Remove Button B" have at last been conquered. WeSaySo developers will meet regularly with our team and everyone can get back to working on other things. And we do, for weeks.

I keep asking the WeSaySo dev folks if they need anything from us. They assure us that things are fine. They'll let us know. Most of their folks seem like a good crew. They smoothed out the Field X issue, and seem eager to make things work.

A week before a development deadline, two hours into the day, I get an email from WSS dev lead:
Do we have to include these elements in our code base?
They're referring to some additional code that will make the application function for the disabled. I view this code as trivial markup. If they include it - verbatim - as we put it in our example, everything will be fine. I say yes, we need to have this. Six hours later, WSS dev lead responds to me - this is ten minutes after close of business - they've copied in all of my managers, all the developers on their team, and their manager.
Our development environment does not support these new elements. I don't feel we should have to support them since we haven't in the past. Also, other applications like ours don't use them.
I'm apoplectic. This is a technical issue that is surfacing the week before deadline. I get an innocent question and the first pushback I get to my answer involves everyone's manager. Given the previous acrimony, once management starts putting on their war paint nothing will get done. If they'd asked me first - if they allowed our team to help them...

But no, we're really doing this. I try to head this off as much as possible before management starts reading their email. I speak with our dev guys, make sure I understand how big of a deal this is. Our dev says it's not. I set up a meeting where we tell the WSS dev guys this.

One of the cooler WSS dev guys is after me before the meeting to provide him with some scripts. I'm puzzled by this, since:

A: he's working in his own environment
B: he is a developer
C: I've pointed them to our application that runs all the scripts that create the effects we want him to emulate; and
D: he is a developer

I want to help, so I tell them I'll see what I can do before the end of the day.

But the day turns into meetings and I email back to say I won't be able to help him out. I send along a copy of the script they were asking about.

I'm in the middle of a meeting - mid discussion when I see the same WSS developer, along with WSS dev lead walking with a purpose towards our dev guys. They look agitated.

After my meeting I go check with Ace, one of our dev ninjas. "What did the WSS guys want?"

Ace is a code god, a total pro, and - impressively - an articulate and entertaining communicator. He says "Those guys wanted me to write them some scripts or something. Y'know... They kinda sounded like they thought we were D-Business."

-Bit of explanation here. My group is essentially a group of developers, analysts and testers building our application. We make what the Business asks for. We are Makers. We do not ask for things to be made.

The WSS group are also Makers. In CorpWorld, we are the same. We both get our marching orders from the Business. Within the Business, there is this little subset I'll call D-Business. This group wants to be Makers - they have the chops, but they don't have access to core systems so they can go hogwild.
D-Business does interface. And they don't believe anyone else on earth is capable of making interface. If you get a project with D-Business, they will supply the interface. The Makers will supply the back end, period.

Soon as the words are out of Ace's mouth - my brain launches into a series of synaptic detonations:
  • WSS has been under the impression that my group is D-Business
  • If they think we are D-Business, they are assuming we are providing the interface...so....
OhJesusGodAlmighty...

WSS has not built the interface...This would explain why they have been asking for scripts and styles and file locations to connect to. We'd assumed they were silent about the interface because they had it well in hand...

...For three weeks they've been assuming the same thing about us.

...So we have no interface. I go to a WSS dev asset and confirm this. The Asset is appropriately embarrassed, which shows they are human - but doesn't help in any tangible way. 

F*#$...

The meeting with WSS development follows the day after this realization. We meet with WSS dev lead, the Asset and another dev guy I'll call Stud. At this point, throwing a (perfectly justified) screaming tirade won't get us closer to done. WSS dev is pretty hangdog in the meeting. I bring Ace as backup to lay out his solution to the environment issues - but Stud is way ahead of us. "We're not trying to shirk work. We're just never been allowed to make the interface. We'll build it, we just need the time."

We promise to give them the time. Our managers will be insanely angry, but whoever builds the interface - building it will take more time than we have. 

We do the only thing possible: we miss the deadline.

But now WSS development is born again. Stud is a whirlwind of coding awesomeness. Stuff starts happening. 

Finally... We can get back to-

The Machine comes up to me, Spock's behind them grinning. "Seen your email lately?"

It's from ISaySo. Of course.
I would be fine with that.
This is their response to an email thread that they've looped us into - at the end. They are responding to a question from their WSS dev lead about an error message.

Wha...?

Reading down through the thread, the full sequence is this.
  • A week before this message was sent, ISaySo wrote a really, really long error message and sent it to their clients for approval
  • Yesterday, their clients (disinterestedly) said "fine."
  • This morning, ISaySo sends the message to WSS dev lead; and
  • Seconds later, WSS dev lead responds saying "The message won't fit in the new error treatment they are asking us to build. I'm assuming you would like us to re-use our current error treatment?"
You remember their error treatment, right?
Information is missing and/or wrong.
Well, apparently, NOW they've come around to thinking that perhaps a specific error message is needed, only it needs to be a paragraph. WeSaySo has only seen mockups of our error treatment where the message is a single word.

Essentially, ISaySo is telling us:
Guess we can't do it. Sorry. *smirk*
*Huge Breath*

I write the email I want to send - then delete it. Then I take their paragraph error message and plug it into our  error treatment and - Lo, and behold - it fits just fine - because our coders and designers aren't total idiots.

I screenshot the resulting message - convene a meeting with ISaySo, WSS dev lead and our shared clients. I show them that the error will fit and that we can proceed.

ISaySo submits to the data. WSS dev lead asks about a dialog that they'll need to have if their screen is to look like ours. Admittedly, I hadn't considered this bit of interface, so this is a very legitimate question. With the client there, I confirm with the client that they do, in fact, want WeSaySo to have the same dialog. Then I tell WSS dev lead that I'll check to see what we're doing for other applications like them and get back to them.

WSS dev lead starts firing off detailed technical questions about this dialog - pertinent questions, asked impertinently. They don't want to build a duplicate of our stuff. They want to point to our existing stuff.  ISaySo begins taking issue with the wording on the dialog, they would like it to say something different.

With a supreme effort, I manage a calm voice.

We will look into how we can minimize duplicate coding.

I don't even get into the wording thing. First off, we didn't write the damn dialog text. The Business did. We were told to use their text - and we did. I don't give a sh!t what it says, save for one thing: The dialog should say the same thing regardless of what app is serving it up.

Meeting adjourned.

Later, the Machine and our Client confer and tell ISaySo the text will not be changed - WeSaySo will say the same as the rest of the application.


***************************

Still with me...?  Good... 'cos by now - any sane person would have given up. Hell, I almost did. Spock and the Machine were tag teaming on bucking each other up at virtually every other turn on this. One of us would  say "F$%#-it, I don't care anymore. These idiots are just not worth the hassle."

Here's the thing: Even a modest canvassing of the CorpWorld landscape reveals that this is not an odd case with WeSaySo. Everyone we relate our story to says exactly the same thing. Oh, *those* people, they are ALWAYS like that. What is their problem?"

It is tempting to assign sinister motives to people you have professional disagreements with. The Button B incident established my initial hypothesis about ISaySo: they are overworked, disorganized and have a bad memory. Honestly, I've been there - I have said one thing one day, and the opposite thing on the following day. It happens. What distinguishes ISaySo in my eyes, is that they do not bother to nail down the facts of the situation before they go to DEFCON-5.

On Button B - were I in ISaySo's shoes - I would like to think I would have read and re-read the relevant emails about the situation before I launched into a tirade about how it needed to be there. I say this, because when Field X was questioned - I poured through every bit of documentation we had and found we were missing hard documentation of sign-off. Then I did my best to work out a solution (aided by the Asset and Stud) and I went over to apologize.

When you are overworked, as ISaySo clearly is - there is the omnipresent fear of missing something you are responsible for. Mostly because it keeps happening. It is no fun, and it can make a person plenty frustrated.

This is my working hypothesis.

***************************

Where were we?

Ah, yes - the dialog and its text. I go to find out what we're doing for other apps that need to show this dialog. I check in with Rico Suave, one of our resources embedded in development for external apps. Rico will have this same issue and is totally competent. I'll ask how this dialog was addressed and hopefully this will be something WeSaySo can use.

Rico looks at me with a blank look. A dialog? This thought has obviously never occurred to him.

Do you think you could build a component that other apps could hook into, to avoid re-work?

Rico appears mystified. You want me to build a service for a frickin' dialog? I'll just build it. It will take almost no time.

This is a useful reality check. WeSaySo is whining about building duplicate code - which is a valid complaint, but we're talking about a truly small bit of code. Plus, since our application is already externalizing the text in an easily editable file that can be accessed from anywhere - content and formatting will be externalized. All they build is a skeleton.

Seriously, WTF are these guys whining about?

I spend some time getting the CSS for WeSaySo's stuff parked in a common spot and reach out to the Asset  to let him know what I think we'll need to do for the dialog.

I get IM'ed from Stud. Stud's way ahead of all of this. He's built everything as a stand alone and wants to know if he should hook into our content. I tell him I'll get him the references he needs the following day and thank him.

He's fricking awesome - I want him to seize control of WSS in a bloodless coup.

Dialog: handled.

Big exhale from my group. We start to move on to-
I've consulted with my clients and this is the wording they want.
Attached is a single line of text that is 80% identical to the existing text on the dialog. ISaySo has included an email chain where they have done an end run around our client and have separate approval from the business for this change.

At this point, I lose it.

The working hypothesis needs to change. ISaySo is clearly in this to win this. There is no way on God's green earth that a rational human being would care this much about one line of text.

The fact that they are being as passive aggressive about it as humanly possible is the hard evidence. Every bit of the text approval process pointedly does not loop in our team (despite our earlier hatchet-burying promise to include everyone in communications).

I examine why I'm mad about this: is it because I must win? Truly, I don't give a flying crap about the text. If the Business wants new text throughout the process - I'm fine with it. The Builder (my team) is looking for a reason to drag our feet - and I pointedly tell him this is a trivial amount of dev time from us.

Seconds. I tell them. We are not going to dig in on this. They wanna be petty, fine. But this is not something I'm suiting up for.

The Builder nods - then points out that the language ISaySo has carefully gotten approved contains a factual error. One consequence of asking for approval from people who don't care - is that they don't bother to check it.

So this text will need to be changed - and approved - again.

The Builder takes this on and delivers the new text to everyone, ISaySo included, as a fait accompli.

ISaySo squawks again - but submits to the data. The text was wrong.

I totally don't give a crap at this point. I'm busy updating the numerous bits of documentation that have to change to support this.

You think I exaggerate? I. Do. Not.

But since this is the windout - there's no point in whining now.
  • Field X is gone.
  • Button B is gone.
  • Clearer error messages will be displayed.
  • There will be a consistent user experience from end to end

    and - most importantly - the reason we started this mess in the first place - 
  • we will have two additional options so the user won't have to pick a payment option before they see the price.



The next day.

Zero walks up to me. Zero is the Mothership liaison and usually deals with Spock and the Machine. They're out of the office, so Zero's talking to me.

"Question." Zero has a voice that makes James Earl Jones sound like a soprano.

"We are to be passing four options to WeSaySo?" Also, Zero asks questions like Yoda.

I say yes.

"BlackBox will not allow us to send four options."

Of course, there's a hitch. The BlackBox is a mysterious system that sits upstream of the Mothership. The BlackBox does one thing- and it's close-hold secret with armed guards. You do not question the BlackBox, and in years of working at CorpWorld, I have never been able to speak with anyone who actually works on it.

All our interactions with BlackBox are, in theory, handled by the Mothership. When we've asked for things, we've asked Mothership. Our four options will require BlackBox to give us more that what it usually does. Normally, each ask will get two bits of data - we want four. We'd asked Mothership to accomplish this by asking BlackBox twice. 

"BlackBox will not allow two calls."

You're saying this is impossible? I ask, forgetting that Zero always answers this question the same way:

"Everything is possible."

...But...?

"But BlackBox must change."

Zero smiles. So do I. 

There is no way - on any circle of hell - that BlackBox is changing anything. They are mysterious and unknowable and their floors are carpeted with requests for new features. If the stories are true, they sometimes respond to these requests just so they can kill the hope that briefly follows.

We are done.

We have a follow up meeting with the Builder and the Business and everyone agrees that the situation is terrible. That the end user experience is terrible. 
Why the F$#& would we do that? It's totally stupid!
The Builder and I sit in silence as Spock and the Clients float some trial balloons. We can save this, really. But the Builder has done all of this before the meeting. The Builder's discovered that behind the Mothership there are actually two other systems that have only just learned of what we wanted - and they are not happy about it. Pre-emptive blanket denials are inbound - costs must be contained, and altering these legacy subsystems is not within scope.

The fact that we had asked for - and previously been approved for - all of this work counts for nothing. Mothership is still being built and its connections to subsystems have changed over time. Once - about when we asked - these changes were possible. Now, Mothership has evolved and these things are no longer possible. At all.

Had we not spent endless hours locking horns over trivia with WeSaySo, we might have found time to do setup work to make this happen with Mothership's hidden subsystem teams. But that's only conjecture. It may never have possible in any tangible way.

Sure, we improved the interface for WeSaySo and preserved a common interface - but that will be it. We wanted four options and we will get two. The user will be expected to make a payment choice before they see the price. And they will be held to their choice going forward.

Blooded and wiser for it - the Builder and I sit quietly while the Clients and Spock play out their fantasies.

My opinion of the end result hasn't changed:  It's totally stupid!

But at this point, I'm going to lay back and let it happen.

Friday, August 24, 2012

L'esprit de L'escalier - Vol. 6,021

Pain in my ass.

People, that is.

I'd taken a long lunch and made a plan to hit a local cafe that is totally awesome. These days, the thought of just hanging out in a cafe with the time to relax is the height of luxury.

I'd planned to convert some of my audio notes to text using my iPhone and bluetooth keyboard. Y'know, like those annoying people do. I was hoping to annoy some people. But mostly, I was looking forward to just kicking back for awhile.

Work has been beyond insane lately.

Ruby's gone. So that leaves just Stimpy and I. One of my former teammates popped by (they'd since gone off to do full time coding. Wisely, since every fulltimer who stayed got canned.) Anyway, former UX guy comes by to rib me about being the last of the Mohicans. I pointed out they were the last fulltime to still work at CorpWorld, so technically, they were the last of the Mohicans.

Ruby called a meeting to hand off all the digital detritus left by our former UX team. A website that still said "Contact us" and listed my former boss as if they still worked here. A network share chock full of projects long since cancelled. A slew of ideas, good and bad.

A series of personal directories. Each one mapping to a person who was now out looking for work.

MP's file directory - the capstone on the sad proceedings. I wonder what they'd say about our sad little troika. Something too accurate to be comfortable, no doubt.

But that was last week. The Boss was moving out of town, so everyone got together one more time - and it was awesome.

I got to see Sensei again. They were the whole reason I got to be anything at CorpWorld. I congratulated them on having the good sense to bail before the big purge. They laughed and said, "yeah, I sure dodged that severance package."

Hadn't thought of that. But I try not to dwell on the downers. Most folks seem to be doing well. Sensei seems tired, but looks well. I miss them awful.

And then I had to go. Little E was promised ice cream and suddenly all the camaraderie was over. I hugged the Boss and left.

And I went back to work without them. We're winding down a big chunk of the project, and it's been time for the victory lap demo. I enjoy demos, so I've been tapped to do them this time around. Feels rather like taking a bow for other people's work-but this is the job.

In a repeat worthy of holiday network, I'm asked to present in the auditorium to the IS managers. The PM has me demo for them so they can tell that I'm not going to disgrace them in front of the brass. Just like how it was when I started. Only this time I know they are coming, I know it will be a big crowd.

Before I go up, the PM pats me on the shoulder and tells me I'll do fine. It is obvious that they are far more nervous about this than I am. I came in early to check the room, get a backup powerpoint deck in case the environment dies on me. I got this sh!t, kay?

I totally crushed it. Had 'em rolling in the aisles. Veni, vidi, vicci, baby.

So now, it's time for my victory lap. I can finally take time to kick back, and I know just where to go. A rippingly awesome new place whose motto graces a whiteboard outside their door:
Roses are red,
bacon is red.
Poems are hard.
Bacon.

How can you not love that?

I order a latte and their killer Cuban. They just started lunch, and they're filling up fast - but there's one table left. Score!

I order my food "for here," and the guy gives me a table marker and offers to make my latte while I'm there. Cool.

I'll kick back, convert my audio notes to text and maybe even...blog.

It's practically pornographic.

I'm holding my table marker and watching some serious latte-fu.

...And then I look up and see some lady plop a bag on the far end of the one remaining table.

Wha...? There was nobody in front of me, I'm certain. This is someone who just came in. Now, this place is small, and I've seen people share tables before. My latte's not done, so I walk over to the table and put my flag on the far left side.

I'm down with sharing, but my food is ordered, paid for, and about to arrive ready for a table. I don't want somebody else to poach the other end of the table before it does.

I'm headed back to pick up my latte, and Some Lady steps in front of me. She points imperiously at where I've just come from. "Excuse me, but that's our table."

It begins to dawn on me that she wasn't intending on sharing. She went into a cafe with one open table, people ahead of her in line and plants her bag on a table before she even orders.

It takes a second to process this, I would happily have shared the table. It's a big table. I'd have my earbuds in anyway. I'd be typing and probably wouldn't even notice them. I'm so put off by her Bitchmove, I skip the diplomacy and reply with:

"I've already ordered my food."

The implication being, What do I do with a plate and saucered mug when they arrive?

But Some Lady digs in. "Well, our bags are already there."

"That's nice," I say. Then I collect my drink and sit down.

I mean, really...f#*k her and her f#*king handbag. You want to share? Fine. You want to call "dibs" at a cafe? You can seriously go f#*k yourself.

So I sit at the end of the table, as planned, and begin working on my audio file. At some point, Some Lady comes to collect her bag, and says something pithy. Tragically, I have my earbuds in - so it's wasted on me. No doubt it was cutting , and will feature prominently in her version of events.

Somehow Some Lady and her manfriend transport a table from the neighboring restaurant and manage to sit down without me.

But f#*k them. This isn't about them. This is about how a moment's respite after a month of total sh!t gets magically transformed into a rant about table dibs because people suck.

I mean, one lousy lunch hour was all I was asking. No fireworks, no magic, just good food, good portable internet, and the luxury of time.

But no, instead I get to vent about bad restaurant flow. About how too few tables leads to bad manners on all sides. How Some Lady is a total witch - her and her bullsh!t handbag. How her mancandy can't be bothered to step in, how...

...or how badly I just need a vacation. I need to go somewhere for a week and not look back. When sh!t this weak can put you over the edge, you know you are on the ledge.

E and thee kids are coming back today and it's just been silly what a hole that leaves in the world. I need to hang out with my kids for about a year solid. We need to do some fun stuff. Not just the necessary evils, but goof off. A lot. We did some of it at the reunion and with E's uncle, but not nearly enough.

We're out of the tunnel these days. I just want to soak up some sun before we go back in.

So, Some Lady? If you're out there - it's nothing personal.

But from the heart - F#*k you.

Friday, May 25, 2012

The Hits Keep Coming...

Din received a phone call a few days ago. Their contract ends on the 4th.

This time next week - there will be only three of us left.

Friday, May 11, 2012

Nesting, Nesting, 1, 2, 3...

Update Jan 2, 2013: I've added user observations and energy savings after eight months.
A few days before Black Wednesday, my former mentor and I were talking smack about good user interface. Always fun to slag on the stuff that sucks - and let's face it, there's plenty of crap UI out there.

They'd just attended a presentation about the design of the Nest thermostat and were decidedly in the I-need-to-get-me-one-of-THOSE camp.

With the spectre of professional death imminent, I said "If I don't get canned this week, I'm totally getting one."

Well, I didn't get canned. Thus:



Okay, I know what you're thinking: $250 bucks is a lot to spend on a thermostat.

Which it is. I see that now.

At the time I justified this by saying-
  1. It's cool. Might as well be up front about that.
  2. It's not a toy, it's a household device that should save us money on heat.
  3. I might as well get some experience using good user interface for a change. I might learn something.
E's reaction was basically "So, you're saying you need this for work? Ha!"

I suppose I deserved that.

But having done the install and the wireless connection - I can at least give some initial impressions of the Nest as a thermostat, its interface, and my expectations for the long term.

First off, it's hard to ignore the eye-candy of the design. A LOT of work has obviously gone into this product. There are unboxing sites for the Nest. C|net has gone out of their way to review the Nest based on the coolness of its visuals and features.


Installing a thermostat is not something anyone thinks of doing, since your house almost certainly comes with one. Most of us take what we get. Even if we hate what we get enough to replace it - the assumption is that this will require an expert. Nest aims to convince you otherwise.

Physical Installation

A thermostat is pretty much a glorified on/off switch that straddles the bundle of low voltage wires controlling your furnace and air conditioner. Replacing a thermostat is requires separating a bunch of wires from a central switch and re-attaching them to the Nest in the correct places.

That alone ups the cost of entry considerably. So the folks at Nest have instructional video paired with a manual (complete with adhesive labels to keep track of which wire is which). Watch the video, (g'wan) and tell me that didn't look easy.

Now, like any how-to, you're only getting an idealized version in the video. In their video, removing the old thermostat reveals a wall blemish or two that magically vanish around 2:15.

When I remove my old thermostat, I'm treated to a horror show of unpainted and shattered wallboard. Moving the wires causes an avalanche of bits to pour out of the wall. There are - impressively - EIGHT holes beneath my thermostat, each complete with a wall molly that needs to be ripped out - causing more damage.

None of this is Nest's fault - but I'm composing a real world list of things a prospective Nest owner should keep in mind before they buy and attempt the idealized install.

The first two items would be:
1) Make sure your house is compatible with Nest. (I did, and it was)
and
2) Take a picture of your current thermostat's wiring. Make sure you can read any terminal labels. Move wires and take multiple pictures if necessary. Save these pictures on a device that is backed up.

-but the third one would be
3) Expect to spend some time preparing the wall where you will install the Nest.
You will probably need to spackle and paint. If you are buying the Nest for its aesthetic qualities, you might do this before your nest arrives. Once it arrives, you might be too jazzed up to patiently apply two coats of paint and wait for them to dry.

If you boil down the installation process, the Nest folks are bringing a few innovations


  • the Install Video. Seeing is believing, and sometimes even comprehending. Every vendor should do this.
     
  • the built-in level. Another great idea. When you attach the base to the wall, you can drill the hole with one hand and hold the base level with the other hand. On a regular base install, you'd have had to   make a mark on the wall with a pencil on a separate step. Not really a game changer, but a smart move that shows somebody was thinking. You have to make the built in level actually be perpendicular to the vertical  axis of the base, so I'm sure that was a fun argument in the design discussions.
     Why do we have to do this? People have levels already!
    "Because this makes it easier to do."
     But they only do it once... blah, blah, blah..
    Yeah, I could have done without, but I'm glad they put it in there.
     
  • the Wire Labels. Yeah, you could write down that "Yellow wire goes to W1 terminal," but it's so much easier to put a W1 sticker on the wire that goes to W1 on your old thermostat. Later, this allows you to take the wire labelled W1 and plug it into the Nest's W1 terminal. Less opportunity to screw up.
Oh, when I put in the wires? I screwed up.

One of the X factors in the install is that every thermostat is going to have different wires. Different colors, different combinations, and different labels. Or no labels at all. Unless you know which wire is which, you won't know what nifty labels to apply and - more to the point - you won't know where to install them.

My mistake was caused by a brown wire labeled "24V(c)"  This label appears nowhere in the compatibility wizard or on the sheet of wire labels. When I spoke with Nest's compatibility guy he told me this wire was the counterpart to the red wire attached to the "R" terminal - it was the other half of the power loop. Power come in on R. Power go out on 24V(c). Okay, I said. And I wrote that down.

When it came to actually installing the Nest, I had two labels with the letter R on them. One said "Rh" and the other said "Rc" So, I put the Rh label on the red R wire (in my mind, R for red, h for "hot") and the Rc wire on the brown 24V(c) wire (R for "counterpart to R" and c for "(c)").

So when I put all my wires in place, I put the brown Rc wire into the terminal labeled Rc. And when I switched on the power, it no workee.

I called Nest, but their service line is closed when I called (around 11pm), so I googled 24V(c) and found a few mentions of this being a common wire.

This I know, from nothing.

But common begins with the letter C, and I figured, I'd move the Rh/24V(c) wire over to the C slot and see if that did it.

It did.

Power!

Thus we learn:

4) Find out what each of your thermostat wires is and what it does. Write it down. The Nest folks have a great service line for compatibility (they want you to buy, so it's a high priority line.) There's a lot of variation in thermostat wiring, so call them with questions on what each of your wires is and what it does. They recommend emailing their support address with a photo of your wires - something I did and heartily recommend both for the install and for reason #8, below). Ask them what each wire is. Even if they only know a few of them for certain, write those down. Knowing what my other wires were saved me from un-doing correct wires and allowed me to focus on the unknown. If I'd bothered to ask (or had been told) what label my brown 24V(c) wire should have gotten, I would have gotten the physical install in one try.

Initial setup: Orienting the unit.

Once you see Nest's screen fire up, you are immediately proud of yourself. It is very pretty and the interface is iPod cool. Turn the unit left or right, press the unit to click.

My unit wanted to connect to wireless immediately, so I started dialing in my network name (I don't broadcast my SSID). For the thousandth time, I wished I picked a shorter SSID, but dialing letters and numbers into the Nest makes you feel like a safecracker.
Click-click-click-click-click...A
Click-click-click-click-click...R
Click-click-click-click-click...1
and so on.
I was asked my wireless security protocol (None, WEP, WPA or WPA2).

Now this is honestly something I didn't remember. I know, I should. But once you set this up, you don't think of it much. And I seemed to remember mine was none of these.

The Nest failed to connect using any of them, each time requiring me to dial in my lengthy SSID and password. *sigh*

Ultimately, I logged into my router and found out I was using WPA + WPA2. This confused me for a bit, but I went back and dialed in my SSID and password and chose WPA2. And it still failed to connect.

It was about 1 in the morning by this time, so I went to bed.

In the morning, I tried again and it connected immediately. (I was probably tired and fumbling my password before). Anyway, the Nest tried to perform a software upgrade and failed for some reason. It said it would try later, so I pressed on with the setup tasks.

These are mostly "Where am I?" settings. You enter your ZIP code, tell it what type of devices it's connected to (Gas or Oil Furnace, Forced Air A/C) and what mode it should start in (Heat).

And the date and time. That seemed odd, since I was connected to the interwebs - but it's easy enough to enter.

What have we learned?

5) What is your wireless security protocol? If you don't know offhand, visit your router and find out. Write it down.

6) Check to see that your router's firmware is updated. If you have connection issues, this is one of the items on the Troubleshooting Nest's WiFi connection checklist. Updating router firmware is no fun, but you should be doing it. My router last had a firmware upgrade years ago, but I'm ashamed to admit I was out of date. Don't be like me.

6a) Send your router manufacturer hate mail. Only do this if they (like NetGear) have firmware upgrade instructions that say "Write down all of your router settings. Then upgrade and erase them all. Then manually re-enter all of your router settings."
I'm kidding. Upgrade instructions that bad don't merit hate mail. They deserve getting a burning bag of poop.  I digress...

Pairing Nest with your account and Wireless Debugging

In order for Nest to be truly special, it needs to talk to the mothership at Nest.com AND (more importantly) an application on your smartphone/ipad. To do this, you'll need to create an account on Nest.com.
Username/email
Password
Password confirm 
Done.
(And kudos to the design crew for resisting the urge to spam us with marketing fields and defaulted checkboxes with 6-point fonts that say "Please send me crap." I truly appreciate it.)

This gets you halfway. The mothership at Nest.com is ready, now you need your Nest thermostat to generate an Entry Key that you type into your Nest.com account after you've logged in.

When I asked my Nest to generate an Entry Key - it gave me an error message.
Entry key error: Initializing please try again
So I did. And it gave me the same error and told me to try again.
So I did. And it gave me the same error and told me to try again.
So I did. And it gave me the same error and told me to try again.
etc.

This was really starting to annoy me. So I checked in the Network Settings and found my Nest wasn't connected to WiFi. So I re-entered my looong SSID and password *sigh* and tried to generate a key.

Same result.

So I went searching through the Nest's menus and found a Restart option.
Settings>Reset>Restart

Thus have we learned:
7) You can reboot! Perhaps all Windows users believe rebooting has magical powers, but we only think that because it does.

I restarted the Nest and asked it for an entry key. It gave me one.

Ta-dah!


Once I got the unit paired up with the web account - I could download the mobile app and set it up.

I do that, log into the app with email and password and - presto!

Five minutes later, though.... Sadness. It's telling me that my thermostat is disconnected from the web.

I go back to the thermostat and *sigh* re-enter my long SSID. This time it appears to have memorized my password (nice).

I check my mobile app and I'm back online.

Five minutes later, though... Sadness.

At this point - I clearly have an issue that goes beyond basic setup. I call their support line and get the first genuinely poor customer experience so far.

The guy on the phone sounds like he's reading from a script and most of it is aimed at a person with problems upstream of where I am in the process.

I know I've connected to WiFi with the unit. I've seen its MAC address on my router. But the connection doesn't last.

I've checked their list of routers that have connection issues. My router isn't on it.

I get seamless wireless connections in every room in my house. This could be interference, but I am getting connected. Then I'm getting dropped.

Nest support offers me vague advice like setting the wireless "channel" (whatever that is) to 20MHz and buying another router.

Yeah, okay. Thanks. Click.

I scour my router settings for any terms resembling ones the support guy recommended trying. I find none of them.

Eventually I blunder across a setting whose bullet summary suggests can help with devices getting interference. I try it and it seems to work.

I'll post it if continues to work, but as of this writing - it's too early to be sure.

The connection has stayed up all night and all day, but until I've gotten a week at least with no hiccups, I wouldn't call this solved.

I have a good deal of sympathy for Nest support folks trying to diagnose wireless connection issues on an ever-expanding list of routers for people who (in all likelihood) know next to nothing about wireless routers.

Still, as it is an essential part of setting up the advanced features of Nest, they should do better. The online help they have should be turned into a diagnostic wizard or flowchart so users can be routed through the likeliest fixes before getting routed to support reps.

The unit should have diagnostic codes that it can display so the techs ask the user to read error codes or signal strength measurements to them. There's a lot of room for making that user experience better.



While I was initially griping about the irony of installing a new thermostat at a time when the weather is damn near perfect outside (all geeked up and nothing to heat or cool) - it occurs to me that there is a definite upside. I don't think I'd want to install a new thermostat during a cold spell - when I absolutely had to have heat. Debugging the install is frustrating enough when I don't care if the fan runs or the heat is on.

Just because the Nest folks have made thermostat installation a lot easier and comprehensible doesn't mean they've made it a change that should be made casually.

Which leads me to the last thing on the list of things I like to think I've learned:
Changing a thermostat involves disabling a critical home system temporarily - potentially for longer than you expect.
And thus, I add to the list:

8) If the thermostat you're replacing was functional, save it. Put your old thermostat in a ziploc bag with all its parts and store it somewhere safe and accessible. New technology is awesome and all, but one thing lost in the promo materials and the rush to install awesomeness is this: A thermostat is a critical piece of your home systems. If it doesn't work, you will not be able to heat or cool your home. In the summer, you can open windows and use fans, but if there is a serious problem with the the Nest when it's below freezing - having a backup thermostat will allow you time to wait for tech support without risking damage to your pipes.



Which is not to say I'm disappointed in my Nest. Quite the contrary.
  • I am thoroughly in love with the idea of a programmable thermostat that has modern user interface.
  • I love that the Nest and its helper application can be updated and enhanced after they are installed.
  • I love that I will be able to monitor and track my energy usage over time.
  • I love being able to monitor and control my heating and cooling from anywhere (even if it's just from my bed)
Nest's marketing material points out over and over again that around 90% of programmable thermostats aren't programmed correctly. A good chunk of the energy savings they're bragging on relies on the difference between a constant temperature and their easily programmed alternative.

Well, I'm not going to realize a lot of that savings because I did program my old thermostat.

I absolutely hated my old thermostat - despite its virtues:
  • already installed/paid for
  • 7 day programming
  • reliable
  • a battery to retain data 
Why? because it was absolutely murder to interact with. 

I'd programmed a varied schedule to save energy based on the four days of our schedule that were regular. But for the other three days I picked a temp and held it. Partly because on those days, our needs would vary - but also because adjusting and readjusting to find a better setting was too much of a pain.

I did four days and then gave up and said "good enough." The fact that the hassle would probably be worth it did nothing to nullify the fact it was a hassle.

Adjusting the program with the Nest is not a hassle. It is the opposite of hassle. It's fun to play with.

Good user interface leads to more interaction. With the Nest, I expect to refine my settings for the remaining three days AND take advantage of a system smart enough to switch off when I'm gone.

Plus, I get data so I can improve and refine over time.

Plus, it really does look cool.
Update Jan 2, 2013: I've added user observations and energy savings after eight months.

Thursday, May 03, 2012

Decimation

Okay, lets say you're at your desk and you have the following information:

One -  A lot of people in your area are being laid off today
Two - People are being notified in person, then walked out of the building with a box of belongings;
and
Three - Not a hell of a lot else

That's a short list. Guaranteed to provoke your stressed mind into demanding more information.

Plenty of people are willing to fill that need with crap:
"...100 people are being let go."
"...They're going to do this every year."
"...I heard security is watching the parking lot in case people go postal."
Most of this noise is un-sourced nonsense that has no bearing on the situation at hand - Have I been canned? - so it's easy to filter out.

But people have been told to wait at their desks, and
Idle + anxiety = bull$h!t factory. 
 Pretty soon, some truly irresponsible stuff starts making the rounds.

I'm told definitively that my boss has been sacked. This does not seem likely, but (because I am stupid) I repeat this nonsense to someone else. My original source returns and rattles off the names of others who will soon be shown the door.

At which point, sanity returns and I realize that this person is full of crap. They certainly could find out who has been sacked, but there's no way in hell they're getting their hands on a list of future ex-employees. Which makes me question their original information - and think myself a dork for getting caught up in the guessing game.

As sucky as it is, we'll know when we'll know.

The team I've been on has been through several purges in the past. We were once over 20 people strong. Three weeks ago we were 9. When Black Wednesday started, we were 8.

We used to be a cohesive team, too. But the re-organization split us into essentially a core group of 4 (who I'll call Apok, Friday, Isis and Murdock) and the rest of us (myself, Ruby, Stimpy, and Din) operating more or less independently.

Friday's been predicting the end for so long, most of us have tuned them out. They'd predicted massive head-rolling back when the new secure doors were put in - and nothing happened.

This time, people are walking in the halls with boxes and Friday's stopped predicting the end, they've started preparing for it. They're emailing personal contact information to everyone on the team "just in case." I read the group's relative anxiety level in their response time.

Apok is first. I've worried about them. They've been outwardly cheerful, but clearly under a lot of strain. 

Isis is second. That's a surprise. No way they're in danger, though. Isis is one of those pros you just want to shadow so you can learn how to be awesome. They're only replying fast because efficiency is a habit. True, the managers aren't involved in the layoff decisions - but Isis is in the clear. Bank on it.

Murdock doesn't even reply. I take that as a sign of confidence. Murdock has a unique skillset and knows it. What's more, they've probably done the math on the expected number of cuts vs. the size of our division. "The numbers they're talking amount to one in ten," they've pointed out more than a few times. "That's bad, but the odds are still in our favor."
One in ten... No need to panic, folks...
Then come Ruby, Stimpy, and Din. They're like me, independents. We're not permanent staff, which normally would put us more at risk - but this time around the signs are inverted. Stimpy was hired a week ago, which I took as a bad sign for permanent staff. If consultants are coming in before a layoff...

I reply directly to Friday's personal email, which in retrospect makes the group think I didn't reply at all, but I was hardly thinking straight at the time. I was getting an earful of BS from some passerby. A huddle was forming - and I figured this was as much as I could stand.

I need Murdock to do something for me, so I email them and ask if they'll have time later in the afternoon. They reply almost immediately - they're out of the office, but I should set something up for tomorrow.  
What a day to be out... still, you miss all the stupid.
I walk out of the office and get some coffee. At the elevators, some older woman is holding a box next to her chaperon. She's loudly telling a colleague that she's happy to go. "It's finally over with. I'm fine..." I wonder if she's fronting or truly relieved. To me, getting canned should be private. You shouldn't have to be brave or explain yourself. You should just be gone and leave an email.

I can't bring myself to share the elevator, lest this person be forced to explain to me how this doesn't bother her. I just want some coffee...

One the way back, I opt to swing by my boss's office. Nothing like hard information. I've been told repeatedly that they are gone. If that's so, they won't be there. Shine light on the BS, it will go away.

I'm taking the long route - so I go by Apok's desk. They're there, talking to someone.

No. Not talking to. Being watched by.

-as they stand over an empty box.

Apok smiles and gives me an impromptu wave.
What do you do??!
You go over, you can't help it. You give them a hug and say "Good luck." I feel absolutely gutshot for them. They crushed their last project, and now this? Soon as I speak the words, I realize I've overstayed. Apok's minder will want them to keep moving. I don't even look at the minder. I back off and wave, "See ya."

So utterly inadequate.

I leg it down towards my boss's office. They're still in there, shoving papers around and talking with someone who looks crestfallen. I blow past and head for the elevator. The boss is still here. The rumormill is so full of it.

I swing back to my project's turf. I need to tell Din about Apok. Din's got a visitor, but it's a social call. Unfortunately, it's a social call just like mine.

I'm telling Din about Apok, that I spoke to Apok and they told me they were gone. This is fact not rumor.

Din's visitor tells us both that Isis is gone.  Sonofab!tch. Isis. NoF*ckinWay.

I grill the source, but it's for real. The visitor's been asked to pull some of Isis's stuff for them. Stuff that wouldn't fit in the one box they had ready.

Goddamn.

The idle staffers around us stop eavesdropping and begin announcing how they've been packed for weeks now, how if the worst happens, they'll be ready-

I leave. Hell with this.

I need to talk to Friday. My IM's down, so I fire off an email. "You still here? Cos I'm here..." I'm kidding, they're at their desk, like everybody else.

Only they don't respond.

I could walk to their desk, but get serious. It's email, and they could be in the bathroom.

I forcibly re-start IM and check Friday's status:
Offline for 1 hour.
Not Away. Offline. Their computer is off.

I check Apok's IM status:
Offline for 1 hour.
Isis:
Offline for 1 hour.
It's not hard data, but while I'm sitting there my cube-mate comes in and says "What was the name of your colleague who used to be in our morning stand up meetings?"

I rattle off the name of a former consultant.

"No, not them. The other one who helped them out."

"Friday."

"I just saw them in the hallway carrying a box."

FuckFuckFuck.

Cube-mate tries to walk it back. "They could be escorting someone.."

Which is a fun hope to entertain, but we both know that Friday isn't a manager and only managers are escorting people out.

Three out of eight is a hell of a lot more than one out of ten.

My cell phone rings. I don't recognize the number and send it to voicemail. And then it occurs to me this could be a call I need to take.

I play the voicemail and hear my account rep talking-
Oh, sh!t.
--No. Not my account rep. Some recruiter calling to see how I'm doing. They obviously know what's going on. And while they're saying "How are you?" what they're really asking is "will you be interested in applying for one of the positions I'm paid to staff?"

In the normal run of things, a consultant would be let go before they came to work. By phone, usually by their account rep. The fact that I got into the building I'd taken as a good sign. But absolutely nothing about today is the normal run of things.

While I'm decompressing, a manager pops in to ask innocent questions and my cube-mate and I both look behind them for someone with a box. But they are alone.

Hell with this. I need to do some work. I test out some fixes to something I screwed up the day before.  Which reminds me I need to set up a meeting for Thursday afternoon.

My counterpart (who unlike me, is an actual developer) needs to sit in on a review - and I keep forgetting to include them in the invites. So I do them first.

Then I do Murdock.

Absent-mindedly. But the name doesn't take. The Exchange server is chronically unreliable, so when it hangs I just get irritated.

Then I pull a past email from Murdock and check their Outlook properties.

Everything's blank except the display field. It shows Murdock's mail has been routed to an administrator.

This is insane. Nobody can do what Murdock does. They're not even here today...

Murdock's boss is different from mine, and they're definitely gone. Maybe this is part of a re-organization. Maybe they're not...

Stimpy confirms it. They saw Murdock's stuff getting boxed up. People taking his laptop.

Rumormill's telling me Ruby's gone, too - but when I check Outlook they're still listed. Rumormill? Still full of it.

I check the rest of us, Din & Stimpy. Outlook still knows us.

I'm assuming that's a good sign...

I'm contacted by external sources telling me - again - that my boss is gone. I check Outlook and find them.Does no one think before they say these things??

Almost in the same instant, my boss sends a meeting request to Ruby, Din, Stimpy and I. It's for the following morning.

It's a confirmation of sorts. The five of us will survive until tomorrow at least.

The day ends with people guiltily celebrating their continued existence.

**************
The following day, I'm going in and I see Murdock by the security desk. Probably waiting to pick up their stuff. As I spent part of yesterday trying to secure Murdock's laptop so we could use its unique software - I'm too ashamed to even say hi. I slip by and head for the meeting room.

Everyone's there early and too nervous for chit-chat.

The meeting with the boss ends up being a statement of the obvious. "We've decided to staff this need with consultants."

My boss informs us that the rumor of his demise spread all the way to their spouse. Someone actually called my boss's home to ask if they were still employed. When they were informed that, yes - my boss still had their job - they insisted they'd heard otherwise.

Who does that kind of crap? Wait 'til the dust settles, eh?

The news is brief, and as we start deteriorating into gossip, the boss ends the meeting.

We file out and collectively exhale.

Four of us.

Wednesday, May 02, 2012

The Smell of Fear

They announced it months ago.
We will lay off 100 people in your division in May.
They then nullified traditional causes for hope, like past performance, or professional relationships.
Your managers will not take part in these decisions.
Then they said nothing.

For months.

Some clues escaped  - the grapevine informed everyone that managers were being given training on how to usher people out of the building. Given the scope of the cuts, it would not be possible for some managers to escort all their dismissed employees in a timely fashion.

So they’d need help.

People in our division were then told that on the appointed day (whenever it should occur) all meetings would be cancelled and everyone was to wait at their desk until the work day ends or they are fired – whichever comes first.

There’s been a lot of speculation as to when that day is. The assumption has been that it would be soon and on a Thursday – because a lot of staff take alternating Fridays off.

Makes sense. Totally plausible.

Badly sourced, though.

And wrong.

I’m coming in the building watching our product owner exiting the building with someone I don’t know. They’re carrying a banker’s box.  The unknown staffer is carrying an assortment of bags. They look grim.

But it’s Wednesday…

I convince myself they’re headed to a trade show. I’ve done the trade show thing and no doubt carried a similar expression at the time.

I’ve forgotten my badge, naturally. So I go to reception and there’s a new procedure for getting in.  It takes forever, and I’m worried if I’m going to make my morning meeting on time.

In the hall I see one of my favorite clients. She gives a thumbs down signal to me – and I have a momentary fear that she’s on her way out – but no.

“It’s today,” she says, “they started at 8.”

She doesn’t need to explain what is happening. It’s been the first and last topic of every meeting for the past month. It’s been the reason 20-year veterans are too stressed to focus and spend hours just praying they'll get a severance package.

I go to my desk thinking – This is just perception. Rumors have been flying for days and the human mind can only stand so much suspense.

It was just a person carrying a box…

I get to my desk and see my inbox is flooded with meeting cancellations.
…all meetings will be cancelled.
I do a once around the pods to make sure people I know are still here – then back to my desk.

And here I sit, waiting for the end – or the end of the day.

Like a good little soldier.

Monday, April 16, 2012

A1C

I love my iPhone.

To a truly embarrassing degree. This would be true regardless of my current status as a type II diabetic, but post-diagnosis, it is no exaggeration to say that my iPhone is an essential part of my daily routine.

On Monday morning, around 7am, my phone will remind me that it is time to test my blood sugar. Later in the day, I'll log into Couch-to-5K and head out for a run.

I could do all of these things pre-phone, but having a device that reminds and records these events (with snappy UI) makes them considerably more enjoyable.

More enjoyable = more likely to occur.

Now, testing reminders could be handled by the blood glucose meter itself - the thing is basically a clock that also logs inputs of blood - but there's a very basic reason why I don't use the meter to do this.

Here's a picture of my meter:

There are three inputs:
  1. The M button
  2. The C button
  3. The place where you put in your test strip.
If I'm to get a good sampling of what my blood sugars are doing, I"m supposed to do daily tests that vary from day to day.

Task: Set seven different alarms - that repeat on the same day, each week - using an LED screen and two buttons.

The reward for this is having your meter beep at you at the specified time in the annoyingly tinny way cheap electronics have. If you're away from it at the time, you'll just miss it - oops. Too bad.

Setting digital clocks using two buttons is sucky. Setting digital dates using two buttons is worse. And obviously doing both seven times over is worse yet.

Rather like writing a book one letter at a time by signalling to an assistant with your eyelid. Sure, it's been done, but nobody wants that kind of motivation.

But over and above the entry suckage is this: one day, having endured all that pain and plugged your schedule into your meter using Morse code, you finish breakfast and remember that you were supposed to test before you ate. What happened to your reminder? You look down and see that your meter thinks the current day is Friday. Also, it insists that the current time is 9:18pm.

Yes, another of the (many) downsides of having only two input buttons is that one of them is the power button AND the button you hold down to put the meter into setup mode. Holding down a button for a few seconds isn't easy to do by accident - unless you say, put the meter in your pocket and sit down.

Once you've put pressure on the M button for awhile, perhaps your weight shifts a few times (M, M....M.....M) and you've toggled the setup control to the day of the week. Shift again and you've hit the C button and suddenly it's not Monday anymore...(C, C.....C) morning becomes evening. Time travel realized...!

And all of your careful programming is worthless now, and while you could go back and fix it, why would you want to?

Plus, assuming I get all this sorted out and manage to not sit on my meter - by doing something like leaving my meter in my coat pocket. This decreases the likelihood that I'll be around to hear the damn thing beep at me. Missed it? Oh well.

So I'm using my phone - something I carry and look at regularly. It also allows for easy entry of complex inputs.

My current scheduler of choice is Orchestra.
I tried my calendar app, but immediately realized I don't want my testing events to blackout my calendar.

Orchestra's UI is awesome. There's a very satisfying feeling in checking things off the list, plus reminders persist on the screen, so if I happened to (the horror!) be away from my phone during the second it beeped at me - I'd return to a phone with a reminder front and center on the home screen.

Score one for good UI.

Which brings me to Couch-to-5K, the other bit of life altering software. If you'd have told me even a year ago, that I'd be running 3 miles over lunch hour - I'd have laughed in your face.

Today I did over three miles. And it felt good.


Which is the polar opposite of where I was when the Parrot guy was asking if I wanted to go running over a year ago.

And yes, its fair to say my motivation has changed dramatically since then, but Couch-to-5K allows its users to offload a lot of the unknowns:

-How long should I run for to start with?
-How often should I run?
-How did I do? (How fast? How far?)

It logs past performance in a way that is visually appealing (plotting your route on a map) and allows you to review what you've accomplished.

And you get to check things off. I love checking things off.

Week 9 run 2. Done. Whoo hoo!

-----

But all of this reminding and logging was in service to a larger goal. Getting my blood sugar under control. Because it was way the hell out of control. My last blood draw was in December. Normal glucose levels are around 70-99 milligrams per deciliter - I was at 320. Worse, I had an A1C of 12.8% (not 12.7% like I'd put in a prior post).

The A1C samples your blood cells to see how much glucose is stuck to them. Your blood cells die off and get replaced over time - and it is possible to separate these cells into groups for testing based on how old they are.

Each group of cells can then be evaluated for its glucose content, which allows you to calculate an average glucose content across each group. Meaning you can get an average over time using a single blood draw.

Slick.

A normal A1C test should run between 4% and 6%. I was more than double the high end of the range. The A1C percentage can be converted into an estimated mg/dL and that math turns my 12.8% into me averaging a glucose level of 320 mg/dL over two three months.

I'm sure that factored into my new-found motivation to get off my butt and check my blood regularly.

But again, anything that makes those tasks easier, makes it more likely that those tasks will in fact happen.

I've been testing, I've been running. The phone apps have helped a lot. But my last A1C was in December. And a scheduled testing regimen is more than capable of falling prey to human tendencies.

The simplest being: If there's a dessert in the house that I want, I don't eat it until after I test for the day. Less simple: The Sunday and Monday tests are grouped close together. If I'm good on Sunday night, I can net two good scores to my average for the week.

And so on.

But the A1C will not be fooled. If you've been good at test time and bad all the time in between, your hemoglobin will catch you out. It accumulates glucose from all the intervals of the past months - regardless of when you chose to stick your finger.

So it's more or less the report card. And I've been dreading it, because I can think of every dessert I've had since December. Every impulse snack food. Every time I wanted to "treat myself."

And I've been wondering what they all add up to.

So when I get the email that tells me my results are in - my first thought is Grades are in.

I log in like a mad man.

    HEMOGLOBIN A1C     6.3%
    ESTIMATED AVERAGE GLUCOSE  134 mg/dL
            Standard Range 4.0 - 6.0 %

I spend a good long time looking at the screen before I go back to work.

Still smiling as I type this, too.

Thursday, April 12, 2012

The Walking Dead

Today I spoke with a Zombie.

They came into the office as usual, late and flustered. They cheerily said hello and set to work as they used to do while they were still alive.

But they weren’t. I know this because one who was complicit in the Zombie’s death stopped by to tell me the other day.

“Gonna have to get used to sitting alone in here for awhile,” they said – in an I-know-something kind of voice. I wasn’t even that surprised. The signs of corporate death begin long before the actual event – in the right proximity, these things are downright obvious.

And slow.

There is no good reason why a life altering decision like this should be dragged out, but CorpWorld has procedures that prolong beyond people’s capacity to keep their mouths shut. And so – we have Zombies.

In the preceding weeks, I was asked for my opinion on the Zombie by management. Twice.

I like the Zombie – and said so, they are genuinely likeable in all sorts of ways. But I also said that when confronted with interpersonal problems, they crafted personal solutions instead of professional ones. Tempting as it always is to go for the win, in CorpWorld you’re usually better off sorting out what is needed to get the task done. Forget ego, forget pride, forget even common sense. Do the job.

Grind out the work – and much will be permitted. Delay work, repeatedly, and you will be asked to explain yourself.

To any resident of CorpWorld, this is a sign.  Paperwork is wending its way towards the kill.

When things get that bad, it can be very difficult to keep your professional composure. Your value to the company is being questioned. They are asking you to do something that makes no sense. And it’s not like you’re the only problem here– how can they not see that? But while the Explain Yourself meeting is asking you a question – there is only one correct answer: “I see your point, and I will do what you ask.”

Anything less leads to corporate death.

I was out when the Zombie was asked to explain themselves. They did not keep their composure. There was a genuine scene and a good deal of yelling.

CorpWorld does not like yelling.

And so a likeable person transformed from co-worker to Zombie.

They will be told their fate in a few days, but as an increasing number of their co-workers learns the truth – and are summarily sworn to silence – mundane office interactions now occur on tenterhooks. We don’t ask for their input -  what’s the point? No one listens to their daily report-out or follows up on any questions they ask.

We wonder how much they know. We wonder if any change in behavior has made their fate blindingly obvious. We wonder what we would do in their place if we came to that realization.

What would you do?

While I’m sure there are lots of TV-inspired reactions – but the likeliest to me would be to feign ignorance and collect the paycheck for however long you had left. On the appointed day, you’d just be gone.

Behind me, the Zombie types and clicks away, occasionally making small talk and looking wearier than usual.

I go through the motions of a normal day - and they do the same.

And we’ll both do this until the appointed hour of their corporate death.