History Repeats Itself

A few months ago, I wrote a lengthy post describing the various ways that I found Donald Trump’s deplorable campaign to feel eerily reminiscent to that of a circa-1920s Adolf Hitler. As I wrote and rewrote my post describing the way that both of them tugged very similar chords within a very similar group of people, I just couldn’t find happiness with the wording. At its core, no matter how you slice it, I’m essentially calling someone ‘Hitler’ which has become a lazy shorthand among ignorant people for ‘someone with whom I disagree strongly.’

I am revisiting that post though, because, in light of recent events—notably assertions that Trump is not against Muslims having to carry a special ID, being placed in a database, and possibly being rounded up into special camps. I don’t know if I can word it reasonably, but I am feeling more and more like it needs to be said.

I’m tempted to end this post with some pithy statement about Trump or some hyperbolic statement about the IQ of his supporters, but instead, I’d like to end with this thought:

If you consider Trump’s (or to a lesser degree Carson’s, Cruz’s, or Bush’s) point of view to be reflective of your own, I would invite you to consider for a moment what the emotional backing for that support might be. Decisions made out of fear, or outrage, or anger—misplaced or otherwise—have never gone especially well for any nation that has mired itself in them. It feels good to lash out, it feels good to have someone to hate or blame, it feels good to be the victim…but the cost is to high to leave those thoughts un-inspected.

Moving to Agile: Adjusting to Change

This post is the third in a series that began here.

It did not take very long for one of our projects to see its first curveball. As our client fell behind on providing information that was necessary for us to progress, we were in danger of running out of work. In our traditional waterfall model, that meant that we were stuck in a common position of having to pull the dev team off the project and delay the progress of the project—pushing the project day-for-day until we have what we need to move forward.

I must admit, it didn’t even occur to me to handle this a different way until someone said in jest, “shouldn’t this magical new process fix this?”

Yes, yes it should…

We got the team together and discussed our current predicament and asked them for thoughts as to how to proceed. After a surprisingly short period of time, one teammate pointed out that the information we were waiting for affected only minor details of the implementation. We could easily just implement it using what is currently known, use our best judgement for the rest, and after we present it to the client we can adjust with their guidance.

This procedure might sound familiar, if you’ve been paying attention.

With that direction, we were actually able to sand off another transitional rough edge; now we were spending less time waiting for our client to provide us with feedback so that we can start building and more time just getting things done.

Ultimately, the client’s review of what we had done revealed a small amount of rework. We sacrificed nearly a half day of duplicated effort to save us 2 to 4 weeks of delay and considerable frustration from the client. We decided that that is a pretty fair trade.

Along similar lines, we found some success on one of our projects when the client made the request for significant additions to scope. In the past, this was always something of an ordeal—even paid and clearly defined alterations to scope upset our little waterfall applecart resulting in frustration and difficulty.

In this case, the team worked with the client to properly add the new features to the backlog and order them appropriately. Because the team had already become used to ignoring the rest of our backlog until it became time to address it, it was almost entirely a non-issue.  This was really gratifying to see happen, because this was a considerable pain point for the teams in the past. During the time I spent exploring the prior process, changes to scope came up regularly and with great vigor.

When I say “vigor” I mean “swearing and gnashing of teeth.”

In all, we found these cases (and numerous other smaller examples of the same) to be huge wins for the team. More importantly to me, these were huge feel-good moments for everyone involved in the migration to our new scrumesque manner of delivery. Good things are happening! Bad things aren’t happening! Benefits are being reaped in a huge, visible way! It’s a good feeling.


Moving to Agile: Iteration 0

In my previous post I detailed the strategy that I employed in order to attempt to bring a more agile build approach to some of our projects. With a plan in place, I did the most agile thing I could think of…I just started working!

After sharing the overall vision with my scrummasters-to-be, I worked with each of them in turn to help guide their product owner in converting their task list into a true, groomed backlog. Most of our attention was focused on organization and setting expectations as to the definition of “done.” If I had it to do over again, I would have spent infinitely more time working on that one simple word—done. Nothing caused more problems in those initial sprints than that word.

