Wednesday, January 02, 2013

Assessing the Nest


So it’s been eight months with the new Nest thermostat (version 1.0) and the obvious question is – was it worth the $250 price tag?

The answer – at least for hard dollar savings – is very hard to get.

For the aspects that don’t convert easily to dollars – ease of use, aesthetics, ability to access remotely – it is easy to claim value for the money.

I love accessing the thermostat from my phone. If I wake up early on a cold morning – I lean over to my phone and tell the thermostat to dial up the heat. If we’re headed out of the house on a weekend, I log in to tell it we’ve left. Frequently I find it’s already detected our absence, which is another feature I like.

I love the energy usage reports. I have two stage heating and it’s nice to see that the report differentiates between the two stages. It’s also great to see the patterns in how my house heats up. On a cold day, I can see that we’re hitting stage 1 heat about every half hour or so.


And the milestones have a little detail, as well – mostly enough to identify themselves – but enough to differentiate between a programmed temperature change and an ad hoc adjustment.

I like the leaf symbol and time to temperature – great user feedback to encourage responsible use. If I crank up the Nest because I’m cold and see “72 IN 2+ HR” I’m more likely to dial that back – particularly if I’m leaving/sleeping before the furnace will hit that temperature. My old thermostat would just impassively spool up and generate a bill for heat I wouldn't use or notice.


A 5-degree heat increase in 25 minutes? Lucky you.

I like that the device turns on when I walk by – makes me feel like I’m living in the future. "Oooh, watch me activate the screen by waving my hand!"

Those are the UI wins.

Like all devices, there are UI shortcomings.

A minor issue is that the energy report should store external temperature data for the day. While it’s useful to know that my furnace ran for six hours – knowing that it ran for 6 hours on a day when the temperature was 4 degrees Fahrenheit is a bit more useful. As the energy report only goes back 10 days, Nest probably figures you'll just remember this, but...

-I would like to have long-term access to my energy use and weather data – using the web app. I want more charts and graphs! Data is a drug - you get some, you want more.

The biggest UI failure of the Nest to me almost certainly stems from the best intentions of the Nest folks. Much is made of the accuracy of the Nest’s temperature sensors.
Nest uses multiple temperature sensors to determine the ambient temperature with a high degree of accuracy. Nest's sensors are tuned to be most useful for keeping your home consistently comfortable. We found that responding rapidly to temperature changes gives Nest the most accurate data to work from.
“A high degree of accuracy…” So when the user sees their Nest display something like this, they start to wonder if something is wrong:
Literally, what my Nest was displaying as I typed this.
A temp of 67 degrees while the Nest is set to 68 - and the Nest is not heating.

It is not uncommon to see the Nest display a current temperature that is below the temperature it is supposed to be at.

This does not fit the user’s mental model. “I asked for 68 degrees, and if you are below 68 degrees – I expect the heat to be on.”

Nest's support pages point out the many good reasons why this is so, but to your average homeowner - these are excuses. Our mental model is stuck in reptile brain mode: “Make heat. Now.”

The Nest is doing what most thermostats do, it has a "maintenance band" of about a degree or so that allows for minor variation and keeps the furnace from flicking on every few minutes and wearing it out.

"My old thermostat didn't do this!" Well, my old thermostat didn't light up when I walked by and show me what it was or wasn't up to, either. More interactions = more data = more questions. My previous thermostat offered the same data, but reading its small dark-grey LED text (on a light grey screen) required my eyeballs to be less than a foot away.  Hidden data might as well not exist, so while I might think my old thermostat didn't have this issue – it probably did. I just didn't notice because I almost never read the damn thing.

With a display this accessible, I would think the Nest would add an indicator that showed that it was aware that the temp is below the set temp. Something like "Preparing heat in 10 MIN" or something that lets the user know that their $250 thermostat hasn't forgotten that 67 is less than 68.

Screw the UI. What about the money? Is it worth it?

That's harder to know than you might think. All that nifty data I'm getting from the Nest? It's just telling me how long my Nest was running - not how much natural gas I burned for heat, or how many kWH I used to cool the house.

Did you pay less money this year? Well...
  • In all of 2011, I paid $2,238 for electric and gas.
  • In all of 2012, I paid $1,945 for electric and gas.
Huzzah! $292 in savings!

Well... sorta.

I mean, that's my total utility bill, including things like my gas stove and electric dryer - stuff my Nest is no help at all on.

