Saturday, December 31, 2016

Cleanup in aisle 2016!

For my birthday yesterday, my son shattered a glass jug of chocolate milk, spraying the sticky, spiky, dangerous mess all over our garage.  As I spent the next hour helping him clean it up, I was struck by how appropriately this moment summed up the whole year.  It feels like 2016 has been the Superfund site of calendar years, with one toxic mess following another across the national stage as well as my family's life.  But when you start your year like this...

Ski crash 2-for-1: torn ligaments in BOTH knees!

... the best that you can hope for is that things will get better from there.  In many ways, they didn't. Yes, we went to Hawaii for Spring Break thanks to the generosity of my parents-in-law, but we also got to find out just how Hawaiian expensive emergency rooms are (answer: very!) when my daughter fell on the peak of Mt. Haleakala.  2016 was the year of expensive medical treatments, with my ACL repair, my daughter's tropical ER visit, and my wife's back surgery.  Even the dog got in on the fun, tearing ligaments in her left knee in the most bizarre version of animal copycatting since Bonzo went to college.

Work was hard this year as my company struggled to absorb an acquisition three times our size and bring together disparate technologies, build new office locations, and blend different cultures.  I handed off part of my team to a new manager and took over a sizable group that's scattered across the globe.  Interesting opportunity?  Yes.  Awesome new source of stress?  Hoo boy.

At the national an international level, we had cop shootings, civil rights violations, terrorist attacks, and celebrity deaths that swept away a good portion of my generations childhood icons.  And in the "adding extreme insult to multiple injuries" category, we somehow managed to elect Donald Trump, the Clown Prince of the GOP, as our president for the next four years (or until he does something so monumentally stupid and illegal that Congress has no choice but to impeach him, whichever comes first).

"Worst.  Year.  Ever?"

Looking at all of this it's easy to jump on the "worst year ever" bandwagon, and I have to admit that when John Oliver blew up a giant 2016 on his show I was right there with him.  It's been a hard year.

But the worst year EVER?  Worse than the Dark Ages, when bubonic plague killed one third of Europe's population?  Worse than the Civil War years, when our nation was literally divided (and I intend that word in its proper usage, as opposed to "that class was so boring I literally blew my brains out") and Americans killed 620,000 of their brothers?  How about 1968, with the Vietnam war, civil rights protests that often turned violent, and the public assassinations of both Martin Luther King, Jr., and Robert Kennedy?  Can 2016 top that?

If we're honest, we have to admit that when most people say, "Worst year ever," what they really mean is "worst year that I can remember, and which therefore exists in my egocentric universe."  And the younger you are, the shorter a time horizon that represents.  In other words, if 2016 is the worst year ever, it might be because your sample size isn't statistically significant.

"You provide the meme, I'll provide the perspective."

This is what we call "perspective," which is that old people call it when they're about to tell you how tough things were in their day.  And while 2016 sucked in many ways, it pales in comparison when you look beyond the last 40 years.  This perspective is important when we feel like we're living in terrible times or when we start to draw fearful conclusions about the trends that we choose to focus on.  Income disparity is going up!  Hate crimes are on the rise!  Poverty is at record levels!  While there's some truth in each of these statements, before you react to them you have to ask, "compared to what?" and "what does that statement mean in practical (vs. emotional) terms?"  It's easy to draw a bunch of graphs that go up or down, but until you can explain their scale they're, at best, meaningless, and, at worst, deceptive.

So let's put away the superlatives.  I'll do it if you will, and together let's try to figure out what we can learn from this year.  Because while we said goodbye to celebrities who felt like family, most of us got to keep our real family for another year.  While we saw brutal civil rights violations on the news, we also saw another year of record lows in crimes.  While we elected a narcissistic man-child to be President of the United States... well, we'll have to see how that one plays out.