Ultimately, our definition of “done” was influenced more by the rigidly defined roles within the organization than by any lofty scrum principles. A feature would be considered done when it was verified by QA. How much trouble could that get us in?

Our first major issue occurred when we were arranging for teams—we had no QA people available. We huddled up and made a judgement call: surely starting the QA team a sprint or two late and having them circle back to verify the features closed in the first sprints wouldn’t be a big deal. How far behind could we get?

As it turns out, two sprints will buy you two lost sprints. When QA finally got on the project, it took another complete sprint for them to build a backlog of bugs technical debt that was sufficient to take up an entire sprint. So by sprint 4, we were working exclusively on bugs from sprints 1 and 2. We did not catch up until sprint 6, when we were mostly taking on new features again having put our clever plan to bed. What a completely foreseeable chain of events.

We learned several important things from this series of lessons:

  1. I wish we were doing TDD (one day soon, this will be!)
  2. Working ahead of your ability to test doesn’t actually save you any time
  3. Don’t let the pursuit of perfection prevent starting—we made some mistakes early on (and will likely do so in every sprint forever) but we learned from them and recovered

Moving to Agile: Strategy

Over the course of the last 3 months, I have been coaching my team through a transition to scrum development. This hasn’t been simply an exercise in trying something new for the sake of something new; this move has been an attempt to alleviate the problems caused by years of technical debt and unsustainable work practices that have resulted in significant points of pain for our organization. While I would certainly like to get into the why (and that will almost certainly be a topic for a different post), I’d like to focus on some of the details as to how we have chosen to execute the transition.

From the start, it was a given that we were not going to be able to simply change the entire team and all of its projects over to a new process overnight, so we were forced to get tactical. I designed1 a process by which we might iteratively advance our current process from “agilefall” to “something not entirely unlike scrum”.  I selected two projects to be pilots based the criteria that:

  1. The development team was minimally distant from the client
  2. The project team was not especially change averse
  3. The attributes of the project looked suspiciously similar to those of projects that have caused us problems in the past

Note that none of my criteria spoke to the inevitability of success–I did not choose projects based on easy wins or certainties of success. Either this process would start showing improvement with projects that were representative of our normal projects, or it would not be considered a success; no layups to be found on this list.

I next put together a list not entirely unlike a project backlog that consisted of features of the scrum framework that weren’t currently a part of our development strategy–this was the easy part, the list could be fairly accurately summarized as “all of the attributes of team practicing scrum.” The tricky part was grooming the list; organizing the list from maximum business value to least valuable.

Maximum value often gets oversimplified. I have sat through numerous explanations of agile strategies during which the speaker drills home the simple and untrue fact that “maximum business value” means “makes the most money” for most companies. Typically, this is reinforced by trite examples like “you can’t purchase things without a shopping cart, so start there” or “you can’t buy what you can’t see, so build a catalog.” Our business value had to be broader than that; our algorithm had to take into account obtaining buy-in to progress further, enhancing quality, and taking a longer view of business value by saying that feature A might make a big impact now, but feature B will allow our overall impact to be greater.

Using this broader (and I would argue, more accurate) definition of “maximum business value” I organized our list of changes by priority and specified some important features of our transition:

  • Each iteration would last 1 month; enough time for two of our 2-week long work sprints to happen in each project so that we get a good sample of hour our latest changes work in “the field”
  • The members of the team acting as scrum masters would meet with me once per week during each iteration
  • One of these meetings would be used as a retrospective for the previous iteration where we would course-correct
  • One of these meetings would be used as a kickoff for the next iteration

And just like that, we were off! In my next post, I will get more specific about kicking off the iterative version of these two projects as well as how that first iteration went.


1 I’m sure I’m not the first one to come up with this “clever plan”

Moving Our Tools Out of Our Way

An interesting observation as I work with several teams to migrate a very waterfall process to Scrum: it is ridiculously easy to let the tools and the ceremonies become pro forma exercises rather than thoughtful representations of the spirit of what we’re doing.

I think that the biggest value I add as a coach has been to remind entire teams—regularly—to focus on the spirit of the manifesto rather than following the “rules” for using the tools or ceremonies. The tools do not define our process, the tools are there to facilitate our process. Something to remember.

