Довідник для джуна. Чого бракує кандидатам-розробникам — розповідають СTO компаній Genesis



Нещодавно портал DOU провів опитування серед IT-фахівців щодо того, як вони шукають роботу в умовах війни. У нових обставинах з'явилися нові реалії пошуку, проте проблеми джуніор-спеціалістів залишился тими ж — складність тестових завдань, довготривалі інтерв’ю, а часто й відмови через брак досвіду чи знань.


Понад 6 років Genesis активно інвестує у розвиток IT-освіти задля того, щоб ринок отримував більше кваліфікованих спеціалістів, а талановита молодь мала змогу розвивати та застосовувати на практиці свої здібності. У партнерстві із Києво-Могилянською академією компанія запускає безкоштовну школу для розробників-джуніорів Genesis & KMA Software Engineering School. За 12 тижнів навчання учасники отримають теоретичні й практичні знання про побудову «чистої архітектури», роботу з базами даних, інфраструктуру та SDLC — ті знання та навички, яких найчастіше не вистачає кандидатам-джунам на співбесідах. Що ще треба вдосконалити початківцям? Відповіді на це питання точно мають ті, хто співбесіди проводить.


Саме тому ми розпитали технічних директорів проєктів Genesis та партнерських компаній про технології, що вони використовують у роботі та про те, чого, на їхню думку, бракує кандидатам-розробникам.



AMO


Міжнародна IT-компанія, яка створює продукти й історії для мільйонів користувачів. Має три великі підрозділи: AMO Publishing, AMO Pictures та AMO Apps.


Мови для backend: PHP, Go, Node.js, TypeScript.

Фреймворки для backend: Symfony, Node.js.

Фреймворки для frontend: Next.js, React.js, Node.js.

Хмарні середовища: AWS.

Мобільна розробка: Kotlin i Swift.



Розповідає Олег Лавренко, голова відділу розробки:


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


PHP, Python, Go, TypeScript.



Чого бракує кандидатам-розробникам?


Відсутні базові знання сomputer science. Є фокус на конкретну мову програмування, фреймворк, проте немає ширшого уявлення, як все працює «під капотом». Також у багатьох випускників немає цілісного уявлення про комерційну розробку. Не вистачає розуміння, як вибудовується ланцюг від написання коду до використання продукту юзером, як працює бізнес, і яка роль розробника у ньому.



Holy Water


Компанія-розробник заснованих на даних застосунків та рольових мобільних ігор.


Мови для backend: JavaScript, Python.

Фреймворки для backend: Flask, Node.js.

Фреймворки для frontend: React.

Хмарні середовища: AWS, Google Cloud Platform.

Мобільна розробка: Swift, Unity, Kotlin, React native.



Розповідає Анатолій Касьянов, CTO:


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


Усі. Насправді потрібно фокусуватися не на мовах, а на технологіях — frontend, backend, mobile.



Чого бракує кандидатам-розробникам?


По-перше, розуміння своєї мотивації та усвідомлення, чому саме обрав ту чи іншу сферу розробки. По-друге, ініціативності. По-третє, технічні навички. Часто у кандидатів дуже слабке розуміння мови або основної технології.




PlantIn


Компанія, що розробляє застосунок-помічник для розпізнавання рослин на основі штучного інтелекту і є №1 у світі.


Мови для backend: Node.js.

Фреймворки для backend: Serverless.

Фреймворки для frontend: Next.js, SwiftUI.

Хмарні середовища: AWS.

Мобільна розробка: Swift.



Розповідає Дмитро Гринець, CTO:


Які мови програмування на твою думку мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


JavaScript.



Чого бракує кандидатам-розробникам?


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



Lift


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


Мови для backend: PHP.

Фреймворки для backend: Symfony.

Фреймворки для frontend: React, Angular.

Хмарні середовища: AWS.

Мобільна розробка: Swift.



Розповідає Олександр Рутенко, iOS Tech Lead:


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


