DEV Community

Cover image for Becoming a Software Wizard, The Magic Wand (metaphor)
Daniel Prado
Daniel Prado

Posted on

Becoming a Software Wizard, The Magic Wand (metaphor)

Scroll all the way down to The Takeaway(s) section if you just want the TL;DR version.

The Quote

Let's begin with a quote that started this train of thought in my head years ago:

The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination.
― Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software Engineering

Having worked as a professional software developer for now more than half of my life, this thought has been brewing since I read that marvelous book after a college teacher suggested it to me. As such, it popped in my head first time out of pure desperation trying to communicate to a customer who wasn't capable (rather annoyingly) of using words to describe WHAT THE F...UDGE THEY WANTED ME TO BUILD FOR THEM!!! (sorry).

The Question(s)

What if you had a magic wand? What would the system look like? What would it do for you?

This was a huge moment for me and my team (and I didn't know the volume of it specifically but I could somehow feel it).

After countless of back-n-forth emails, calls, review meetings... (ok it wasn't that bad... but felt like it). Out of sheer agony and despair the question slipped out of my mouth:

What if you had a (freaking) magic wand?...

Short silence, their face suddenly warped from dead serious to almost cheerful, even their voice blue-shifted (yeah this works for sound-waves, I did my research) and suddenly, they started spitting out features, wishes, aspirations, dreams and other similar words.

It sparked something on their brain (and mine as a matter of fact). It suddenly removed all constraints and preconceptions from what was possible and gave us a magical context that I did not understand at the moment though I felt it somehow. We were in a mental frame where we no longer had a next step in mind but what would be the ideal scenario (even if we knew it was impossible to get there). Then the real work got started.

The (Seemingly) Unattainable Goal

Asking that question unlocked the gate to the knowledge we sought out. Sure, we were not going to build that immediately and release a 1.0.0 first-try; nonetheless we had enough for what that would look like and all of the 0.x versions towards that goal. Suddenly we had plenty of insights to create an MVP proposal.

The path was there for us to carve it, to freely craft however we wanted as long as we catered for that ideal (or at least to one of the versions we were planning on releasing towards the pot of gold).

For the first time, it felt like a proper roadmap (word I have learned to dread since it never meant anything to me until this moment).

After the MVP, the project took off and this opened up for other learning opportunities that helped shaped my understanding of our science and craft of software development

The Introspection

I have since moved to other companies and projects, hoping to replicate this success case, trying to (rather unsuccessfully) put it into words more than once so people around me would understand and help me apply it. The problem being that not even I quite understood this feeling or result.

My distracted brain laser-focused in the outcomes I got and in other aspects different from the actual and simple question, or rather the Magic Wand (metaphor). But the contemplation and self-reflection lead to other concepts that I might write about later, for now this was my mindset back then:

Tell me the What and let me worry about the How

In retrospection, English is my second language and back then I wasn't as fluent as I am (or so I've been told by my peers) and so, it's been until recently that idea that set off the train of thought was recently revived by a reminder that Adam Savage mentioned on a YouTube video I was watching while doing the dishes. It was EXACTLY the same analogy of The Magic Wand (my long-time slightly-neurodivergent hero had the same analogy, amazing).

My brain suddenly (mind you, while still doing the dishes) started going down rabbit-holes, marrying this concept with my other failed attempts at trying to make my peers understand or get behind TDD/BDD, the somewhat unsuccessful crusade I had embarked to make people see the What vs How mindset (which now I realize it was incomplete).

Asking The Question was the key that unlocked everything and not just for the client, for my team as well. Hopefully it will serve you as well.

The Takeaway(s)

  • Ask The Question, it will yield very good results I assure you.
  • Use the response to craft your roadmap carefully in a meaningful way. This roadmap is not set in stone, priorities, customers and the world changes. Embrace the change asking The Question often enough
  • This is a call for all you fellow computer scientists to embark in TDD/BDD. It ain't easy, but they payoff is definitely worth it.
  • Don't get too attached at the first set of ideas you get out of experimenting on your own. Producing the bare minimum design for the next milestone towards the promised land, will keep everything lean and allow for creativity. Create negative spaces for your developers to fill in the gaps.

Bonus:

  • Do the dishes mindfully thinking about random existencial ideas, let them flow (come and go). Mindless activities I have found to be the playground for creativity (even if you find yourself solving seemingly dumb problems, it's still fun and great exercise for your brain).

Hope you have found this both enjoyable and insightful.

Top comments (0)