Developers have long discussed and debated whether programming is an art, a science, an engineering practice, or something else. I don’t believe in Blacks and Whites. I think programming means different things to different people. And programming fulfills different expectations depending on its use.
Over the last ten years, I’ve taken quite the winding road as a developer. Before joining Microsoft, I was a back-end server developer using C#. I loved writing code. I loved learning how to write better code. I loved reading well written code. I loved Design Patterns, and Enterprise Application Architecture, and Test-Driven Development, and all the fancy buzzwords at the time. I blogged about these loves. I gave talks about these loves. Then several years later, I got a call that started the next phase of my career.
Almost on a whim, I joined Microsoft after a recruiter contacted me about an open position. It was like being called up to the Big Leagues for me, finally called home to the Mothership. I joined Microsoft as a Technical Evangelist. I blogged and shared other people’s technologies. I was talking about the problems other people were having. I later joined Windows as a Program Manager. I worked to deliver technologies like the Windows Runtime and cool new video editing APIs. But over time, I just found myself less excited. I was at Microsoft for over nine years. Towards the end, I knew it was time for me to move on.
I felt like I was rapidly losing touch with the development world I once held so dear. I saw many of the cool technologies my friends were working with and I found myself wanting to be in their shoes. i had lost my passion. I had lost my fire. That feeling of excitement about going to work in the morning? I missed that feeling.
So I started interviewing at different companies. I found a couple that I was extremely excited about and absolutely loved the technologies they were using. Through the interview process, I fell in love with my current company and team at Concur. They have a great culture, a great group of individuals, and a great set of technologies that are sharpening my tools again (and hey, we’re hiring!). I had thought about interviewing at Concur ever since Howard Dierking started talking about the work he was doing here. However, I let fear prevent me from taking the leap. “I don’t want to be rejected”. “I’m comfortable here at Microsoft”. “I couldn’t possibly find a job as good as this”. “I should be happy here, I’m lucky”. All the usual suspects. I finally did take the leap though, and I couldn’t be happier with my decision.
Do I regret my time at Microsoft? Not at all. I enjoyed most of my time there. I worked with many great people (too many people to list here). I learned a lot from the many managers and coworkers I had over the years. I had many great experiences like talking at the //build conference and seeing how large-scale software is made and shipped. Now that I’m getting my dev legs back under me, I feel like everything I learned during my time at Microsoft has made me a better developer. Being a Program Manager taught me to think critically about technology and to focus on the things that actually provide value. The many different projects gave me a well-rounded software education which I will always be thankful for.
Here’s the thing though… I want to be a Craftsman. I need to be creating. I need to be getting my hands dirty. I’m inspired by documentaries like Jiro Dreams of Sushi, Building Without Nails, Design Is One, and Helvetica. I’m inspired by developers that use Vim or Emacs and can craft their own customized development environment; I love Tim Ewald’s talk on Clojure: Programming with Hand Tools. I love “craftsman” programming languages like LISP/Scheme, Clojure, Smalltalk, Self, etc. The things people do with creative coding frameworks like Processing, or Cinder, or Open Frameworks absolute amaze me. gmunk’s work on the interfaces in the movie Oblivion? Jaw-dropping (bonus: I discovered he did the graphics for my favorite desktop wallpaper in Windows 10!).
I suppose it goes without saying that I’ve consumed a lot of Robert C. Martin Kool-Aid over the years! And deep thinkers like Rich Hickey, Guy Steele, or Bret Victor.
I want to touch other people’s lives. I want to share my love for writing code again. I want to be a Code Craftsman other people look up to. For others that want to be hackers, or engineers, or scientists, that’s cool. But it’s not me.
One thing is for sure: it’s GREAT to be back! It’s great to have started the next phase of my career. And I can’t wait to see the stuff I’ll be a part of in the years to come.