Вчителювання у кар’єрі програміста

Я дозволю собі розділити фахівців-програмістів на дві великі категорії: 1) фахівці, що відчувають дискомфорт і неприємні емоції від викладання чогось іншим; 2) фахівці, які залюбки діляться своїми знаннями або, принаймні, не відчувають дискомфорту, коли справа доходить до викладання. Мислення фахівців з першої групи, анти-вчителів, приблизно таке: “Чому я маю ділитися важко здобутими знаннями?” та “Замість того, щоб ділитися тим, що я знаю, краще я дізнаюся ще щось і напишу реального коду для клієнта”. Я не маю нічого проти такого мислення. Так налаштовані багато дуже кваліфікованих і ефективних фахівців, які творять чудеса проводячи руками по клавіатурі. І хоча я думаю, що відмовою від вчителювання вони шкодять своїй кар’єрі, яка за інших умов була б ще блискучіша, їм краще не викладати. Просто тому, що це їх дратує і змушує почуватися кепсько, а здоров’я важливіше за усе. Гарна новина у тому, що більшість програмістів усе ж таки належить до іншої категорії, категорії вчителів, або потенційних вчителів. Адже людина все ж любить говорити й ділитися тим, що їй по-справжньому цікаво. А програміст особливо. Спробуйте у самого запеклого інтроверта розпитати (краще за пивом, аби він розслабився) про його хобі-проект і самі в цьому переконаєтесь.

Однак мало хто наважується з’явитися перед аудиторією і навчати. Що ж зупиняє? Сором’язливість та брак мотивації. Про сором’язливість. Програмісти страшенно сором’язливі люди (ну нехай не всі, але більшість), а все тому, що професія вимагає постійного навчання. А ми знаємо, що чим більше вчишся, тим більше розумієш, що нічого не знаєш. Тому з’являється цілком зрозуміле небажання вчити тому, що розумієш, що сам знаєш не достатньо. Але згадайте скільки разів в університеті на лабораторних роботах ви задавали питання саме своїм колегам студентам, які так само, як і ви, навчалися і не були експертами. Психологічно легше запитати людину, яка разом з тобою проходить шлях навчання, а не експерта. Тому варто проковтнути скромність і якщо хочеться навчати – слід йти і робити це. Ніхто не знає всього. Потрібно лише трішечки знати більше ніж аудиторія, і цього достатньо. Так, можуть задати запитання, відповіді на яке ви можете не знати. Але хто знає все? Гадаєте експертам не задають таких запитань? Просто не претендуйте на експертизу, а визнайте, що вам треба вивчити глибше це питання, справді вивчіть його і дайте відповідь пізніше (наприклад, електронним листом або дописом у блозі).

Мотивація. Навіщо вчителювати програмісту? І так завдання виконує і платню отримує. Я б стисло сформулював причину так: для більш повного і цікавого професійного життя та розвитку кар’єри. А розлого розгляну такі причини/стимули:

Стати кращим програмістом. Програмування – це не просто інженерна діяльність. Це, якщо можна так висловитися, педагогічно-інженерна діяльність. Фундаментально ми формалізуємо процедурні (імперативні) знання так, щоб машини могли користуючись цими знаннями виконувати поставлені завдання. Тобто у певному сенсі ми навчаємо машину. Але важливіше викласти ці процедурні знання так, щоб інша людина максимально точно і швидко їх зрозуміла. У цьому є прямий економічний зиск: менше часу на читання коду -> більше часу на нову функціональність, що має цінність для клієнта. Тож щойно ви сіли вранці за клавіатуру, ви уже вчителюєте, і наскільки ви це добре робите залежить від того, як часто ви вчителюєте перед людською аудиторією. Хочу зауважити тут, що я маю на увазі не лише класичне вчителювання, типу викладач і група студентів. Вчителюванням може бути й скрінкаст, і подкаст, і допис у блозі, і вебінар, і коучінг джуна (junior developer :-)). Зараз існує дуже багато можливостей і форм вчителювання.

Гарно опанувати технологію/практику програмування. Кажуть, ніби щоб по-справжньому опанувати якусь тему, слід на цю тему написати книгу. А що таке книга для автора, як не спосіб поділитися знаннями? Програмісти мусять постійно навчатися, щоб залишатися потрібними на ринку праці й викладання мало не єдиний спосіб закріпити отримані знання. Можна заперечити, що багато практики закріпить знання. Так, це правда, вчителювання – то марнування часу, якщо крім нього ви не практикуєте як професійний програміст. Але якщо ви маєте гарну практику за плечима, вчителювання дозволить краще зрозуміти і запам’ятати тему, систематизувати знання, зрозуміти глибинні залежності та структуру понять і концепцій. Наприклад, ви можете мати багато досвіду в JavaScript та C#. Тепер спробуйте комусь пояснити чому JavaScript в першу чергу об’єктно-орієнтована, а не функціональна мова програмування. Спробуйте пояснити чим фундаментально відрізняються об’єкти від замикань у C#, що спільного між делегатами та інтерфейсами, що це взагалі таке, і ви відчуєте, як ваш рівень і глибина розуміння предмету росте. Інший приклад. Я працював уже два роки на APL коли почав викладати цю мову програмування іншим, і все ж мав важкі часи, коли готувався до лекцій. А після закінчення курсу по APL я став відчувати, що краще розумію мову, краще можу впоратися з конструюванням ідіоматичного коду на ній.

