An unofficial blog that watches Google's attempts to move your operating system online since 2005. Not affiliated with Google.

Send your tips to gostips@gmail.com.

March 2, 2008

Google's Engineering Philosophy


A slide from a presentation at last year's Google Engineering Open House listed 12 principles that guide programming at Google:

1. All developers work out of a ~single source depot; shared infrastructure!
2. A developer can fix bugs anywhere in the source tree.
3. Building a product takes 3 commands ("get, config, make")
4. Uniform coding style guidelines across company
5. Code reviews mandatory for all checkins
6. Pervasive unit testing, written by developers
7. Unit tests run continuously, email sent on failure
8. Powerful tools, shared company-wide
9. Rapid project cycles; developers change projects often; 20% time
10. Peer-driven review process; flat management structure
11. Transparency into projects, code, process, ideas, etc.
12. Dozens of offices around world => hire best people regardless of location

{ Image from Google Press Center. }

28 comments:

  1. All that is fine and dandy, except if you are a PHP developer. It seems Google will not hire PHP developers, except for working on projects of companies that Google bought and they were already using PHP.

    Not hiring PHP developers is not a Google policy, but rather a consequence of the fact that Google puts arbitrary engineers, often unrelated with the jobs, to interview job candidates.

    It happens that frequently those engineers are Python and Java fanatics that hate PHP as PHP is a threat to jobs of Web developers that prefer Python and Java. Therefore they reject PHP developers without telling them why.

    Google moto may be "don't be evil", but it seems management is not noticing that some Google engineers are being that evil.

    So, if you are a PHP developer dreaming of a Google job, nevermind, chances are that you will never make it.

    ReplyDelete
  2. Looks like someone got turned down for a job @ Google...

    ReplyDelete
  3. The Google ship has sailed. I wouldn't get too upset about not working there now. The time to get in was at least 5 years ago.

    ReplyDelete
  4. that was interresting, thanks.

    ReplyDelete
  5. Not hiring PHP developers seems like a very smart choice if you ask me. PHP is the worst possible choice one can make for web development. It's only viable for small projects, definitely not something like Google. If they let PHP in, they'd be doomed.

    Why bother with PHP when you can choose any language you want to write your server in? Would you write Apache in PHP? Would you write an indexer (spider) in PHP? I wouldn't. Don't forget that Google is not writing HTML templates with < ? ? > entries slapped in them.

    ReplyDelete
  6. What is a small project for you? Facebook? Salesforce? Digg?

    This is just to mention a couple of companies that use PHP extensively and Google wanted to buy them so badly. They just did not buy them because they are not for sale.

    Be serious, you are just exposing your ignorance about what can be done in PHP.

    The problem is not so much about the choice of language, but rather Google engineers that have nothing to do with jobs of which they interview the candidates, are being evil and getting in the way to obstruct Google from hire very capable developers just because they prefer PHP and they prefer Python.

    Several PHP developers that participated in PHP projects for Google Summer of Code applied to Google jobs and were turned out by Google engineers that prefer Python and Java.

    Apparently Google management is not aware of this, but they should because 1/3 of the whole Web sites are run on PHP, and the attitude of these Google engineers will only raise unnecessary Google antipathy.

    Those Google engineers are using Google visibility to push their language preferences. That would not be a problem if this discrimination towards PHP developers did not represent a contradiction with Google spoken lemma: "Don't be evil".

    ReplyDelete
  7. I think it would be slightly daft to employ PHP developers when to my knowledge they don't develop anything in PHP (to my knowledge - it's not something I know for sure at all...)

    It's like saying if you're running job interviews for a cook, turning down the wine maker for a job is "evil". He might be great - at skills you *don't need*.

    ReplyDelete
  8. I am a bit tired of people repeating like paroquets the "don't be evil" mantra. It's a goddamn urban legend about Google, it means nothing, and it's definitely not their motto.

    PHP is very popular, just like Visual Basic is, but that does not make it a good choice for software development.

    ReplyDelete
  9. Seriously, why use PHP? It's slow. It's bugprone. The API is a hideous mess. The syntax is barely better.

    PHP is a terrible language, and when starting a new large-scale project, where portability isn't an issue, there are multiple better options. And if you're not starting a PHP project, why hire people who can only code in PHP?

    For that matter, even if you are, why hire people who can only code in PHP? There's no indication that they'll be able to learn better languages - it's just as bad as hiring a VB programmer.

    There's no reason to start a project in PHP unless you intend for it to run on LAMP servers, and I'm pretty sure that Google is not restricted to LAMP servers internally.

    ReplyDelete
  10. Agreed completely with zorba and dominic.

    To anonymous poster above, Facebook and Digg are minuscule projects when compared to Google. They may be very popular, but that still does not change the fact that the software behind them is in a different (much smaller) league.

    Salesforce's pages all have a .jsp extension. That is not PHP as far as I know, but Java.

    ReplyDelete
  11. hum strange how a list of principle for programming turned into a language flame...

    anyway, afaik google have a fixed list of languages they use and support within the company worldwide
    (you can spot that in different video interview with engineer at google)

    that means even if you're already working at google and want to use PHP, you can't

    not because google or google devs, does not like PHP, but because PHP is not in the list of supported language

    from the top of my head the list should be : C++, Java, Python, JavaScript
    (not 100% sure on that)

    ReplyDelete
  12. Correction, you should read SugarCRM where it was mentioned Salesforce. More clarifications:

    - The PHP developers that were turned out were not applying to PHP jobs. Some of them were post-graduate students that participated in Google Summer of Code in a PHP project, and knows other languages and was willing to work on projects that use those other non-PHP languages.

    - Google has jobs that require PHP . Search for them here.

    http://www.google.com/intl/en/jobs/

    - PHP is not a slow language. PHP is a compiled language, as much as Java, since PHP 4 that was released in May 2000. PHP source code gets compiled into Zend opcodes (equivalent Java bytecodes) before executing. Having a cache extension enabled, makes compiled PHP be read from shared memory, thus avoiding recompilations in subsequent requests. There is also a PHP native compiler that supports JIT if necessary:

    http://www.roadsend.com/

    - PHP can run in J2EE container if necessary so it can integrate well in environments where Java runs. PHP comes distributed to work that way in run under environments distributed by Oracle, IBM, etc.

    - PHP presence on the public Web is huge, over 1/3 of the Web sites (that is like more than 33%). No large company is ignoring PHP. Even Microsoft is working hard on making PHP run well with IIS and SQL server. There is even now a project of PHP to .NET assembly compiler sponsored by Microsoft.

    - Google itself has nothing against PHP. As a matter of fact they sponsor many PHP projects in GSOC and even some Google engineers are cooperating in the Zend PHP framework.

    The discrimination problem is in job interviews . To get in Google developers are often interviewed by Google employees that Python and Java developers unrelated with the actual job. Those "evil" Google employees have been boycotting candidates that like PHP, even though they were willing to work on projects that employ other languages.

    The bottom line is, if you have PHP inclinations, don't bother applying to Google jobs, chances are that you will be discriminated for your PHP inclinations.

    ReplyDelete
  13. I know a lot of languages and the idea that PHP is sub-par is ridiculous.

    The language is great, but it certainly encourages spaghetti programming if the programmer is lousy.

    I great programmer writing in PHP can write great code.

    To be honest, the only server language I don't like is Java. But that's a personal preference. I'd choose C#, Ruby, PHP, or Python over Java.

    I think the smart thing to do is know at least two server languages plus JavaScript, which actually turns out to be a really cool language. Way cooler than many programmers believe it to be.

    ReplyDelete
  14. I do like Google's attitude towards software development. An I envy engineers who work there.

    As many of comments here was about PHP so I would like to add my opinion.

    I work with PHP for 6 months now and I hate it. I hoped that after getting know it closer I found positive aspects of PHP but I do not. I Yes you can write in PHP anything you could write in other dynamic language. In theory. But PHP has accumulated so much cruft that no one wishes (or even can) to get rid of. Why for example are there date_sunset in core build and not in extension? Why are there functions that differ only in suffix -eable and -able? It may seem that all this is kept in name of backwards compatibility but PHP releases break it anyway. But what is _much_ worse cruft is in PHP language itself. AFAIK creator of PHP was very promiscuous about accepting new features to the language. So PHP is littered with hacks and shortcuts that help in one case and messing with in every other. I would not object that you can build large applications with PHP, but I have reasons doubting their quality (although it may be well sufficient for a purpose) and I do believe that effort to build them would be less provided more adequate tools are used.

    Regarding "hostile" engineers there is one important point: a programming language or a platform is not a set of syntactic rules, it is also a culture of programming that is shared by community around it. This is the thing that is almost impossible to change (mr. Time my disagree with me, however). So it in my opinion is not a someone's preferred language that make Google's engineers reject candidates it is programming culture.

    Yes, for instance, I can write a web-server in pure PHP. But once I tried to find one that is already written by someone else and I found only one implementation that consisted of single 3000-lines file with main loop consisting of 2000-lines. Ouch. So add here is freedom of architectural choice. One size fits all? I doubt, even if you consider web-apps only. This is not that I can not write something in PHP it is that it would be much harder.
    And PHP is a decent language for it's purpose. But face it, it has it's own limits.

    ReplyDelete
  15. I would compare PHP to a human spoken language. Tak "English" for instance. It's spoken all over the planet and a lot of people speak it very badly. But does this mean, that the language "English" itself is disqualifying itself as a serious language?

    By the way, my English skills do not say a thing about my programming skills... ;-)

    ReplyDelete
  16. Listen up! PHP Rules the World!!

    We Love PHP and it's the most flexible programing language to date! Its the only language that you can do just about anything (web-based) you want in it.

    The only thing that it's lacking is good support for anonymous functions like in Javascript.

    ReplyDelete
  17. Hello , i would like to ask you how to make this "Random Posts" widget down at your blog.Thank you in advanece.Message me here if you want: spursster@gmail.com

    ReplyDelete
  18. It's "get, make" now. The set of newer tools is replacing the old ones throughout all teams.
    An advantage of using a known set of languages: it allows one small team to write powerful tools that everyone else can use.

    ReplyDelete
    Replies
    1. Its actually "get,config,make"
      http://googlesystem.blogspot.com/2008/03/googles-engineering-philosophy.html

      Delete
  19. re PHP

    Back when I was webmaster number 5or 6 for BT I looked at v1 of PHP I described it then as a language for those who coundn't hack perl.

    Trouble is thers a lot of lower quality php developers out there.

    Funy thing is Google uses mysql a lotwhich is not the best RDBMS (using the term lightly)

    ReplyDelete
  20. Please stop talking about PHP.
    Much rather hear about "Google's Engineering Philosophy". The keyword being philosophy, not programming languages.
    No offense intended :)

    ReplyDelete
  21. Wonderful!!

    Very deep principles!!!
    "5. Code reviews mandatory for all checkins" forces us to make knowledge transfer, to make decomposition our task to little ones, to communicate. Great!

    or

    "11. Transparency into projects, code, process, ideas, etc." - it's very hard work. If this principle is shared beetween all ember of team you can create the dream team. If team has the same idea how to create software, same knowledge about patterns, same understanding of style of thinking you can create great product!

    In conclusion. Here is great principles. You and your team should be high agile person to accept all of that. Each developer should deep understand and follow these ones.

    ReplyDelete
  22. I've heard google will only hire php developers with 1 leg.

    ReplyDelete
  23. well guys, I am not sure why would someone prefer Java over PHP/C++ combination.

    PHP is one of the best scripting language I have come across, Yahoo! has completely migrated from C++ templates to PHP.

    Well Java is good too, but somehow I never appreciated Java developers, they unnecessarily complicate and over engineer things and never think of code efficiency.

    I have been to many companies so far I think its better to start something yourself rather than trying to join some company for some stupid job. Be your own boss, and to start use PHP its a really elegant and very practical language.

    Forget about google, they are not really anything other than their search engine, just that fortunately it milks a lot of money for them :)

    ReplyDelete
  24. i never di like php, i stick with mod_perl on apache, some say its too old but i say with its rich cpan library available freely tis grand..but recently i've been exploring python, whihc google use..not really to my liking..long winded and ugly syntax to the language..

    ReplyDelete
  25. While I don't contain the taking of elicit drugs such as PHP, I do like the sound of the Google programming principles.

    ReplyDelete
  26. Google are not yet in E commerce based applications or Business websites. They are in Search, Social Networking. So if they are not using PHP does not mean that world stop using PHP. Amazon, ebay already using PHP for e commerce. Also I am test engineer and according to me Google search algorithm is not up to the mark.

    For eg. they not give meaningful search results.

    On www.google.co.uk- check autolookup by entering "removing" keyword

    On www.google.co.in- check same.

    Why the results are uncommon?

    ReplyDelete
  27. I don't like PHP a lot. It can't be considered in the World of computer programming languages. I being working in a company as a PHP programmer for more than 6 months now and. I am a PYTHON addict for more than 5 years now and I hope switching from PHP to Python will not be so difficult.

    ReplyDelete

Note: Only a member of this blog may post a comment.