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.

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.