Intro to Yammer Engineering

Priyanka Phatak

Yammer has come a long way since its creation, and shepherding it along all the while has been our engineers. We’ve picked up some new people along the way, of course, but the heart of Yammer engineering has always been our collective passion for the product, and our ability to work together to make it the best Yammer it can be. But how did we get here? Here’s how…

Yammer’s humble beginnings started with a Ruby on Rails app called Workfeed. Today, the team responsible for adding features and maintaining Workfeed is known as the APIs Team. Workfeed is backed by a Postgres Database which has most of our application data.

In the beginning, Workfeed was all there was. When Yammer started to grow and started getting a bigger user base, we couldn’t scale Workfeed at the rate we needed to, and hence the Core Services Team was born. In addition to being responsible for building and maintaining all of the backend web services written in Java and Scala, this team also works with various databases like Oracle Berkley Db, Cassandra, and Riak. We have small, single purpose web services that are composed to support features like feed delivery, search, and doc collaboration. How small? Tiny—from a couple thousand lines of code to low tens of thousands at most.

As our user base continued to grow, and mobile devices continued their meteoric rise in popularity, we built iOS, Android, and Windows Phone apps, and we have the Apps Team to thank for those.

Of course, Yammer’s web interface—aka—is maintained by the Front End Team. Both our web version and our mobile apps rely on the APIs exposed by Workfeed and the back end web services. All four of those teams must work closely with one another to ensure we’re doing our best.

The QA Team is responsible for the final quality of our newly releasing features, making sure the things we’ve built do the things they’re supposed to do, and don’t do things they’re not. They also maintain our automated test suite, and are constantly adding more automated tests.

We also have an Infrastructure Team who works on projects that help Yammer scale and grow, such as datacenter automation or building tools for plotting our metrics or tracking requests.

With as many engineers as we have now, there is the potential for each of us as individuals to have a hard time feeling like we’re contributing to the WHOLE product (vs. just one tiny corner). So how do we solve that?

Cross-functional teams.

For every feature that’s prioritized, a cross-functional team comes together to conceptualize, create, and deliver that feature. These teams consist of a Product Manager, UX & UI Designers and Researchers and Copywriters, a QA Team member to perform tests for the feature, an Analyst to help with the A/B test and determine if the feature was a success or not, and one or more engineers from our various engineering teams.

Together, we keep making Yammer better every day.

Priyanka Phatak is a Software Engineer on the Core Services Team at Yammer. Her fondness for smiling is outshone only by her fondness for dogs.