Saturday, August 18, 2018

Check-In Day

Jane started a new job at a new company in a new town.

She knew things would be very different from the way she had already done things. That was, in fact, why the new company hired her; they wanted her to teach them how she works.

Jane was very experienced in vertical-slices of work, test-driven development, design patterns, and refactoring. This is what her new company wanted to learn from her.

Jane thought she should lead by example. So she started new work using her usual methods and it was fairly successful.

Not everyone on the team immediately adopted her techniques but most at least tolerated them and were willing to work her way on "her" code.

Charlie was the one holdout. For months, Charlie avoided working directly with Jane.

Eventually, it could be delayed no longer. Charlie knew too much about the code being modified and Jane knew too much about the new requirements.

They had to work together...although Jane and Charlie each had a different idea of what the phrase "work together" meant.

They met once at the beginning of the feature to divide the work. Charlie would work on adding a piece that he saw as intimately-related to the legacy code he "owned" and Jane, et al, would work on the new functionality.

This appeared to work for about a month until Jane's and Charlie's common supervisor, Ivan, burst into her team room and shouted "Jane! What are you doing to the code!?!"

Jane was taken off guard. For a moment, she just sat there and blinked.

Then she said "I'm working."

"Are  you checking in a bunch of times?"

"Yeah. Of course."

"How often?"

"I don't know." She screwed up her face while she thought.  "Every five or ten minutes...like always."

It was Ivan's turn for stunned silence.

Eventually, he said "It's Tuesday."

Jane just shook her head as if to say "Duh. What of it?"

"It's the first Tuesday of the month," Ivan clarified.

This still meant nothing to Jane but, looking around the team room, she could tell it meant something to everyone else.

She was still drawing a blank. "So?" she prodded.

Exasperated, Ivan spelled it out for her. "The first Tuesday of the month is Charlie's check-in day. You're not supposed to make any changes during Charlie's check-in day."

It turned out that Charlie was very smart and maintained the code that was connected to a very fickle 3rd-party component. He made fewer mistakes than other developers when touching that code and thus was its de facto owner of a very important component.

Gradually, he modified his process to be increasingly self-optimized. Every time he made a change that made things a little easier for himself, the team made an accommodating change that made things a fair amount harder for them. The transition was so gradual, that nobody noticed how bizarre things had come.

At least, not until Jane arrived.