W niniejszym artykule chciałbym przyjrzeć się jednej z kluczowych kwestii warunkujących udane szkolenie, a mianowicie "celom szkolenia". Wydawać by się mogło: banał, przecież każdy wie że odbycie szkolenia --- to jest przesiedzenie na sali w miłej atmosferze i przy dobrej kawie --- nie jest celem samym w sobie, a może przynajmniej nie jedynym i głównym celem (-;
Dobrze postawione cele szkolenia to gwarancja korzyści
Z moich doświadczeń w analizie potrzeb szkoleniowych wynika, iż poziom uświadomienia sobie własnych celów szkolenia uczestnika czy zespołu jest niekiedy zbyt powierzchowny. Często na pytanie co firma/uczestnik chciałby, żeby się znalazło w programie szkolenia uzyskamy całą listę potrzeb w stylu: "chcemy, żeby były poruszone zaawansowane, problemy classloadingu" itp., zaś pytanie: "po co Ci wogóle to szkolenie" powoduje większy kłopot w odpowiedzi, podobnie jak pytanie: "jak mam rozumieć Twoje oczekiwanie, że chcesz poznać framework X".
Tymczasem dobrze zdefiniowany cel szkolenia jest warunkiem tego by szkolenie przyniosło oczekiwane korzyści po jego ukończeniu oraz by uczestnicy byli w jego trakcie odpowiednio zmotywowani, co znowu pozytywnie wpłynie na wspomniane korzyści.
Osobnym tematem jest weryfikacja uzyskania tych korzyści, czyli ocena jakości szkolenia, ale jest to temat na odrębny artykuł.
Cele organizacji, a cele osobiste w szkoleniach otwartych i dedykowanych
Na tym etapie warto zauważyć, iż nieco odrębną kwestią są cele organizacji/zespołu oraz indywidualne cele stawiane sobie przez każdego uczestnika z osobna. Różnica jest dwojaka. Po pierwsze cele te mogą być ze sobą (w skrajnym wypadku) sprzeczne --- tj. firma oczekuje że zespół pozna framework X, tymczasem uczestnik chciałby znać framework Z. Przede wszystkim jednak inaczej definiowane są korzyści: albo z perspektywy organizacji albo pojedynczej osoby.
Z tych powodów dość odmienne są od siebie szkolenia dedykowane, tj. skierowane do konkretnej zamkniętej grupy uczestników (najczęściej z tego samego zespołu lub członków różnych zespołów tej samej firmy) i szkolenia otwarte, czyli te, na które zapisują się pojedyncze osoby z różnych firm.
W przypadku szkoleń dedykowanych, na długo przed szkoleniem trener w rozmowie osobistej stara się poprawnie zidentyfikować i nazwać cele organizacyjne, a następnie zestawia je wstępnie z celami i doświadczeniem uczestników, co prowadzi niekiedy do wspólnego wypracowania skorygowanych celów organizacyjnych (w przypadku gdy cele te nie są ze sobą spójne), a czasami jedynie do uwzględnienia celów osobistych, wynikających na przykład z roznic w stażu pracy, czy doswiadczeniu poszczegolnych uczestników. Finalizacja procesu następuje na początku szkolenia, gdzie cele te są jeszcze raz nazwane i ew. uzupełnione przez uczestników.
Jak widać ogromną rolę w zdefiniowaniu celów szkoleniowych odgrywa trener --- zarówno podczas analizy potrzeb przed szkoleniem dedykowanym, jak i już na sali szkoleniowej. Przestrzeń do zbudowania harmonii między celeami osobistymi i organizacyjnymi jest dla trenera istotnie większa w przypadku szkoleń dedykowanych.
W przypadku szkoleń otwartych jest to trudniejsze. Uczestnik jest z reguły wydelegowany przez firmę, która również ma oczekiwania na poziomie organizacyjnym, jednak w związku z tym, że często będzie on jedynym uczestnikiem z tej firmy jako filar przyjmuje się cele szkolenia wpisane w ramowy program szkolenia. Cele te dalej konfronotwane są z osobistymi celami uczestnika, które powinny, ale nie muszą w pełni odzwiercielać celów organizacji.
Dlatego też umiejętność zbudowania własnych oczekiwań przez każego uczestnika i zestawienia ich z tym, co proponuje konkretne szkolenie jest kluczowa.
Cele organizacji
Poruszone będą one w osobnym artykule, wraz z tematem badania efektywności szkoleń. Dla porządku jednak wypada powiedzieć iż cele organizacyjne są z reguły bardziej namacalne i łatwiej definiowalne. Klienci z reguły realizują szkolenia z następujących powodów:
- chcą rzetelnie wykształcić zespół w umiejętności programowania w określonym zbiorze technologii, ponieważ planują start projektu lub migrację technologii;
- chcą rozwiązać isntniejące problemy we własnym projekcie;
- chcą dokonać researchu w wybranej/kilku technologiach, pod kątem potencjalnego użycia ich we własnym projekcie;
- chcą dokonać głębokich zmian w strukturze i sposobie pracy zespołów;
- chcą zwiększyć satysfakcję pracowników.
Cele osobiste
Temat wydaje się dość dobrze znany zwłaszcza trenerom, powstały w tym zakresie liczne opracownia, mniej lub bardziej formalne klasyfikacje na cele poznawcze (czego się nauczę) , behawioralne (co będę potrafił i jak zmienią się moje postawy w pracy) i emocjonalne (dlaczego moja praca i życie zmieni się na lepsze, czy dam sobie radę, itp.).
Chciałbym jednak przedstawić temat na bazie konkretnych przykładach związanych ze szkoleniami IT. W związku z tym, że również w szkoleniach IT częste jest zjawisko, iż uczestnik przed szkoleniem nie potrafi obiektywnie sprecyzować swoich celów szczegółowych (np. dlatego że dopiero zaczyna przygodę z jakąś dyscypliną IT), w Sages zaproponowaliśmy własną kategoryzację szkoleń, grupującą szkolenia o podobnych celach i pomagającą zortientować się uczestnikowi jakie konkretnie oczekiwania może mieć od danego szkolenia.
Ale do konkretów. Przyjmijmy, iż uczestnik zastanawia się nad wyborem kursu z programowania w języku Java. Jakie może mieć oczekiwania i czego może się spodziewać po szkoleniach w ofercie?
Przygotowanie do certyfikatu
Zacznijmy od najmniej ciekawego, bo najprostszego przypadku, którego jednak nie sposób pominąć, mianowicie od szkoleń przygotowujących do certyfikatu. W tym przypadku cele zostały już ustalone przez instytucję wydającą certyfikat, szkolenie zaś koncentruje się siłą rzeczy na przygotowaniu uczestnika do egzaminu czyli na maksymalizacji szans na jego zdanie. Jak to się ma do umiejętności programowania? Uczestnik z pewnością doszlifuje swoją wiedzę na temat języka Java, bo są one właśnie przedmiotem weryfikacji podczas egzaminu. Można więc powiedzieć, że w warstwie wiedzy "uczestnik opanuje wiedzę w zakresie mechanizmów języka Java, pozwalającą mu na zdanie egzaminu certyfikacyjnego". Czy uczyni go to lepszym programistą? Z pewnością tak, nawet mimo tego, iż obecnie wiele za programistę robią narzędzia IDE. Na poziomie rezultatów możemy z pewnością powiedzieć iż "wiedza zdobyta na szkoleniu, pozwoli efektywniej tworzyć kod z użyciem języka Java, zwiększając tempo tworzenia kodu i zmniejszając ryzyko popełniania błędów". Z pewnością można też dodać --- może nie bardzo głęboki, ale też i nie bez znaczenia --- cel emocjonalny: "dołączyć do grona posiadaczy certyfikatu, a tym samym zwiększyć swoją pozycję na rynku pracy".
Wyobraźmy więc sobie, iż uczestnik nie programował do tej pory w języku Java. Pytanie więc, czy szkolenie to przygotuje go kompleksowo do pracy w zawodzie programisty? Odpowiedź brzmi - NIE. Na pracę programisty składa się: praktyczna umiejętność programowania, szeroka znajomość bibliotek programistycznych, umiejętność stworzenia i wykorzystania warsztatu pracy, poprawne postawy i nawyki obejmujące m. in. tworzenie czystego kodu (clean code), tworzenie testów jednostkowych wraz z kodem, itp. Tymczasem na szkoleniu przygotowującym do certyfikatu pracujemy głównie w warstwie wiedzy i to tylko w zakresie wyznaczonym przez organizację certyfikującą, która w przypadku gdy jest to producent określonej technologii naturalnie ograniczy ten zakres jedynie do własnych produktów.
Przygotowanie do pracy
I tu pojawia się kolejna wątpliwość: czy od jednego szkolenia możemy oczekiwać tego, iż dostarczy szerokiej wiedzy, wytrenuje umiejętności praktyczne i zbuduje należyte postawy? A jeśli nie, to ile szkoleń należy przejść, żeby uzyskać komplet wiedzy i kompetencji? Jak wiadomo czas specjalistów drożeje i jest go coraz mniej, dlatego kluczowe jest właściwe ustalenie zakresu oraz takie zaplanowanie działań edukacyjnych, by w możliwie krótkim czasie zrealizować jak najwięcej ze zdefiniowanych potrzeb.
Rozważmy to na tle przyjętych schematów dla celów szkoleniowych. Ustaliliśmy już, że szkolenie przygotowujace do certyfikatu nie jest szkoleniem bezposrednio przygotowującym do zawodu programisty. Intuicyjnie też większość uczestników definiuje, iż umiejętności praktyczne są ważniejsze niż tzw. "teoria" (zwykle wręcz jej nie chcemy). Cele emocjonalne istotne nie są --- przecież każdy dorosły specjalista sam się powinien zmotywować --- postaw w ciągu krótkiego szkolenia wytrenować się nie da, a więc od szkolenia oczekujemy maksimum kodowania, i już.
W dużej mierze taka intuicja jest racjonalna i prowadzi do wniosku, że szkolenie powinno być warsztatowe w możliwie największym stopniu. W związku z tym większość szkoleń proponowanych przez trenerów Sages zakłada, iż 75% czasu szkolenia poświęcone jest na warsztaty.
Czym różnią się od siebie poszczególne szkolenia warsztatowe?
Zdecydowanie warto jednak dokładniej przyjrzeć się tej intuicji. Dla szerszego oglądu rozważmy jednocześnie następującą grupę szkoleń:
- Programowanie w języku Java dla programistów --- 5 dni
- Programowanie w języku Java (przygotowanie do zawodu) --- 7 dni
- Warstwa trwałości w oparciu o podejście ORM w JPA2/Hibernate --- 3 dni
- Programowanie aplikacji wielowątkowych w języku Java --- 5 dni
- Test-Driven Development w Javie --- 2 dni
- JHipster --- Spring, AngularJS oraz Bootstrap --- 4 dni
- Nowoczesne aplikacje internetowe oparte o JEE7 (JSF2.2, EJB3.2, JPA2.1, CDI1.1, AJAX) --- 5 dni
- Architektura, technologie i zagadnienia prowadzenia projektów z wykorzystaniem platformy Java Enterprise Edition... --- 1 dzień
Wszystkie są szkoleniami warsztatowymi, zgodnie z intuicją należałoby przypuszczać, że koncentrują się na umiejętnościach. Zobaczmy czym się różnią.
Szkolenia "360 stopni"
Szkolenie Java dla programistów jest szkoleniem o bardzo szerokim zakresie, obejmuje zarówno sam język Java, najistotniejsze API, w tym zwiazane z komunikacją z bazami danych oraz podstawy Java EE, które pozwalają na tworzenie aplikacji internetowych i korporacyjnych. Szkolenie obejmuje też warsztat pracy współczesnego programisty (git, maven, itp.), pracuje też na postawach, ponieważ ćwiczymy na szkoleniu tworzenie testów jednostkowych.
Szeroki zakres powoduje, że osoby funkcjonujące już w branży IT (szkolenie kierowane jest do osób, które już programują) dostaną komplet informacji (podanych w formie warsztatu), by móc dalej samodzielnie rozwijać swoje umiejętności w codziennej pracy. Nie można jednak powiedzieć, że po tym szkoleniu uczestnik będzie na przykład biegłym programistą systemów wielowątkowych i będzie w stanie (bez konieczności posiłkowania się Internetem) niezwłocznie rozwiązać każdy problem. W tym sensie więc, mimo iż na szkoleniu unikamy suchej teorii, szkolenie to możemy uznać jako pracujące w obszarze wiedzy w tym samym stopniu, co w obszarze kompetencji i postaw. Takie szkolenia nazywamy szkoleniami 360 stopni i uznajemy je jako filar kształcenia profesjonalistów, którzy po nakreśleniu im kompletnego horyzontu są w stanie samodzielnie rozwijać swoje umiejętności. Po szkoleniach tego typu szczególnie polecamy projekty poszkoleniowe prowadzone przez naszych mentorów, które pozwalają już w sposób pełny wytrenować umiejętności i postawy, ale już w czasie dogodnym dla kursanta (tzw. "po godzinach"). Z wymieninych szkoleń "Nowoczesne aplikacje internetowe oparte o JEE7 (JSF2.2, EJB3.2, JPA2.1, CDI1.1, AJAX)" opiera się na podobnym założeniu, lecz adresuje całość ekosystemu Java Enterprise Edition, który jest bardzo obszerny.
Szkolenia "kick-start"
Nieco podobnym typem szkolenia jest szkolenie kick-start, lecz jest ono jeszcze bardziej efektywne czasowo. Jest to minimalny zestaw umiejętności niezbędny do realizacji szkolenia w wybranym stosie technologicznym. Siłą rzeczy jednak niektóre zagadnienia podane są w formie gotowych, sprawdzonych formuł postępowania, nie ma jednak czasu na dogłębną, wspólną analizę kwestii architektonicznych, czy aspektów bardzo zaawansowanych. Szkolenia te pracują więc głównie w obszarze (konkretnych) umiejętności. Przykładem jest szkolenie "JHipster - Spring, AngularJS oraz Bootstrap".
Szkolenia 360 i kick-start są szczególnie wskazane dla uczestników rozważających lub przygotowujących się do wejścia w nowy stos technologiczny.
Szkolenia "foundations"
W jakimś sensie podobne są szkolenia typu foundations (z reguły 1--2 dniowe), dające jedynie pigułkę wiedzową. Powazwalają one wyrobić sobie pogląd na poziomie ogólnym, przeznaczone w szczególności dla architektów i analityków. Przykładem takiego szkolenia jest np. szkolenie "Architektura, technologie i zagadnienia prowadzenia projektów z wykorzystaniem platformy Java Enterprise Edition".
Szkolenia "tutorial"
Krótką formą charakteryzują się również szkolenia typu tutorial, są one przeznaczone bardziej dla pogramistów, nastawione na poznanie danej technologii przez przykład podany przez prowadzącego i powtórzony własnoręcznie na swoim komputerze. Szkolenia te zajmują minimalną ilość czasu (z reguly 1 dzień) i są w 100% praktyczne, nie dają jednak możliwości w pełni zrozumienia danej technologii i indywidualnej pracy trenera z uczestnikiem Praktykujemy je głównie w formie warsztatów na Stacji IT.
Szkolenia "in-depth"
Kolejnym typem szkolenia jest szkolenie in-depth, które omawiają jeden problem lub technologię, ale w bardzo dogłębny sposób. Przykładem z wymienionych jest szkolenie "Warstwa trwałości w oparciu o podejście ORM w JPA2/Hibernate", czy też "Programowanie aplikacji wielowątkowych w języku Java Kod szkolenia". Szkolenia te pracują głównie w warstwie umiejętności i pozwalają na przetrenowanie wszystkich najważniejszych dla danej technologii aspektów.
Szkolenia in-depth są szczególnie wskazane dla uczestników, którzy zmagają się z trudnościami w projekcie wykorzystujacym daną technologię lub są zainteresowane poprawą efektywności.
Szkolenia przygotowujące do zawodu
Kolejny typ szkolenia najłatwiej opisać porównując szkolenie "Programowanie w języku Java (przygotowanie do zawodu)" ze szkoleniem "dla programistów". Na pierwszy rzut oka wydaje się, że różnica jest jedynie w zakresie. Szkolenie przygotowujące do zawodu nie zakłada żadnego doświadczenia w programowaniu, dlatego wymaga dostarczenia dodatkowej wiedzy, a także w tempie, ponieważ osoby z małym lub zerowym doświadczeniem z pewnością potrzebują więcej czasu.
W praktyce jednak to szkolenie jako jedno z nielicznych zajmuje się celami emocjonalnymi na równym poziomie, co celami związanymi z umiejętnościami. Uczestnicy takiego szkolenia zasypani szeroką wiedzą i trudnymi zadaniami nie staną się genialnymi programistami. W tej grupie o wiele ważniejszym celem jest zbudowanie ich pewności siebie, tj. pokazanie, że są w stanie faktycznie odnaleźć się w zawodzie programisty. Robimy to poprzez bardzo rzetelne i spokojne zaadresowanie podstaw programowania, tak by uczestnicy czuli pod koniec szkolenia, iż prędzej czy wolniej, ale są w stanie zaimplementować dowolny przedstawiony im problem.
Drugi cel to wypracowanie od początku właściwego podejścia do nawyków i warsztatu pracy, co jest szczególnie trudne do wypracowania samemu w przypadku osób bez doświadczenia. Tak zbudowany fundament pozwoli na dalszy samodzielny lub wspomagany szkoleniami rozwój tej grupy uczestników. Szkolenia te są szczególnie wymagające od trenerów, wymagają nie tylko doświadczenia zawodowego, ale ogromnych umiejętności trenerskich.
Szkolenia "team skills"
Ostatnia grupa szkoleń to szkolenia nazwane przez nas team skills, które są szkoleniami pracującymi głównie na postawach. Przykładem takiego szkolenia jest np. "Test-Driven Development w Javie". Przewrotnie powiem, że szkolenie to nie skutkuje przyrostem ogromnej wiedzy, ani też nie koncentruje się na umiejętnościach, choć takowych przy okazji dostarcza.… Po co więc rozważać takie szkolenie?
Myślę że pełny opis korzyści wynikających z tego typu szkoleń których w naszym katalogu jest zdecydowanie więcej wymaga osobnego artykułu. W skórcie jednak postaram sie nakreślić intuicje dla tego konkretnego szkolenia. Postawy w miejscu pracy (takie jak np. dbałość o czysty kod) potrafią mieć większy wpływ na ogólną efektywność, niż nabycie konkretnych umiejętności. Z drugiej strony jednak zmiana postaw jest bardzo trudna i wymaga długotrwałej pracy. W szkoleniu TDD, nazsa wiedza istotnie nie przyrośnie --- w tym sensie, że cała podstawowa "wiedza" jest do wyczytania w Wikipedii, nie zdobędziemy kompletnych umiejętności, w tym sensie, że w naszych projektach w pracy być może używamy specyficznych technologii, albo bibliotek do testowania, które można opanować na innych, im przeznaczonych szkoleniach. Praca na szkoleniu skupia się jednak na wypracowaniu i utrwaleniu postaw w taki sposób, by po powrocie do pracy automatycznie "zacząć pracować po nowemu"
Ewidentnie można odnaleźć zależność między czasem, zakresem i celami w warstwie wiedzy i umiejętności, co przedstawia poniższy rysunek.
Model konstruowania celów szkoleniowych, przedstawiony w artykule jest oczywiście uproszczony na tyle, by osoba nie parająca się zawodowo szkoleniami mogła wykrystaliować swoje cele. W naszej wewnętrznej pracy musimy opierać się na bardziej pogłębionej wiedzy w jakis sposób ludzie budują swoją kompetencję "od zera do bohatera". Wiedza ta nie jest być może konieczna do poprawnego zdefiniowania celów szkoleniowych, to jednak może być pomocna w zrozumieniu kryteriów doboru zakresu materialu i sposobie realizacji warsztatu w konkretnym szkoleniu na którym się znajdujemy, dlatego będzie poruszona w odrębym artykule.