Pora zabrać się za temat który porzuciłem ze względu na nawałnicę pracy. Jak podchodzicie do nauki nowej technologii?
Myślałem, że podsumuje to co opublikowaliście z dopiskiem jak ja to robię, jednak w trakcie tych ostatnich miesięcy dużo się wydarzyło i zaobserwowałem u siebie dwa różne podejścia w zależności od tego czy uczę się całkowicie czegoś nowego (jak język programowania), czy nowej biblioteki/frameworku.
Dziś skoncentruje się na uczeniu nowej biblioteki/framework z założeniem iż znam język programowania w którym mogę pisać by wykorzystać daną bibliotekę. Następnie opiszę to samo dla całkowicie nowego dla mnie języka programowania i zakończę to podsumowaniem.
Więc jeżeli wciąż chcecie wziąć udział i dopisywać swoje podejścia to super! Im więcej tym lepiej!
Dobra, zaczynamy
Odpowiedzi
W jaki sposób wybieracie nową technologię…
Przeważnie przypadkiem, trafiam na nią za pomocą sieci społecznościowych, jakiegoś czatu, czy też dowiaduje się o niej przy piwie. Jeżeli idea mi się spodoba, to zapamiętuje, że chciałbym się jej przyjrzeć i dowiedzieć ciutkę więcej o niej.
To czy w danym momencie wybiorę daną technologię to inna kwestia i ciężko jest mi powiedzieć, głównie uzależnione jest to od czasu jaki posiadam i chęci. Tutaj bywa naprawdę różnie i nie mogę powiedzieć iż jest jakaś lista gdzie pewne elementy na niej przodują a inne nie. Wszystko zależy od danego miejsca i czasu.
Co jest waszym celem …
Nauczenie się czegoś co przyspieszy pracę, da mi możliwość spojrzenia na problem w inny sposób, co także daje możliwość rozwiązania problemu na więcej niż jeden sposób.
Nie uczę się biblioteki bo tak, jeżeli z miejsca zakładam, że jest coś fajnym bajerem, ale nie przyda mi się w najbliższej przyszłości to po prostu olewam dany framework/bibliotekę. Tutaj też wchodzi to co nazywamy ROI. Jeżeli nie widzę zysku z biblioteki nawet jej nie dotykając w najbliższych kilku miesiącach to w nią nie inwestuje. Także nie inwestuje jeżeli wiem, iż mi ona ułatwi pracę, ale spowoduje wysoki Learning Curve dla innych programistów z zespołu, przez co niezależnie jak bardzo by mi się biblioteka podobała nie mogę w nią zainwestować.
Jakie są wasze pierwsze kroki …
Moim pierwszym krokiem w uczeniu się biblioteki jest przeczytanie do czego ona służy i zobaczenie przykładów wraz z kodem – co ona może a czego nie może zrobić. W przypadku framework, przeczytanie krótkiego opisu plus odapalenie sample code i zobaczenie (pobieżne) kodu.
Jeżeli w tych dwóch krokach biblioteka/framework nie zaiskrzy, to ją po prostu olewam, nie zależnie od tego jaka fajna by ona była. Przykładem u mnie jest backbone.js czy spine.js – po przeczytaniu miałem ochotę z tego skorzystać, po odpaleniu sample code i obejrzeniu kodu po prostu mi się to nie podobało, wręcz drażniło. Nie twierdzę tutaj, że te biblioteki są fe, nie, twierdzę tylko, że mnie nie zachwyciły i je olałem.
Jakie są wasze kolejne kroki…
Jeżeli biblioteka/framework trafia już na warsztat to trafia ona od razu na produkcję. Nie znoszę Hello World przy uczeniu się w tym kontekście. Nie mam też wielu dodatkowych swoich projektów, w którym mógłbym daną technologię wykorzystać. Jeżeli mam, to super, będzie ona tam, jeżeli nie mam… to patrzę jaki projekt aktualnie piszę, czy mogę daną technologię tam włożyć (brak ograniczenia ze strony zespołu) i jeżeli tak, to piszę projekt w tej technologii.
Dopiero wtedy zaczynam przygodę z dokumentacją, tutorialami i innymi rzeczami, staram się od razu teorię przekładać na praktykę, pomaga mi to trochę lepiej zrozumieć problem jaki rozwiązuje dana technologia. Oczywiście to nie oznacza, że czytam daną dokumentację tylko raz, nie, raczej parę lub paręnaście razy w zależności od tego kiedy załapie o co chozi :)
Dodatkowo, piszę ucząc się, czyli na pewno projekt jest raz a może dwa razy przepisywany. Ma to swoją cenę, ale przynajmniej wiem, że technologia się nadaje do zadania. Jeżeli w trakcie wyjdzie, że to był kiepski pomysł, biblioteka/framework trafia na śmietnik lub dostaje adnotację: służy do czegoś innego.
W zależności od tego ile czasu zostało albo biorę nową technologię na warsztat albo wykonuje całość w czymś co znam.
Jak długo poświęcacie na to by poznać daną technologię?
Przeważnie jeden projekt, jeżeli się uda i technologia mi się podoba, to biorę ją do następnego projektu. Nigdy nie tworzę dwóch, trzech projektów pod rząd w trzech różnych technologiach. Ma to głównie związek z pracą zespołową i wiem, że dla mnie była by to zabawa, dla Józka też, zaś dla Kmiecia była by to tragedia. Nie ma po co naciskać.
Oczywiście czy technologia zostanie wykorzystana w kolejnym projekcie zależy od typu projektu, przecież na siłę nie będę wrzucał JavaScriptowego DateTimePickera do WPFowej aplikacji…
Kiedy uważacie, że macie już wystarczającą płynność w technologii? …
Ciężko powiedzieć, wszystko zależy od technologii. Jeżeli jest to po prostu mała biblioteka, to przeważnie dość szybko uznaję, że mam płynność w niej. Nie oznacza to, żem guru ale pewnie nie było by problemu bym wprowadzał jakieś bug fixy.
Przy bardziej skomplikowanych bibliotekach/frameworkach uważam, że mam płynność kiedy jestem wstanie komuś odpowiedzieć jak może to zaimplementować z wykorzystaniem tej technologii. I to nie typu: tutaj masz taką metodę, ale po prostu wiem, dokładnie co musi zrobić i dlaczego to będzie dobrym wyjściem moim zdaniem (choć to nie oznacza, że najlepszym, może jest inna biblioteka, która lepiej będzie działała? Albo może w ogóle nie o to chodziło?).
Dla mnie płynność właśnie na tym polega, jeżeli płynność miała by polegać na tym, że jak siądę do kodu, zobaczę przykład z góglu i dopiero zacznę pisać do dla mnie osobiście nie jest już płynność, to wciąż jest proces uczenia się wykorzystania danej technologii.
Kiedy i na jakich warunkach stwierdzacie, że nie ma sensu się dalej uczyć tej technologii bo ona się nie nadaje do niczego?
Już o tym prę razy wspomniałem, kiedy nie spełnia moich oczekiwań (utrudnia a nie ułatwia), kiedy nie widzę ROI oraz kiedy nauka jej dla mnie będzie przyjemna ale potem wprowadzi zakłopotanie dla reszty zespołów. Nie wspominając o tym, że jeżeli ktoś daje przykład wykorzystania a on nie chce się odpalić u mnie i nagle wymaga ode mnie poświęcenia godziny tylko po to bym mógł zobaczyć co technologia potrafi – w takich sytuacjach po prostu ja kompletnie olewam. Nie znoszę tego i jeżeli już coś takiego mi się trafia to sprawdzam czy jest to:
- problem mój bo rzeczywiście biblioteka wymaga czegoś by zadziałała,
- po prostu spartaczona robota twórcy. Jak twórcy i nie ma adnotacji, że mogą być problemy ze względu na x, y, z, to nawet już do niej nigdy nie wrócę.
Dodatkowo, kiedy mnie po prostu ona nie bawi, bo niezależnie jakie są poje powodu do uczenia się technologii to jeżeli ona nie daje mi satysfakcji i po prostu mnie męczy a pisanie w niej jest katorgą to niezależnie jak fajna by była, nie chcę jej znać.
Podsumowanie
To chyba tyle z mojej strony jeżeli chodzi o naukę nowej biblioteki/framework. Jeżeli chcecie się podzielić swoim podejściem to zapraszam do komentowania, jeżeli macie pytania/sugestie lub po prostu uważacie, że moje podejście jest siakie i owakie (włączając w to zajebiste;)) to też zachęcam do komentowania :) W ogóle zachęcam ot co :)
Jeżeli mówimy o własnych projektach to jasne, można sobie pozwolić na wdrożenie czegoś nowego, co jednak nie do końca jest nam znane. Jednak wydaje mi się, że wdrażanie klientowi, czegoś co dogłębniej nie wiemy jak działa, mija się z celem i może okazać się złą drogą.
Więc generalnie ja osobiście raczej preferuję sprawdzone rozwiązania :)
Ciekawy artykuły, będę zaglądał.
Comments are closed.