«Технологію можна опанувати і на курсах, університет має вчити ухвалювати рішення». Викладацький досвід IT-шника
Мене звати Ярема Варецький, я менеджер проекту у львівському офісі компанії GlobalLogic. Загальний досвід в ІТ-індустрії −12 років. Починав як науковець у Національній академії наук, згодом пройшов шлях від розробника-джуніора до керівника команди. Проте університетська діяльність завжди вабила мене, тож на початку минулого навчального року я прийняв пропозицію своєї компанії спробувати себе в ролі викладача вищого навчального закладу.
У статті розповім, чому для мене був корисним такий досвід, як склалися взаємини зі студентами та викладачами, які недоліки я помітив у вищій освіті та до чого варто готуватися програмісту, який вирішив спробувати себе у ролі викладача.
Як усе розпочалося
Досвід роботи в університеті не був для мене новим — невдовзі після захисту кандидатської роботи у 2006 році на тему використання біометрії в системах криптографічного захисту я почав викладати курс «Операційні системи та мережі» в Національному університеті «Львівська політехніка», який сам свого часу закінчив, та у Львівському державному університеті безпеки життєдіяльності. Мені сподобалася ідея, коли професіонала із певної галузі запрошують читати лекції в університетах та показувати практичні сторони спеціальності студентам, ще відтоді, коли я вперше побачив таку форму роботи під час аспірантських стажувань у вищих навчальних закладах Польщі, Німеччини, Словаччини. У моєму випадку це стосувалося телекомунікацій. Помітив, що за кордоном фахівці, залучені до занять, сприймають цей процес як частину власного зростання. На той час така практика була швидше винятком із правил у наших університетах, а до викладання могли залучати виключно науковців із інститутів Національної академії наук України.
Тому я залюбки відгукнувся на пропозицію провести семестр лабораторних робіт з мови C для першокурсників Національного університету «Львівська політехніка» на кафедрі систем штучного інтелекту при Інституті комп’ютерних наук та інформаційних технологій. Така ініціатива йшла від нашої компанії — GlobalLogic, яка активно впроваджує взаємодію з університетом (а той, у свою чергу, потребує викладачів із практичним досвідом, адже особливо нестача таких кадрів помітна в предметах, що стосуються IT).
Запрошення експертів як викладачів (з працевлаштуванням або як гостьових лекторів) — це один з декількох стратегічних напрямків співпраці з університетами, об’єднаних під брендом #GlobalLogicEducation і наша мета — допомогти студентам, уже починаючи з перших курсів навчання, зорієнтуватися в сфері IT. Зокрема, на чому варто більше зосередити увагу, що глибше вивчати, які зараз тренди в галузі, що буде потрібно в майбутньому і загалом скоротити той розрив між знаннями, отриманими в університетах, і тим, що вимагатиметься на реальних комерційних проектах.
Мене зацікавила ця пропозиція насамперед як керівника проекту, оскільки мав неодноразово досвід спілкування зі студентами, які володіли теоретичними знаннями, проте мали труднощі з написанням простих програм, а також не мали належних навиків командної роботи. Ще одним важелем послугувало нарікання колег після інтерв’ювання студентів щодо недостатньо фахової підготовки сьогодні в університетах. Викладання в університеті дозволило мені переключитися на інший вид діяльності, що також дало свої позитивні результати на основному місці праці.
Підготовка до викладання
Кафедра систем штучного інтелекту є відносно новою — створена два роки тому, вона зібрала навколо себе активних і прогресивних людей. Завідувачка кафедри — молода докторка — дбає, щоб залучати студентів до практики: на семінарах, під час розробки алгоритмів для обробки зображень, на гуртку робототехніки, який підтримується GlobalLogic. Моє викладання теж було частиною роботи в цьому напрямі.
За розкладом належало проводити п’ять пар щотижня. Відразу домовилися про гнучкий розклад — заняття поставили у зручний для мене час (перші або останні пари). Також із попереднього досвіду пригадую, як багато часу займає бюрократичне оформлення на посаду. Необхідно оформити стос документів: починаючи з медичних довідок та обстежень, заяв на ім’я ректора, особових справ та закінчуючи інструктажем з безпеки праці. Але завдяки співпраці компанії й університету все владналося швидко й якісно.
Перед початком семестру я ознайомився із вказівками до лабораторних робіт, розроблених кафедрою. У мене було своє бачення деяких речей, таких як склад та послідовність робіт, доречність певних лабораторних робіт, а тому я вніс свої корективи у цей курс. Насамперед викинув конструкції, що використовуються більше у С++, розширив застосування функцій зі змінною кількістю параметрів, запропонував робити більший наголос на функції стандартної бібліотеки при роботі зі стрічками, об’єднав кілька лабораторних у одну, щоб відчути всі нюанси використання операторів виділення пам’яті тощо. Проти змін ніхто не заперечував. Визначивши головні ідеї та підходи, я прийшов на першу пару.
Уже під час навчання, коли студенти відправляли свої результати на перевірку, намагався аналізувати їх завчасно — щоб мати можливість поспілкуватися з кожним студентом особисто про його роботу й дати поради для самовдосконалення. Тоді, бувало, зазирав і в «класичну» фахову літературу на зразок Кернігана&Рітчі, стандарт ANSI C тощо — щоб глибше пояснити студентам деякі теоретичні терміни. Та загалом все виявилося значно простішим, аніж я собі припускав.
Підготовка до лекцій вимагала значно більше часу на підбір і відфільтровування необхідної інформації, вибір методу подачі та унаочнення лекційних матеріалів. Бувало, часом, навіть цілий день тривала підготовка до наступної лекції. Для лабораторних занять основна кількість часу йшла на рев’ю присланого студентами коду і залежала від активності самих студентів. Що більше було прислано робіт, то більше позааудиторного часу я змушений був присвятити перевірці. У середньому по
Як мотивувати студентів
У чотирьох групах нараховувалося 40 студентів. Загалом, я очікував від них більшої активності і вмотивованості. Та, зрештою, студенти як студенти: реальні запитання починають ставити вже в другій половині семестру перед початком сесії.
На курсі виявилося багато випадкових людей. Мене це здивувало: адже є нагода дізнатися інформацію про свою майбутню професію, яка є однією з найприбутковіших сьогодні в Україні, а молоді люди натомість марнують свій час, не будучи активними під час заняття, віддаючи перевагу гаджетам.
Звісно, це стосується не всіх: є студенти, які націлено пішли саме на кафедру систем штучного інтелекту, оскільки розуміють, що у цій сфері вдосталь вакансій та проектів у напрямках створення систем прийняття рішень, аналізу та обробки великих даних, робототехніки, машинного навчання. Щоб працювати у цих галузях, потрібні хороші знання у теорії штучного інтелекту та дотичних напрямках комп’ютерних наук. Є також доволі свідомі студенти, які вже з першого курсу знають, до чого прагнути, як досягти своїх цілей і як скористатися знаннями викладача, щоб вдосконалити свої. Такі люди не соромляться перепитувати, якщо чогось не розуміють, вміють продуктивно використовувати свій час.
Дехто з таких активних студентів уже на екваторі семестру здав роботу, яку належало зробити за результатами всього курсу. Помітив, що ці вмотивовані студенти вміють не тільки швидко працювати, а й легко домовлятися — тобто в них розвинені і soft skills. Такі активні студенти найбільше запитують про те, чи рекомендував би я вчитися або ж одразу працювати з першого курсу, запитують про цікаві вакансії та проекти.
Якщо підсумувати, то з-поміж студентів-першокурсників було 10% тих, із ким я готовий продовжувати роботу в майбутньому. Четверо-п’ятеро молодих людей на курсі дійсно володіють належними знаннями, зорієнтовані на високий результат і від співпраці з ними отримуєш насправді сатисфакцію викладача. Вдвічі більше тих, кого ще варто підтягнути, мотивувати, спрямувати і з ким у перспективі можна ефективно працювати. Не виключаю й того, що, ймовірно, частина студентів не хотіла б працювати з мовою C — цілком можливо, що вони бажають вивчати іншу мову та реалізують себе краще у ній.
За цей семестр помітив, що правильно обрана тактика викладача дає позитивні результати. Зокрема, спершу про деяких студентів була думка: мабуть, не буде з нього «толку». Але до кінця семестру з’явилися неочікувані результати. Варто згадати кількох, які неохоче починали перші роботи, у них все йшло «не так»: то середовище не запускається, то компілятор неврівноважений — не знає, що від нього хочуть, то взагалі комп’ютер відмовляється стартувати. Проте наприкінці семестру вони показали свій не найгірший результат, власні програми і могли доволі якісно їх захистити.
Отож, як мотивувати студента? Правильно ставити перед ним задачі. Заохочувати, якщо студент бажає глибше дослідити конкретний аспект мови і йому не цікаво просто зробити все за заданою схемою від «А» до «Я» — такій людині можна запропонувати спробувати зробити щось по-іншому, відійшовши від стандартного виконання. Деякі студенти активно реагували на такі пропозиції — позитивні результати надихали їх до виконання інших робіт. А хтось дивувався: навіщо ще щось шукати, якщо і так працює? У такому разі я також підтримував за успішно виконані найпростіші завдання, зроблені за певним взірцем (позитивний результат мотивує), а вже тоді пропонував зробити по-іншому. Як викладач, я мотивую студента на роботу позитивним фідбеком. На рівні ж університету є заходи на кшталт походу на IT-арену, можливість участі в додаткових дискусіях. Загалом же універсальної мотиваційної таблетки не існує: під час розмови з кожним індивідуально розумієш, що матиме кращий ефект.
Технічні умови
Матеріально-технічна база тепер значно краща, якщо порівняти з тією, що була за часів мого навчання. Оснащення, можливо, й не ідеальне, для багатьох предметів потрібне додаткове спеціальне обладнання. Та загалом в університеті достатньо комп’ютерів та програмного забезпечення. Приміром, паралельно з моїм курсом в університеті читався курс робототехніки Arduino — для нього забезпечили все необхідне обладнання (самохідні машини, які самі вивчають території, вибирають шлях тощо).
Проте не можна сказати, що цього достатньо. Якщо далі буде навчання по мережевих технологіях, потрібне буде й відповідне, професійніше обладнання. Для мого ж предмету наявного обладнання цілком вистачало — це стандартні робочі станції із відповідними середовищами розробки.
Кафедра розташована у відреставрованому приміщенні, раніше ці корпуси належали закритому науково-дослідному інституту. Адміністрація університету вклала багато ресурсів, щоб відновити їх. Тепер ми навчаємося в чистих, просторих аудиторіях із мультимедійними дошками і проекторами. У мене як у викладача також не виникало проблем із висвітленням матеріалу.
Приміщення та обладнання для лабораторних готується завчасно, до того, як прийде студент. Лаборанти та асистенти кафедри дбають про стан приладів та перелік необхідного ПЗ. Є вдосталь можливостей (і ми їх використовували), щоб працювати в хмарі. Наприклад, перед студентом ставили завдання розкласти функцію в ряд Тейлора-Маклорена, написати до неї відповідні цикли, умови. Програму можна було написати безпосередньо як на комп’ютері, так і в готовій віртуальній машині — у хмарі є графічне середовище, можливість запускати, перевіряти, а потім і здавати проекти. Такі завдання намагався не занадто формалізувати — важливо, щоб студент засвідчив, що він усе зрозумів. Процес виконання — на його розсуд.
Спілкування зі студентами та викладачами
Намагався налагодити демократичне спілкування зі студентами: давав їм можливість висловлюватися, критикувати. Своє викладання розглядав як нагоду для спілкування на тему програмування — не хотів би, щоб воно перетворилося просто на взаємини викладача та студента задля вирішення певної задачі, тобто складання іспиту.
Після пройденого семестру найчастіше згадую саме спілкування і дискусії зі студентами. Коли працюєш на проекті, задачі апріорі зрозумілі. Але запитання спонукають вдосконалюватися в певній галузі, вибудовувати позитивний діалог зі студентами. Коли бачиш вогонь в очах студентів, які вловили сказане, розумієш, що досяг поставленої мети.
Викладання в університеті — однозначно хороший досвід. Як правило, люди, які впродовж значного часу виконують одноманітну роботу згодом втрачають запал, а це призводить до виснаження й зниження ефективності. А тому зміна виду діяльності — це нагода спробувати щось інше, розширити свій світогляд, що буде мати позитивний вплив назагал. Проте професія викладача має також інший бік: зокрема, безпосереднє спілкування з молодим поколінням, що іноді призводить до незручних ситуацій. Наприклад, викладача можуть загнати в «глухий кут» некоректним запитанням або ж «шкільним» ставленням до процесу навчання, змушуючи вдаватися до виховних дій.
Варто бути готовим до того, що всього не знаєш, адже сучасна молодь є доволі допитливою, а за допомогою Інтернету завжди можна самовдосконалюватися. А тому можуть виникнути вкрай неочікувані запитання від студентів, іноді такі, на які неможливо відповісти без попередньої підготовки. Наприклад, як взяти адрес бітового поля структури або чи дійсно не можна змінити константу, а як замість main() функції використати іншу як точку входу. Втім такі питання швидше виняток.
Як правило, буває навпаки — лунають запитання від студентів, які, на перший погляд, можуть видатися не надто розумними. До прикладу, навіщо нам логічне додавання якщо можна використати звичайне, кому потрібен безкінечний цикл, навіщо вказівнику тип тощо. Однак у спілкуванні зі студентами варто робити поправку і завжди пам’ятати, що ця людина лише розпочинає свій шлях, у неї більше запитань, ніж відповідей. Проте саме у цьому віці виникають доволі цікаві ідеї та питання стосовно вирішення стандартних проблем, що спонукає і викладача до нетрадиційного бачення звичних, на перший погляд, задач.
Загалом, намагався бути динамічним викладачем, не ставив самоціллю бути строгим. Навпаки, хотів побачити в студентові свого майбутнього колегу, члена команди. Траплялося, що зараховував недосконалі роботи, але базові речі вимагав від усіх. Людина, яка закінчила курс із С, має знати, що таке масив, виділення пам’яті, розміщення в стеку тощо. Якщо ж бачив, що людина не зацікавлена в знаннях, то вимагав мінімальний рівень. Загалом зосереджувався на тому, щоб навчити студентів у перспективі стати частиною ефективної команди.
Кафедра, на якій я викладав, є молодою і за викладацьким складом: середній вік викладача — 35 років. Викладачі готові спілкуватися на будь-які теми, не відчувалося у їхньому колі, що я тут не свій. Усе дуже відкрито, міг сам звернутися до колег із різними питаннями, що виникали. Мій колега читав лекції та в частини групи проводив лабораторні. Ми з ним обговорювали нюанси програми, оптимізації щодо того, як і що мають робити студенти. Це було з ентузіазмом сприйнято і завідувачкою кафедри. З розумінням ставилися до термінових змін у розкладі чи моєї відсутності на деяких парах у зв’язку з непередбачуваними обставинами в компанії.
Для чого потрібен університет
Після викладання залишилося враження, що більшості студентів бракує мотивації й розуміння, навіщо вони вчаться. Університет мав би давати загальне бачення, орієнтацію в професії, відповіді на питання, заради чого ти тут. Вивчити мову C, Java або певну технологію можна і на курсах програмування. Закінчивши один із численних таких курсів, можна досягнути практичного досвіду у мові/технології/стеку протоколів тощо. Але 5 років, проведених в університеті, мали б підводити до узагальнюючих та більш високорівневих рішень: чому обираємо, наприклад, C++, а не Java, які переваги чи недоліки популярних фреймворків, яку методологію розробки слід використовувати та в якому випадку і т. д. ВНЗ, на мою думку, має надавати глобальне бачення майбутньої професії, а диплом магістра мав би відповідати рівню архітектора в ІТ-компанії. На жаль, зараз цього немає.
Взаємодія ІТ-компаній з вишами допоможе вирішити окреслені вище проблеми. Найбільшою цінністю такої співпраці вбачаю налагодження зв’язків між людьми, які можуть передати знання, і між тими, які хочуть їх отримати. Важко миттєво виміряти результати такого зв’язку, але вони точно будуть у майбутньому, бо це реальні практичні заняття, на яких передаємо знання студентам.
Серед моїх колег є ініціативні особистості, які можуть зробити таку співпрацю системною. Загалом же компанії теж мають мотивувати спеціалістів у своїх галузях далі ділитися досвідом. Ініціатива має бути обопільною: і від менеджерів компаній, і від завідувачів кафедр.
Висновки
Мій досвід викладання був доволі вдалим. Сподіваюся, що студенти, з якими я працював, відібрали для себе найважливіші мої настанови й оберуть саме цей фах як основну свою професію. А також я відкритий до такої співпраці з університетами й у майбутньому, оскільки вважаю вкрай необхідним залучення до студентської аудиторії кваліфікованих працівників із ІТ-компаній.
За допомогу у підготовці статті дякуємо Ярославі Тимощук.