And while my family dealt with surgeries, injuries, and expenses, we also got to see our first child graduate high school and start college.  We visited Boston and New York and got a second honeymoon at DisneyWorld.  I got to see my son catch his first touchdown pass in a varsity game, which was also a first for all Cole men ever (we're known more for our size than our hands).

And while much of our country alternated between mourning and ranting about the new President-elect, I was blessed to see examples of people rising up from coast to coast to join me in showing kindness to strangers.  I was moved to tears many times as friends, coworkers, and strangers shared their stories of how they transformed fear and worry into generosity and joy by stepping out of their routines and providing for people who needed a little help that day.

2017: The Year of Rehab

I spent a lot of time in physical therapy this year, and I've learned to appreciate the saying, "When you've hit bottom, there's nowhere to go but up."  When you can barely move your knee, each degree of flexion is a victory, each shuffling step a triumph.  I learned through that process to appreciate every movement that I'd previously taken for granted, and when I took my first ski run this season I was filled with gratitude that I never would have felt had I not gone through the work to get back there.

I learned something else this year: like any explosive substance, anger is a powerful tool when properly channeled, but destructive as hell when it isn't.  Getting hurt pissed me off, and after I got through the first wave of anger at my own clumsiness, at the person who ran into me for not watching the hill more carefully, and at God for letting it happen, I put that anger to work.  I attacked my injury from the day of my surgery onward, pushing my body to get back to its full capability again and taking the pain as my wages for hard work.  I was careful -- because re-injuring my knee would have really pissed me off -- but I was persistent, and that persistence paid off.  I still growl at my knee now and then, especially when it starts to twinge after a hard workout or halfway down a mogul run, and I still use that anger to make things better.  I did the same thing after the election, and invited others to learn from my experiences and channel their anger toward productive actions.  I'm pretty sure we aren't done being angered by things, so we should have plenty of energy to use in the year to come.

Many of us hit bottom in 2016, one way or another,  and even if it wasn't the worst year the world has seen, it still hurt.  But 2017 is a new start, and we've nowhere to go but up.  So here's what I'm going to do this year, and I hope that you'll join me:

I'm going to appreciate the things that I have, including my family, my job, and the works of film, music, and writing from the artists that inspire me, whether living or dead.  I'm going to make time in my week to be thankful for the good things before I start dwelling on the bad.
I'm going to build on the things that worked in 2016, and keep going out of my way to bless friends and strangers alike with the gifts God has given me.
I'm going to channel my frustration and anger into positive action, whether that's by writing, teaching, or buying coffee for a bunch of strangers.  When someone's specific actions frustrate me or the news makes me want to kick a puppy, I'm going to ask myself, "What can I learn from this, and what can I do to counteract that negativity with something positive?"  Then I'll go and do it.

And above all, I'm going to make sure that 2017 is better than 2016 for myself, my family, and those around me.  Because when you've hit bottom, there's nowhere to go but up.

Thursday, November 17, 2016

The Holiday Lights Project

Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.
-- Martin Luther King, Jr.

On September 11, 2011, I was sad: haunted by memories of the events of ten years ago, grieving for my country's lost innocence.  I felt like I needed to do something to remember the friends, colleagues, and classmates who died that day, to brighten a world that seemed to darken every time this date rolled around on the calendar.  I needed to find a way to fight that darkness.

So I walked into a nearby IHOP and I asked for the manager.  When she walked up, wondering what anyone could possibly be angry enough about to actually come back in to complain about, I said, "I'd like to buy everyone's breakfast.  Could I do that?"

She was shocked.  "Everyone?"  She gestured at the restaurant full of Sunday brunchers. "Everyone in here?"

"Yes," I said.  "Can you help me do that?"

"Um, sure!"  Then began a chaotic process of printing bills, adding them up, and explaining to waitresses why their customers' balances were disappearing from the system.  Eventually, we gathered up everyone's breakfast bills and I paid it, adding a healthy tip for the by now completely confused wait staff.

As I handed the signed credit card slip back to the manager, she asked, "Why?"

Holding back tears, I said, "Because someone needs to spread some joy today."

Then I left.

It's been a little over a week since what I've come to call "The Tuesday Surprise."  Our country is reeling once again, but this time the damage is self-inflicted.  The 2016 election has polarized America more than any other election, the ugly culmination of over 20 years of progressively escalating bad behavior on the part of our elected leaders.  People are confused, angry, and, in many cases, genuinely frightened about what the next four years hold for them and their loved ones.  And these feelings aren't limited to the "losing side" in this election.  A majority of Donald Trump's supporters cite "anger at the establishment" as one of their primary motivations in voting for him, and many moderate voters who chose him as the lesser of two evils now find themselves painted as bigots, racists, and misogynists because of the broader platform they received as a package deal with their chosen candidate.

Right now, we are a nation divided.  Fear, anger, current events, the news, social media, all of these forces are pushing us away from our fellow citizens, driving us into ideological armed camps populated only by people who agree exactly with everything we've decided is true.  When we look at each other, we see stereotypes instead of people, labels instead of personalities.  We've forgotten how to be civil.  In fact, civility and an openness to discourse are starting to be seen as a sign of weakness, as witnessed by the backlash against people seeking a middle ground between the factions in this post-election climate.

The darkness is spreading and we're running around turning out all the lights.

I think it's time we changed that, and I'm starting with the only thing over which I have any real control: myself (and, with my wife's permission, my family).  We've grieved, we've reassessed, and now we're heading back into the fight, but probably not how you think.

We're going to fight hate with love, darkness with light, random acts of violence with random acts of kindness.  And I'm inviting you to join us.

For the next six weeks, now through the end of the year, my family and I are going on a Blessing Tour.  We're going to buy coffee for strangers, send gifts to distant acquaintances, and pay for people's groceries.  We're going to raid the Community Giving Tree and buy ALL THE PRESENTS FOR ALL THE POOR FAMILIES!  We're going to open our eyes, look beyond our own worries, and see the need around us.  Not just the obvious needs, like homeless people on the streets, but the hidden needs, like the mom quietly worrying about her gay daughter while she goes shopping, or the coworker at the office dreading the holidays because it's his first year alone.  We're going to turn on all the lights and send the darkness fleeing wherever we go.

We can't do this all by ourselves, so I'm inviting everyone in America to join in.  Yes, even you.  Will you look away from the news and Facebook and Twitter, step away from your outrage and fear over what "the other side" -- whoever that may be -- are doing and just try to make life better for the real people sitting right next to you?  Will you turn on one light and make the world just a little bit brighter?  And if that feels good, maybe another, then another, and maybe even another after that?

It's easy to start:

Do something small for a stranger.  Anonymously.

Why a stranger?  Two reasons:
  1. It's a complete surprise.  If you ask for your check and the waitress says, "Someone already took care of it," then you get a moment of pure joy and gratitude, two things that we all need right now.
  2. There's no way for them to pay you back, so there's no strings attached.  It's kindness for kindness' sake.
Why anonymously?  Because it's not about you.  It's about letting someone else experience a moment of feeling loved and cared for, even in a small way.  Bonus: no awkward conversations with strangers!

Things you can do:
  • Buy dinner for someone who's eating alone at the same restaurant.  Just ask the waitress to quietly add their meal to your bill, then skedaddle.
  • Pay for the car behind you at a drive-through, then take off before they can get your license plate.
  • Pay for the groceries for that old lady at the store who always takes ten minutes to find exact change.  This is harder to do anonymously, but it does have the added benefit of getting you though the checkout line more quickly.

Go wide.  If you can, go big.

You don't have to learn the life stories of everyone around you before you can help them.  If you cast a wide net by doing a bunch of small things, then you increase your odds of giving someone that, "This is exactly what I needed!" moment that can change a life.  If, like me, you don't really enjoy talking to lots of people, this is the perfect approach.  If, also like me, you might also get teary when trying to explain why you're doing something like this, then this is also the best way to avoid making a scene at Starbucks.

I find that the best way to do this is to find some small luxury, like a cup of coffee, a treat, or a movie ticket, that offers a real jolt of pleasure when someone is surprised to learn that it's free.  This gives you more bang for your blessing buck.  If you have the skill to knit scarves for everyone in your neighborhood, then you can do that, too.  I just can't knit.

There's also something special about giving extravagantly.  Anyone can drop a few cans into the food drive bin, but when someone shows up and fills that bin, then stacks more food beside it, that act helps more people and touches the hearts of the people working the food drive.  Again, you're getting more positive impact for the same amount of energy, and I'm all about efficiency.

Things you can do:
  • Buy a gift card at your favorite coffee shop, then hand it to the person taking orders and ask them to use it to buy everyone else's drinks until it runs out.
  • Tell the bartender at your favorite brewpub that the next round is on you, but don't let them tell anyone who's paying.
  • Rake your neighbors’ leaves this weekend before they can get to it, or shovel their driveway when it snows.
  • Grab a bunch of small gift requests for poor families at your local community center, Salvation Army, or church and go shopping.
  • Hit Costco and show up at your local food bank with a carload of food.  Involve another family and make it two carloads at the same time.

Or, go deep.

Extroverts who are into probing conversations, this one's for you.  Instead of scattering your seeds all over the field, look for the needs right around you: the coworker who's gone quiet, the neighbor who says she's worried, the new guy who doesn't know anyone.  Find people who have nowhere to go for Thanksgiving and add them to your chaotic mess of a family dinner.  Ask someone how they're really doing and wait for the answer.  Look beyond your worries and give someone the chance to share theirs.  You may be exactly what they need to avoid a downward spiral between now and New Year's.

Things you can do:
  • Seek out “holiday orphans” and invite them to join in your celebrations.
  • Look for people around you who are "faking it" and invite them for coffee or a meal so they can talk.
  • Find the perfect gift for that friend who doesn't seem to have anything going right in their lives right now.
  • Volunteer at a counseling center or in some other role where you think you can help.

Just do something.

My point here is simple: it's time for all of us to stop fretting and start acting.  We'll have plenty of time to fight more battles once we know which battles actually need fighting.  In the meantime, people all around us are hurting, angry, and frightened, and they need someone to show that love still exists in the world.  We need to remind ourselves that we still have the power to do good, to affect the world around us in ways that our elected officials can't.  We need to move, to take action, to do something that doesn't just fuel our fight-or-flight instincts.

Whether you're happy about the election or not, whether you're funding your ACLU war chest or waiting for Trump to fix Washington, you're still surrounded by people who need your help.  When the time comes, we can and will hold our elected officials accountable to the will of the people they're supposed to serve.  In the meantime, we need to come together as good-hearted people and take care of each other.  We need to see and show that good still exists in the United States of America.

Go out and show some kindness today, and then post a comment below or on your favorite social media platform using the hashtag #turnonthelight. Describe what you did or share a picture. If you think this is a good idea, share this post with your friends and dare them to outdo you with their good works. Let’s see if we can get something positive trending.

It's time to turn on the light.  Will you join me?

Wednesday, November 09, 2016

Trump won. Now what?

President Tr--.  Nope, I still can't make myself say it.  Maybe in a year or two.  Or four.

Like 48% of American voters, I'm... let's go with "disappointed" by yesterday's election results.  This wasn't how I expected it to play out.  I thought that we had better taste in leaders, I really did.  But, there it is.  The votes are in and our candidate lost.  I was upset, I didn't sleep well, and I was a little distracted at work today, but the sun still came up and the second Civil War didn't start overnight.

From the angry and overwrought messages in my social media feeds, I'd say that quite a few other people are upset, too.  Since I've carefully curated my feeds to eliminate views that I find obnoxious, rude, or crass, I can safely say that 99.9% of people like me -- I kept one conservative friend from college to prove that I'm open-minded -- are pretty pissed and scared right now.

I already asked everyone to take a deep breath last night and take a break from the hysteria, but what do we do now?

Like my middle-school health teacher taught me to do in any emergency, let's start by taking stock of the situation:

First, this isn't the Apocalypse. I checked the book of Revelations, and while it does describe the coming of a horny monster, this isn't the monster you're looking for.  We'll have to wait about 3 1/2 years to be sure, but I'm pretty confident that Donald Trump's election isn't one of the Seven Signs.  Besides, when the Antichrist comes, my sources tell me that he'll run as an independent.

If you watch TV or open Twitter or Facebook, it's easy to believe that the United States is about to be overrun by toothless Neo-Nazis waving Confederate flags and wearing "Make America Great Again" hats.  It isn't.  Forget what the news is telling you: they profit from drama.  "Election Apocalypse" brings in more viewers than, "Huh, the other guy won."  Forget the cartoonish Trump supporters you met on The Daily Show, Full Frontal, or Last Week Tonight.  While they are real people, they still live on the fringes of society and don't accurately represent the 47% of America that voted for Trump yesterday.  Normal, sane people don't make for good comedy, so they ended up on the cutting room floor.

America is stronger than one bad President (see also: Andrew Johnson, William Henry Harrison, Richard Nixon, George W. Bush).  It's a country specifically designed to contain the whims of its leaders, with a series of checks and balances specifically designed to render a tyrant impotent (and if there's anything that should give you a cheap giggle today, it's the thought of anyone calling Donald Trump impotent).  America isn't dead.  It isn't even on life support.  It's working exactly the way it's supposed to work, every year in November.  We just lost this round.

Second, America is not divided into armed camps.  While the colors on the electoral map are a binary red or blue, Americans inhabit a wide continuum of ideas, beliefs, and needs.  Why, in New York City alone you can come across an ultra-rich, fascist-leaning banker, an immigrant street fair, and a Gay Pride parade on the same day.  We are a rich tapestry, and when you get past the voting labels, most of us live right in the mushy middle of political and social beliefs, somewhere between the pot-smoking socialists and the Alt-Right Nazi trolls.  Where we fall on a given day has a lot more to do with our personal experience, family situation, and how much sleep we got last night than it does with a hard-line political agenda.

Twitter and Facebook are not America.  This may be hard to remember right now, but humans are far more complicated than 140-character shouted slogans or snarky comments.  As a white, Christian male from the West Coast who married into a Jewish family and raised two children in New England and Colorado, I can't possibly express the complexity of my feelings on gay marriage to you through a tweet, not even if I made it a series of five and used emoji.  Neither can you, on any topic, and neither can anyone else.  Social media is great for generating sound bites and sharing cat-based memes, but it's a terrible forum for complex discussion.  It boils all of us down to simple caricatures and it enforces a binary worldview.  Don't mistake it for reality.

Despite what your fears are telling you today, Trump's election isn't a validation of racism, xenophobia and misogyny.  It isn't a sign that 47% of the people you pass on the street are closet Nazis.  It's a sign that, when given the choice between Donald Trump and Hillary Clinton, more people chose him.  That's it.  Your monster is someone else's lesser of two evils.

Finally, like it or not, he won.  I don't know how he did it, or how he caught everyone by surprise.  Some guy in an orange wig kept saying it was rigged.  However it happened, when all the votes were counted, we ended up with a real-estate mogul/reality TV star for a President.  You can kick and scream, you can #notmypresident until your hands cramp, you can threaten to move to Canada.  The reality is that, from January 2017 until January 2021 (or until he follows his baser urges one too many times and gets himself impeached, whichever comes first), legally speaking, he's our President.  So what are you going to do about it?

“Happiness at the misfortune of others? That is German!”

You can choose to sit on the sidelines, smugly waiting for Trump to fall on his face and embarrass himself in front of the world.  Indulging in that kind of schadenfreude ("Happiness at the misfortune of others? That is German!") might make you feel better in a stomach-twisting way, but it's missing the point.  When Trump fails, we all fail.  When he looks stupid on the international stage, the United States looks stupid.  You can say, "Don't blame me, I voted for the one in the pantsuit!" but how does that make you any better than the poor losers who complained about President Obama for eight years?  It just makes you a progressive poor loser.

Let's put that energy to better use.  Instead of spending the next four years putting orange wigs on Grumpy Cat, let's start making America a better place, regardless of whose face we put on the front of the package.  But how?

Step 1: Stop typing and start talking

You can have the rest of the week to keep commiserating with your Facebook friends and Twitter followers, but after that you need to step away from the screen and start talking to some real people.  And like it or not, some of them are going to have to hold different opinions than you do.  Here's your assignment: go out and find 5 people with varying viewpoints and have a conversation.  Ask who they voted for.  Don't roll your eyes and leave if they say, "Trump."  In fact, as part of this assignment, you must find at least one Trump voter and ask them "Why?"  And not a whiny, self-righteous, breast-beating "Whyyyyyyy?" that really means, "How could you?"  I mean a curious, open "Why?" that says, "Help me understand."  Because you need to understand why someone is different from you and what motivates them.  You also need to see that, beyond the superficial differences, you have more in common with them than you realize.

Now, if you come across a Green party voter you can whine at them all you want.  Those people are just idiots.

I kid.

Step 2: Now, listen

If you thought Step 1 was hard, you're going to love Step 2.  Now that you've started the conversation, shut up and listen.  No, really: Shut.  Up.  Don't prepare a response, don't start mentally gathering statistics that prove that whatever the other person is saying is the most asinine idea since Tesla first licked a Van de Graaff generator.  Don't judge at all.  Just listen and try to understand.  Seek common ground. Ask yourself, "If I were in this person's situation would I think or act any differently?"  This isn't about being right or changing someone else's mind.  This is about understanding what motivates them and recognizing that, while the results might differ, our drives are almost always the same.

Wait until they're done and they ask you what you think.  Now it's your turn to talk.  Be open.  Lower your defenses a little and explain what motivates you, what led you to think the way you do today.  Talk about your grandfather who fought in the war, or the other one who refused to because he believed that all life was too precious to waste.  Explain what drives you and what "making the world a better place" means to you.

Be human together.

If you try this, there's a small chance that you might stumble across someone in that small percentage of the population whose beliefs are absolutely abhorrent to you and any rational person.  It's OK to move on.  You don't have to try to understand everyone.

Step 3: Stop worrying about what's out of your control and start owning what is

Donald Trump may turn out to be the worst President in history.  He might repeal the Constitution, start a nuclear war, and declare that immigrants are now a legal food source for rich people.  More likely, he'll turn out to be an old guy with a huge ego who got in way over his head and was kept out of trouble by the career politicians surrounding him.  No matter what happens, though, it's out of our control.  We don't work in the White House and our Twitter rants aren't fixing anything.  Worrying about it, obsessing over worst case scenarios, and feeling sick and angry also aren't doing anything but hurting your health.  In the immortal words of Adele Dazeem: Let it go.

You can't control Donald Trump.  I'm not even sure Donald Trump can always control Donald Trump.  You can't go back in time and change the results of the election.  You can only look ahead, look around, and see what needs to be done right around you.

You're concerned about women's rights?  How many women in your town are living below the poverty line? Buy them some groceries or offer your skills to help them find a better job.  

You're concerned about racism?  How many families near you have members of a different race?  Invite them for dinner, cheer alongside them while your kids play sports together, or ask if they want to grab a beer.

You're concerned about social justice and poverty?  Well, the holidays are here and I guarantee that a lot of kids aren't expecting any gifts this year.  Go grab all of the gift requests off of the local community giving tree and go on a shopping spree for someone else's family this year.  Bring your kids and say, "This is how we share with people who have less than we do."  Volunteer at a food bank, your church, or a homeless shelter.  Don't have time?  Give money so that someone else who has time can do the work.  You still get partial credit.

You think people are ignorant?  Educate them.  Think they're afraid of the wrong things?  Show them love so they don't have to be afraid.  Think they were fooled by a charlatan?  Show them how a real man behaves, win or lose. 

If you're afraid of the dark, don't yell at the night.  Turn on the light.

Tuesday, November 08, 2016

Let’s take a break

OK, Blue America, time for a hysteria break.

This isn’t the end of the US or the beginning of the Apocalypse. We won’t repeal all 27 amendments to the Constitution tomorrow. We still live in a diverse country of immigrants with more institutional freedoms than most of the rest of the world enjoys. We can still dissent without fear of arrest and work through our differences compassionately and reasonably.

The people who crawled out of the darkness to celebrate the worst aspects of human nature haven’t taken over, nor are they suddenly multiplied a thousandfold. They were always there; they always have been there, lurking in the dark corners of humanity since Cain killed Abel in a fit of jealous rage. They have crept out into the light again because they think that this is their time, but it isn’t. They haven’t been given the keys to the country, they have just been given a slightly louder voice by a man who seized an opportunity to win by whatever means necessary. When this election is over, the voices of hate can be, once again, drowned out by the voices of love, of reason, of compassion.

Love beats hate.

Every time.

Without fail.

We don’t know what tomorrow will bring, but we didn’t know that before this election took place, either. All we can do is face our lives one day at a time and do what is within our power to lift up the people around us, regardless of their race, nationality, or political affiliation. The showman will dance around on the stage, but we don’t have to pay attention to him. This is one election in a long series, stretching back into the past and far into the future. Our country will survive. We will survive, and we can continue to make our world a better place, together.

Breathe. Pray. Go on. This too shall pass.

Sunday, October 09, 2016

Being Donald Trump

A lot of people are very angry at Donald Trump right now.  For the sake of our collective blood pressure -- and let's face it: as a country we really can't afford it to get any higher -- I want to help.

Being angry at Donald Trump for the things he does is like being angry at a shark for eating.  The anger that we feel is based upon an objective measure of right and wrong, what come people call a "moral compass."  Donald doesn't have this.

There is no "right" or "wrong" in Donald's world.  In his world, there are things that Donald Trump can do:
  • Grope, sleep with, and occasionally marry beautiful women
  • Build large structures, like Trump Tower in New York or Trump Wall along the Rio Grande
  • Run for President of the United States
In Donald's world, these things are good.

There are also things that Donald Trump cannot do:
  • Grope or sleep with Megyn Kelly
  • Pay for all of the work to build his large structures
  • Be President of the United States (it may take another month for him to realize this one)
These things are bad, as are all of the things associated with them.

Like the shark, Donald does the things that are good when he feels like doing them.  His world is simple and he likes it that way.  When he finds a new bad thing that he can't do, it frustrates him for a while but then he goes back to the good things and he is happy.

When he does something that you think is "wrong," your outrage baffles and angers Donald.  Why don't you want him to do something that is clearly good, since he already did it?  He can't change his behavior, because he only does things that are good, so you are wasting your breath.

In Donald Trump's world, other people aren't living creatures with wants and needs.  They are furniture.  They are there to be admired, stroked, and collected, and when they are no longer useful or beautiful they are replaced.  Donald's presidential campaign has been one long shopping trip, gathering up all of the cabinets, chairs, and tables that he will stack on top of each other to reach the presidential cookie jar.

When another person expresses feelings or opinions, Donald is confused and annoyed.  Furniture doesn't have feelings; it has cushions.  Furniture can't tell Donald what to do.

There are people who say, "He says what I'm thinking!" and you're right.  We all have a little Donald inside of us.  It's the voice that tells you to sleep with your neighbor's wife, to steal that bag of Twinkies when the convenience store clerk's back is turned, to get out of your car in traffic and bash the guy in front of you in the head with a tire iron.  Fortunately for society, most of us also have another voice -- the conscience or superego -- that overrides the little Donald, so we don't do those things.

So don't get mad at Donald when he does things you don't like.  He doesn't understand your anger.  He can't.  You can feel sorry for him if you want, but don't bother yelling.  You're only hurting yourself.

And should you vote for him?  Dear God, no!  Just as you wouldn't pull the shark into the boat, you shouldn't put Donald in the White House.  That would be neither right nor good.

Sunday, July 31, 2016

Quittin' Time

(Note: I know that this is not an easy topic to discuss, but I wouldn't be much help to people if I only wrote about happy topics.  Should Hemingway have avoided writing For Whom the Bell Tolls because it was about war?

And now you're thinking, "Did he just compare himself to Ernest Hemingway?" No, I didn't.  Well, maybe a little.  Anyway, if Hemingway wrote about quitting, he would probably say:
Quitting is bad.  Don't quit.  Unless you should.
I'm going to use a few more words than that, but that's the gist of this article. Thanks, Ernie.)

(Note 2: this is not a “Quit your job to found a startup and live a more fulfilling life” article. If you’re looking for confirmation of that decision, move along)

Every parent with a child in sports has lived through this scene: a player makes a bad play or the ump makes a bad call and the coach completely loses his mind.  His screeching voice echoes in the uncomfortable silence as parents, players, and officials stop to watch an adult have a complete meltdown over a children's athletic event.  As the ranting continues people start to wonder if they should step in or if that would just make things worse.  Eventually, the coach winds down and stalks back to his spot on the bench.  That's when the whispering begins: "I think it's time for him to quit!"

Quitting is bad.  No one wants to be a quitter.  We prize perseverance and make heroes of those who overcome adversity and keep plugging along.  Quitting is for the weak, those who can't take the heat and have to get out of the kitchen.  It's for kids who can't make the team and adults who can't make a difference.

But what happens when perseverance turns poisonous?  How do you know when staying the course is worse than choosing a new path?  Is there ever a right time to quit?

Unequivocally, yes.

When your job, whether it's the one that pays you or the one you do for the love of it (or both, if you're one of those mythical people who "never works a day in your life") starts turning you into someone you don't recognize anymore, that's when it's time to move on.  When you hear words coming out of your mouth and feel the urge to look behind you and see who said that horrible/stupid/cruel thing, you need to spend some quality time away from that job and decide if you should ever go back.  And sometimes, even when you're still enjoying yourself, the looks in your coworkers' eyes will tell you that they're wondering why you're still hanging around.  Then it's time to hang up the metaphorical cleats and look for a new career.

In other words, when your presence is doing more harm than good, you need to leave.  Here are three signs that it's quittin' time.  Do any of them apply to you?

You've gone from hero to villain

Are you the person who always bails everyone else out?  When the work has to be done by morning, are you the one who always lets out a loud sigh and says, "Fine, I'll do it... again!"  This is fine if it happens occasionally, but as I've written before, no one can stay in Here Mode forever.  Eventually you get tired of saving everyone every... damn... time, and you start to turn dark.  You'll probably still put in the extra work for a while, but it goes from something you do because it needs to be done to something you do because you're surrounded by nincompoops and slackers.  The grumbling gets louder, the praise you receive feels more hollow, and you start fantasizing about how great it would be to just walk out one day at lunch and never come back.  

Won't they be sorry then!  They'll see how much you did for this place once you stop doing it!  What a gaping hole you'll leave when you walk out that door.  No, not a gaping hole, a smoking chasm!  They won't even be able to function, especially when you take that critical knowledge that only you hold and no one else can even find.  Then they'll appreciate you!

Congratulations: you've gone from everyone's hero to the Toxic Avenger.  It's time to take your talents elsewhere before you decide to hatch your evil plan and ruin everyone else's day (not to mention your own career).  But don't feel too bad about leaving: you've probably been ruining everyone's day for quite a while without even realizing it.

Here are some signs you're becoming toxic:
  • You can't find anything good about your company, including the people sitting right next to you.
  • You refer to your office as "this place."
  • You don't trust anyone else to complete even simple tasks correctly, so you either double-check their work or badmouth it when it's done.
  • You don't trust your company's leaders to make intelligent, ethical decisions.
  • Everyone around you knows exactly how you feel, because even when you try to hold it in (which may not be very often) it comes out in outbursts whenever you're frustrated (which is pretty much all the time).
Whether these things are true or not is beside the point, because at this stage the objective reality of your situation is irrelevant.  The environment you've created in your head is unbearable.  It's quittin' time, little hero.  Pack up your tools, but leave the poisons behind if you can.

You just can't even

Sometimes your body knows that it's time to quit long before you do.  Stress, even unrecognized stress, takes a toll over the long term and can manifest in a lack of energy, drive, or creativity.  When you look at that next assignment and you can't even muster the energy to look at it, much less start working, it might be time to look for a new challenge.

I'm not talking about a down day here.  We all have those occasionally, whether it's because it's raining or our kid was up all night throwing up or because we stayed up too late playing Call of Duty.  This isn't something that can be explained by sleep deprivation or seasonal affective disorder; this is a long-term fatigue that comes from your life expectations not matching your reality for months at a time.  If you're stubborn, maybe years.  It may be the deep exhaustion that comes from compromising your principles on a daily basis, saying "yes" when your heart is screaming, "NOOO!!!"  It might be something as simple as a creeping lethargy that seeps into your soul from constant, profound boredom.

Whatever the reason, it's turned you from a cheetah into a sloth and your colleagues know it.  They've watched you go from soundly beating every deadline to enjoying the whooshing sound they make as they fly past.  They've tried offering you coffee, cigarettes, maybe even considered slipping a little amphetamine into your water bottle when a big project is due.  They've gone from counting on you to working around you.  You think they haven't noticed, but they have.  They know you're done and they're waiting for you to catch on.  

So if your down days are stringing together into slow weeks, the weeks into semi-depressed months, maybe it's time to look at where you're spending most of your waking hours.  Nothing like a spot of change to put the gas back in your carburetor.

You used to lead.  Now you're just in the way.

This is probably the toughest case to diagnose, because the patient still feels fine.  He has all his skills, he has big plans for his team, and he wakes up eager to get to work every morning.  The problem is, the job has passed him by.  Whether it's because he lacks the experience to play at this level or because he doesn't have the tools to match a new reality, he's no longer the leader the company needs, and someone needs to tell him.  Someone brave.  And probably big.  And not afraid of a little verbal abuse.

I see this situation the most with growing startups.  The original leadership team is inspired, the company is expanding every day, and their market is blowing up.  But at a certain point, the people who created the company aren't able to keep it on the right trajectory.  They're still valuable, but the value that they bring seems to shrink proportionally to the size of the company.  They need help but they're too proud to admit it.

If you feel like your job has outgrown you, congratulations!  You've done well to bring it this far, but you need to recognize when it's time to step aside and make room for people with the skills and experience that are required today.  Like the football hero whose body can't keep up with his ambition any longer, you have two choices: become a legend or become a joke.  

Don't be a Favre Founder. Take a serious look at the value that you're bringing to your team every day.  Is it as much as it used to be?  Is it still enough, or are you hanging on past your usefulness?  Know when to stand aside and encourage the next generation to take it from here, even if the "new kid" is older than you, as long as she has what the company needs now.  In the name of this thing that you built, be willing to fade into the background before you're shoved aside.  Your employees will thank you.

Quitting is hard.  You wonder what others will think, what you'll think of yourself, how you'll move on and figure out what to do next.  Even thinking about quitting a job, a hobby, or a volunteer position that means a lot to you can make you feel like you're giving up a piece of your identity.  What could be worse than that?  

Not quitting when you should have.

Friday, July 15, 2016

Egoless, but Full of Pride

When we were children, the adults asked us, "What do you want to be when you grow up?"  We gave answers like, "A fireman!" "An astronaut!" or "A professional baseball player!"  No one said, "I want to be compassionate!" or "I want to be a good member of my community!" Well, there was that one kid who was already planning to be the youngest senator in the history of the United States, but even he was already defining himself in terms of his occupation.

As we grew older, we went to college and tried to find a major that would lead to a career, or at least to a good graduate school that delayed that career for a few more years.  In our sophomore years, we questioned whether we really wanted to spend our lives in advertising, or chemistry, or teaching history, and our parents said we were having an identity crisis.  Apparently, we weren't just questioning our field of study, but our very identity itself.  We learned in that moment that we aren't what we eat after all, but where we work.

Now we're settled in our offices, spending our days in meetings, jockeying for resources, establishing agendas, and generally trying to "get ahead," wherever that is.  The innocent party question, "What do you do?" resonates with echoes of "Who are you?" and the answer had better be good.  We pin our worth to our work, measuring our value by the titles we accrue, the speed with which we accrue them, and the number of people who sit beneath us on the company org chart.  We are what we do.

Where does this leave us?  Unsettled, for one thing.  If my self-image is bound up in my position, then what do I do when someone threatens it, when they don’t show me the proper respect?  I lash out, undermining them in turn and looking for opportunities to assert my dominance and restore my self-esteem.  I forget about the problem at hand and look at the situation instead, seeking ways to turn it to my advantage.  I measure my interactions in terms of influence rather than outcome.  I stop learning and I start leveraging, and somewhere along the way I stop producing.  My work, which we assume was meant to provide some benefit to the world, instead becomes a byproduct of my ever-growing ego.

What if there were a better way?  What if I could take pride in the fruit of my labors instead of my position in the pecking order?  What if I could let go of my ego and lose myself in the creative process?  What if, instead of building my own little kingdom, I focused on producing something of value?

There’s a place for pride in the workplace, but it requires a different focus to be beneficial. When we focus on ourselves, we quickly lose sight of the outcomes we were supposed to produce and turn our eyes to all of the people who are standing in our way.  When we focus instead on our work and its outcomes, we can lose ourselves in the effort, submerging our identities into the team and joining together to create something that’s bigger than ourselves.  We lose the ego and replace it with the humble pride of a craftsman admiring his handiwork.

This is why companies write mission statements: they want to inspire their employees to see their daily work as something more than a struggle for position or an opportunity to log time toward the next paycheck.  They want to create something lasting and valuable, something to which their employees can attach themselves.  Unfortunately, in trying to cover all of the things that they think they do, most companies water down their mission statements to an unintelligible list of platitudes (“Hooli: making the world a better place through minimal message-oriented transport layers”).  It’s a valiant effort, but if you find a company whose mission statement inspires you to get out of bed every morning, never leave.

So where can we find inspiration that overrides our egos and drives us from positional maneuvering to productive work?  It has to happen locally: at the team and individual level, what do you do that makes the world a better place?  What are you creating every day you can be proud of?  What problems are you solving, which lives are you improving, what work are you doing that would make you proud to say, “Yeah, I did that.”  Better yet, what are you creating that could make someone else say, “Wow, I wish I’d done that”?

My father is a realtor, and one day I asked him why he enjoyed selling houses, because, frankly, I didn’t see the appeal in spending a perfectly good Sunday sitting in someone else’s empty house instead of spending it in my own house watching football.  

He told me, “I’m helping people find a home: a place to start a life together, to raise their kids, and to grow old together.  I’m an integral part of their life story and I want to give them the best I have to offer.”

Now that’s a mission statement.

So what’s yours?  What are you doing to make the world better every day?  What’s your real job: not your title or position on the org chart, but the thing you’re supposed to do every day at the building where they pay you to show up?  Maybe it’s revolutionizing the way people communicate, or solving really complex problems that no one else can solve.  Maybe it’s helping young couples start a life together or helping large companies make better decisions about how they treat their employees.  Maybe it’s taking care of a whole department of people and giving them the tools they need to be successful with their own missions.

Whatever it is, find it.  Focus on it like Michelangelo chipping away at a block of marble that will eventually be David.  Forget about positions, authority, and social status, and just work.  Find that place of humble pride as you go about your daily mission.  

Be egoless, but full of pride.

Saturday, June 25, 2016

Paying the Piper, Techie-Style

Growth based on debt is unsustainable, artificial.
-- Jose Manuel Barroso

Debt is beautiful only after it is repaid.

-- Russian Proverb

Technical debt.  It sounds like a scary new investment mechanism that too-big-to-fail banks created after the whole CDO/credit swap/Big Short thing ended... poorly.  But it's much scarier than that.  It's the time bomb lurking in every software product, waiting for the right time to jump out and take down your newest beautifully crafted feature.  It's the source of zero-day security holes, back door hacks, and plain old everyday performance issues.  It's a fact of life for every software company and the bane of every application architect's existence.  In my office, it's also the prime catalyst for torrents of muttered (or not) curse words.  Sometimes, it even comes with a name, usually the name of the person who thought he'd found a brilliant shortcut... at the time.

So what is it?  It's old code, shortcuts that felt necessary, compromises in quality and flexibility based on ignorance or tight deadlines.  It's the code that you wish you hadn't written, or that you'd like to smack someone else for writing.  In short, it's software development's loan against future functionality.  Like Popeye's friend Wimpy, it will gladly pay you next year for two features hacked together today.  And when the bill comes due, it sucks.

So how do you keep technical debt from taking over your product?  First, you need to recognize whether technical debt is a problem that you have to worry about.  So ask yourself these questions?

  1. Do you have a software product?
  2. Do you plan to keep adding features to that product?
  3. Do you still plan to have that product two years from now?

If you answered yes to these three questions, then yes, you need to worry about technical debt.  If you answered no to #2 or #3, congratulations!  You are the proud owner of a legacy product and can look forward to many years of saying, "No, we aren't investing in this anymore so I can't add that enhancement.  Please see our list of new products and let me know if you're interested in migrating."  If you answered no to #1, thanks for reading, Mom.  You can stop now and just tell me how great you  thought the article was.

For those of us with active, growing software products, technical debt is a constant worry, or at least it should be.  Because even if you have genius architects, brilliant developers, and aggressively detailed QA testers, you still can't escape one fact: software decays.  Even perfect code, designed to account for every known variable at the time, will feel slow, awkward, and difficult to work with three years from now.  Technology moves quickly, and user expectations move with it.  So join the rest of us, Mr. Perfect, and start thinking about tech debt.

There are different kinds of tech debt, and you need to know which kind you're dealing with before you can manage it.  Let's look at these different debt instruments, in order of urgency.

1. Visiting The Software Loan Shark

Sometimes you just don't have time to do things the right way.  Whether you're working against a tight deadline (a commitment made by "Management," of course, since you would never over-commit, right?) or scrambling to fix a Sev 1 in production, you look at your code and you think, I can do this now or I can do it right.  You look around to see if anyone's watching, then you hard-code that    client-specific logic, or you wire that UI element directly to the database, because it's Friday and you know there's a cold beer waiting for you somewhere.  You walk the changes over to the architect for the code review, because this one needs some "explaining."  You tell him, "I know this isn't the right way to do it, but the right way would take another week.  And see?  I put '// *hack*' right there in the comments.  We can come back and fix it on Monday."

You, my friend, just made a visit to the software loan shark, and the vig is high.  If I had a dollar for every time a developer investigated a production issue and said, "This was a [name of our fastest coder] special," I wouldn't be writing this blog, because I would have retired.  And, of course, by that point we had built whole features around that shortcut, so it took weeks (sometimes months) to rebuild that "time-saver" so that it worked for anything other than the very specific case that Speedy Gonzales was thinking of at the time.

So, before you go in search of that beer, create a new user story to remediate your shortcut, and 'fess up in front of everyone.  It's OK to find the quick fix once in a while, especially if it makes your biggest customer or your boss's boss's boss happy.  Just don't make a habit of it, and pay it off quickly.  You don't want to get hooked on this stuff if you want to keep your job.

2. Emergent Debt

The second kind of tech debt is what I call "Emergent Debt."  This comes from a combination of myopic planning and a general lack of omniscience.  Even when you take the time to design your solution carefully, your design is only as good as your planning horizon.  If your product roadmap only extends six months into the future -- due to genuine market uncertainty or "because we're Agile, man..." -- then you have two choices:
  1. Design for what you know you'll need
  2. Guess
Either way, you're working with limited information, and you're bound to miss something.  Even with an extensive roadmap, any decisions beyond this year are, at best, educated guesses about what your customers will find valuable.  You're going to miss something.

Welcome to the land of emergent debt.  That design that was a frickin' work of ART! two years ago is now a stinking pile of shortsighted delusions.  What were you thinking?!?  Oh, right, you're not omniscient.  So stop mourning your tarnished monument to technology and start fixing it.  Ask yourself:
  • What's salvageable?  Is it still usable?
  • How much will it slow us down to keep building around it?
  • Should we rebuild or build a replacement beside the old code?
  • What's the cost of the new solution relative to continuing to work around the old one?
Once you understand the benefits and the costs, you're ready to choose a new course.  Don't start until you truly understand that balance, because some code, even if it's old, can still do its old job just fine for years while its younger siblings steadily grow up to take over its functions.  Don't jump into a rewrite just because you're offended by your younger self's myopia.  Write the user stories, put them in the backlog, and prioritize them against the new features that were already there.

3. Code Decay

Even high-functioning code gets old, and sometimes you have to replace it, not because it isn't extensible, but because the rest of the application has passed it by.  Code written for different hardware configurations, leveraging ancient libraries, can become a bottleneck or even a source of crashes when faster components start racing through their actions before waiting for the old-timer to hobble through its logic chain. Like a 1964 Maserati in a world of Teslas, your code is still beautiful, but it's getting expensive to keep around.  Time to upgrade.

The good news is that this is a chance to learn from the past.  Study the old code, see what it does well (if slowly) and what pieces you had to write because they didn't exist in the developer kit yet.  Look for opportunities to leverage and extend a clean design and then rewrite it with half the lines of code.  Look for performance upgrades so that the new version can last for another several years and cause bottlenecks in other places before it needs to be updated again.

You often see code decay early, so you have time to plan to replace the old code.  Put the user stories in your backlog and keep an eye on the current code in production.  Since these rewrites can often take some time, make sure that you start the work before it becomes an emergency (see: Loan Shark).

4. Moronic Predecessor Syndrome

This category may or may not represent actual technical debt, but in my experience it creates the most noise in every software organization.  I call it "Moronic Predecessor Syndrome" (MoPS for short).  Here's how this works: the smart developer that you just hired a week ago walks up to you in the hallway and says, "Whoever built this component I'm working on was a complete moron.  We'll have to rewrite the entire thing."

You reply, "Hmm, he seemed pretty smart for the 4 years he worked here.  Why do you say that?"

He replies with a series of beeps and clicking noises that in reality are English speech, but you've stopped listening because you've had this conversation before, every time you hired or promoted a new developer.

You see, developers are smart people who thrive on complexity and problem-solving.  I've kept brilliant teams working together in stultifyingly boring industries simply because the problems were interesting (the secret is to keep feeding them problems at the proper rate so they don't notice that no one understands what they do).  Sometimes, though, this problem-solving tendency runs out of control, especially when a developer is bored or feels a need to prove himself, as when he enters a new role.  This is where MoPS rears its ugly head, and you have to decide if you're facing a real problem or an aesthetic difference of opinion.

