by Gene Kim
She is going to build something.
Over the next four hours, she tries running every Makefile, maven POM, bundler, pip, ant, build.sh, build.psh, and anything resembling a build script she can find. Most fail immediately when she runs them. Some barf out alarmingly long error messages.
She pores through all the error logs, scanning for any clues on how to get something to actually run, sifting through all the poo for anything resembling a peanut—laborious and unpleasant work. She identifies at least twenty missing dependencies or executables that she needs. Several times she asks around to see if anyone knows where to get these things, opening tickets and sending out emails, but no one knows. She spends three hours searching around the internet for clues, pouring through Google and Stack Overflow.
In a moment of very poor judgment, she decides to try building some of the missing components from scratch, from similar sounding components that she finds on GitHub. Five hours later she’s in a terrible mood—exhausted, frustrated, irritated, and absolutely positive that she has just wasted an entire day going down rabbit holes she never should have gone down.
Basically, she tried to forge missing engine parts by melting down aluminum cans. That was really dumb, Maxine, she thinks.
That night when she gets home, she realizes that she has brought all the frustration from work with her. She warns her husband and kids that she is currently incapable of conversation and finds two mini-bottles of Veuve Cliquot rosé in the fridge. When her teenage kids see her, they know immediately to avoid her. She is wearing her “Mom is in a super bad mood” face.
While they prepare dinner, she crawls into bed and watches movies.
What an utter waste of a day, she fumes.
She reflects upon the difference between a great day and a bad day. A great day is when she’s solving an important business problem. Time flies by because she’s so focused and loving the work. She’s in a state of flow, to the point where it doesn’t feel like work at all.
A bad day is spent banging her head against a monitor, scouring the internet for things she doesn’t even want to learn but needs to in order to solve the problem at hand. As she falls asleep, she tries not to think about how much of her life is spent searching the internet for how to make error messages go away.
It’s a new day. Fresh from a good night’s sleep, she sits at her desk, intent on not repeating yesterday’s mistake. Just because she felt busy doesn’t mean that she actually did anything meaningful. In a terminal window, she pulls up her work from yesterday and, without looking at it, deletes it all.
Then she pulls up all of her open tickets in the ticketing system. She refuses to feel powerless, at the mercy of distant powers, trapped inside a cold bureaucracy actively impeding her goals, aspirations, desires, and needs.
Maxine has a long and complicated history with ticketing systems, both good and bad.
Last year, she funded a Kickstarter project for a mug that promised to keep her coffee or tea at whatever temperature she wanted for hours. It even had a Bluetooth connection so that she could see and set the temperature of her drink from her phone. She loved the idea of it and quickly paid five hundred dollars to help the inventor.
She was thrilled every time she got a notification: when the inventor reached her funding goals, when a manufacturer was selected, when the first production run started, and, most importantly, when her mug had been shipped. It was so satisfying to be a part of the collective journey and to eventually hold one of the first five hundred mugs made.
The Dev ticketing system felt totally different. It was the opposite of the joy and anticipation she had felt with her magic mug. Instead, it reminded her of the horrific experience of getting her first high-speed DSL broadband package working back in the 1990s. Although she received the DSL modem right away, she then had to deal with the internet service reseller (who sold her the DSL service) and the phone company (who owned the copper wires to her house).
Whoever did the installation at her house must have screwed up because nothing worked—and when she called either organization, they told her that it was the other’s responsibility to fix it. Sometimes they could find a ticket related to her previous conversations, sometimes not. She was trapped in a cruel, uncaring, Kafka-esque bureaucracy. For four weeks, her awesome DSL modem did nothing except flash a red blinking light. It was as useless as a brick, and she had countless open tickets with both organizations.
One day, Maxine decided to take an entire day off of work just to tackle activating her DSL line. After three hours, she finally managed to talk her way up the chain to a Level 3 escalation support person who had access to both ticketing systems. He was amazing and obviously incredibly savvy, able to thread Maxine’s request to the right department, using the right keywords to get the two supervisors from both companies on the phone to line up all the necessary work. An hour later, she finally had her 64 Kbps broadband connection working.
Even decades later, she remembers how grateful she was to that support person. She had told him, “I’d love to talk to someone that matters about what an amazing job you did and how grateful I am for your help.” She happily stayed on hold for ten more minutes to talk to a supervisor and then spent ten minutes gushing in great detail about all the help that she had received.
It was so important to Maxine to describe how extraordinary and even heroic everything that Level 3 support rep did and how much she valued his help. Maxine was gratified to hear that he was being considered for a promotion and that her phone call likely sealed the deal.
Afterward, Maxine spent an hour watching the blinking green light and savoring the blazingly fast download speeds.
Remembering that savvy support rep, Maxine reminds herself that she loves solving problems, that she loves challenges, and how important her work is. It will help every developer become more productive.
Taking a deep breath, she summons the relentless optimism she’s been accused of having, and carefully scans her email for any new ticket status changes. She ignores all the team status updates, except for the ones where people are yelling at each other in ALL CAPS. She wants to know who the hotheads are so she can avoid them.
Continuing to scroll, Maxine’s heart leaps when she sees the subject line:
Notification: change to ticket #46132: Phoenix Dev environment.
Is her Dev environment finally ready?
She tries not to get excited, because she’s been fooled before. Twice yesterday she got a notification, but it was only for the most minor status changes on her ticket. The first was when someone finally looked at the ticket; the second was when it was reassigned to someone else.
Maxine clicks on the link in the email, which pulls up the entire history of the ticket on her browser. She squints and leans closer to her screen. She opened the ticket six days ago (if she counts the weekend), and there have been seven status changes as different people worked on her environment request. As of 8:07 this morning, the ticket is marked closed.
She hoots loudly. At long last, the Ops people are done! She is in the build business!
But she’s confused. Where’s her environment? How does she log in? What’s the IP address? Where are the login credentials?
She scrolls to the very bottom to the notes and comments, reading what each person typed in as they were worked on her ticket. It got bounced from Bob, to Sarah, to Terry, back to Sarah, then finally to Derek. At the very bottom of the notes, Derek wrote:
To get a Dev environment we need approval from your manager. The correct process is documented below. Closing ticket.
Maxine’s face turns hot and bright red.
Derek closed my ticket?! After all that waiting, he just closed my ticket because I didn’t have an approval from a manager?
Who the hell is Derek?! Maxine yells to herself.
She moves her cursor around the ticketing screen, trying to find anything to click on. But the only clickable link is the policy document that Derek provided. She can’t
find any way to find out who Derek is or how to contact him. She finds a button to reopen the ticket, but it’s grayed out.
Thanks a lot, Derek, you shithead, thinks Maxine angrily.
Fuming, she realizes she needs a break. She stomps out of the building and sits on a bench in front of the office, she takes a deep breath, closes her eyes, and counts to fifty. Then she walks back into the office and sits down at her desk.
She clicks the button to open a new ticket. When the blank ticket appears, with the countless fields that need to be filled in, she almost gives up and goes home. Almost. Instead, she forces herself to smile and summons up her friendliest self:
Hi, Derek. Thank you so much for working on my environment, which we badly need for the Phoenix Project—please see Ticket #46132 (link below). I’m assuming I can paste my manager’s approval (Randy Keyes) in this ticket? I’ll get an email from Randy with his approval for you in the next 30 minutes. Can I call you to make sure this gets processed today?
She clicks the Submit button, writes a short email to Randy asking him to okay the creation of a Dev environment, and runs to his desk. She’s relieved to see that he’s there and not in a meeting. She tells him what she needs and then stands over him as he sends a reply that merely says “Approved.”
By the time she gets back to her desk, she feels a sense of grim determination and relentless focus. She will do whatever it takes to get her Dev environment. She sits down, copies and pastes Randy’s approval from her email into the service desk ticket, and adds the note:
Derek, thanks so much. Here’s my manager’s approval. Can I still get this environment today?
She hits submit.
She pulls up the corporate phone directory and scans for all the Dereks in the IT organization. There’s three. The one in the helpdesk department is the most promising.
She emails him a nice, friendly note, CCing Randy, to thank him in advance for all his help and to let him know how grateful she’ll be to get builds going for Phoenix, practically begging him not to put her ticket at the bottom of the queue where it will take another week to process.
She hits send. Five seconds later:
This is an automated response—please put all service desk related tasks into the service desk. I will do my best to read all my emails and respond in 72 hours. If this is an emergency, please call this number …
She curses. She imagines Derek sitting with his feet up on his desk, guffawing at her misery. She prints out everything related to Ticket #46132, her emails, and the names of the three Dereks, looking up where each one of them sits. Helpdesk Derek is two buildings over, lower level.
She steps out of the elevator on Derek’s floor and sees rows of small cubicles with people wearing headsets in front of computers. There are no windows. The ceilings are surprisingly low. She can hear the electrical buzz of florescent lights. It’s oddly quiet. There should be more fans running to make the air less stale, she thinks. She hears people typing and a few people talking politely to people on the phone.
Seeing all this, she feels suddenly very, very guilty about her previous anger toward Derek. She asks someone where he sits. After walking through the maze of cubicles, she finally sees Derek’s nameplate, printed by an ink-jet printer without enough ink. Then she sees Derek.
He’s not a hardened bureaucrat at all. Instead, he’s in his early twenties. He’s Asian, with a remarkably earnest expression as he scans something on a small LCD screen. Maxine has had laptops with bigger screens than this budget PC setup. She feels even worse about all the bad things she’s thought about him.
There are no extra chairs, so Maxine kneels down beside him. “Hi, Derek,” she says in her most friendly voice. “I’m Maxine, the person who submitted the ticket about the Dev environment last week. You closed it this morning because I didn’t have a manager’s approval. I just got it. And because you closed the ticket, I had to open a new one. I’m wondering if you can help me get this through the system.”
“Oh, golly, sorry about closing the ticket. I’m new to all of this!” Derek replies earnestly, obviously distraught that he might have screwed up. “All I know is that I’m supposed to make sure that certain requests that need approvals have them. I can’t reopen tickets. Only supervisors can do that. And all new tickets go into the queue where they get assigned to the next open person. Maybe my supervisor can help?”
Maxine slumps, dreading what might be ahead. But looking around at the sea of people, she realizes that if she doesn’t get this straightened out now, she will never get her Dev environment.
“Absolutely. That would be great, Derek.” He smiles and they walk toward one of the outer offices.
Over the next fifteen minutes, Maxine watches Derek’s supervisor expertly navigate through the extensive ticket trail, examining its history. In the time since Maxine left her desk, someone named Samantha has already closed her new ticket, pointing out that approvals cannot be submitted in the “Notes” field.
Maxine refuses to lose her cool. These people are trying to help her. The supervisor apologizes about how inconvenient this is. She merges Maxine’s two tickets together, puts Randy’s name in the approver field, and resubmits the ticket. “Now Randy just needs to hit one button in the tool and you’re good to go! Sorry we can’t actually authorize requests—only designated managers can.”
“Can he approve it from his phone right now?” she asks, with forced cheer. Apparently not—the helpdesk tool was written before smartphones existed and mobile phones were probably still the size of suitcases capable of showing only seven LED digits.
Maxine sighs, but she thanks them effusively because she is certain she is finally close to achieving her goal. As she turns to leave, Derek asks tentatively, “Do you mind if I ask a stupid question?”
“Of course. There are no stupid questions. Fire away,” she smiles, trying not to look manic.
“What’s a Dev environment? I’ve dealt with laptop issues, password resets, and things like that. But I’ve never heard of an ‘environment’ before.”
And there it is, Maxine thinks, thoroughly humbled. This week’s lesson on patience, kindness, and empathy, brought to you by Derek and the helpdesk department.
Maxine is proud that she has earned a reputation for being level-headed, compassionate, and having empathy for others. But right now, she feels like she demonstrated none of those things. Is being assigned to the Phoenix Project making her a bad person?
She realizes how misdirected her anger at Derek was. This poor guy didn’t hold anything against her because she was a developer. He didn’t even know what she was asking for, let alone understand how important it was. In his inexperience, he had merely closed her ticket by following the rules set for him. He was only trying to do his job the best he’d been shown how.
Maxine returns to her desk two hours later. She had taken Derek and his supervisor to lunch—out of appreciation for their help and to atone for thinking the worst of Derek. She got the chance to explain the world of development to him, and his earnest curiosity was infectious. She described all the exciting career tracks available for technical people outside of the helpdesk, hoping it might encourage him to explore some of the options available to him.
She goes to find Randy to make sure he approves her request. He’s not at his desk. She calls him on her cell phone right away.
“I can’t approve it until I’m back at my desk,” Randy tells her. “I absolutely promise that I’ll approve it when I’m out of meetings. It’ll be done before five o’clock.”
Maxine goes back to her desk, feeling conflicted. She understands the need for automated workflows. On the manufacturing plant floor, the MRP systems she wrote control everything that thousands of people do virtually every minute of the day. You can’t manufacture products in large volumes, costing thousands of dollars, without a rigorous process.
Even the helpdesk process, whether here or at the organization she had to deal with to get her DSL model installe
d decades ago, is a pretty good way to provide consistent customer service most of the time, even when it’s delivered through thousands of call center staff.
So why does the ticketing system here feel so awful? We’re all part of Parts Unlimited, so why does everything feel like I’m dealing with a government bureaucracy or an uncaring vendor? Maxine ponders. Maybe it’s because when friends do favors for friends, we don’t require them to open a ticket first.
The next day, Maxine sees that Randy delivered as promised—he approved the Dev environment ticket, but it was too late for anyone to start work on it.
Despite this breakthrough, Maxine is still waiting for a Dev environment. Disappointed, she wanders aimlessly from meeting to meeting, not wanting to be idle at her desk.
Killing time in the kitchen waiting for another pot of coffee to brew, her phone buzzes. Screenful after screenful of email notifications about changes to Ticket #46132 appear. A request to get a virtual machine assigned to the distributed systems group, a request for storage from another group, an IP address from yet another group, a network mount point from another group, application installs from three more groups …
Maxine whoops in delight—progress, at last! Santa just mobilized his magical elf army to start building the Dev environment that she so desperately needs. The cavalry is finally coming!
Exhilarated, she reads through all the tickets. So much work is being dispatched to what appears to be the entire Ops organization. Maxine suddenly becomes alarmed at just how many people are required to create one environment.
She works at her desk, planning out what she’ll do first with her Dev environment, when her phone starts buzzing incessantly. Opening her emails, her jaw drops at the forty notifications in her inbox. At the top of her screen are a flood of new notifications marking all her tickets as closed.
“No, no, no,” she moans, starting to trace through the ticket history from the beginning. She sees that the user accounts were created, the mount points configured, but then she sees a note from one of the storage administrators: