Тарас та його відчайдушна п’ятірка

10 Березня 2021
На 2021 у всього світу великі надії, і NIX починають новий рік з розповіді відразу про шість гуру – команду, яка створила курс з Golang для онлайн-платформи навчання. Чому варто вибрати Golang для свого старту в IT, якою мовою написані Uber і Twitch, які можливості пропонує онлайн-курс NIX і хто ж такі творці курсу – про це читайте сьогодні. А ще нарешті знадобиться шкільне читання з ролей :)
Познайомимось?
Тарас: Вітання! Я – Group Lead PHP. Разом із командою розробників: Денисом, Віталієм, Сашком, Максимом та Ромою ми створили курс Golang на навчальній платформі NIX. Тарас и его отважная пятерка
Розкажіть, коли і як ви попали у Нікси?
Тарас: У Харкові багато IT-компаній, але більшість хлопців із мого оточення радила Нікси. Ще й товариш зі старшого курсу постійно із захопленням розповідав, як круто там працюється. Те, що у Нікс була програма навчання PHP, мене остаточно підкорило. Після закінчення 2014 року, я спробував щастя стати частиною NIX, і мене взяли.

Олександр: Я опинився в Ніксах трохи більше 4 років тому, також пройшовши навчання за напрямком PHP developer.

Денис: У Ніксах вже 2 роки потрапив через практику під час навчання.

Віталія: О, я теж із Ніксами з кінця лютого 2018 року. Після успішного закінчення PHP-навчання мене взяли до команди.

Рома: Я тоді найзеленіший, лише півтора роки тут. Потрапив до Ніксів, як і всі, через програму навчання. Не порушуватиму статистику :)
Тарас, розкажи про вашу команду Golang?
Насправді незвичайно, що я груплід PHP, а ми зараз говоримо про команду Golang. Це цікава історія. До вивчення Golang ми прийшли еволюційно, на початку 2019 року отримали інсайт від PHP Team Lead Богдана Орєховського: Тема прикольна, інноваційна, і було б круто, якби подивилися в цей бік і були в ній компетентні”. Макс першим спробував Go у комерційному проекті. Проект був на PHP, але у частині системи були проблеми з продуктивністю. Тоді Макс вирішив спробувати переписати його на Golang у вільний час. В результаті він прийшов до замовника із класними показниками: обробка 200 транзакцій скоротилася з 30 до 1 хвилини! Після цоьго вся команда почала розвивати цю тему, підготували для майбутніх замовників приклади коду та демоматеріали, а також провели низку лекцій, пов’язаних із Go. За 2019 рік, окрім проекту Макса, ми спробували Go у низці інших проектів – дуже успішно. Так ми почали обростати експертизою, і зараз у команді 12 людей використовують Go у комерційних проектах. Основна цінність у тому, що хлопці на особистому ентузіазмі, без нав’язування, вивчили Golang і досі вивчають. Так у відділі зародилася Go Users ‘Group: ми збираємося раз на тиждень і обговорюємо новинки у світі Golang, займаємося створенням різних напрацювань пов’язаних з Go, які допомагають нам заощадити час при старті проектів. До речі, приєднатися до цієї тусовки може будь-який бажаючий ніксоцвець, кому ця тема цікава. Навесні 2020 PHP-команда NIX зарелізувала платформу дистанційного навчання з курсом з PHP, тоді і зародилася ідея зробити такий же курс з Go. Технологія нехай і нова, тільки в 2009 році з’явилася, але водночас вже зріла і стає популярнішою щороку. Тарас и его отважная пятерка
Що крутого у мові з погляду розробника?

Денис: Для мене це простота розподілу процесів, так звані горутині. А ще Golang, як на мене, досить простий через те, що це відносно молода мова його ще не встигли “ускладнити”.

Олександр: Мені теж здається, що перш за все він крутий завдяки своїй простоті. Плюс класна продуктивність, читаність та широкі можливості для паралельного програмування.

Рома: Для мене одна з головних «родзинок» мови — це concurrency. Також мова має багату стандартну бібліотеку та набір готових утиліт, які спрощують тестування, профільування і т.д. Мова зібрала велике ком’юніті, тому пошук необхідної бібліотеки або модуля не складає жодних труднощів.

Де Golang застосовується зараз та які у нього перспективи?

Денис: У мови досить широкий спектр застосування, і якщо розглядати з боку наших частих завдань, він відмінно підходить. Я говорю про написання АПІ та різних бекенд-сервісів.

Олександр: Так, на Golang можна писати практично все, це мова загального призначення. Відмінно підходить для завдань, де потрібно реалізовувати високонавантажене програмне забезпечення або мікросервісну архітектуру.

Віталія: А я думаю, що переважно Go застосовується як бекенд для веб-додатків.

Рома: Golang має дуже широке коло застосування: від CLI (Command Line Interface) утиліт до таких серйозних проектів, як Kubernetes. Він знайшов широке застосування в backend-розробці та чудово підходить для розробки високонавантажених систем. Перспективи у мови просто чудові: він активно розвивається і стає дедалі ширшою мовою.