My Writing Process

There are, in the history of this blog, several huge holes. Several huge periods of time exist over the past 7+ years during which I gone weeks or months without a post. I posted once in 2009 after my wedding. I posted once in 2014; a post that remains one of my top posts ever, traffic-wise.

For quite some time, I considered my inconsistency as a blogger a direct function of my inconsistency as a writer, but as I look through my Evernote pile, I find literally hundreds of notes, partial posts, and complete posts that I just never got around to editing and posting. I write constantly, I post infrequently.

When I was blogging for U of M Dearborn, one of the things in which I found a tremendous amount of value was that I was putting up a minimum of one post each week. I didn’t have a chance to be precious with my words or excessive in my editing—I was working full time, raising two kids, and going to school full time—my writing only had time to get to “good enough” before I was forced to send it out into the world.

That is a thing that I think I’ve been lacking here. Some sense of finality, or at least some sense of deadline.

So that is something that I have started; an attempt at consistency forcing more and better writing. I have been slowly moving my partial notes, ideas, and unedited work over to this blog. Each week I schedule one of them to be auto-posted at 11:00am ET on Wednesday. I now have a timer ticking away. Either I finish up my post, or it gets posted incomplete. Any editing that I can fit in before it posts is all of the editing I get. I am allowed to unschedule only in the event that I have completed a different piece and have posted it by that time instead. In this way, I’ve managed at least a post per week since I started my new process in mid-August.

Will I keep it up? Who knows. So far, I have the luxury of a pretty sizable backlog of evergreen topics that I’ve already partially written from which to choose each week. Perhaps when I’ve caught up to my backlog this will all come crashing down. Perhaps by that time, though, I’ll have learned that nothing bad happens when what I post isn’t “perfect.”

In the interim, enjoy my marginally polished thoughts.

Social Justice Warrior

“…but, you know, you have that whole thing you do on Facebook where you stand up for women and the poor and different races and stuff…”

This was actually said to me quite a while ago; and it has bothered me sufficiently that it has stuck with me for several weeks. My first draft of this opening actually implied that I wasn’t initially upset by it, that it grew to annoy me; that characterization isn’t true, though. I was sufficiently off-put by it the first time that I heard it that it prompted me to whip out my notebook and jot it down for later review. We’ll see if enough time has passed for me to remain relatively dispassionate as I attempt that review.

Let me begin by describing what I perceive this “whole thing I do” to be. I dislike internal inconsistency and find blatantly hypocritical behavior to be profoundly irritating. I am annoyed by broad applications of injustice, but don’t usually give a shit about fairness. I hate a dishonest defense of a position whether that position is defensible or not.

Too vague.

I don’t stand up for women—I think that women are actively excluded in a variety of systemic ways in our culture and I try to make sure that I’m not directly contributing to those.

I used to think that the above was enough, but now I also try to call out when I see others directly contributing to those systemic abuses. As it turns out, my ability to turn a blind-eye to those things if I choose to because it doesn’t have an immediate impact on my life is ALSO directly contributing to those systemic injustices. Remaining silent is effectively giving consent to such behaviors.

I am of the opinion that you can substitute “the poor”, “people of color”, “immigrants”, “gays”, and dozens of other subjects into my first statement in place of “women” and have it remain true.

I do not believe that joking about these things means that I take them any less seriously—humor has many purposes, but shouldn’t be taken as diminishing the gravity of an issue. I do not think that my jokes about an issue suddenly make me a hypocrite.

I do believe in trying to make sure that when I’m joking about these things, I’m punching up rather than down. It’s not solely that punching down is weak comedy and shows weak character; it is more that the sort of people that find me funny when I’m punching down are the sort of people I don’t want finding me funny.

The most important thing that I believe, however, is simple: I believe that the majority of my actions should try to improve things in some way for those that would benefit most from improvement—and further, that all of my actions should strive to not make things worse for those same people.

These things that I “do on Facebook” are a natural result of the above points of view. I’m not donning a costume. This isn’t some kind of an act meant to gain me—I guess that’s the question—what would this gain me? What is the benefit? There are no social justice warrior ranks. There aren’t points, there isn’t a cabal of folks that assign jobs or prizes to people that are correctly outspoken. There is literally zero benefit to me to be loud about these things.