Зробити наступний крок у кар’єрі. У кар’єрі програміста дуже ймовірно може статися… глухий кут? Вивчення нових технологій заради нових технологій? Уже не цікаво, адже кожна нова – це по суті добре забута стара + кілька плюшок. Стати архітектором і сидіти у вежі зі слонової кістки, малювати діаграми та днями сидіти на мітингах? Не те, адже хочеться писати код. Менеджмент? Хай Бог милує! Чим же тоді зайнятися, куди розвиватися? Вчителювання може стати відповіддю. Тут людина може знайти вихід накопиченій за багато років енергії, мотивацію і сенс у поглибленні своїх знань. Адже людина – соціальна істота і може віднайти сенс своєї діяльності у вчителюванні та допомозі іншим опанувати цей непростий фах. Тепер, будемо відверті, вчителювання не надто високооплачувана діяльність. Але зовсім не обов’язково покидати роботу програмістом. Можна викладати й на робочому місці, після роботи, можна стати консультантом. Зрештою, можна погодитись і на постійне вчителювання, адже за роки роботи програмістом ви надбали достатньо і вам не потрібні уже високі доходи, чи не так?

Емоційно відпочити. Існує три типи навантаження: фізичне, емоційне та інтелектуальне. Людина відпочиває, коли отримує навантаження іншого типу, ніж те, що вона отримує під час роботи. Програміст отримує надмірне інтелектуальне навантаження і шкідливий фізичний стрес. Тож відпочинок має бути фізичним і емоційним. Якщо з фізичним зрозуміло, то як отримати емоційний відпочинок? Хто заперечуватиме, що робота програміста монотонна? Тобто щодня те саме місце і той самий комп’ютер, і мало що відбувається. А надто якщо програміст працює сам, віддалено. Змінити обстановку і відпочити емоційно можна вчителюванням. У цьому випадку вчителювання має бути не віртуальним. Потрібно обрати аудиторію, до якої треба поїхати. Це може бути конференція, тренінг, семінар або курси. Таким чином ви знайомитеся з новими людьми, буваєте в нових місцях і переживаєте такі потрібні нові емоції.

Поділитися знаннями та розширити мережу соціальних контактів. Не кожному хочеться ділитися знаннями, але багато хто отримує від цього величезне задоволення, бо як я вже казав: людина – соціальна істота. Багатьом з нас також важливо мати широку мережу соціальних контактів для спілкування, в тому числі й на професійні теми. Часто хочеться просто поділитися тим, що вивчив, чи тим, яку проблему розв’язав, або тим, яка цікава ідея спала на думку. Одним словом, тут немає раціональної причини, крім біологічної. Просто хочеться, просто тому, що соціалізація і взаємодія дала нам процвітання як біологічному виду. Тут є і цікавий побічний ефект. Ваші студенти з часом стають фахівцями, що приймають рішення. Це може дуже посприяти вашому наступному працевлаштуванню чи під час пошуку наступного клієнта.

Прорекламувати себе. Вчителювання – це чудовий інструмент маркетингу. Мало того, що ваша аудиторія дізнається про ваше існування, про ваші фахові та комунікативні здібності, так вона ще й дізнається у чому ваші інтереси, які технології ви опанували та на якому рівні. Зрештою, потенційні роботодавці та замовники розуміють, що ви не просто робите роботу за гроші й викидаєте з голови усе, щойно настає шоста вечора, а захоплюєтесь тим, чим займаєтесь, маєте так би мовити пристрасть (passion). Роботодавці дуже таке люблять, адже вони хочуть найняти людину з високою внутрішньою мотивацією, яка окрім основної роботи ще й буде сприяти поширенню знань і компетенцій в компанії. Зверніть увагу, що найпопулярніші у світі програмісти, які зробили своє ім’я не продуктом чи компанією (як Лінус Торвальдс чи Біл Гейтс, хоча, гадаю, і вони немало вчителюють), наприклад, хлопці, про яких я писав, досягли популярності в основному через вчителювання та активне просування своїх учительських та наставницьких послуг.

І нарешті, реалізувати професійну відповідальність за розвиток індустрії в цілому. Індустрія програмного забезпечення зростає шаленими темпами й щоп’ять років кількість програмістів збільшується удвічі. Це означає, що ветеранів програмування, яких між тим активно знищують менеджерські позиції, пенсії, хвороби й тому подібні речі, дуже мало. Таких, що програмують більше 11+ років, всього 24.2%. А про 20+ годі й казати. Тому відповідальність тих, хто входить у ці 24 відсотки, забезпечити становлення інших 76%. А це ж в середньому по 3 студенти/підмайстри на кожного!

Facebooktwittergoogle_pluslinkedinmailFacebooktwittergoogle_pluslinkedinmail

Leave a Reply

Your email address will not be published.