Once the beeps and clicking noises wind down, try asking a few questions:

  • Why do you think the code is all wrong?  Is it functionally deficient or is it built "the wrong way?"
  • What's the impact of the current design?  Is it slowing us down or making it difficult to add new functionality?
  • Does the rest of the team who works with this code agree with you or are you the only one seeing this? (Try to avoid using the word "visionary" here: it will sound sarcastic).
  • How long do we have before the problems you foresee come to pass?
Note that I didn't ask, "How long will it take to fix this?" because the answer is inevitably, "6-12 months."  Seriously, every time.  I have never seen a breakout of MoPS with less than a 6 month price tag, so before you even go down that road, make sure that you're dealing with a functional issue and not a difference in technical tastes.  If the issue is aesthetic, bring some other people into the conversation to talk about how they make this grossly disfigured code work for them.  Offer to look at alternatives in the future, but don't waste time rewriting functional code just because someone thinks it's ugly.

If you determine that you do have a problem, then follow the same steps as for Emergent Debt: assess the risk, understand the cost and benefits, plan the work.

And did I mention that you should create a user story?

Paying Off Your Debts

Development teams get weird when it comes to paying off their technical debt.  There seems to be this shame attached to fixing old code, as though the company should have known better and written code that would stand the test of time.  Yet tech debt accrues in a myriad of ways, and as long as you aren't making weekly trips the software loan shark, you don't have anything to be ashamed of.  This is life in the digital world, so stop trying to sneak your debt payments into your new feature estimates!  (And yes, I know who you are).