Swift/Kotlin.



Чого бракує кандидатам-розробникам?


Базових знань з computer science, алгоритмів та структури даних. Якщо закласти гарний фундамент, потім без проблеми можна вибирати різні мови програмування.



OBRIO


Лінійка мобільних застосунків, що працюють на глобальному ринку. Флагман компанії — астрологічний застосунок Nebula, №1 у світі. Компанія має 4 окремі напрями (mobile, web, SaaS, GameDev), які використовують різні технології.


Мови для backend

Mobile: PHP, Node.js. Web: JavaScript, TypeScript. SaaS: TypeScript.

GameDev: В Unity – C# Unreal Engine – C++.



Фреймворки для backend:


Mobile: Symfony, Laravel. Web: Nest.js. SaaS: Nest.js.

Фреймворки для frontend:


Mobile: Angular, React. Web: TypeScript – React.



Хмарні середовища:


AWS, DigitalOcean.

Мобільна розробка: Kotlin i Swift.



Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


Антон Володазський, Head of Engineering, mobile-команда:


Для розробки мобільних застосунків під iOS – Swift, під Android — Kotlin. Для backend –

Node.js.

Олексій Рум'янцев, Node.js Developer, Web-команда:


Java, C#, JavaScript (Node.js) — для розробки backend-застосунків. JavaScript і TypeScript — для розробки веб-застосунків


Микита Мачехін, Node.js Developer, SaaS-команда:


JS на базі Node.js — чудовий варіант для першої мови. Гнучкість мови дозволяє без заглиблення у rocket science швидко навчитися програмуванню.


Віктор Антоненко, Team Lead engineering team (GameDev)

C++, C#.



Чого бракує кандидатам-розробникам?

Антон Володазський, Head of Engineering, mobile-команда:


Більшість кандидатів не мають базових знань про OOP, SOLID, шаблони проєктування ПЗ та можливості мови без використання фреймворку. Якщо говорити про PHP, то є слабке розуміння багатопоточності. Часто бракує досвіду і знань із побудови розподіленої архітектури та оптимізації системи під високу навантаженість. Бракує розуміння, як ефективно працювати з базами даних — MySQL та іншими.


Микита Мачехін, Node.js Developer, SaaS-команда:


Що ми очікуємо від кандидата:

  • Знання стандарту своєї мови (EcmaSript) та взаємозвʼязків між стандартами, провайдерами «движків» та рантаймами.

  • Знання можливостей та обмежень Node.js.

  • Розуміння тонкощів реалізації базових операцій у веб-додатках — як реалізувати «скидання» пароля, збереження картинок користувача, підтвердження пошти, спілкування зі сторонніми сайтами тощо.

  • Чистота коду — SOLID, GRASP.

  • Паралельне та мультипроцесове програмування — навіщо, які є складнощі у реалізації, як реалізувати у Node.js.

  • Знання середнього рівня про необхідні для застосунків сервіси — postgresql, websockets, хоча б одна черга повідомлень, кеширування в пам’яті.

  • Безпека — добре розуміння вразливостей та як з ними боротися.


Віктор Антоненко, Team Lead engineering team (GameDev)


Для якісної роботи в геймдеві важливо добре розуміти ООП, знати й вміти використовувати патерни проєктування. Загальна проблема кандидатів — незнання базових речей, наприклад життєвого циклу MonoBehavior. Це можна виправити, переглянувши документацію Unity перед співбесідою. Окрім цього, багато кандидатів під час написання тестового не приділяють увагу структурі й зв'язкам — не закладається навіть мінімальна архітектура, а класи пов'язуються несистемно.





Suitsme


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


Мови для backend: C#.

Фреймворки для backend: .NET 6, Asp.net core, Entity Framework 6, Z.EntityFramework.Plus.

Фреймворки для frontend: Vue.js. Asp.net core.

Хмарні середовища: AWS.