That’s not true—it implied an altruism that I don’t genuinely believe in. Let me try again…

Here is what I get from that: I get to be a person that I approve of more often than not. That person gets the respect of peers that I actually respect and wish to be more like. That person gets to help make the world the place that I want to inhabit. That person gets to feel as though he has made a contribution of value to those around him; not simply to himself. That person—one I want very badly to exist—gets to exist for just a little while when I am guided by these principles.

I guess the question I wish I had asked—the question I’m asking now—is “why don’t you have the same sort of thing? Why isn’t this your thing?”

Path Finding

Seth Godin wrote an interesting post about path finding a little while back and it struck me that I get very easily frustrated by the two path-finding extremes.

Those that never look for a new path—the typists rather than the writers—stagnate and mire themselves in complacency’s stationary momentum. I’m sure there are people for whom such quiescence is comforting, but for me it is maddening.

Alternately, those that find themselves constantly in the weeds trying to find a new path are an energy sink—they (we, at times?) are draining emotionally and mentally to those around them with the constant, rigorous pursuit of improvement at all costs.

I tend to err on the side of the latter, and have to remain vigilant that I’m not sacrificing completely acceptable progress in pursuit of marginal gains. I do often ask myself though, since I mostly find a path by trial and error, is there a faster way? Are there better ways to see if the path I’m on is at least close to optimal? Right now I simply use observation of those around me, is that the best way?

So many questions.

India: Food

I don’t think we realize what a finely balanced relationship we have with food until we’re completely divorced from our typical culinary comforts. Any traveling I’ve done in the past (even the very modest amount of international travel I’ve done) has never caused a significant departure from the habits and cuisine that I am used to. While in Korea, I was able to sample heavily from the local food while still returning daily to my “safe space” foods on-post. Even when having to be careful to avoid certain foods or to eschew unbottled water, it was still less a functional change to my habits than a brief food adventure–quick to visit, quick to return.

Spending more than just a couple of days completely apart from my normal dining habits has been a really cool experience. You can tell, because aside from perpetual exhaustion, it’s the number one thing I’ve been plastering on my social media! It has been eye-opening though. I don’t normally put so much consideration into my meals, and that’s not an option here. That said, most of the consideration is because I’m enjoying something of a food adventure.

I don’t think I would have been as eager to dive into all of the various facets of the food and beverage experience that Nagpur has to offer were I able to comfortably return to “home base” in the form of a recognizable burger-and-fries sort of meal. Instead, I am confronted with the choice to either experiment with foods entirely foreign to me or to play it safe with local approximations of food that I’m used to. Often, the latter seems a dicier proposition than the former.

Breakfast for me at home typically consists of some sort of sausage and egg meal–breakfast quiche, fried eggs and sausage, egg-white omelete with sausage and cheese, etc. Here, I have a broad assortment of traditional (and somewhat less traditional) dishes from which I can choose each morning. The biggest difference in breakfast is the relative blandness of my usual breakfast compared to what I’m having here. Every single dish is spiced uniquely and aggressively, which doesn’t always mean that the food is spicy-hot; it does mean that it is reliably strongly flavored. Few things here are as bland as a fried egg at home.

For other meals, we have been splitting our time between the local interpretations of meals that we might find at home–masala pizza might be my new favorite pizza, which is going to be very disappointing when I get home and there is no such thing–and going out for more traditional local fare. In my typical ignorant way, I pretty much just classified “Indian food” as one monolithic thing. In my head I recognized that there was some difference between northern and southern versions of it, but I assumed there to be about the same amount of division as there is between a dinner in Alabama versus a meal in Connecticut. That is to say, I assumed we were talking about essentially the same things, but with a ton more butter.

Instead, the variances between the native foods of the different states is pronounced. While our hotel serves a mixed selection of foods, I’m told that it is mostly southern Indian in nature. At one lunch, we enjoyed Rajasthani cuisine–a selection of curries and bread-like products that was completely dissimilar to food that I would get at an Indian restaurant at home. It was here that I found the only way I’ve ever enjoyed cauliflower: mashed into a very spicy curry and picked up with a piece of hot chapati. I am warned that one of the regional foods of this area–Saoji–is far too hot to try; I suspect that unless I happen into some, I will probably take that advice. When people that eat spicy food regularly immediately say “bad idea,” I take it about 30% to heart!