Eliminating technical debt is just like any other piece of work: you're investing to improve your product, and you expect certain benefits from doing the work.  Just because they're often invisible to users doesn't mean they don't exist, and everyone wants a product that stays usable over time, right?  Of course, you can't blackmail the budget keepers with "do this or your precious site will crash," so you need to make your case.  New features have business benefits (new revenue, increased customer satisfaction, competitive advantages) to offset their costs, so why aren't you doing this for your technical debt?

Here's how the conversation usually goes when a developer wants to fix old code:

Developer: "We need to fix this."
Product Owner: "Why?"
Developer: "Because old code sucks and the new code will be better."
Product Owner: "Shut up and go build my new feature."

What if, instead, we created a business case for out debt payments?  All you have to do is quantify "better."  If spending 4 weeks building a new service means that the next 5 features can be built in half the time, that's obviously a good investment.  If rebuilding the calc engine means that our product stays performant for another 3 years, that's probably also a good investment, assuming that it doesn't take a year to build.  The question behind every business case is simple: how can you make the benefits quantifiably outweigh the costs?  And since costs are easily measured (people * time = $$$) the more quantifiable the benefit, the better.  If you tell me that you can guarantee that a $10,000 investment will return $100,000 in the next year, I'd be an idiot not to take it.  If you tell me that you want $10,000 so you can make something "better," then you're asking for a lot of trust.

