Just a small part of the development area

The details make the difference

At first a statement of defense: No I was not too lazy to write a new blog post in the last few days! But… unfortunately I read the PR guidelines and the Non Disclosure Agreement of Yelp… Yeah, all the interesting stuff, I’m not allowed to publish. What a surprise ;-) But I will try to talk about the information I already received in one of my many interviews and enhance it with the impressions I had until now.

Just a small part of the development area
Just a small part of the development area

Let’s start with a development overview: There are about 250 Developers in (I think) four subsidiaries. I guess about 200 of them are here in San Francisco. The Development Teams are divided into a hand full of Teams like Consumer (Core), Search, Biz (the part for Businesses), i18n (Internalisation), Platform, … Those Teams therefore are subdivided into Sub-Teams, usually consisting of about 5 Devs and aehm… that’s it. Of course there are Product Managers, but one PM usually has more than one Sub-Team. Other than that: Nope, no QA Guys (every Dev writes tests for his own stuff), no Designer, no UX, no Agile/Scrum/Process guy. Therefore exists a Frontend Team. They work side by side with Designers, who a few indeed exist but not directly in the teams.

The development sub-teams get a new feature presented in a Kickoff meeting by a PM. Then they are passionate to make it a good feature, try to understand why it is required and give good feedback. When the feature gets mature enough to implement it, one guy picks it, plans and starts the development. Every atomic task needs to be reviewed by at least one other person and be covered by a level of 100% by automatic tests. This is definitely a good thing as we are coding in python, which is a dynamic language, so tests are the only way to know if something still works after a large refactoring.

When a change is reviewed and approved, the feature branch gets marked as “PickMe” for the next push to production. If it got picked, it is merged together with all the other picked branches and the most recent version of the production code. Of course, this potential new production version needs to be tested on an environment which is similar to the production environment. All push communication happens on a huge  IRC channel by the way.

More to come, when I know what I can publish without being a whistleblower. Stay tuned…