Досвід
Як прожити 3 місяці в
режимі «їсти, кодити, страждати, спати»
Максим Войтко закінчив курс «Алгоритміка. Основи» наприкінці 2019-го. Через кілька місяців після випуску він розповів про шалений темп навчання, про те, чим довелося пожертвувати та як його здивував куратор Іван Петрушенко.
Я технар за освітою, вивчав комп'ютерну інженерію у КПІ імені Сікорського. Зараз працюю як Software Engineer у компанії SoftСonstruct. Мій проєкт — це спортивний трекінг-застосунок на основі машинного навчання. В якийсь момент я захотів розібратися, як працюють технології, з якими доводиться мати справу щодня. Для цього були потрібні фундаментальні знання.

Раніше я чув від друзів хороші відгуки про Проджектор. Зокрема, і про курс з алгоритміки. Я чітко уявляв, що хочу отримати на виході — знання і навички про основні алгоритми та структури даних.Та тоді я не мав уявлення, як проходить сам процес навчання, що я вже повинен вміти. Тестове завдання натякало, що для курсу потрібне вміння закодити алгоритм і вирішувати прості задачі. Це був такий собі відсів програмістів, які не вміють програмувати. Я цей відбір пройшов.

Software Engineer у SoftСonstruct
Про режим «їсти, кодити, страждати, спати»

Уже з початку курсу мені довелося «наздоганяти хвилю». Через певні обставини я пропустив перші два заняття. Тоді думав, що на старті буде розкачка і труднощів це не становитиме. Але старт виявився стрімким, і врешті всі без винятку заняття були інтенсивними і максимально насиченими інформацією.

Як на мене, програма курсу вибудована досить ефективно. Кожна наступна тема була логічним розвитком попередньої. І кожну тему ми пропрацьовували дуже глибоко. Взяти хоча б елементарний, на перший погляд, бінарний пошук. Ми почали з пошуку числа у відсортованому масиві і дійшли до його застосування для пошуку медіани у невідсортованому масиві.

Наш куратор Іван Петрушенко не давав готових рішень чи викладок. Натомість він підштовхував у потрібному напрямку, спонукав групу дійти до алгоритму, аж поки в голові не спалахне заповітна лампочка.

Часу на розкачку не було і з домашніми завданнями. Ми отримували їх після кожної теми і мали два тижні на виконання. Вже після першої домашки я зрозумів, що сідати за неї краще на наступний день. Так можна було встигнути зробити всі задачі і побачити заповітні зелені галочки тест-кейсів.

У нас на курсі казали, що три місяці навчання пройшли в режимі «їсти, кодити, страждати, спати». І це правда. Поєднувати курси із роботою і сім'єю було важко. Часто доводилося жертвувати сном, але глибина нового погляду на задачі того варта. Не впевнений, правда, що моя дружина з цим погодиться.
Про інсайти

Цей курс — не тільки про алгоритми, він ще й про мистецтво програмування.

Після курсу я почав набагато більше заморочуватися над продуктивністю написаного коду. Фундаментальні знання допомагають при вирішенні прикладних задач. Наприклад, коли необхідно оцінити, чи були технології розроблені для оптимального виконання завдання, яке стоїть переді мною. Якщо я раптом не знаю, як працює структура даних, можу без проблем знайти потрібні матеріали і розібратися.

Графи і дерева виявилися не такими страшними, як здавалося на початку курсу. А от динамічне програмування — це досі головний біль. Тут ще не всі етапи пройдені.

На курсі в котрий раз переконався, що майстерність не визначається одним лише рівнем володіння інструментом, та все ж залежить від нього. Мова програмування — це інструмент, тому потрібно знати всі його нюанси. Але не потрібно обмежуватися одним єдиним інструментом. При цьому працювати можна з різними інструментами.
А ще я вивів для себе формулу, як розібратися з алгоритмом. Для цього потрібно пройти 6 етапів:

· ознайомитися з ідеєю;
· вирішити задачу;
· вирішити задачу;
· вирішити задачу;
· вирішити задачу;
· вирішити задачу.

Деякі алгоритми чи структури даних вимагають 10 або навіть 20 етапів. правжнє посестерство та побратимство.
Про куратора й Арістотеля

На початку Іван нам пообіцяв, що на кожному занятті спробує забезпечити вау-ефект. Ми мали не просто дізнатися щось нове, ми мали отримати знання, які кардинально впливають на розуміння тієї чи іншої теми. Своєї обіцянки наш куратор дотримався.

Ваня — справжній інженер. Під цим я маю на увазі програміста, який може розібратися з новою проблемою чи технологією і не обмежується однією мовою програмування. Коли він викладає будь-яку тему, наводить мінімум 3 приклади реального її застосування у технологіях чи застосунках, які ми використовуємо щодня. А ще Іван — дуже глибока людина. У нього є драйв і вогонь в очах, і цим він заряджає.

Один з найяскравіших спогадів про куратора — коли хтось з однокурсників попросив його порадити книги для саморозвитку, може, щось з об'єктно-орієнтованого програмування. Натомість Ваня запропонував почати з Арістотеля. Для мене це був показник рівня професіоналізму. Щоб стати кваліфікованим спеціалістом, достатньо вивчивши конкретну професійну галузь. А от щоб бути топом, потрібно вміти вибудовувати нелінійні зв'язки.
Фото: Наталія Азаркіна
Courses
Сподобалась стаття?