If I want to carve off the portion of my bill that went to feed my A/C and Furnace, I need more data. Now, if I go with the assumption that my energy bill is like the typical American home energy bill,  then heat will account for 29% of my bill and A/C another 17%.

So, if I assume that I'm typical and 46% of my utility bill was my heating and cooling (29% + 17%), then A/C and heat ran me $1029 in 2011 and $894 in 2012.

Huzzah! $135 in savings!

But... I installed the Nest in May, so really that should be $135  * [8/12], or $90.

Huzzah! $90 in savings!

But that's just the total expense of heating and cooling. Is the difference between those bills accounted for by  2011 having a hotter summer, or a cooler winter?

Well, thankfully, my utility company provides most of the missing pieces. In winter months, my utility tracks how cold the winter months are using something called a heating degree day. The colder the month, the more heating degree days it will have.

My utility only tracks heating degree days during the winter months, so I can only compare 2011 to 2012 using the last three months of each.

They even give you pretty graphs:

Lines are good, but if I need to turn this into dollars, I need the data points.

Here's the data for 2011
Read Date # Days Therms Heating Degree Days Therms/Degree Day $ Amount Cost per Therm
12/16/2011 30 96 900 0.107 $91.61 $0.95
11/16/2011 29 62 601 0.103 $58.55 $0.94
10/18/2011 29 20 231 0.087 $25.79 $1.29


and here's 2012:
Read Date
# Days
Therms
Heating Degree Days
Therms/Degree Day
$ Amount
Cost per Therm
12/17/2012
31
78
847
0.092
$73.79
$0.95
11/16/2012
30
54
646
0.084
$51.31
$0.95
10/17/2012
29
25
399
0.063
$28.99
$1.16

In addition to pointing out that the cost per thermal unit is yet another variable to track, this allows me to factor the weather into my natural gas usage. Here's what I came up with

The average Therms per Degree Day for 2011 was .099.
The average Therms per Degree Day for 2012 was .079.

Which means I used 19% less Therms per day in 2012. While some of that could be due to other causes, I haven't changed my gas water heater and we use our gas stove at a pretty constant rate. 19% is a pretty healthy shift in my bill. If my natural gas costs truly went down that much due to the Nest, I would have saved about $30 over three months of heating.

The data for my electrical bill wasn't quite comparable, but my average kWh/Day usage went down as well. The graph makes it look pretty dramatic, too:

Between May to September of 2011, I used an average of 28.64 kWh/Day.
Over those same months in 2012, I used an average of 24.18 kWh/Day - a drop of a little over 15%.

Again, if I tack the credit for all of that to the Nest, I can claim it saved me up to $97 over those five months. That's probably high though - I don't have equivalent degree days for warmer weather, although the 2012 summer was a drought and 2011's was not rated as unusually warm.

I tend to think I used my dehumidifier less in 2012 than in 2011, so that could be a good chunk of that savings.

But take a reasonably good heating savings estimate of 19% - (averaging about $10 a month), and throw in half of my looser estimate of electrical savings - call it 8% (instead of the 15.57% I came up with) and you end up with an average of about $10 a month.

Roughly eighty bucks saved across eight months. Buy back in about two years - plus more features and control.

Not too shabby.

Monday, December 17, 2012

Forgive us, Rachel Scott



We have failed you.

Again.

It has happened again.

An elementary school, this time.

So far, we have established the 'what.'

The post-massacre pattern is depressingly well-traveled. Photos of stricken family members, eyewitness accounts, and a verified list of the slain.

We demand this, and we get it.

But there is more.

We move on to 'how.'

Timelines are constructed, complete with maps and dotted lines showing the path of the gunmen and icons indicating where the victims were found.

And it is here that we compound our national misery. We love our guns, surely- but far more prevalent than firearms is our pornographic fascination with mass murder.

It is a huge story, surely. Attention must be paid. The public must understand what has happened in order to fashion a response. Yes.

However, I will say something equally obvious: the coverage of these events is part of the problem.

Ask yourself: what do we gain from seeing the picture of the gunman splashed on every newspaper in the country? What insight does a captioned photo of the killer offer a policy maker?

In the case of a live, at-large person - their name is supremely relevant. But do I need to know a dead man's name to damn them for their crimes?

It is beyond fantasy to hope that the gunman's name would never appear in print - but surely there is a point at which we and the media can agree to minimize their celebrity. No photo, no bio, and most definitely no last video message broadcast nationwide. When their death is established, they are the gunman - and nothing else.