And if you can't quantify the benefit?  Then you probably have a bad case of MoPS.  Take two beers and a good look in the mirror and call me on Monday.

Monday, June 13, 2016

In Defense of the Plan, Part 2

I wrote recently about the need for long-term planning, even (perhaps especially) in an Agile development environment.  I left you with a choice: plan or fail.

The fun part about writing on the internet is that you don't really have to solve problems: you just have to point them out so that other people can agree with you that yes, there is a problem there, and someone should do something about it.  I'm a problem-solver by nature, though, so I can't just leave it at that.  If I'm going to tell people they need to do something, then I'm constitutionally required to help them do it.  So we've already covered why you need a plan for your product development.  Let's talk about how.

Let's start with a few objections, because I never met a straw man I didn't like (to poke holes in):

  1. I can't tell you when we'll have a whole feature set done because we're using Scrum/Kanban/Lean Agile/some other Japanese-sounding development process.
  2. I can't plan because I don't know how long it will take to build something six months from now.
  3. I can't create a release plan because I don't want executives to see it and think that my team has committed to specific deliveries way out in the future, where all the uncertainty lies.
Let's take these in order:

1. Your development methodology doesn't matter.

I hate to break it to you, but no matter how proud you are of your particular style of software code widget management (i.e., your methodology), it has no impact on your ability to predict what your team can accomplish over the long run.  You see, that delivery method is the micro view, and the little irregularities that can torch a sprint or a Kanban board in the short term all even out over time.  Release planning, on the other hand, is an exercise in macro planning that's almost Seussian in its simplicity:

I have this box.
I have these rocks.
How many rocks can I fit in this box?
It's somewhere between a little and lots.

(For those who prefer allegory over metaphor, rocks = major features, the box = your release)

Individual vacations, surprisingly difficult features, requirements changes, these are all daily problems that have no place in the long-term plan, and using them to keep you from looking at the  big picture is either laziness or a misunderstanding of the viewpoint.  Think in big chunks, average velocities, and conservative predictions and the picture will quickly clear up.

Ask yourself:
  1. How much time do we have to build this release?
  2. At a rough order of magnitude, how long will it take to build each major feature that we want to include?
  3. How many of those major features can we get done in the time we have?
Ta-da!  Instant release plan.

2. When you estimate has little impact on what you estimate.

There's no doubt that development teams learn things as they build that make their estimates more precise and their designs more accurate, but claiming that you can't estimate a feature now because you plan to build it later is a fallacy.  How do I know this?  Reorder your product backlog and move those features to the top of the list.  Go ahead, I'll wait....

Can you estimate them now?  That's what I thought.

I understand that there's complexity here.  What if one feature depends upon another?  What if building that framework first makes it easier to build all the features that will use it?  What if your customers decide that they want another feature that isn't on the list?  These are all things that could be true and might change your project.  But how many of them actually impact your estimates?

