(Brawa)
Witam!
Nazywam się Marcin Kawalerowicz i przyszedłem tutaj, żeby opowiedzieć
o najnudniejszym zawodzie świata.
Przynajmniej według Hollywood.
Czy zastanawialiście się kiedyś, jaki to jest ten najnudniejszy zawód?
Może księgowy?
A może sprzątaczka?
A może jednak urzędnik w banku?
A może kurier przynoszący przesyłki?
Jak myślicie?
No, nie!
Przynajmniej nie według Hollywood.
Według Hollywood księgowy to bardzo ciekawy zawód.
Na tyle, że głównym bohaterem filmu "Skazani na Shawshank",
jednego z najlepszych filmów Hollywood, jest księgowy.
Internetowa baza danych filmów znajduje 197 postaci księgowych
w różnych filmach.
Dobrze, a sprzątaczka?
Sprzątaczka jest na tyle ciekawym zawodem,
żeby poświęcić mu 77 filmów.
Trochę sprzątaczką, trochę nianią był nieodżałowany Robin Williams
w filmie "Pani Doubtfire".
A co z urzędnikiem bankowym?
A może rekiny finansjery, bankierzy inwestycyjni w filmie "Wall Street",
grani przez Michaela Douglasa i Charliego Sheena?
A kurier?
Kurierem był główny bohater filmu "Cast Away - poza światem",
grany przez Toma Hanksa.
A policjanci i złodzieje?
Kowboje i artyści?
Tak à propos, 200 to maksymalna liczba trafień zwracana
przez internetową bazę danych filmów.
Podobnie jest ze sportowcami, pilotami i lekarzami.
Może Doktor No nie był lekarzem, ale jakimś tam doktorem był.
Popatrzmy na prawników.
199.
Dziennikarzy - 198.
Strażaków - 200.
Detektywów - 200.
Magików - 74.
Cyrkowców - 111.
"La Strada" może nie jest hollywoodzka,
ale na pewno o cyrkowcach.
To jak myślicie, jaki jest najnudniejszy zawód świata według Hollywood?
Najnudniejszym zawodem świata według Hollywood
jest programista komputerowy.
Internetowa baza danych filmów zwraca trzy trafienia.
Trzy trafienia tego typu.
Dobrze, powiecie, może w różnych filmach znajdziemy postaci hakerów
włamujących się do systemów Jurassic Park jak na załączonym obrazku.
Ale są to najczęściej postaci stanowiące tło dla o wiele ważniejszych postaci,
typu wojownik ninja, kucharz albo inny zbawca ludzkości.
Programista z pewnością jest jednym
z najnudniejszych zawodów świata według Hollywood.
Ja jestem programistą i od dziesięciu lat tworzę oprogramowanie.
Przyszedłem tutaj, żeby udowodnić, że Hollywood się myli.
Mimo że faktycznie większość dnia spędzam
w znanej wam pewnie pozycji odwróconej ewolucji.
Zgarbiony nad klawiaturą i wpatrzony w ekran.
W takiej pozycji złapała mnie kiedyś
moja w tej chwili 5-letnia córka, Zosia.
Przyszła i zapytała:
"Tato, mama uczy dzieci liczyć, a ty co robisz?".
Oderwałem ręce od klawiatury, zrzuciłem środowisko programowania
i pocztę elektroniczną do paska.
Odwróciłem się do Zosi i powiedziałem:
"Wiesz Zosiu... Yyy..."
No tak, kolejna "mission impossible" od mojej żony, nauczycielki matematyki.
Ona po prostu uczy dzieci liczyć w szkole,
a jak ja mam opowiedzieć 5-letniej dziewczynce, co robię ja, programista?
Zebrałem się w sobie i powiedziałem:
"Wiesz Zosiu, rozmawiam z różnymi ludźmi
i uczę komputery robić to, co oni chcą."
"Rozmawiasz i uczysz komputery?" - zdziwiła się Zosia.
"Tak Zosiu, rozmawiam.
Ci ludzie mówią mi, czego chcieliby od komputerów, a ja uczę komputer
robić to, czego oni ode mnie chcieli."
"Aha!" - myślę, że udało mi się wtedy.
Przez chwilę napawałem się tą parafrazą mojego zawodu, ale zaraz dotarło do mnie
coś bardzo ważnego: "Rozmawiam i uczę komputery.".
Tak właściwie, po 10 latach w branży, to czy ja w ogóle coś jeszcze programuję?
Czy cały czas wiszę na telefonie, uczestniczę w różnych warsztatach,
omawiając szczegóły implementacyjne z klientami,
rozmawiam z moimi programistami, żeby przekazać im zapotrzebowania,
bądź przelewam wszystko na "papier" w jakimś edytorze tekstów.
Czy ja jeszcze coś programuję, będąc programistą?
Otóż, pierwsze symptomy problemów w tym obszarze pojawiły się dość dawno.
W 2008 roku, będąc jeszcze na etacie programisty,
zainstalowałem sobie program szpiegujący na komputerze.
Program ten zapisuje statystyki na temat oprogramowania, w którym najczęściej
przebywam podczas dnia pracy.
Tutaj widzicie tygodniową statystykę z 2008 roku.
Już wtedy większość czasu, bo 9 godzin,
spędzałem w poczcie elektronicznej.
Dopiero na drugim miejscu, bo prawie 7 godzin, był czas
w zintegrowanym środowisku programowania.
Później jeszcze tworzyłem prezentacje bądź prezentowałem.
Resztę czasu spędzałem w innym oprogramowaniu
lub zupełnie poza komputerem.
Ostatni tydzień wyglądał nie lepiej.
25% czasu spędziłem komunikując się pocztą elektroniczną, komunikacją głosową.
Około 30% czasu spędziłem w różnego rodzaju narzędziach,
a tylko 10% w środowisku programowania.
Podejrzewam, że i tak przeglądałem wtedy kod wpisany przez moich programistów,
a nie sam go tworzyłem.
W dziedzinie inżynierii oprogramowania istnieje kilka kanonicznych dzieł.
Jednym z nich jest "Mityczny osobomiesiąc" autorstwa Fredericka Brooksa.
Przytacza on kilka badań, z których jasno wynika,
że przeciętny programista pisze 10 linii kodu dziennie.
10 linii kodu!
Dla początkującego adepta sztuki może być to szokująca liczba.
Być może różni się ona trochę w przypadku nowego projektu,
który rozpoczynamy, typu "green field",
czyli mamy taką zieloną łączkę, którą możemy zaorać naszym kodem.
Piszemy wtedy, być może, więcej linii.
Jeżeli mamy projekt typu "brown field",
czyli mamy brązowe pole zaorane kodem,
a więc prowadzimy projekt, który żyje od dłuższego czasu,
to tych linii może być zdecydowanie mniej.
Ale co się dzieje w czasie, kiedy przeciętny inżynier oprogramowania
nie tworzy kodu źródłowego?
Powoli staje się wdrożeniowcem, specjalistą od instalacji
swojego oprogramowania, od rozmów z klientem o nowych funkcjonalnościach,
od wprowadzania poprawek w oprogramowaniu,
od wypuszczania nowych wersji i tak dalej.
Staje się wdrożeniowcem.
Pamiętam jak dziś moje pierwsze wdrożenie.
Była to aplikacja webowa.
Instalację trzeba było przeprowadzić na serwerze u klienta.
Późna jesień, gdzieś w górach Szwajcarii.
A warunki bardzo partyzanckie jak na szwajcarski bank,
bo ja z pendrivem przenoszę skompilowane na moim laptopie
oprogramowanie do serwerowni klienta i fizycznie wgrywam je na jeden
ze stojących tam serwerów.
Uruchamiam.
Nie działa!
Co się dzieje?
Zdenerwowany wracam do laptopa i szukam błędu, poprawiam, wgrywam na pendrive.
Biegnę z powrotem do serwerowni, gdzie panuje dosyć arktyczna atmosfera,
bo nie wiem czy wiecie, ale serwery muszą mieć bardzo niską temperaturę.
Wgrywam to oprogramowanie i jest lepiej, ale nie idealnie,
więc wracam do laptopa.
Wewnątrz jest cieplutko, żeby zagłuszyć jesienną słotę na zewnątrz.
Kolejne kilka godzin spędzam, kursując tam i z powrotem.
I w końcu udaje mi się, stwierdzam zachrypnięty.
A następny dzień mam wysoką gorączkę, a kolejny tydzień spędzam
przeziębiony w łóżku.
To był punkt zwrotny w mojej karierze.
Zrozumiałem wtedy, że żeby być najlepszym
w tej branży, nie można być tylko i wyłącznie kowbojem klawiatury.
Potrzebne jest coś więcej.
Coś, co pozwoli uniknąć konieczności
naklejania na nasze oprogramowania naklejki "works on my machine",
czyli "u mnie działa".
To jest dość częsty problem w naszej branży, gdzie oprogramowanie ze względu
na różne zależności sprzętowe lub programowe
działa na komputerze programisty, ale błędnie lub wcale u klienta.
Jak nie trudno sobie wyobrazić, jest to zdecydowanie niepożądane.
Tak być nie może!
Wziąłem się więc ostro do pracy, zautomatyzowałem całe środowisko
budowy naszego oprogramowania, wprowadziłem zasady
automatycznego testowania, statycznej analizy kodu i tak dalej.
Nawet napisałem o tym książkę.
Mniej więcej wtedy dowiedziałem się,
że właściwie to ja już nie jestem programistą, ale DevOps-em.
Mniej więcej wtedy ukuto ten nowy termin.
To skrót od Dev, czyli Development, czyli programowanie,
i Ops, czyli Operations, a więc wszystko związane z IT.
Serwery, ale nie tylko.
Kontakty z klientem.
Niektórzy dołączają aspekty kontroli jakości,
czyli bardzo szeroko pojęte testy.
"No, dobrze." - pomyślałem - "Nie jestem sam.".
Inni też dostrzegli tego typu problemy.
Zacząłem pracować nad umiejętnościami miękkimi.
W naszej branży, tak jak w innych, dzielimy umiejętności na twarde,
czyli związane z programowaniem, językami programowania, strukturami
danych, semaforami, kolejkami i tak dalej,
i miękkie, czyli związane z dyskusją, mediacją, rozmowami z klientem,
ustalaniem zapotrzebowania,
dbaniem, żeby zapotrzebowanie nie zmieniało się zbyt często,
co może prowadzić do konfliktów w projekcie,
a projekt musi trwać i dążyć do sukcesu.
Coraz więcej obcowałem z ludźmi,
których czasami ciężko zrozumieć.
Ja komputery rozumiem od podszewki, od poziomu tranzystora
budującego bramkę logiczną.
I to daje mi pewność, a praca z ludźmi jest przygodą samą w sobie.
Jak widzicie, dla mnie bycie programistą wcale nie jest nudnym zawodem.
Jest raczej pasmem wyzwań i przygód jak z najlepszego hollywoodzkiego filmu!
Teraz, po dziesięciu latach w zawodzie, prowadząc firmę programistyczną
tutaj w Opolu, myślę, że wiem, co tworzy świetnego programistę.
Wbrew pozorom nie jest to tylko umysł jak żyleta, miłość do komputerów
i zamiłowanie do algorytmiki.
To też jest potrzebne, ale żeby wznieść się na wyżyny tego zawodu
trzeba uświadomić sobie też, że w świecie komputerów, jak i codziennym życiu,
to człowiek jest najważniejszy!
Dziękuję bardzo!
(Brawa)