Spotkanie z inżynierami Googla (+bonus)

18 paź 2011

W czwartek w auli wydziału Biologii UW odbyło się otwarte spotkanie z inżynierami Googla, zorganizowane z okazji otwarcia przez Google nowej placówki w Warszawie. Można było na nim posłuchać m.in. wykładu Joshuy Blocha, który jest prawdziwym jeżeli chodzi Javę. Spotkanie przyciągnęło dosyć dużo ludzi, w większości chyba studentów wydziału MIM UW, prawie wypełniając aulę i zaczęło się od punktu będącego moim zdaniem atrakcją wieczoru.

Joshua na przykładzie małych kawałków kodu, które robią nie do końca to, czego możnaby się po nich spodziewać, pokazywał konstrukcje, które mogą prowadzić do niespodziewanych błędów (zazwyczaj występujące nie tylko w Javie, większość z nich wyglądałaby podobnie w C++, czy nawet pythonie). Było o rzeczach raczej dobrze znanych, np. porównywaniu Stringów, sile wiązania operatorów, cechach charakterystycznych liczb zmiennoprzecinkowych, implicit conversions (niejawnym rzutowaniu?). Pojawiły się też tematy, o których osobiście wcześniej nawet nie myślałem, przykładowo to, że można zapisać dwa proste wyrażenia regularne rozpoznające ten sam język, ale działające ze skrajnie różnymi złożonościami.

Nie będę tu odtwarzał jego wykładu, zwłaszcza że chyba wszystkie zagadki, które zostały na nim przedstawione i sporo więcej można znaleźć w jego książce, którą zresztą bezwstydnie promował;) Chciałbym tylko dać przykład wrednie ułożonych kawałków kodu, z którymi szansa spotkania w życiu nie jest wielka, ale z których można wyciągnąć pewne wnioski. Ostatnia zagadka z jego wykładu:

public class Adder {
  public static void main(String[] args) {
    System.out.println(12345 + 5432l);
    System.out.println(543210 + 012345);
  }
}

…wydawała się stosunkowo łatwa: pierwszy println jest dla odwrócenia uwagi, a w drugim 012345 jest jakąś liczbą (a dokładniej 5349) zapisaną w systemie ósemkowym, więc ten program wypisze:

66666
548559

Otóż nie! Druga liczba w pierwszym println to nie int o wartości 54321, tylko long o wartości 5432, i akurat na slajdach do wykładu było to widać jeszcze gorzej niż na tym blogu;)

Na końcu zostały sformułowane wnioski, jakie należałoby wyciągnąć z wykładu.

  1. Kiedy tworzymy prymityw longa, zapisujemy go w formacie 123L, a nie 123l
  2. Nie wszystko jest takie jak się wydaje, więc warto dokładnie znać sposób działania narzędzi, których używamy.
  3. Warto używać dobrych IDE i narzędzi typu FindBugs.
  4. Warto zainteresować się TDD.
  5. Warto kupować książki autorstwa Blocha ;)

Z tym, że czwarty podpunkt jest moim spostrzeżeniem ;)

 

Kolejnym przemawiającym był Walfredo Cirne, który opowiadał powierzchownie o dobrych praktykach przy projektowaniu i korzystaniu z systemów typu (modne słowa) „cloud” oraz zaskakująco dużo o Agile‘wych technikach programowania – Code review, programowanie w parach, czy właśnie TDD. Dosyć ciekawe ale, zwłaszcza ta pierwsza część, bezpośrednio dotyczyła mniejszej części słuchaczy.

Na koniec Onufry Wojtaszczyk opowiedział o tym jak wygląda jego praca jako inżyniera w Googlu i chyba nie pozostawił żadnych wątpliwości jak bardzo jest nią zachwycony ;)

Jako, że na tym spotkaniu temat rekrutacji do grona Googlerów został poruszony raczej pobieżnie („a Google employee should be smart and get things done”), więc bonusowo infografika o tym, jak dostać pracę w Googlu:

jobs at Google - infographics

Jacek Królikowski


No responses yet. You could be the first!

Leave a Response

Recent Posts

Tag Cloud

Agile autotematyczne bash batch c++ CMake Debian film poklatkowy GNU Octave Google google test grafika Java MIM UW screencast tapeta TDD uczenie maszynowe webcam

Meta

Almost Done

Copyright © Almost Done