The Silver Lining of Impostor Syndrome

[Let me start this piece with a caveat: This is not a #slatepitches-style article arguing that Impostor Syndrome is a good thing or that people with it are better off keeping it. It has profound negative effects and plays very neatly into the self-defeating internal narratives that major depression can give you. Depressives in particular don't need another excuse to tell themselves they suck; most of us are really good at that already. Read this first if you need to learn about Impostor Syndrome, the harm it can do, and how to start overcoming it.]

At the last DCPHP meeting, Sean Prunka talked about Impostor Syndrome during his talk on dealing with distractions. At the end, I asked the group how many suffered from it, and the vast majority of hands went up. So clearly, a lot of the type of programmers who read blogs and go to user group meetings are the type who also think they’re a misstep away from being “found out” as not really deserving of the position/title/place they hold.

It got me thinking about why really good programmers paradoxically suffer from the feeling that they are the really crappy ones and have gotten where they are by sheer luck. Knowing that many programmers who give talks nonetheless feel like frauds gave me some new things to listen for, and I think I’ve distilled some good habits that shouldn’t go away with the crippling and unrealistic self-doubt as you fight these feelings within yourself.

There is some evidence that depressives perceive things (apart from themselves and their own worth) more clearly than those who don’t suffer from the disease. (The theory is called Depressive Realism.)  Similarly, self-doubt can give programmers some good habits of mind along with the bad habits that make it a problem. Here are some I think are related to my impostor syndrome:

Pessimistic estimation: If you assume you don’t know what you’re doing, you tend not to assume everything will go well as you attempt any task. In my case, it’s made me a better estimator, because I’m able to identify rosy assumptions and allow for the very real possibility that those assumptions will be wrong. It could be my memory of how much pain working with a given module causes and not assuming that this time it will be different. It could be assuming that the client won’t come through with the required design in time, and I won’t be able to just “make it happen” by the deadline. It could be realizing I haven’t completely mastered a given technology and using it will require research to address a specific problem. All of these things enable me to be a pretty good estimator because I naturally assume that things won’t just “go my way.”

Research first, coding second: With a nod to Donald Rumsfeld, Impostor Syndrome makes you keenly aware of the known unknowns as well as wary of the unknown unknowns. Being aware of the limitations of my knowledge encourages me to research a problem before tackling it. A common junior developer mistake is to take a half-understood requirement and immediately begin building a new framework to solve an entire class of problems like the one they’re given instead of simply searching to see that there’s an existing plugin that can solve the problem in minutes. Another frequent problem is assuming a component will solve your problem based on the general description without looking into the specifics of its implementation. Some of this is experience, but I’ve seen senior developers fall prey to cheery assumptions. Knowing I don’t know a new component inside and out makes me look into it more deeply before committing to using it to solve a problem.

Continuing education: One reason I suspect many hands went up in the room at a programming meetup was that we are a self-selected bunch. Those of us who don’t think we know everything are motivated to learn more. Even as you realize you’re a better programmer than you give yourself credit for, don’t lose the drive to chip away at your ignorance. Programming is as much of a craft as it is a science, and crafts take continual mastery.

Teaching and mentoring: Having felt adrift in a sea of acronyms and reading conversations where it felt like everybody in the room had singlehandedly built Facebook equivalents except me gives me a lot of empathy for the new or developing programmer. It’s really intimidating at first, and that’s one of the reasons I’ve become excited about what we do at php[architect] and what the community has done through its mentoring program. mojoLive was an attempt to encourage people to continually develop their skills, and I support PHP Women because they help lots of people deal with the learning curve and Impostor Syndrome. So my career has become as much about enabling other people to do great things. Perhaps self-doubt has kept me from tackling some of those problems, but it has given me the push to help others to develop their own career. I think feeling that dread at learning yet another technology has inspired many in the community to share their findings with others to spare them the pain. To Impostor Syndrome sufferers it can be more than just the pain of coaxing aging neurons to form new connections; it’s also the pain of “can I do this yet again or did I just get lucky last time?” each time we approach something new. That empathy helps push us to give a hand so the next person doesn’t suffer. We also appreciate those who have spared us the pain in the past.

That crippling self-doubt is more of a hindrance than a help, and Impostor Syndrome is something to be fought. But appreciating the good things it has driven me to do has helped me realize I have actually learned things along the way…and that I’m not an impostor at a programming conference.

Posted in Uncategorized | Leave a comment

My First Hackathon

Election HackathonThis past weekend, I went to the Washington Post’s Election Hackathon. I hadn’t been to one before, but my friend Oscar had the idea that it would be a good way to possibly get a little more exposure for Musketeers.me. If nothing else, we’d get a nice portfolio piece.

CandiData.me: Get information about 2012 US national candidatesAnd we did indeed: Candidata.me. Check out Oscar’s piece on its creation and some ideas for going forward. It was a good example for how quickly you can get a site together using Treb, the framework we built for mojoLive.

We didn’t win, partially as there were some really awesome ideas done by others at the hackathon, but partially because we misjudged the criteria for the site and provided something potentially useful but stopped early to polish it rather than really digging into the APIs to uncover some insights. With only a few hours of designer assistance from Kevin, the polish worked well, but the judges went for incomplete ideas with potential. As the Musketeer with the occasional appellation “product guy,” ultimately that’s my fault. On the other hand, I got to dust off some programming chops that had been put on the shelf while I pursued funding at mojoLive and gladhanded for clients for the Musketeers.

Presenting CandiData.me

We did get selected to present our app. You can totally identify Oscar, right?

One other note: Oscar will expand on it, but I think we did demonstrate good principles if you’re going to design something to be responsive: keep the design clean with simple boxes and rows that could reflow rather than try to replicate the report-ish layout that websites have aspired to since the 90s and that are the bane of the nonprofit world. The site still looks good on a desktop browser, but it also works really well on an iPhone.

Design for your medium, people. Don’t try to force it to be something it’s not. And as “product guy” I will take a little credit for that part.

Posted in Personal Stuff, Political Stuff, Web Stuff | 1 Comment

Help Kickstart BubbleSorter and GridSorter

I’ve always been careful to say that my new company, Musketeers.me, is a consulting and product company. Today we’re getting closer to the second (but to us, first) part of our mission. We’re launching a Kickstarter campaign to build two products: GridSorter and BubbleSorter.

GridSorter

GridSorter is best explained by relating the story of how Eli White first created the prototype: ever have a list of things that need doing around the house? Or worse, a honey-do list? Eli had that problem, and he’d already ranked everything by most important to least important. The problem was that when he had some spare time, he would look at the first thing on the list, which was a weekend-long project. So he’d put it down, and go do something else instead, and nothing was getting done. He quickly realized that he needed to categorize his tasks by both how long they’d take and how important they were.

Being a programmer, he naturally sat down and hacked out a solution: put his tasks on a grid, with one axis being importance and the other axis being time required. So now when he had an evening, he could simply look down the “takes an evening” column and grab the first task off the list, knowing he was getting the most important thing he could do with that time.

We’ve realized that a lot of you might have that problem, and the principle is even more powerful than just tasks versus time: you might have any number of things you need to sort by two different categories: for mojoLive we categorized our last push of features by importance versus user engagement, and picked the most important features that would also engage users. So the final product will have the ability to pick your two categories and drag and drop your list accordingly.

BubbleSorterBut what if you’re having trouble figuring out what’s important? Once I was trying to get a client to give us a prioritized list of tasks so we could ensure we did the most important things first, since the budget was tight and the list was long. They came back and said, “Well, everything here is Priority 1.” Not too helpful. But when I started asking, “Would you like to put more effort into Feature A or Feature B?” the client would quickly reply, “Feature B.” Out of that inspiration comes BubbleSorter.

While even just bringing in a list and prioritizing it is useful—and we’re going to give you that for free—it’s really useful when you have groups of people who are having trouble agreeing on a list of priorities. So for a low yearly subscription, you’ll be able to invite others to come in and perform the same ranking, and then using an algorithm we’ll be able to tell you what the group’s collective priorities are. This is really powerful if you’re regularly trying to get consensus in teams.

So help us make these products a reality: watch the video, see what you will get for each backing level, and join our Kickstarter.

Posted in Personal Stuff, Web Stuff | Leave a comment

Monday Morning Kodi Blogging

Kodi decides I make a good pillow

Nap buddy.

Posted in Personal Stuff | Leave a comment

Newer Venture: Musketeers.me

Precision Web Application DevelopmentIn addition to my personal consulting in strategy, I’m excited to announce that, together with Eli White, Oscar Merida, and Kevin Bruce, I’ve become a part of Musketeers.me. We’re focused on building cool web applications for others and for ourselves. So if you need an experienced team to build something challenging, let us know.

Posted in Personal Stuff, Web Stuff | Leave a comment

Over at the new blog, I show how starting with the phrase “How hard would it be to make a button…” usually ends up costing extra and frustrating everybody. Try instead to say, “Here’s the problem I’m having. What can we do?” You’ll be amazed at the results.

Posted on by Sandy | Leave a comment

Again at my new blog, I have a post about the importance of working with a developer when planning your site, and continuing to work with them throughout the life of your site.

Posted on by Sandy | Leave a comment

At my new blog, I look at how trying to tie all your applications together with one login (Single Sign-on (SSO)) is usually a complete waste of money and look at alternatives.

Posted on by Sandy | Leave a comment

New Venture: Helping organizations work with web devs

On the side, I’ve started a new blog and consulting practice. Since I’ve worked as a web dev but have business, strategy, and policy experience, I’m in a good position to help organizations help themselves when they contract with web developers and web development shops.

So if you need some help figuring out how to get the best results out of your next web engagement, contact me.

Posted in Personal Stuff, Web Stuff | Leave a comment

Wednesday Afternoon Kodi Blogging

By request, Kodi discovers the lake. And splashes at the edge and proceeds to roll around in the muck instead.

IMG_0479

Posted in Personal Stuff | 5 Comments