Video journalist Craig Duff took a look inside Facebook’s engineering department for a whole day and we got to see a very Agile process at work. This video came with good timing as we wrote about Mark Zuckerberg and Agile just last week.
“As we get closer to launch we work closer together, data team, engineers, designers.” – Peter Deng, Product Owner of Facebook Profiles
Peter Deng meets with the data team in the afternoon and as a Product Owner works closely with the team giving direction and course correction as needed. Very cool!
“Being all together in one room with PMs, Designers, and Product Owners helps.” – Josh Wiseman, Profile Team Engineering Manager
All the engineers at Facebook enjoy working closely together.
“We try to move very quickly here at Facebook and get user feedback very quickly.” – Peter Deng
Every action by Facebook users are recorded and used by the engineering team to understand how to better build the UI and educate users with educational text. What you’ll find on the Facebook engineering page is exactly that, a very fine-tuned process of collecting data, iterating, changing, and moving quickly to customer needs and demands:
Per the Facebook Engineering Page:
The best way we have to deal with these surprises is to have engineering and operations teams that are flexible, and can deal with problems quickly. Moving fast also allows us to try a lot more things, to see which ones actually work out in practice. We’ve found that maintaining this flexibility is far more important than any particular technical decision.
The best way we’ve found to keep moving fast is to make lots of small changes and measure what happens with all of them. This doesn’t mean we don’t do big things, it just means that whenever possible we break them into as many distinct parts as possible… Even when we have something that can’t be broken apart in terms of functionality we try to roll it out incrementally. This could mean a few users or a few machines at a time…The thing that’s great about incremental changes is that you know as quickly as possible when something isn’t going as you expected. This ends up, counter-intuitively, making it easier to keep the system stable.
Making lots of small changes and watching what happens only works if you’re actually able to watch what happens. At Facebook we collect an enormous amount of data.
Small, Independent Teams
We have three people working on photos. Each of those three people knows photos inside and out, and can make decisions about it. So when something needs to change in photos they get it done quickly and correctly.
Control and Responsibility
None of the previous principles work without operations and engineering teams that work together seamlessly, and can handle problems together as a team.
The person responsible for something must have control over it.
At Facebook we push code to the site every day, and the person who wrote that code is there to take responsibility for it. Seeing something you created be used by half a billion people is awe inspiring and humbling. Seeing it break is even more humbling. The best way we know of to get great software to these 500 million people is to have a person who understands the importance of what they’re doing make a good decision about something they understand and control.
Sounds like Facebook is doing things right. I guess Zuckerberg knows how to build software better than most, and he begins with allowing his developers to design it.