Sometimes development teams become infatuated by complexity. Like that pretty girl you can't stop thinking about, they see it everywhere they look. But sometimes it's just a skinny dude with long hair. Rather than making a long list of the things that could happen to blow up your plan, how about making a small list of reasonable assumptions that will help build your plan?  Assume that you'll be smart and build the framework first, then estimate your effort based upon its existence. Build a plan based on what you know now rather than waiting until you know everything (hint: you never will).

3. Learn the difference between planning and presenting

Above all, your release plan is for you.  It's a guide and a goal for your team, helping you understand how long you have to build things and when it's time to move on.  It helps you shape the picture of what this thing is that you're trying to build and, most importantly, what done looks like.  If this were a road trip, your release plan would be the map that tells you whether you're driving to New York or Hawaii and helps you choose the destination with the highest likelihood for success.  Along the way, it also helps you set intermediate goals, plan your next steps, and ensure that you don't wander too far off the path chasing shiny objects.

Your stakeholders, customers, and whoever is funding your project (read: executives or investors) also want a hint as to what they'll get for their time and money, and this is where presenting comes in.  The smart team lead knows how to set achievable targets that account for the risk inherent in software delivery, then hit every one.  Some people call this "under-promising and over-delivering."  I prefer to call it "risk mitigation and expectation management."  Of course, you can't mitigate risks if you haven't identified them, and you can't manage expectations if you don't know what you're capable of delivering.  In other words, you need a plan (and if you didn't see that coming, you really haven't been paying attention).  With the plan you've built for yourself and your team, you can easily account for the estimates that feel accurate but make you the most nervous or for those parts of the product that present the highest levels of uncertainty in execution.  Build contingency into your plan and commit to exceed expectations whenever possible.  I like to set stretch features in every iteration or release, giving my team room to deliver everything that we've promised, even if we hit some bumps, then give our users a little more when things go as well as we'd hoped.

In other words, if you're confident that you can get to New York in the time allotted, tell your executives how fabulous Cleveland is in the fall, then try to surprise them with a trip to the Big Apple.

Why Plan?