Мобільна розробка: Unity3d під iOS та Android.



Розповідає Борис Салтан, Lead Unity Developer :


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


C#, Java, JavaScript, Python, C++.



Чого бракує кандидатам-розробникам?


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




Компанії-партнери Genesis


Headway


Компанія, що розробляє мобільні EdTech-продукти, які допомагають мільйонам людей навчатись через лаконічний (bite-sized) контент.


Мови для backend: Go.

Фреймворки для frontend: Next.js.

Хмарні середовища: Google Cloud.

Мобільна розробка? Kotlin i Swift.



Розповідає Олександр Михайлюта, Backend Lead:


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


Насправді фокусуватися краще не на мовах, а на базі та підходах до її побудови, тому найкраще — отримати ґрунтовну інженерну освіту. Побутує думка, що краще починати з Pascal, і я з нею погоджуюсь. Потім варто освоїти C. А ще згодом — одну сучасну мову, що компілюється, на кшталт Java/Kotlin/Swift/C#/Go/Rust, та одну, що інтерпретується — JavaScript, Python, PHP.



Чого бракує кандидатам-розробникам?


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



Plich


Глобальна IT-компанія в сфері social discovery, що створює та розвиває власні продукти з нуля, якими користуються мільйони людей у всьому світі. Частина холдингу SocialTech.


Мови для backend: PHP, Go.

Фреймворки для backend: Symfony, Yii 2.

Фреймворки для frontend: Vue.js.

Хмарні середовища: Google Cloud Platform.


Розповідає Андрій Попович, CTO:



Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


C#, Java.



Чого бракує кандидатам-розробникам?


Головне слабке місце — сеньорність. На ринку розробник рівня «сеньор» у нас буде вважатись «мідл+». Існує думка, що якщо фахівець добре пише код, то він сеньор. Я вважаю, якщо ти лише дуже добре пишеш код, то ти впевнений мідл, але не більше. А от сеньор — це в першу чергу не про технічні навички, а про гнучкі. Також часто кандидати «просідають» у певних фундаментальних речах, наприклад у принципах SOLID. Більшість із них можуть дати визначення SOLID, але на практиці розбираються в цьому одиниці.





Solidgate


Платіжний провайдер, що надає онлайн-підприємцям можливість приймати всі види популярних у світі платежів. Фокусується на ринках США, ЄС, Латинської Америки та Азійсько-Тихоокеанського регіону.


Мови для backend: Go, Java, Kotlin.

Фреймворки для backend: Spring.

Фреймворки для frontend: React.js.

Хмарні середовища: AWS (RDS Aurora, Fargate, KMS, WAF, CloudFront).

Мобільна розробка: Немає.



Розповідає Владислав Пістун, Tech Lead:


Які мови програмування мають вивчатися в університетах, щоб випускники були готові до роботи в продуктовому ІТ?


Go, JavaScript.



Чого бракує кандидатам-розробникам?


Базових знань про структури даних, алгоритми. Вважаю, що не так важливо, якою саме мовою пишеш. З глибокими знаннями про алгоритми та структури даних можна відносно легко перейти на майже будь-яку мову програмування.



Розповідає Микита Глушак, DevOps Team Lead:


Чого бракує кандидатам-розробникам?


Уявлення, як має функціонувати production-ready система. Для цього рекомендую звернути увагу на OWASP Framework, прочитати про 12-factor App. Ці, свого роду, маніфести, досить стисло і доступно дадуть загальне уявлення про те, що потрібно враховувати при розробці застосунків та сервісів.


***


Найголовніше, що помічають усі техліди, які наймають джунів — недостатність базових технічних знань та нерозуміння основ, за якими функціонують технології. Без фундаменту не побудудувати дім, без міцного підгрунтя не стати кваліфікованим спеціалістом. В цьому допоможуть лектори школи Genesis & KMA Software Engineering School — закласти основу, систематизувати знання та розвинути архітектурне мислення.