Pages

6/01/2011

How Facebook does its daily release

If you wonder how facebook "pushes" their code in really time, in fact it releases everyday.

Check out this VDO here from Facebook Engineer  (a talk by Chuck Rossi)
http://www.facebook.com/video/video.php?v=10100259101684977&oid=9445547199

Or you can see Jonathan Rasmusson summarized what on the VDO
http://agilewarrior.wordpress.com/2011/05/28/how-facebook-pushes-new-code-live/

It is a great VDO clip for people who study Software Engineering (esp, Release Engineer)

My additional thought about this is:

      Like from the conclusion of the presentation, a good software is composed from "people", "culture", and "company".  It is really awesome to see the daily pushes actually happening in Facebook, but to think as a small-medium size company, this is really hard to happen. For example, how could you get many people generate lots of feedback in few minutes if your "company" is not big enough.
      "culture" has a good display here. In the VDO, it greatly shows 3 main key concepts of Facebook's developing culture: communication, responsibility and strictly on-time. "Good communication" as they are persistently talk to release engineers, developers know what they working on via IRC, they have "on-call" for supporting any bug. "Responsibility" as they have assigned features/bugs to one individual and made the developers realized their ownership of code, even they have IRC confirm message to ask the developer before they push their code out. It does not only serve mental human need, it is also good for keeping track - tracking down the error code. Lastly "on-time" culture, that they have to push things out every day (although big push is on Tuesday only), I think it's not only help reducing the risk (change often), but also reducing employee confuses by maintaining regular pattern.
Most importantly, the foundation of the company is come from developers (Zuckerberg and friends). Who would know developer behaviors than the developers themselves.
     "people" is the critical ingredient in the software process. From the talk, I imagine how a developer have to face in each day as they have to face new problem/bug/feature everyday, test previous codes, and still have to manage to push it in the trunk before 5pm. That's a tough job. And that requires talented people.

    I have to re-think about what "tool" plays a role in this. Even the presentation on the tools' interfaces are fascinating, and they benefit the process greatly and everyone is researching/building new tools. It does nothing comparing to the management, culture, and people's commitment to their work. I might have to read more on processes, rather than thinking about tools.

 

1 comment: