Kyle Simpson – z pasji do JavaScriptu

We wrześniu 2016 w naszym warszawskim biurze mieliśmy przyjemność gościć Kyle’a Simpsona – znanego na całym świecie autora bestsellerowej serii „You don’t know JS“ (dostępnej w Polsce pod tytułem „Tajniki języka JavaScript“). Wraz z Functionite, zorganizowaliśmy 5-dniowy cykl warsztatów poświęconych zaawansowanym aspektom programowania w JavaScripcie.

Kyle to jednak nie tylko autor książek – jest też świetnym nauczycielem i promotorem JS. Ma niespotykany dar dzielenia się wiedzą. Zapraszamy do lektury wywiadu, w którym opowiada o samorealizacji, podejściu do dydaktyki i specyficznych aspektach nauczania programowania.

[vsw id=”FiAMY9TcpU4″ source=”youtube” width=”750″ height=”355″ autoplay=”no”]

Cześć Kyle! Jak Ci się podoba w Warszawie? Czy to Twoja pierwsza wizyta?

Nie, jestem tu już czwarty raz! Moje poprzednie wizyty były związane z konferencją Front-Trends, którą współorganizował Damian (- Wielgosik, Functionite), więc bywałem tu żeby dać parę wykładów. Miałem okazję trochę pozwiedzać Warszawę – bardzo podobało mi się Stare Miasto, szczególnie, że odbudowano je z taką dokładnością.

You Don’t Know JS w warszawskim biurze GFT

Jesteś znany głównie ze swoich książek i działalności dydaktycznej. Dlaczego zdecydowałeś się na taką ścieżkę? Niewielu zawodowych programistów decyduje się poświęcić dydaktyce na pełny etat.

Zanim zostałem nauczycielem JS, pracowałem jako programista w różnego rodzaju organizacjach – od firm konsultingowych, developerskich, do agencji marketingowych i innych – były to zarówno małe startupy, jak i duże międzynarodowe korporacje. Programowałem więc w wielu różnych miejscach, ale niezależnie od charakteru danej firmy, za każdym razem przyświecał mi częściowo nieuświadomiony cel: chciałem dać coś od siebie. Przede wszystkim chciałem wykorzystać swoją wiedzę o JavaScript. Dlatego miałem tendencję do wybierania takich stanowisk, które pozwalałyby na jakiś zakres nieszablonowego myślenia. Podczas rozmów o pracę często słyszałem: „Mamy tutaj nową inicjatywę i potrzebujemy kogoś, kto ją poprowadzi i wskaże nowy kierunek”… i za każdym razem wydawało się, że będzie to szansa na realizację tego celu – by usprawnić jakiś element układanki i ułatwić pracę innym ludziom w zespole. Szukałem więc tego rodzaju ofert, ale niestety z reguły okazywało się to dość powierzchowne. Najczęściej kończyło się tak, że pracy, która wiązałaby się z takim działaniem było raptem na kilka miesięcy, a później wszystko i tak wracało do normy. Ciężko było więc czerpać autentyczną satysfakcję z pracy – wciąż szukałem czegoś z myślą: pewnego dnia wreszcie znajdę firmę, w której naprawdę będę mógł się zaangażować i wnieść coś od siebie… i w efekcie tych poszukiwań często zmieniałem pracę.

Ten etap mojej kariery programisty trwał latami – w zasadzie jakieś 12 – 13 lat – a frustracja rosła. Pewnego dnia spotkałem Marca Grabanskiego – nie znałem go wtedy, ale on słyszał moje wystąpienia na konferencjach i zapytał: „Hej, z tego co widzę sporo opowiadasz o programowaniu i wychodzi ci to nieźle. Myślałeś kiedyś o tym, żeby zostać nauczycielem?” Odpowiedziałem że istotnie, rozważałem już taką drogę, ale prawdę mówiąc nigdy nie traktowałem jej poważnie – zakładałem, że ciężko byłoby zarobić na utrzymanie jako nauczyciel-programowania. Mimo to, nalegał: „Naprawdę sądzę, że powinieneś poprowadzić warsztat JS”. Marc prowadzi serwis Front End Masters, który jest platformą do warsztatów wideo dla najlepszych nauczycieli w branży. Działa podobnie jak Pluralsight czy Lynda.com, ale jego platforma jest całkowicie poświęcona programowaniu frontendowemu: JavaScript, CSS, HTML – tego rodzaju rzeczom. Postanowiłem to sprawdzić – rzeczywiście wyglądało to nieźle, więc zdecydowałem się poprowadzić warsztat – a nigdy wcześniej tego nie robiłem. To był jednodniowy kurs i stresowałem się jak to się właściwie potoczy gdy już stanę przed ludźmi – czy będę miał wystarczająco dużo do przekazania, żeby utrzymać ich uwagę przez cały dzień? Byłem przerażony! Do tej pory dawałem wykłady trwające godzinę, podczas gdy ten miał trwać osiem!

Pamiętam ten moment bardzo dokładnie – to było 4 lata temu, ale wydaje się, jakby to było wczoraj: stoję przed grupą ludzi, którzy pracują nad ćwiczeniem, które zaprezentowałem – sprawdzam na jakim etapie slajdów jesteśmy, ile zostało czasu… i wtedy zrozumiałem, że jesteśmy dokładnie tam, gdzie powinniśmy być – przed nami jest jeszcze sporo materiału i wygląda na to, że ludzie są zadowoleni i zadają dobre pytania. I wtedy zdałem sobie sprawę jak wiele satysfakcji daje to uczucie – na pewno znacznie więcej niż którekolwiek z moich dotychczasowych zajęć! Zacząłem się nad tym poważnie zastanawiać i powoli pojąłem dlaczego moje poprzednie zajęcia powodowały we mnie tyle frustracji. Zrozumiałem, że prawdziwą przyczyną mojego niezadowolenia był fakt, że od początku chciałem osiągnąć konkretny cel, tyle, że podchodziłem do niego w nieadekwatny sposób. Mówiłem: „zatrudnijcie mnie jako waszego super-ninja-architekta, a ja wszystko naprawię” – i to było błędne  ujęcie sprawy, ponieważ tak naprawdę powinienem był mówić: „pozwólcie mi uczyć”. Dlatego żałuję tych 13 lat frustracji zawodowej – że tyle czasu zajęło mi zrozumienie do czego tak naprawdę mam predyspozycje – czyli do wyjaśniania trudnych zagadnień innym ludziom.

To był dzień, kiedy popatrzyłem na publiczność i pomyślałem: „To jest to!” Od tamtego momentu stało się jasne, że będę uczył więcej. Okazało się też, że nasza branża pozwala zarobić na nauczaniu eksperckim – a w moim konkretnym wypadku lepiej, niż gdy byłem developerem. W ten sposób zrozumiałem co jest moim prawdziwym powołaniem.

JS Afterparty by GFT & Functionite

Wygląda na to, że jesteś raczej typem klasycznego nauczyciela, niż zawodowym programistą!

Zgadza się: chciałem dać coś od siebie i znalazłem taką możliwość.

Jak wobec tego wygląda typowy dzień w życiu pełnoetatowego nauczyciela programowania? Pytam, ponieważ gdy myślimy o nauczycielach, z reguły kojarzymy ich ze środowiskiem akademickim lub szkolnym. Czy masz jakieś związki z uczelniami?

Nie, a przynajmniej nie w tradycyjnym sensie pracy akademickiej. Mam trochę doświadczeń ze światem akademickim, a konkretnie kilku wykładowców używało moich książek o JS jako podręczników do zajęć. Była na tym polu jakaś współpraca – udzieliłem kilku wykładów gościnnych podczas ich zajęć, ale to raczej jednorazowe rzeczy.

Tak więc pracuję niezależnie – prowadzę własną działalność i bardzo dużo podróżuję po całym świecie, przeważnie prowadząc szkolenia dla firm. Typowe szkolenie trwa z reguły od 3 do 5 dni – prowadzę je dla developerów danej firmy, a potem lecę dalej i robię kolejne. Ogółem wydaje mi się, że takie podróże pochłaniają jakieś 75% mojego czasu pracy – ale z tym bywa różnie, bo czasem zdarza się, że podróżuję non-stop przez 6 czy 8 tygodni, a potem spędzam cały miesiąc w domu w USA. I to mi się podoba, ponieważ mam rodzinę – mam żonę i dwójkę dzieci, więc dobrze jest pobyć dłużej w domu po długotrwałych wyjazdach.

Oczywiście tak intensywne podróżowanie jest męczące – bez dwóch zdań. Kiedy podróżuję, praktycznie non stop prowadzę warsztaty. Co w zasadzie daje pełne, 8-godzinne dni pracy jako nauczyciel JS. Kiedy jestem w domu wolę się zrelaksować i raczej nigdzie się nie ruszam. Zajmuje się wtedy różnymi rzeczami typu pisanie – cały czas pracuję nad nowymi książkami. Albo przygotowuję się do kolejnej „trasy”. Ogólnie rzecz biorąc, moja działalność wymaga sporo dodatkowej organizacji – załatwiania nowych klientów i tak dalej. Z rzeczy, którymi ostatnio się zajmuję – pracuję nad startupem, którego celem jest stworzenie platformy softwarowej, która ułatwiłaby prowadzenie zajęć takich jak moje. Tak z grubsza wygląda moja praca.

Jeśli chodzi o pisanie książek – a masz na tym polu sporo do powiedzenia: oprogramowanie to coś, co naturalnie podlega nieustannym zmianom, do tego zachodzącym w szybkim tempie. Biorąc pod uwagę format drukowanej książki o programowaniu – jak radzisz sobie z ograniczeniami wynikającymi z tej tradycyjnej metody? Istnieje wiele nowych form publikacji, a mimo to drukowane książki trzymają się nieźle.

Dobre pytanie. Odpowiem na dwa sposoby. Po pierwsze: tematy, na których się skupiam, są bardziej stabilne. Nie piszę i nie prowadzę zajęć o każdym nowym trendzie ostatniego tygodnia, o którym za tydzień wszyscy i tak zapomną. Skupiam się raczej na fundamentalnych mechanizmach JavaScriptu, a te nie uległy specjalnym zmianom przez 21 lat istnienia JS. Toteż gdy piszę lub uczę tych rzeczy, to są to tematy o dużej żywotności, które nie ulegną zmianom w najbliższej przyszłości – o ile w ogóle to nastąpi. I to jest dobre – tematyka, którą wybieram pozostanie aktualna przez dłuższy czas.

Druga odpowiedź – być może ciekawsza – to kwestia technologiczna. Zdecydowałem się publikować wszystkie moje książki na otwartej platformie jaką jest GitHub. Wiele osób czyta moje teksty na GitHubie, wobec czego za każdym razem gdy dokonuje aktualizacji, mogę po prostu zmodyfikować pliki i wprowadzić zmiany.

To prawda, że O’Reilly publikuje moje książki w formie ebooków i książek drukowanych. Ale nawet w O’Reilly mamy możliwość zebrania większej liczby zmian i wypuszczenia drugiej edycji danej książki. Tak się składa, że w tym momencie idą już pewne prace nad odświeżeniem serii „You don’t know JS”, chcemy opublikować drugą edycję i uaktualnić pewne rzeczy które uległy zmianom bądź poprawić kilka błędów tu i tam. 

Na swoim kanale na twitterze umieściłeś ankietę z pytaniem czy powinieneś napisać książkę, która byłaby finansowana na zasadzie crowdsourcingu. Czy próbowałeś już wcześniej takich metod?

Seria „You don’t know JS” to na ten moment 6 książek i 1100 stron tekstu – czyli znacznie więcej niż planowałem początkowo. Wszystko zaczęło się jako 3 bardzo krótkie – 50-stronicowe – publikacje. I tak naprawdę nie wiedziałem czy ludzie będą chcieli to czytać. Chciałem napisać te książki, ale nie chciałem wkładać w to dużo wysiłku, jeśli ostatecznie przeczytałoby je 5 osób. Jak w takim razie zmierzyć potencjalne zainteresowanie?  Postanowiłem użyć do tego celu Kickstartera. Moim celem nie było zarobienie pieniędzy – oczywiście potrzebujesz pewnej kwoty, żeby wydać książkę, ale tak naprawdę nie zależało mi na sfinansowaniu tego pomysłu. Chodziło mi o konkretną informację: ilu będzie wspierających? Jeśli udałoby się uzyskać określoną liczbę takich osób, to mógłbym mieć pewność, że istnieje sensowne grono czytelników, którzy kupiliby moje ks
iążki.

Miałem taką szaloną myśl, że mogę dotrzeć do 5% moich potencjalnych odbiorców za pomocą samego tweetowania, wystąpień na konferencjach itd. Zależnie od tego jaka by to miała być liczba – jeśli stanowiła ona 5% wszystkich odbiorców – to czy było warto? Miałem taką liczbę w głowie – liczbę wspierających, którą chciałem osiągnąć żeby uznać, że pisanie książek jest sensowne. Tak więc uruchomiłem kampanię na Kickstarterze, i początkowo szła trochę powoli, stopniowo zdobywając rozpęd. Aż okazało się, że jeszcze nie doszliśmy do połowy, a założona przeze mnie liczba już została przekroczona.  Wtedy wiedziałem, że nawet jeśli nie sfinansuje w ten sposób publikacji książek, ani nawet nie zarobię na całej akcji choćby dolara – to przynajmniej mam pewność, że zapotrzebowanie istnieje.  Całe szczęście i tak udało się zebrać trochę pieniędzy. Ale wiesz, bądźmy szczerzy, książek nie pisze się po to żeby zarabiać pieniądze.

Kyle Simpson w GFT Warszawa

No chyba, że jesteś Stephenem Kingiem.

