My first twelve months working at Stack Overflow
Today is my one year anniversary working at Stack Exchange. Some of you many remember a post I wrote about my first six weeks working at Stack Overflow. This is a follow up to that post, and what has changed since. It's also my first time blogging in a very long time, and as you'll read, it's because I've been quite...busy.
If you want some background, I recommend reading my previous post as well.
3 months in - a big project and many hats
The three month mark at any job seems to be one of those turning moments. Before the three month mark, it's a lot of trying to get a foothold in the culture, learning to be comfortable in a new codebase, and so on - as I made apparent in my previous post. At three months, the newbie sheen starts to wear off, and you actually have to roll up your sleeves and get some serious stuff done. This is especially the case at a place like Stack, where you're working with - quite literally - some of the best technologists in the world, and there's quite a bit of pressure to ship something interesting you can take ownership of.
My first big project was working on a feature to let developers discover what technology is like in a particular city. The idea being that developers have a lot of freedom to choose where they would like to work, and it is usually largely determined by where a company and the developer's life will be located geographically. It was something I had expressed interest in working on quite early, but this was actually a project that was being worked on before I had joined. I was later pulled in to help another developer with the project, since it dealt with particularly nasty issues around...geocoding.
Now if any of you have worked on geocoding intensive project, you will know that suddenly being an expert in geocoding is both a blessing and curse. It became one of my domains of expertise very quickly (having some prior experience helped), as the developer that I had been working with moved on to help with a mission critical project. I was suddenly working on a large feature without another, more senior developer working with me. But good things came out of necessity: it really started drawing out what I thought were areas of expertise that had been dormant before.
Taking "full stack" to a different level
A quick detour. Stack hires only full stack web developers for the most part. For those of you that don't know what being full stack means, it means that a developer is at least proficient in all the essential parts of web development: front end, back end, databases, some systems administration, security, etc. Now, some of these domains of expertise are somewhat uncontroversial: being full stack probably implies you know at least one back end related language like Python, C#, or Java, for example. Other areas are more arguable: design, sales, management, etc. The degree to which one is full stack has a pretty clear floor, but there's no definite ceiling to what areas are afforded being "full stack" that is still clearly in the domain of being a "developer."
This is something I became very aware of after the three month mark. I know I am not the strongest developer in a strictly technical sense. As I had mentioned in my previous post, I had switched technologies entirely: many parts of development, sometimes what seem like rather silly and trivial things, still escape me. That being said, I believe being able to put on a lot of different hats in the company as a developer has helped me tremendously.
Being able to take the technical expertise and talk about product like a product manager with the product manager was extremely helpful to see eye to eye on major feature decisions. Interesting ideas that had crossed my mind instead came out of the product manager's mouth, and it became a really delightful experience to work on features I wholeheartedly agreed with and felt a part of.
Having experience with design helped in numerous ways: getting further along in prototypes so there's less heavy lifting done by the designers, talking about systematically doing front end work throughout teams at a higher level, elevating design conversations beyond aesthetics and more about vision and features and experiences. The list could easily go on - the designers are a great pleasure to work with.
I also feel I have a rather unique relationship with the marketing and sales teams. A large part of this is because I do a lot of evangelism and tech education work (more on this later), but most importantly, it's because I think the vision and narrative of Stack Overflow as a brand and sellable product comes directly from my colleagues in these areas. For me, development is largely in service to an ultimate vision supported by a strong business model. Because of that, I feel I spend a unordinary amount of time (at least to my technical colleagues) working with marketing and sales.
After the three month mark, I was developing areas I was particularly well suited for within the organization, and having a large project helped tease them out. It was also becoming more apparent to myself, and I think to others, that I wasn't a strictly technical developer: having had some entrepreneurial experience let me feel I could offer more than just quality code.
6 months in - pushing a bit
At six months, I had finally pushed my first major project. It was a feature I was proud of and could really take ownership of, but it also marked a turning point for myself. I felt like I had overcome much of the imposter syndrome that sometimes comes with working at a place like Stack, especially given my background. I'd only been two years out of college, without a computer science degree (a philosophy degree instead), without even a technical internship under my belt, and as a self-taught developer to boot. Being able to push a feature on something as big as Stack Overflow was huge for me.
It also did something else: I felt I could actually start pushing the organization a little bit. As great as an engineering organization Stack is, there were things I thought I could help improve. After my first initial project, especially since I had been working on it for so long, I started working on smaller projects while tightening up the large geocoding refactoring effort that I had started.
Many of these projects were related to what I felt were sometimes overlooked areas: front end organization, automated environment set up, and allowing marketing to get access to more content control. It also helped that my mentor who had helped onboard me was working on these same projects - it still strikes me how eye to eye we see many things. I was starting to let some of what I really wanted Stack to become begin manifesting itself as projects that I became a part of or started.
At about six months in was also when I really started ramping up my outside involvements with Stack. This was for a number of causes. Since I joined the company, diversity in tech has become very pressing and widespread issue (thankfully). I think that Stack is in a particularly interesting situation both externally and internally when it comes to diversity issues. Externally, we have helped forge the largest community of developers in the world and have a real opportunity to help steer the course of diversity at large. And internally, for what it's worth, we are at least particularly well represented on the LGBT front (if you know anything about me, or if not, at least about our CEO, Joel). We're also very committed to supporting more women in technology, not only within the company, but for the broader community as well. I am also particularly, and quite naturally because of my work with Bento, committed to the broader mission of teaching people to code. These are just a few examples of what I and others in the company are working on with this effort.
Hand in hand with this push was a broader effort on my part to evangelize Stack Overflow as a developer. Now, you might be thinking, why in the world would Stack Overflow need developer evangelism for if so many developers already know and actually use the site on a daily basis?
The short answer is because I truly, deeply believe that Stack Overflow is in a unique position to lead and better the developer community as a whole. Teaching people to be better developers with Q&A, inspiring minorities in tech to code and get involved, improving the state of tech recruiting...the list goes on. To get people to rally around the mission of Stack Overflow in addition to the technology is why I think evangelism is so important to me as part of being a developer at Stack. Who better to rally a community of developers than other developers? I wanted to be a part of that, or at least take a first step forward on it.
I started doing "devangelism" pretty quickly, especially as I became very close with marketing. I was going to student hackathons, speaking on panels, hosting events at the office, taking weekly lunch meetings with students...the list goes on. I think at one point I was averaging two or three talks a week on top of my developer responsibilities, and I've been dubbed "St. Jon the Devangelist" at one point. It's really amusing, and one of my favorite parts of being a developer at Stack. I hope that one day Stack formalizes a real developer evangelism program, but up until that happens, I'll probably continue doing what I can to further the mission.
9 months in - full swing
At the nine month mark, I felt like I was actually starting to go full speed with my work. The last three months have really been about taking the lessons I learned in the first nine and running with them. I feel like I am familiar with my strengths, and can really focus and hone them. I found myself wearing a lot of hats, at once, and pushed very hard to get multiple projects through more aggressively. My wardrobe now largely consists of Stack Overflow swag, and I'm somewhat guiltily happy about it. I've recently started helping with a large push to bring up the level of design with Stack Overflow Careers, something that I'm very happy to finally see happening after so much time working with design. I'm leading projects around user acquisition and marketing that I'm excited about and have wanted to do since I started. All in all, I'm doing work that I enjoy and feel like I'm making an impact on the organization and the amazing community it supports, whether it's recognized or not.
That actually brings me to my last point.
If there's one, overarching, incredible thing that I really love about working at Stack for the last year is how I know I'm working on something that helps millions of people around the world. We are not a very large company relative to the impact we make. I think because of that impact, we attract some of the best people to the company, and it's such a privilege to work with them every day. It's also because of that impact that I get to work on unique challenges that I wouldn't get to anywhere else so early in my career.
But throughout my first twelve months here, the moments I enjoy most are when I talk to strangers about my job. It's a hit or miss, saying I work for Stack, because you can be non-technical and have no idea what I'm talking about, or you're a developer and it's a completely different experience. I don't think I've ever been hugged for telling someone where I work. I certainly don't think I'll have that happen to me multiple times with another company like it does now.
TL;DR I can't think of a better place for a developer to work at, certainly not for myself. The first twelve months have been life-changing. I expect the many coming months to be more and better of the same.