Тарас и его отважная пятерка
Чому новачкам варто вибрати його для вивчення?

Олександр: Мова затребувана і популярність тільки зростає. У нього невеликий синтаксис, що добре читається. І той факт, що це одна з п’яти офіційних мов Google, теж важливий. У мови велике майбутнє та широка ніша застосування у IT-сфері. Golang розробники завжди будуть у роботі.

Денис: Тут усе дуже особисто. Кожен пише у тому, що близько. Але однозначно варто спробувати GoLang – унікальну мову.

Вітілій: Golang зрозуміла мова, якою є купа навчального матеріалу, включаючи відеокурси, статті, книги, добре документовані бібліотеки. До того ж попит на Golang-розробників зростає, тож знання не пропадуть без діла.

Рома: За допомогою Golang можна вирішувати величезний спектр завдань. Він має чудову систему типів та автоматичне управління пам’яттю, що дозволяє швидко почати писати безпечні та ефективні програми. А величезне ком’юніті дозволяє не тільки швидко знаходити готові Open Source рішення, але й обмінюватися досвідом. Це робить процес вивчення простішим та цікавішим.

Тарас и его отважная пятерка
Тарасе, розкажи докладніше про курс
Наша команда почала готувати цей курс ще у липні, базу та контент ми підготували десь за два місяці. Але справа до релізу дійшла тільки зараз. На момент створення курсу ми вже мали досвід навчання. Насамперед, це наш досвід пов’язаний з PHP, а також внутрішній 3-тижневий курс з Golang. Будь-який бекенд-розробник міг взяти цю програму з теорією та практичними завданнями та вивчити мову. Саме на її базі ми й створили курс Golang на платформі. Рівні Усього є 3 рівня на курсі: Beginner, Trainee, Junior.
  1. Beginner — для новачків, які зовсім не мають знань у програмуванні, але мають час і бажання. Після вивчення матеріалу проходить контрольні питання та тест, потрапляючи на наступний рівень Trainee.
  2. Рівень Trainee дає вже більш поглиблені знання мови, а також бібліотек та інструментів, які Go-розробники використовують у комерції. Думаю, якщо добре все вивчити, то після другого курсу вже можна пробувати свої сили на роботу.
  3. Є ще й третій курс Junior, де копаємо не лише у бік Golang, а й вивчаємо фронтенд складову. Прагнемо, щоби хлопці були full-stack розробниками.
Допомога експертів

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

Час

Якщо ти зовсім «зелений» і разом з мовою Golang хочеш увійти в IT, то за два місяці цілком реально освоїти мову, старанно займаючись. Все залежить від часу, який учень зможе приділяти курсу, та й від аналітичних здібностей. Наш курс розрахований: Beginner та Trainee по 30 днів, а на Junior виділяється два місяці. Загальна тривалість курсу складає 4 місяці. На моїй практиці хлопці за 2-3 тижні прокачувалися в базових знаннях з Go, достатніх для участі у проекті. Наприклад, якщо ти рік-два вже працюєш на PHP, попрацював у кількох комерційних проектах, то трьох тижнів тобі вистачить, щоб поринути.
Тарас и его отважная пятерка
Які таланти розкрили/покращили навички в ході роботи над курсом?

Денис: Коли формуєш питання/відповіді, то й сам навчаєшся, так що підтягнув знання з Golang в цілому.

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

Віталія: Підготовка питань для курсу — завдання непросте, яке потребує теоретичної бази та практичних навичок. Під час читання мануалів, статей, перегляду відео та складання питань, знову згадуєш забуті деталі, або дізнаєшся нові особливості мови. І мої знання Go покращали.

Рома: Я набув цікавого досвіду підбору матеріалу для теоретичних завдань. Це кардинально відрізняється від процесу пошуку інформації у робочі будні. Головним було завдання знайти матеріал, що максимально точно і наочно описує ті чи інші концепції.

Що порадите хлопцям, які його проходитимуть?

Денис: Пройти до кінця і не опустити руки за труднощів. Курс часом не дає абсолютно всієї інформації, іноді треба буде її пошукати самому. Це важлива навичка для розробника – знаходити відповіді.

Олександр: Будьте уважні, не пропускайте жодних кроків, навіть якщо ви впевнені, що знаєте той чи інший розділ більш ніж достатньо. І, звичайно, будьте максимально зацікавлені, тоді навчання пролетить для вас непомітно та з максимальною користю.

Віталія: Окрім завдань, команда підібрала теоретичний матеріал, після вивчення якого можна відповісти на всі запитання. Тому раджу обов’язково ознайомитись з ним. І, звичайно, куди без практики.

Рома: Писати код:). Після вивчення будь-якої концепції обов’язково спробувати її практично. По-перше, це дуже цікаво, ти бачиш «наживо», як це працює. По-друге, це допоможе при проходженні тестів, тому що там багато питань, що стосуються саме практичної реалізації тих чи інших концепцій.

Тарас и его отважная пятерка
А як ви вдосконалюєте свої скіли? Що робите для того, щоб зростати як розробник?

