Wizard Developer Skills: Conjuring Joy From Pain

A while back, I wrote a post about being surrounded by wizards. I’ve since spent even more time watching and learning from said wizards, and I am starting to pick up some tricks! I’m feeling like I might be about a Level 4 wizard now.

To become a wizard, you have to watch carefully and learn tricks from other wizards. I’d like to share one trick I learned recently that has made my job as a developer even more fun than it was before—and it was very fun—conjuring joy from pain.

There are painful things about every job. As a developer, some of my pain points have been things like digging through old, unfamiliar code for mysterious bugs, handling difficult conversations with teammates and customers, and sudden requirements changes that disrupt my carefully-laid architecture plans.

I’m an engineer—I take joy in solving interesting problems and building software, not dealing with little annoyances all day long (cue laugh track).

At Atomic, we work to Share the Pain–but what about flipping the pain?

My (higher-level wizard) teammate has a particular talent for taking the most irritating, painful tasks that we encounter and turning them into fun and interesting problems to solve. I decided to try and cultivate this skill, and I’ve found that it brings a whole new degree of joy to my everyday work. What a cool power to have: generating joy for yourself!

Here are a few ways I’ve learned to conjure joy from pain.

Turn Pain Points into Engineering Problems

Annoying technical problems and pains come up all the time. Conjuring joy from them means stepping back from the this-is-bugging-the-hell-out-of-me-right-now feeling and recognizing the engineering challenge buried inside the pain. This might take one of several forms, including:

  • “Ugh, we keep getting out-of-spec data from this API” becomes “Maybe we can come up with a more robust data validator!”
  • “We’re going into feature freeze for months?” becomes “Let’s plan a code health and maintenance phase, where we design for new personas like future developers and QA engineers!”
  • “This deployment workflow is super-long and error-prone” becomes “I’m gonna learn how to make an automated deployment pipeline!”

Turn Tough Conversations into Consulting Practice

Getting a whole team to agree on an approach, a budget, and a timeline for a big project takes a whole lot of conversations, and they’re not always easy. But frustrating as people-problems can be, there is joy to be found in helping people find their way to a great solution. I’ve found that it helps to focus on being the best consultant I can be when these situations come up:

  • “Pleasing this many stakeholders is impossible!” becomes “How can I leverage empathy and interpersonal skills to get everyone on the same page?”
  • “Person X and I can’t agree on an approach for this!” becomes “Given what I know about Person X’s perspective and motivations, can I pitch them a solution that satisfies both of us?”
  • “Something I built broke, and now I have an angry customer” becomes “This is a great opportunity to demonstrate integrity and fast problem-solving skills.”

Turn Irritating Requests into Joyful Accommodation

Off-the-wall, unexpected requirements changes and requests used to really drive me up a wall. I’ve been planning and laying the groundwork for Thing X for months, and now you want Y? What do you mean, you want $$$ worth of features for $? Now I have to put down my “real” work and solve your impossible problems.

These moments are great opportunities to challenge myself to think creatively, and they tend to be the ones that customers remember and appreciate. It’s very satisfying to tell someone that yes, you can move the moon and stars for them:

  • “These requirements are way outside of our expected scope; we’ll never get them done on time!” becomes “If we have a conversation about the needs these requirements are trying to meet, maybe we can come up with a creative, lower-budget way to fulfill them.”
  • “This person keeps interrupting me to help make sense of these specs” becomes “If I can write a clearer spec, they’ll have an easier job, and I won’t be getting interrupted all the time.”
  • “Ack, why didn’t you tell me we needed to handle that situation?” becomes “I’m proud that I’ve built a flexible enough system to accommodate unexpected cases!”

Generating Joy in the Long Term

Programming is famously rage-inducing. Adding interpersonal and big-picture challenges on top of that is part of the reason why people tend to think of “developer” as a grunt role, and why so many developers strive to “move up” and out of development into management roles in large organizations.

Interestingly, Atomic employs an extremely high percentage of long-tenure (10+ year) developers compared to the other software organizations I’ve seen. As I’m only a Level 4 wizard, I can’t be sure, but given the happiness this skill has brought me in just a few months, I suspect that actively seeking and creating joy may be one of the tricks our Level 27 wizards use to stick with development for more than a decade without getting sick of it.