Make the Complex Simple to Win in Your Career and Life
Because, deep down, I must be sort of a cheesy person, when John asked if I'd be interested in writing posts for Simple Programmer, the first thing I did was think about what that title, “Simple Programmer,” meant to me. More specifically, I started to think about the tagline, “Making the complex simple,” which has stuck with me over all my years of reading John's blog. There's a great promise in that simple tagline.
For many years, I associated the concept of “making the complex simple” with teaching. And that's certainly not wrong. We're in an industry filled with complexity, both essential and accidental. To survive in this industry requires understanding essential complexity and eliminating accidental complexity, and novices struggle with this. As developers become self-sufficient, they figure out complexity reduction enough that they can mentor others in the concept. Once they get to the point of teaching concepts pretty seriously — giving conference talks, creating courses, coaching, etc. — it can definitely be said they've become good at “making the complex simple.”
Of course, it could also be said that the term applies to communications with non-technical stakeholders and not just teaching inexperienced developers. Think fast — how would you explain to the CIO who doesn’t have a programming background why you should stop delivering features for a couple of weeks in order to retrofit an IoC container onto your codebase? If you start saying things like “inject your dependencies” and “switch your database driver without recompiling,” you're keeping the complex complex as the CIO stares blankly at you. Making it simple isn't easy, is it?
To take complicated concepts and communicate them simply, with minimized loss of pertinent information, is a skill you could (and should) spend a lifetime improving. It requires overcoming the curse of knowledge, understanding your subject matter extensively, knowing your target audience's world fairly well, being adept at mapping concepts and creating analogies, communicating clearly and, oh yeah, often doing it all off the cuff. Piece of cake, right? (If you're looking for a good book to help you communicate effectively in a professional environment, I recommend checking out Message Not Received: Why Business Communication Is Broken and How To Fix It by Phil Simon.)
Hard though it may be, it's a skill worth developing. Let's go back to the CIO and the team trying to pitch weeks of apparent non-progress. Your fellow developers have talked emphatically about how important maintainable codebases are and they've sent a link to an Uncle Bob article talking about the SOLID Principles. They've even dug up some kind of ISO something-or-another somewhere, and yet the CIO is totally, unreasonably unswayed — and what's more, he's exhausted from this persistent communication gap.
It's at this point that you step in and say, “You know that unreliable vendor you hate dealing with that's always forcing out patches with bugs?” When the CIO blinks and nods, you continue, “Imagine that tomorrow they burp out something really awful that takes us completely offline. Right now, our messaging to our customers would be, ‘Gee, sorry, we're waiting on this unreliable vendor we use to fix the problem…' If you give us these two weeks, our message will be, ‘Don't worry, we'll fail over to our backup strategy this afternoon.”
You just won at career and life.
I've followed John over the years as a blogger and member of the developer community and watched as he went from making technical posts, to putting out Pluralsight videos, to building Simple Programmer into an enterprise with a product offering that focuses on helping developers advance in their careers. There's a nice symmetry to offering career advice from a blog with the tagline “Making the complex simple,” because one of the best possible pieces of career advice that you could receive is, “Learn to make the complex simple.”
It will earn you roles in which you're asked to help and mentor people. It will earn you roles in which you're asked to be the face of your department when meeting with people from “the business.” It will, if you want them, earn you management and executive roles. “Making the complex simple” will help you write your ticket to wherever you'd like to go.
And so agreeing to write content for Simple Programmer thus became a no-brainer for me. John has created a site and a brand that are oriented around helping developers set and achieve career and life goals. And the central theme has been setting out to make things simple for them and helping them make things simple for others. It is this exact approach (with good advice from John over the years, I might add) that has helped me realize a lot of my own goals and create a nice résumé and a name for myself.
I look forward to writing posts here that you find helpful and informative. And — who knows — maybe we'll have a little fun along the way. But most importantly, I look forward to writing posts that help make the complex topic of software development a little simpler for you.
PS – I would be remiss to not also mention that if you haven't read John's book, Soft Skills: The Software Developer's Life Manual, then you should probably drop everything and go pick it up. That is a super simple win.