So way back in 2008, after spending four years working as a software engineer for National Instruments, it came to pass that my girlfriend at the time decided she wanted to move to Seattle to go to law school. This was not entirely unexpected, and in the end I decided to move up to Seattle with her rather than terminating or long-distancing the relationship.
I managed to get onsite interviews with Google, Microsoft, and Amazon, and they each flew me up on separate weekends to interview me and wine and dine me and convince me to move across the country. Well, I should say that Google and Microsoft tried to wine and dine me, and Amazon basically just shrugged and said, “You’ll become a better programmer here, or something?” Anyway, recruiting strategies aside, I moved here in mid-2008 with high hopes and big dreams.
Boy did that ever turn out differently than I’d hoped. I got placed on the Visual Studio 2010 Platform/Core team, honestly a team of some very very smart developers who outclassed me in every way, and to put it nicely… things did not go so well for me there.
I think that a big part of it was just that they weren’t quite sure what to do with me when I arrived; I’d gotten the job mainly due to a friend of a friend, and when I arrived there was no feature work for me to do, so I ended up working on bug fixing rather than writing any new code. The idea, supposedly, was that this was a chance for me to get to know the (very large and complicated) codebase of Visual Studio, prove myself as a good bug-fixer, and then move on to real development work. This proved more difficult than expected. The code was written in C++/COM, much of it legacy code from a decade hence, and my background was much more .NET focused than hardcore C++ Win32/COM focused. The bugs were largely bugs that other developers were having a hard time fixing or simply didn’t have time to fix, so they got assigned to me (the newbie) instead, which makes total sense of course.
Over time it became clear that my manager was not particularly happy with my performance. He had decided that I should be fixing around six bugs per week, and I was fixing closer to two or three bugs per week instead, and thus my performance was not up to par. I’m not entirely sure how he arrived at this magic number, come to think of it, but he had expectations and I was not living up to them!
I got my first review after a year on the team. Back then, you were evaluated based on two axes: Commitments and Ranking. Commitments were the things you intended to accomplish throughout the year, whereas Ranking is essentially a stack rank or bell curve of how you compare to other co-workers performing your job. Although I managed to obtain a grade of “Achieving Commitments” on the Commitments axis, I received a stack ranking in the lowest 10% on the meta-team. The insidious thing about stack ranking at Microsoft is that managers are required to rank employees in order of “contribution” and “influence”, and that no matter how excellent your team is, someone always earns the black spot. And when you do, you are typically either fired or put on a Performance Improvement Plan with very serious implications if you do not improve your performance, young man. Not only that, but even if you wanted to transfer to another department or position, you’re basically blacklisted when you’ve got that kind of black mark on your permanent record.
Of course I took this all very seriously back then. I was filled with self-loathing and self-doubt, and questioned my abilities as a programmer and my worth as a human being. This combined with the incredibly gray and rainy Seattle winter, and my relationship falling apart, and my general lack of any kind of social support, and it’s fair to say that the winter of 2009/2010 was perhaps the most depressing and disheartening winter of my entire life.
Despite my seasonal depression, I decided to redouble my efforts, but I knew that even if I worked twice as many hours and twice as hard I still might not rank above the dreaded 10% cutoff at the end of another year. So I made a plan. I saved up as much of my paychecks as I could. I readied myself for what was to come. And when I did finally get my second yearly review, and I got yet another bottom 10% ranking, I knew what I had to do.
I quit.
My manager was a bit shocked. I’m not really sure why. Maybe it was because I didn’t have another job lined up. Maybe it’s because I told him I was going to spend the winter rock climbing in Mexico. Maybe he thought I was just being crazy and reactionary and acting on a whim. But what he didn’t realize is that I’d been planning for this possibility for nearly a year.
So I did. I gave my two weeks notice, I started figuring out how to pack up all of my earthly possessions and put them in a U-Haul trailer, and when the time came, I left Seattle in my 2003 Hyundai Santa Fe and drove to Fort Collins to drop off my stuff at my parents’ house, then continued south to Austin. After a few days, I then drove another 8 hours south to my favorite place in the world, El Potrero Chico in northern Mexico.
It’s a fantastic place. Absolutely stunning, beautiful limestone walls that just seem to jut out of the ground from nowhere, a sport-climbing paradise with some of the world’s most inspiring multi-pitch climbs. I spent a good four months there, climbing every other day, having a great time, and taking a sabbatical from the rat race and self-loathing that epitomized my Microsoft experience. And I tried something new.
A few months prior, I had a friend ask me if I was interested in helping him with this Android app he was working on. It was a really cool app actually, very popular and innovative at the time, and he needed someone to help with some additional functionality. I was more than happy to sign up. In two years at Microsoft fixing bugs, I must have written no more than 200 lines of production code, and here I was given the opportunity to write something completely new and fun and exciting. So I dove right in. At first Android was a bit scary and overwhelming, but over time our project grew and I learned more and more about writing Android applications, from the user-facing UI to the invisible services that perform the real magic. I regained my confidence and realized that I wasn’t a bad programmer; I’d simply been in the wrong environment for me at the time.
Eventually I ended up running out of sabbatical money and started interviewing for “real” Android jobs, and got one at Ratio Interactive. I was super nervous at first, but I proved myself capable quickly and regained even more confidence. I became not simply a general-purpose programmer, but a developer with a very specific skillset. A developer that people wanted to hire.
I just recently accepted a new position with a small agency called LIFFFT; the ethos of which is that they want to empower their employees to work in whatever capacity makes them happiest, as long as they continue to kick ass for their clients. I don’t mean to brag, but these days I’m making significantly more money than I made at Microsoft and I’m about a thousand times happier.
What’s funny is that if I could go back in time and chat with my former self, I don’t think the past version of me could possibly believe that my future held such potential. All I saw was the doom and gloom and unhappiness of my current situation, the abject failure of the now. And perhaps the strangest thing about this is knowing that without that abject failure, I never would have become the person I am today. I never would have spent the entire winter climbing in Mexico, having the time of my life, nor would I have taken the time to learn and specialize in the Android platform. In many ways, this terrible failure set me up for future success in ways that I could never have predicted.
So I am thankful. I am so very thankful to have had such a difficult, soul-crushing experience, struggling and failing to achieve my dreams at Microsoft. Without that, I might have just ended up living a relatively boring and mediocre life doing whatever was enough to get by, never daring to learn something new or try something risky. Play it safe. Stay the course. Don’t stick your neck out.
There are times in your life when things will not go your way. You will be discouraged, you will have difficult times, and missteps, and even abject failures. But don’t let that get you down. Sometimes these trying times are exactly what you need. The key is to use your unhappiness and discomfort as a launching pad for your future greatness. Remember, it’s only after we’ve lost everything that we’re free to do anything 😀
Photo Credit: Sergio Tudela Romero