From zero to shipping production code

The first week in a new company can be daunting for an engineer as you leave the comfort zone of your old job. At the very least you get exposed to new tools and processes, a different company culture and new people and names to remember.

Joining Intercom as an engineer, the stakes are even higher; as part of our onboarding process you will ship to production on your first day and ship a feature in your first week. This sounds daunting and challenging at first. But at Intercom we strive to build a culture centered around strong engineering values, such as ownership and potential to grow, and these start on your first day. As one of the newer members of the Intercom engineering team, here’s how I went from 0 to shipping production code in my first week.

A Very Personal Experience

Intercom’s mission is to make internet business more personal and this is deeply ingrained in our culture. From the moment a job offer is made, the company’s strong communication culture kicks in. New hires always have a point of contact to answer any questions. From any type of administrative matters – such as tax paperwork or health insurance, to which team you will be working on – it’s all just an email away. This really takes the stress out of the transition; for people relocating to Dublin or San Francisco, having a single point of contact, must be a real plus.

A “good onboarding experience is the key to transform new hires into strong, effective contributors,” says Greg Slovacek at Asana, and Intercom really embodies this advice. On the very first day, as well as the usual things you’d expect like your requested computing equipment, new Intercomrades get a lovely welcome pack from their teammates including a hand-signed card! Small touches like this are definitely effective at making someone feel welcome.

The first hours are spent setting up your machine, configuring the tools and getting access to the codebase. Intercom’s continuous deployment process takes away the need to know the overall deploy structure. This allows a new engineer to commit and deploy their first lines of code within a few hours of starting. It is truly priceless and so is the traditional emoji-reaction chain of your Intercomrades.

My First Intermission

New engineers are given the opportunity to immediately contribute to the product through completion of an introductory task called an “Intermission”. It’s a quirky name for self-contained projects with a small scope. The small scope means engineers don’t have to understand lots of different parts of the codebase to get building. They can jump right in and start to feel like a productive member of a team. My Intermission, for example, dealt with the way conversations are displayed on a user’s profile. The purpose was to split the conversation feed into messages that have end user participation and messages sent by admins with no replies, rather than having one long single conversation feed for all types of messages.

Before: a single conversation feed on a user’s profile

After: The ability to see messages and conversations separately

It required backend work to support the new queries with different database technologies, as well as work on the API built in Ruby on Rails, and front end work with Ember JS. At times it was a real challenge, as I was unfamiliar with some of the technologies used and it involved two rather large code bases. However, it was never frustrating or unsolvable. Everyone here at Intercom is really helpful and wants you to succeed in your mission.

Three words you’ll never hear at Intercom are “not my responsibility”. It means that everyone has a broad knowledge of multiple technology areas. Questions are welcomed and encouraged. There is a huge amount of knowledge transfer going on, which manifests amongst others in the weekly talks at lunchtimes on Wednesday. People share their thoughts on everything from engineering hacks to culture issues.

Solving Problems With Small Commits

One of Intercom’s core engineering values is to do less, better. Hence, Intermissions are not solved in one big piece, but rather small commits, which makes the task less daunting and more manageable. A fellow engineer gives each commit a quality check, which is a great learning tool in itself. Additionally, the commits are developed behind feature flags so only Intercomrades see the changes and existing customers are not affected. With this early feedback loop in place, I was able to plow through my tasks and had the first working version of both server and client by Wednesday.

Something I noticed straightaway as different to other companies I have worked for, is the way engineers have an actual impact on the product. They are not just plan executors who are supposed to realize a feature, but rather it is desired and expected they contribute to the full lifecycle of that feature. They work alongside designers and product managers from a very early stage, coming up with innovative ideas and the best solutions for realization. In my case, I was able to go back and forth with Louise, our product designer on the team, to discuss how to best present the new feature.

Both craving and giving feedback is built into the engineering process here in Intercom. It starts with the pull requests and commenting on other people’s code. But it goes so much further.

From the first week onwards, new hires have dedicated meetings with their engineering leads. These meetings have the purpose, amongst other things, of defining goals for the next few months. These goals are later used to review and guide your performance. It’s very reassuring to understand where the team and company are headed, what challenges we face, and that I can speak honestly without being concerned about politics.

Early recognition at demos

By Friday, I had a fully working, tested version of the feature and was ready to show it off at our Friday demos. This Intercom tradition is a show and tell of the features the product team was working on that week. Even a small task or ongoing work on a feature or research project can be demonstrated and celebrated. Coming from a background where only a finished feature gained recognition, I find Intercom’s approach of craving feedback and celebrating achievements refreshing and motivating.

It was incredibly empowering and gratifying to demonstrate the new feature and within a few days the feature was shipped to all customers. From day one I felt like a productive member of the team. In my opinion there is no better place than Intercom to challenge yourself and grow as an engineer. Why not come and join us?