As it stands, I can rest assured that most places around here that I eat will be able to give me naan, chapati, paneer, masala, daal, and about a thousand dishes that I can now pick out by sight but probably never name. Secure in that knowledge, I find it pretty easy to find something to eat here. I stay slightly wary of meat of unknown provenance (I mostly eat vegetarian unless I was referred to the place by those from the area), avoid the water, and do a poor job of avoiding dairy and the only gastrointestinal distress I’ve encountered was from the anti-malarial drugs.

India: Shopping

We arrived in Nagpur late on Saturday night after around 30 or so hours of travel (around 17 hours of which involved sitting in an airplane), so Sunday was a day to recover from travel and make preparations for the week. Since I am in no way a grownup, for me this meant going shopping for collared shirts to go with my three pair of long pants.

We ended up at the Nagpur Central Mall. Picture a 4-story department store with roughly infinity employees there to help you. After exploring for a bit, I ran into a snag: the largest size we could find in a male shirt was an extra-large, and even that was barely more generous than a large by my estimation.

I more or less gave up on the mission entirely. As I was busily working out n my head the complicated relationship I was going to have to adopt with the hotel laundry service, a store clerk brought over a shirt slightly larger than the largest I’d seen so far. It still clearly was not going to fit me, but it was, in fact, larger.

Now as an aside, I would like to point out that I am 100% stereotypical male when it comes to shopping. I am straight out of a cheesy 80’s standup comedy bit—I hate shopping, I don’t enjoy trying things on, and I’m not especially comfortable being waited on. I bristle at it. I don’t enjoy it. I avoid it at all costs.

So it was that I allowed myself to be convinced to step into a changing room and try on a shirt that I could tell just by holding it wasn’t going to fit. I flounced in, attempted to squeeze my body into what was essentially a button-down sports bra on me, then came out to report the poor fit.

I found myself rapidly buried in a veritable avalanche of clerks.

Upon exiting the fitting room, there were two more clerks with a few more shirts amongst them. We bantered back and forth a bit—me not wanting to try more shirts on, and them politely and firmly suggesting that I do—until I went in and tried another shirt. Upon exiting, there were several more clerks with several more shirts in a ever broadening array of styles, sizes, and patterns.

Listen; I think that it is fair to say that I am prone to humorous exaggeration in my anecdotes, so please know that I am in no way embellishing when I say that at one point I came out of this dressing room and there were no less than 8 people all with an opinion as to how I should dress. And each of these opinions were undoubtedly factually more accurate than my own.

Once I settled in, I found that I was having fun. I have been unable to adequately describe the difference between this experience and a similar one back home, but the same number of people pushing shirts at me in the US would have felt like I was being pressured relentlessly into a sale. This was not that; this was a group of people quickly and efficiently trying to figure out what will make me happy, then provide me tons of those things from which I could make my choices. For all of my disdain for the idea of shopping in general, there is something really awesome about having a group of people actively trying very hard to help you find something you’ll like.

Especially if you’re a loutish American who hasn’t a clue what he likes.

I tried on a ton of things, found several shirts that did fit (the largest size available in the store…a size 6 that could best be described as a very stylish tarp), learned that linen shirts are about a million times more comfortable in warm temperatures than my cotton shirts (as in: seriously, I might just buy a score of these things to wear back home), and found a collar style for button-down shirts that I far prefer to the very broad and annoying American style that I’m often forced to wear (narrow, low collars that remain the same size all the way around—I was told it was called a ‘short spread collar’ or ‘abbreviated spread collar’ locally).

In the end, I’m looking forward to doing some more shopping this coming weekend; a sentence I never thought I would actually say. We did not get a chance to visit the huge array of street vendors downtown, and I now find myself really looking forward to that.

But this doesn’t mean I’m going to stop buying all of my clothes on Amazon. I haven’t completely lost my mind!