Oj tak, ale ten gość napisał pewnie jakiś tysiąc książek i wreszcie zarabia! Tak czy inaczej, mam teraz nieco inną perspektywę, ponieważ udało mi się wypracować pozycję autorytetu w tej dziedzinie. Ludziom podoba się to co robię – książki sprzedają się naprawdę dobrze – znacznie lepiej niż przewidywałem. I to jest całkiem miłe. Co do ankiety na twitterze – tutaj chodziło o tematy, których jednocześnie uczę podczas warsztatów, tj. programowanie funkcyjne dla JavaScriptu. Z zainteresowania warsztatami wynika, że istnieje już jakieś zapotrzebowanie na taką książkę. Moje wątpliwości dotyczyły tego czy znajdzie się ktoś, kto chciałby wesprzeć tego rodzaju kampanie zamiast po prostu kupić gotową książkę. Czy ludzie chcą zapłacić z góry i zarezerwować dla siebie egzemplarz, czy raczej poczekają na skończony produkt – taki był cel tej ankiety. Spodziewałem się, że większość ludzi będzie wolała kupić gotową książkę, ale okazuje się, że więcej było odpowiedzi mówiących „tak, chciałbym mieć swój udział w realizacji tego pomysłu”.

Wspomniałeś wcześniej, że podczas pracy jako tradycyjny developer byłeś w stanie dostrzec wewnątrz firm chęć propagowania wiedzy, ale że często okazywała się raczej powierzchowna. Czy są wg Ciebie sposoby na to, by firmy poprawiły coś w tym zakresie, tak by ich działania szkoleniowe były bardziej autentyczne i skutkowały bardziej trwałymi efektami?

Łatwa odpowiedź na to pytanie brzmi tak: dla mnie, jako outsidera, znacznie łatwiej jest przyjść do organizacji i promować pewne rzeczy w kontekście  „hej, płacicie mi żebym Was uczył, więc po prostu dzielę się moimi opiniami”. Jest to dla mnie, jako nauczyciela, bardziej naturalny kanał komunikacji. Oczywiście firmy mają swoje własne struktury, zobowiązania wobec klientów i inne tego rodzaju kwestie – i to wszystko może wpływać na to na czym koncentrują się w edukowaniu własnych pracowników.

Ale to nie znaczy, że wprowadzenie zmian jest niemożliwe. Powiem tak – w szerszym sensie Twojego pytania – czy firmy są w stanie zmieniać się w tym zakresie samodzielnie? Tak naprawdę to jest coś, do czego chciałbym inspirować jako nauczyciel. Każdemu uczestnikowi moich warsztatów mówię, że najlepszą metodą na nauczenie się czegoś jest zwrócenie się do innych i dzielenie się wiedzą. Tak więc moją prawdziwą ambicją jest rozpowszechnienie pewnej postawy. Sytuacja, w której ludzie przeczytają moją książkę, obejrzą wideo albo przyjdą na warsztaty – krótko mówiąc, zainspiruje ich to co mam do przekazania, i zamiast pytać mnie co powinni zrobić, pójdą do swoich znajomych i opowiedzą czego się nauczyli. W ten sposób będą mieli podobną siłę oddziaływania – a tak naprawdę jeszcze większą bo ta inicjatywa będzie pochodzić od nich samych, wewnątrz organizacji! A przy okazji sami będą uczyć się z lepszym skutkiem. I to jest moje kryterium sukcesu – w ten sposób osiągam swój cel, gdy motywuję ludzi do uczenia innych.

Na zakończenie – jakie są Twoje wrażenia z naszych wspólnych warsztatów?

Było super! To co najbardziej mi się podoba, to że uczestnicy zadają naprawdę wymagające pytania – uwielbiam to jako nauczyciel. Gdy prowadzę zajęcia, najlepszym wyznacznikiem tego, czy sprawdzam się w tej roli, są zadawane pytania. Jeśli słyszę pytania, które ledwie ślizgają się po powierzchni, albo nie są specjalnie związane z tematem, to wiem, że nie do końca rozumiem się z publicznością – może idę zbyt szybko, a może zajęcia są zbyt podstawowe – w każdym razie coś jest nie tak. Ale jeśli na przykład ktoś zadaje pytanie o rzecz, o której zamierzałem powiedzieć za chwilę, i generalnie uczestnicy ciągle zdają się być o pół kroku przede mną – wtedy wiem, że są zaangażowani, że są zainteresowani i krytycznie analizują treść warsztatu – i to jest ten optymalny stan. Miałem sporo tego rodzaju doświadczeń podczas tych warsztatów, dlatego sądzę, że były naprawdę udane. Bawiłem się świetnie!

Cieszymy się i dziękujemy za Twój czas. Do zobaczenia wkrótce na konferencjach i warsztatach!

Świetnie, do usług! Dzięki!