This still feels like a lot of work, so why are we doing it again?  Because:
  • It sets the expectations for your team and help them understand what they'll have to show for all the work they're about to do.
  • Like the framework of a building, it provides a rough guide for where every feature goes and how long it should take to build it, helping you identify the most efficient path to completion.  When features get too big, it warns you before they take over the project.
  • It helps you identify risks and opportunities before you stumble across them, that you can mitigate them or take the best advantage of them.
  • It lays a foundation for communicating to everyone who cares about your product -- and the more people who care, the better, no matter how annoying they may be -- and helps you manage expectations and chart your progress.  This is a significantly better approach than saying, "We'll tell you when we're done," an approach that has never in the history of time failed to aggravate the people with the money and always leads to more bad attention, not less.
So forget what your Agile guru said: the sprint is the means, not the end.  Sit down with your team and contemplate your glorious future together.  It starts with a simple question:

"Does anyone know where we're going?"

Wednesday, June 08, 2016

In Defense of the Plan, Part 1

Have you ever sat down with a pile of Legos and tried to build something with whichever pieces came to hand?  I have, and it turned out looking something like this:

I didn't really know where I was going with it, and then I couldn't find any of the round pieces to use as wheels, and pretty soon my car became a house, then it was just sort of this rock/tree stump thing with stuff growing out of it.  When I was a kid, though, I used to buy the Lego kits.  You know, the ones that could build a spaceship or a race car or, if your parents were rich, a medieval castle.  When I followed all of the steps, I ended up with this:

It took a lot of work, and the instructions weren't always helpful, but I had a plan.  I knew what I would have to show for my efforts, and with the application of some patience, concentration, and some judiciously applied glue to fix the pieces that I broke trying to force them into place, I got my spaceship (with bonus moon rovers!).  I had a great sense of accomplishment when I finished that project, which lasted until my little sister played with it and broke it in half.  Then my dad stepped on a moon rover and it was time for it all to go back in the big box with all the other pieces.

So what's with all the Lego talk?  As I look around at the state of the software industry, the metaphor seems apt.  As we celebrate the 15th anniversary of the Agile Manifesto this year, people are reassessing the value and the viability of Agile development practices.  Many, including Dave Thomas, declared that at least the term "Agile" should be declared dead.  Matthew Kern provided an exhaustive summary of the larger conversation along with some insightful analysis on how the original vision has been co-opted, but the Agile brand will live on for as long as consultancies can bill hours teaching it, practicing it, and building extensive methodologies around it.

I don't know if Agile is dead yet, but I certainly see some signs of poor health.  I've written before about the dangers of overly simplifying the messy process of software development and I've poked fun at the sunny-minded Agile zealots who think that a Scrum Master certification and a framed copy of the Agile Manifesto will solve all of life's problems.  Now I have another bone to pick with the Sacred Manifesto and its adherents.

Let's clear something up first: I was agile before we had Agile.  I developed my own iterative delivery methodology when I was a frustrated project manager trying to figure out why building software was so damn much more difficult than building a house, road, or nuclear submarine.  I was teaching teams how to break functions down and deliver them in pieces when the consultants were still trying to figure out whether "software development" was a practice they wanted to add to their centers of excellence.  In fact, I'm not even sure they had "centers of excellence" back then.  They might have just called them "centers."  The excellence (and associated higher billing rates) came later.  I see the value in acknowledging that software development is essentially a creative process in which continuous discovery plays an essential part.  I get it, and I know that, even if "Agile" dies, agility, at the individual, team, and corporate level, is still critical to successfully delivering functional products.

I also live in the real world where, if you want people to pay you for something, you have to actually give it to them.  And that's where I see Agile Development as a practical methodology failing us today.

It all started with Line 4:
[We have come to value] Responding to Change over Following a Plan
On the face of it, this makes perfect sense.  If your plan no longer matches reality, you need either a new plan or a new reality.  Until science comes through with that multiverse-hopping technology they've been promising us for years -- and I am absolutely canceling my Scientific American subscription this year if they don't deliver -- you're only left with one practical option: change the plan.  Clinging to a plan when it no longer makes sense is foolish.  The essence of agility is the ability to respond to changing demands and market conditions for the good of the product.

Once again, though, we've gone too far.  "Don't let your plan overrule your common sense" has become "planning is futile."  Not only have we lost sight of the big picture, it seems like some teams are determined to deny that anything like a big picture could ever exist.  Their battle cry of "the sprint is everything!" places them in a state of Agile existentialism, with no future, no past, only today.  This defeatist approach to the fourth tenet of the Manifesto subverts its original purpose while using it as a club to pound the long-term memory out of an organization's brain.

As often happens when ideas take on momentum, we've swung from one extreme to the other.  Where the smart Agile team used to say, "I know where I want to go, but I can't tell you exactly how long it will take to get there (because, uncertainty)," now the extremist Agile team says, "I don't know where we're going or how long it will take, but when we get there I'll tell you what we did (because nothing is certain and planning is for evil management types)."  This twisted logic leaves teams in a Kafkaesque nightmare of failing to deliver because they failed to plan and then choosing not to plan because delivery is so uncertain.

What we need is a little release planning.

What would you do if you took your car to a mechanic and he said, "Well, I can see what's wrong, but I won't know if I can fix it until I take the whole engine apart and look at all the pieces to see if there's anything else I haven't seen yet.  I'll start taking it apart now and I'll let you know the next step in a couple of days."  Would you leave your car with him or find someone who knew what he was talking about?  Yet this is what overly Agile teams tell their customers on a regular basis: "We'll start coding and we'll let you know what you're getting when we're done building it."

Contrary to popular opinion, "release planning" isn't a sneaky way for project managers to make their teams commit to delivering features they don't yet understand.  Nor is it an even sneakier way of reverting to waterfall project management.  Release planning is how you figure out what you're going to build and roughly how long it's going to take, so that you can decide whether the destination will be worth the trip before you leave the house.  It's what you're supposed to do when you build your backlog and define your minimum viable product and before you begin sprint planning.  It tells you what the finished product will look like and when you'll have it, based upon what you know right now.  In true Agile form, we aren't committing anyone to anything, because we realize that change happens, but in service to agility, we also want to make sure that we're on the right track before we write a line of code.

If you don't bother to look at the big picture, bad things happen.  Just a few things I've seen over the years:
  • A team was two months into a release before they realized that the way they had designed the features only worked for very specific use cases. They had to scrap what they'd built and start over from scratch.
  • Another team committed to an initial release of a minimum viable product within four months, but didn't estimate beyond the next 2-week sprint.  Three months into the project, they realized that there was no way they could deliver a viable product in only one more month and had to choose between releasing a stunted, useless product or asking for more time.  After six months, they finally released a product that still had fewer features than they originally planned.
  • A team made commitments to a client to deliver a set of features within six months.  While the list of features felt too long to successfully deliver, they didn't think that they had a choice.  To save time, they skipped the initial planning phase and jumped right into coding.  After several false starts that cost them several weeks of time, they finally got going.  When it was time to deliver the release, they rushed through testing in order to hit the deadline and spent the next two months stabilizing the product, effectively turning their six month release into eight months.
You could look at each one of these examples and say, "See? Software development is uncertain.  You never know what could happen, so long-term planning is a waste of time."  Yet for every one of these sad stories I could give you two examples where a little bit of forward thinking and rough estimation kept a project from disaster.  Release planning isn't about forcing false certainty on an uncertain world, but rather about embracing uncertainty.  It's about stating what you know and what you don't know, and solving for both.

Another advantage of putting a little energy into forward thinking: you can compartmentalize your features, deciding how much time you can afford to spend on each one as part of the entire release.  This allows you to decide where to draw the line at "good enough" rather than continuing to polish a feature before moving on to the next one.  Without this framing, it's easy for a complex feature to shove the others aside, leaving you with a difficult conversation as the end of the release approaches.

There's something to be said for flexibility and for the ability to meet every unforeseen circumstance with the full attention of a development team.  But if you've given up on planning altogether, then you've gone from agility to chaos, from disciplined improvisation to making it up as you go and hoping for the best.  Keep it up. and even though you might want a snazzy spaceship, you're going to end up with an ugly rock.