Денис: Практика, практика, практика.

Ну і часом беру участь у нових для себе активності – не тільки hard-скіли важливі, soft-скіли ніхто не скасовував.

Олександр: Намагаюся читати різні дайджести, статті та дивитися відповідний контент. Пробувати щось нове на практиці та заглиблюватись у всі аспекти. Мені пощастило, що мій поточний проект дозволяє мені розвиватися як Golang, і як PHP-розробнику.

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

Рома: Багато читаю і намагаюся бути в курсі подій, що відбуваються у ком’юніті. Пишу код та пробую нове на практиці. Практика – це найкращий спосіб зрозуміти та закріпити нові знання.

Що вважаєте найскладнішим у роботі девелопера?

Денис: Вирішувати задачі з неточними вимогами, де треба включати в себе трохи від кожного BA/PM/QA.

Олександр:   Знайти ідеальний баланс у робочих процесах.

Віталія: Коли трапляються рутинні та нецікаві таски.

Рома: Найскладніше в роботі, як не дивно, відноситься не до написання коду. Найскладніше — це правильно позначити, яку саме проблему і яким чином має вирішувати ту чи іншу програму/фіча/модуль. Тут на допомогу нам приходять бізнес-аналітики.

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

Класно, коли люди не просто кодери, а залучені інженери, які завжди докопаються до суті та запропонують якесь альтернативне рішення чи навіть кілька.

А що найприємнішим?

Денис: Зелений пайплайн :)

Олександр: Коли твоє творіння виходить у світ і ним користується велика кількість людей. Усвідомлення того, що зробив/робиш щось потрібне та корисне.

Тарас: На різних етапах це були різні речі. Коли я тільки прийшов до Нікси, мотивувало і кайфував від того, що «Клас! Вийшло! Працює!», потім «Клас! Я успішно працюю в проекті», потім радість освоюваних фреймворків. Зараз мені класно, коли вся команда розвивається, у них все виходить і ти відчуваєш гордість за всіх. Вже інший рівень, не радість від вивченої бібліотеки, а вищі речі.

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

Рома: Найприємніше для мене це, власне, написання коду і робота з абстракціями в коді/системі. Тут можна повною мірою реалізувати свій дослідницький та творчий потенціал.

Порадьте книгу/статтю/євангеліста Golang, яку має прочитати/на якого має підписатися кожен Golang розробник

Денис: StackOverflow :)

Я особисто ні за ким конкретно не стежу, якийсь певний ресурс постійно не читаю. Щось побачу там, щось почую тут, хтось поділиться якоюсь новиною, так и добуваємо інформацію.

Олександр: Golang-book – це те, з чим однозначно потрібно ознайомитись при першому знайомстві. Все коротко, лаконічно, зрозуміло та корисно. А надалі я не радив би прив’язуватися до якоїсь однієї книги або євангеліста. Потрібно просто стежити за світом Golang, новинками та природно писати на Go. Є купа різних дайджестів, телеграм каналів та статей, пов’язаних із цією мовою. І звідусіль можна почерпнути щось цікаве та корисне.

Віталія: Так, мені теж книга Калеб Доксі «Введення в програмування на Go» допомогла поринути у світ Golang. Однозначно рекомендую.

Тарас: Фішка Golang у тому, що хоч він і поєднує досить складні завдання, але його розробляли так, щоб поріг входу був низьким. Go Tour і Go Book, розроблені творцями мови, — саме з них я радив би починати, а потім уже рухатися кудись далі.

У нас всі через ці два ресурси проходили і це реально працює.

Рома: А я хотів би тоді порадити чудовий репозиторій.

Що можете порадити новачкам у IT?

Денис: Головне – мотивація. Якщо тобі справді цікаво щось, то ти обов’язково знайдеш, як це зробити. Тож найважливіше — визначити, що тобі справді цікаво. IT дуже великий, це не просто «писати код»:)

Якщо йти в IT з корисливими цілями, можна легко загрузнути на старті. Тут необхідно виявити старанність і усидливість.

Олександр: Уважно читати матеріали, які є в нашому курсі, та з відповідальністю підходити до завдання. Ми постаралися вмістити все необхідне в наш курс, і, на мою думку, у нас це вийшло.

Віталія: Якщо брати мій особистий досвід, коли я лише починала своє навчання, то я знайшла відеокурс, де лектор зрозуміло пояснював основи, а також давав безліч практичних завдань.

Роблячи свій перший проект (це був інтернет-магазин), читаючи теорію, я поступово наробляла базу. Моя порада не буде чимось новим: треба багато практикуватися — тільки таке навчання буде ефективним.

Рома:  Хотів би порадити бути «жадібними» до знань. Більше читати, дивитися, слухати, і головне – куштувати. Найкращий спосіб вивчення чогось — пробувати це практично. Ну і звичайно, бути впевненими в собі. Не соромитися запитувати більш досвідчених хлопців, будь-то офіс, чат, Github і т.д. Тобі обов’язково допоможуть.