We must deny them the infamy they seek.

Nor is there any public value in splashing hi-res images of the weapons used by the gunman. Is our understanding of the crime enhanced by learning a gunman's specific choice of handgun or rifle?
More to the point, if this information is truly essential, how is it we know precisely what weapons were used at Sandy Hook Elementary, yet a professional football player can kill his girlfriend and himself with a pistol that remains nameless?

Is it too much to dream that a question like "What kind of semi-automatic rifle did the gunman use?" would be answered by "Does it really matter?"

Once the deliberate nature of the crime is established (numerous weapons, large reserves of ammunition) anything else is murder-porn.

We should not glorify the tools of mass murder.

Women and children were killed - with guns.

But the most patently offensive and ubiquitous aspect of coverage is the leaderboard.

Any event like this begs for comparison and context. It is the answer to the unspoken "how bad is it?" or "is it the worst ever?"

Our media helpfully supplies this context, so future killers can determine what level of bloodshed will assure them immortality.

I don't pretend that such comparisons will ever stop - but their well-practiced delivery is one of the many things that is wrong with our culture.

These are human beings who have been murdered - they are not points on a scoreboard.

Finally, despite our need to know exactly what happened - the you-are-there narratives supplied by eager journalists serve to supply future gunmen with the training and inspiration they could not otherwise obtain.

A spree killer will almost certainly be a novice. We should not help them prepare by illustrating what security measures they will encounter - or how those measures can be bypassed.

The public will gain from news accounts that detail security gaps and lessons learned - I do not advocate for censorship, only a tactical level of restraint.

As we prepare for the next gunman, we should not ensure that same gunman is forewarned.

There are countless aspects to the larger issue of mass-killings.
We can expect school lockdown drills to become more rigorous. School doors that can be secured against gunfire and forced entry. These things will happen.

And we should re-evaluate the need for private citizens to access high capacity magazines.

But before all this - we should take a good look at how we portray and elevate these events and those who commit them.

Gunmen are nothing - yet we make them famous. The same nation that effortlessly recalls serial and spree killers cannot locate the memory it owes a young woman named Rachel Scott.

We must do better.

Or there will be other schools in other towns that will wish we had.

Monday, November 26, 2012

Re-org

The first workday after a long holiday is enough to bring anyone down. You spend some time sifting through your inbox trying to figure out what you do for a living. Each work-related fact you bring to mind kills a small portion of your holiday memory.

By 10am, any holiday afterglow is well and truly dead.

I'm counting the minutes until lunchtime when it happens.

An unannounced meeting for the entire project team. For this afternoon. From the PM.

F$*k

Team meetings with little or no lead time are bad. Really bad.

I do a quick mental inventory of the corporate rumor mill. The only likely candidate I can come up with is aimed at the PM. There's a re-org and a sizable group of managers will have to re-apply for their jobs. The fun part? After the re-org the number of positions to apply for is considerably smaller. The PM will compete to keep a job they've had for years.

And they do a great job. Management is service, and good managers serve their staff as well as keep tabs on it. The PM has been the kind of manager who is out in front knocking down obstacles so their staff can focus on getting work done. On multiple occasions, CorpWorld's culture of "it's-stupid-but-we've-always-done-it-this-way" has collided violently with the PM. Plenty of managers would have given in, but ours stood up, took the lumps and - odds and precedent be damned - made things change.

Which is why my mind is fixated on this particular possibility.

I'm reading a book by Barbara Tuchman, where she makes the excellent point that negative events are disproportionately represented in history and news. Good things are surely celebrated, but are not marked in collective memory the way bad things are.

I want to believe in good things. But the fact remains: You do not hold an impromptu meeting to announce the status quo will continue.

Something has changed.

The team files in and we arrange ourselves for what we collectively know will be a brief announcement. A chair is arranged for the PM at the head of the room, but I cannot imagine them using it.

The PM arrives and they chose to stand. They are leaving the project and the company. They have elected to not compete for their current position and that will mean a swift end to their tenure at CorpWorld. They do their best to put a good face on it but it is clear that they are at odds with the current culture shift in the company.

They make nice, because they are nice - but it's clear that this is a brutal event. We voice our encouragement and sincere thanks, but there's not a lot you can offer a person who has just opted into a corporate death. They are smart, experienced and good at what they do - surely some company will realize this.

Because this place obviously didn't.

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.