Am
22. Oktober 2007 hatte ich dank der Mitgliedschaft bei Internet-Briefing die Möglichkeit
bei Google Zürich einige interessante Einblicke in die "Google Engineering
Culture" zur erhalten.
Nach
unterzeichneter Geheimhaltung gab es im ersten Teil eine Führung durch das unauffällige,
6stöckige Gebäude an der Freigutstrasse. Im Inneren des Gebäudes sieht es etwas
wie in einer Studentenunterkunft aus: Diverse Sofas, Küche, Snackecken mit
einer Unmenge von Brotsorten (!) und diversen Süssigkeiten und Getränken,
Billardtisch, Töggelikasten... also alles was man zu exzellenten Entwicklung
von Software so braucht :-). In den Gängen (und vereinzelt gar am konzentriert
arbeiten) sind Leute aus über 40 Ländern bei Google Schweiz tätig, die meisten
im Alter zwischen 30 - 40 Jahren.
Die
sichtbare Hardware war sehr individuell. Augenfällig die oft vorhandenen 2
grossen Flachbildschirme von Dell (je nach Bedürfnis horizontal oder vertikal
angeordnet). Ebenfalls interessant die (Video-) Konferenzräume mit den immensen
Flachbildschirmen - bei Google ein sehr beliebtes und nützliches Mittel zur weltweiten
Gruppenkommunikation. Der eine Flachbildschirm zeigt den Sitzungstisch und
Teilnehmer des eigenen Raums, der andere Flachbildschirm die Gruppe im
entfernten Raum. Diese Anordnung vermittelt das Gefühl, gemeinsam im gleichen
Raum zu sitzen. Wirklich erstaunlich.
Nach
der Führung stellte Bernhard Seefeld
(Technical Lead Developer) im Dachgeschoss verschiedene persönliche
Eindrücke von Google vor. Google setzt sehr stark auf den Engineering Ansatz
(„Google counts in numbers"), kennt praktisch keine Manager ohne technisch
guten Background. Es ist auch möglich, auf technischer Basis „Karriere zu
machen" (Principal, Distinguish...), ohne direkte Führung zu übernehmen.
Weiter
sind die Hierarchien sehr flach - bis zu den Gründern Larry Page und Sergey
Brin sind es wenige Stufen. Ebenso überraschend (auch für Bernhard Seefeld
selber) ist die Tatsache, wie einfach es ist, als Google Mitarbeiter einen
persönlichen Termin mit Larry oder Sergey zu bekommen.
Der
Wechsel von Personen in andere Teams und Projekte ist einfach möglich, es gibt
keine zwanghafte längerfristige Bindung an bestimmte Themen - Selbstverantwortung
und Autonomie sind wichtig. Es scheint fast so, als könne jeder alles etwas -
nichts ist unmöglich. Qualifikationsgespräche in klassischer Form gibt es nicht,
es wir auf 360°
Feedbacks gesetzt.
Ebenfalls
stellte Bernhard die 10 Prinzipien bei der Google Software Entwicklung vor:
1. Es
gibt nur ein zentrales Source Code Repository (Perforce)
2. Jeder
hat vollen Zugriff und kann jeden Code anpassen
3. Get,
Configure, Make - Jeder kann jedes Projekt
4. Es
gibt weltweit gültige Coding-Standards (Adaption von Lint)
5. Vor
dem Check-In gibt es zwingende Code Reviews
6. Überall
gibt es Unit-Testing (Code-Coverage bei über 90%, Tool Selenium)
7. Automatisches
Ausführen der Unit Test und Informieren bei Fehlern
8. Viele
interne, selber entwickelte, firmenweite Tools
9. Kurze Projektphasen (Project Cycles) unterstützen
die schnelle Entwicklung
10. Peer
Reviews
Ebenfalls lesenswert:
Our Philosophy - Ten things Google
has found to be true
Allgemein
wird die Entwicklung von den Produkten sehr von den Engineers selbst vorangetrieben,
die Team (mit 3-5 Engineers) entscheiden grundsätzlich selbst was Sie tun - in
wenigen Fällen kommt der Produktmanager zum Einsatz. Die 20% Regel (sprich,
jeder Engineer kann 20% seiner Arbeitszeit an irgendwas Arbeiten, was „in
irgend einer Form mit Google in Verbindung gesetzt werden kann") fördert scheinbar die Kreativität.