(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)