Шлях в ІТ — як проходити його найбільш ефективно

Всім привіт, мене звати Олексій Михняк, і я хочу розповісти про свій досвід в ІТ-сфері, а його в мене не багато і не мало — десь 9.5 (округлимо до 10 для краси) років: з того часу, як я почав вивчати програмування в університеті (КПІ) та років 7 як почав працювати.

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

Планую розглянути: коли краще починати вивчати програмування; чи потрібні університети; чи дають щось ІТ-курси; про зміну основного місця роботи на ІТ-сферу та багато іншого.

Передісторія

Я з невеличкого міста в Київській області та більшу частину дитинства провів без комп’ютерів і телефонів (навіть кнопкового). Так, була приставка з Super Mario, танчиками та іншими культовими іграми 2000-х, але то було лише на свята, а так — вона надійно пилилась на шафі. Перший кольоровий телефон мав 2.7 Мегабайта пам’яті, і тоді був суворий вибір: або 2 треки, або 3 гри. Потім вже комп’ютер та провідний інтернет через телефонний кабель. Думаю, в багатьох була подібна історія. Тоді я навіть не замислювався, що програмування взагалі існує. Вже ближче до 11 класу почув, що є така професія і це начебто щось круте і для цього потрібно знати математику (яка мені в школі подобалась), тому я і обрав свій шлях.

За освітою я конструктор електронно-обчислювальної апаратури, тому це не прям програміст програм, а більше програмування мікросхем та як взагалі ці мікросхеми працюють. Але про університет і чи воно варте того, ми поговоримо трохи згодом.

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

Коли у 2009 році я дізнався про Steam та те, що тепер можна не купувати диски, а просто встановити гру з інтернету, то це був шалений захват, поки не побачив ціни на ігри. Виявляється вони не коштували 20-50 гривень за диск, а досягали цін в 300-500, а то і більше гривень.

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

Коли варто починати вивчати програмування

Взагалі, в Україні більше є тенденція до знання конкретних технологій замість тенденції software engineer. Я маю на увазі, що більшість компаній жорстко прив’язуються до конкретних мов програмування та фреймворків, побудованих навколо них. Мені особисто декілька разів відмовляли в офері через відсутність робочого досвіду з AWS.

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

Frontend-розробка

Зазвичай в обовʼязки програміста входить створювати вебсайти, які ми бачимо кожного дня. Програмувати де і як будуть показуватися різні UI-елементи, як буде змінюватися їхнє розташування та розширення на різних пристроях, переходи між екранами і т.д.

Розробка найчастіше відбувається мовою програмування JavaScript (не має жодного відношення до мови Java) та похідних від неї TypeScript, CoffeScritp тощо. Також frameworks такі як React, Angular, Vue, а ще — з використанням CSS та HTML. Якщо коротко — це не мови програмування, а спеціальні розмітки які допоможуть додати на сайт UI-елементи та задати їм потрібний стиль.

До fontend-розробки, мабуть, можна віднести PHP (якщо я не правий, то можна виправити мене в коментарях під статтею), тому що багато сайтів були написані на cms типу WordPress.

Backend-розробка

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

Існує багато різноманітних мов програмування для цього, наприклад: Java, C#, C++, Python, Go, Ruby, PHP, JavaScript (за допомогою Node.js) та інші. Також в кожної мови існують сотні різноманітних frameworks та додаткових бібліотек для роботи з багатьма видами даних.

Для збереження даних використовують бази даних, наприклад: PostgreSQL, MongoDb, MySql, Microsoft SQL Server, Cassandra та інші. Теж не завадить розбиратися в Message broker таких як RabbitMQ, Kafka, Azure Service Bus та інші.

Fullstack-розробка:

Це розробка, яка поєднує в собі як Frontend, так і Backend. Більшість з наведених Backend мов програмування мають свої бібліотеки для генерування JavaScript, разом з HTML та CSS тут все залежить від проєкту. Може бути повноцінний Frontend-проєкт, наприклад, на React, а може — згенерований тією ж мовою програмування. Але все одно потрібні знання JavaScript, HTML та CSS.

Можна звернути увагу на відносно новий підхід роботи з вебсайтами — WebAssembly. Якщо коротко — тут сервер генерує спеціальний файл будь-якої мови програмування, який вже виконується у браузері.

Мобільна розробка

Розробка різних мобільних застосунків, тут можна відразу виділити розробку під Android та iOS. Зазвичай вона відбувається на Kotlin (Java) та Swift (ObjectiveC) мовах програмування відповідно (в дужках наведені «застарілі» мови програмування, на яких раніше відбувалась розробка).

Розробники стикаються зі складностями оптимізацій, як використання оперативної памʼяті, так і використання батарейки. Розмір застосунку також може бути важливим, якщо цільова аудиторія знаходиться в країнах, де дорогий інтернет, та багато дешевих мобільних пристроїв з малими обʼємами пам’яті, наприклад Індія, Бразилія, Малайзія і т.д. Але тут потрібно відразу вибирати сторону: Android чи iOS.

Ще існує кросплатформна розробка, наприклад Xamarin (C#), React Native (JavaScript), Flutter (Dart) та інші. Тобто, розробляється один застосунок і потім за допомогою магії і трішки везіння написаний код перетворюється на мову, яку підтримує потрібна платформа.

Звісно, тут є свої недоліки, наприклад, часом потрібно писати нативний код на Kotlin чи Swift, інколи працює не оптимально, інколи не можна використовувати нативні компоненти тощо.

Desktop-розробка

Мабуть, можна виділити розробку під Windows та MacOS. Для Windows зазвичай використовують C++ або C#, для MacOS — Swift (ObjectiveC). Для кросплатформної розробки можна використовувати ті самі інструменти Xamarin (C#), React Native (JavaScript), Flutter (Dart) і т.д.

Hardware-розробка

Апаратна розробка — це виготовлення різноманітних мікросхем і подальше програмування їх на низькорівневих мовах типу C/C++, Assembler, Verilog, інколи C# та інші.В Україні не так багато компаній, які цим займаються, але можете почитати про AJAX та Melexis.

Game-розробка

Вирішив виділити в окремий пункт, тому що це трішки відрізняється від нативної розробки під телефони або комп’ютери. Зазвичай для цього використовують Unity (C#), або UnrealEngine (C++), або самописні двіжки (зазвичай теж використовується C++). Тут більше взаємодії з картинками, 3D-моделями, звуками, різними ефектами тощо.

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

Наприклад, з 13-14 років можна вже віддати дитину в літній табір або гуртки з програмування та виявити, що з усього спектру програмування є до душі. Ще важливо навчитися правильно гуглити (бо це теж вміння) необхідну інформацію. Саме з цим найбільше проблем в початківців, оскільки більшість термінології для них незнайома і ти просто не знаєш, як щось називається.

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

Чи потрібно вступати до університету

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

З мінусів — більшість викладачів займаються тільки викладацькою діяльністю і в останній раз писали код у 1980х. Все залежить від конкретного університету/ факультету і т.д., раджу сходити на дні відкритих дверей і познайомитись з викладачами. Це допоможе краще уявити, що будете вивчати, або ж можна дізнатися елементарно якісь нові слова і потім вдома їх загуглити.

Ще з великих аргументів на користь йти в університет — офіційний статус студента; зі студентським квитком можна отримати багато знижок або безкоштовного доступу до програм. Наприклад, можна отримати знижки на проїзд, відвідування музеїв та інших місць в Україні та інших країнах Європи, безкоштовний Microsoft Office (Windows), використовуючи свою електронну пошту студента, безкоштовне IDE (Integrated development environment, це там, де пишуть код) від JetBrains.

Користуватись їхніми продуктами, зручними та інтуїтивно зрозумілими, корисно, адже, як на мене, найголовніше для початківця — коли запустив і все працює. Також можна потрапити в програму літніх стажувань в компанії різного масштабу, починаючи від локальних, і закінчуючи Google, Amazon, Microsoft.

Тут потрібно уточнювати, чи вже є для цього контракти у ваших університетах, або не соромитись і писати різним компаніям (для контактів з іноземними — не завадить знання англійської). Ще можна спробувати на літніх канікулах work and travel — це не пов’язано з ІТ, основна суть це побачити світ, поєднуючи це з роботою. Звичайно, це буде актуально тільки після перемоги. Ще університет дає можливість банально познайомитись з однодумцями, тому рекомендую на магістратуру йти на іншу кафедру або навіть в інший університет.

Про свій досвід та де краще починати кар’єру в ІТ

Особисто я почав працювати на неповній зайнятості (приєднався до стартапу) після 3 курсу. Мабуть, не найкраще вибирати стартап для першого місця роботи, оскільки у вас немає досвіду і, скоріш за все, в інших членів стартапу його теж не багато (малоймовірно, що «круті» програмісти будуть брати до себе в стартап студентів без досвіду).

Мабуть, найкраще для першого місця роботи вибрати велику компанію, бо там вже налагоджені процеси, і хоч не завжди потрібно працювати по СКРАМ, але мати досвід роботи з цим буде корисно в майбутньому. Також раджу не засиджуватися на одному місці, як було сказано в книзі «Shoe Dog» Філ Найта: «людина в середньому змінює роботи 3 рази за життя», — навіщо тягнути.

Потім я перейшов на повну зайнятість в невеличкій ігровій студії. Поєднувати навчання і 8-годинний день може бути складно, але якщо все розписати і не відволікатися, то цілком реально. О 6:30 встаєш і робиш ранкову рутину + готуєш їсти в судочки на весь день, з 8:30 до 11-12 на пари, потім — з 12-13 до 20-21 на роботі, а з 21 до 23+ вчиш те, що будеш здавати в університеті.

Щоб полегшити собі життя, я вирішив не змінювати університет, а піти на магістратуру на свою ж кафедру. Зараз дуже багато ІТ-компаній мають гнучкий графік роботи, тому це все зробити також буде реально. Попрацювавши в трьох компаніях з розробки ігор на C#, я зрозумів, що це більше мені не приносить задоволення.

На той час на ігровому ринку стали популярними гіпер казуальні ігри (це там, де граєш в дуже просту гру і потім дивишся 100500 реклам). Тому я вирішив змінити напрямок і став бекенд-розробником. Для цього витратив десь місяців 7-9, вивчаючи нюанси бекенд-розробки вечорами після роботи.

Найскладніше було отримати запрошення на співбесіду, оскільки більшість HR просто відмовляли за ключовими словами (не має досвіду роботи з AWS — до побачення). зрозуміло, що не можна взяти і змінити область розробки, наприклад з бекенд перейти в мобільну розробку, залишивши свій статус senior, оскільки в тебе банально немає тих набитих шишок, які й роблять тебе senior.

Але я вірю в те, що не має жодних складнощів у зміні мови програмування чи фреймворка у своїй області розробки. Наприклад, почати писати бекенд-сервіс на Go замість Java. Так, перші 2 тижні ти будеш щось плутати і гуглити якісь банальні речі, але потім звикнеш. Фактично, ти вирішуєш однакові завдання і мова програмування не така вже і важлива.

Але це не працює, якщо процес не налагоджений в компанії, тобто якщо ти прочитав, що Go це круто, і взагалі без досвіду в цій мові скажеш своїй команді: «так, відзавтра всі пишемо нові сервіси на Go», — це не найкраща ідея. А якщо в тебе в компанії є люди, які знаються на Go, і можуть дивитися твої pull request, то чому б ні. Бо без цих перевірок ти почнеш писати свій spring в Go і потім для тебе стане шоком, що в Go все ще немає generic класів.

І в майбутньому у тебе зміниться уявлення, як можна вирішувати завдання. Все одно 90% програмістів не створюють rocket science продукти, а намагаються вирішити бізнес проблеми та проблеми, які створили попередні програмісти, оскільки будь-яке рішення — це завжди компроміс.

Що робити людям, які планують змінити основне місце роботи на ІТ-сферу

На мою думку, не потрібно відразу просити $1000, як свою першу зарплату в ІТ. Якщо в тебе багато років досвіду у своїй сфері, це не означає, що твій досвід релевантний для програміста.

Звісно існують виключення: якщо ти займався вузькою галуззю, наприклад, юрист якогось напряму, і потрапив в компанію, яка робить застосунки для юристів, тоді так, твій досвід додасть тобі переваг, але не зробить тебе кращим програмістом.

Пишу слово «програміст», тому що більшість людей хочуть бути саме програмістами, хоч в ІТ-сфері існує багато позицій, де твій досвід з іншої сфери може бути більш релевантним.

Не програмісти в ІТ:

  • бізнес-аналітик
  • проєкт-менеджер
  • продукт-менеджер
  • дизайнери (в основному, верстка вебсайтів, мобільні додатки, різні екрани, UI)
  • скрам-майстер
  • фасілітатор
  • тестувальник (QA)
  • devops
  • help desk — це як раніше системний адміністратор
  • підтримка (support)
  • HR

Крім того, існують додаткові професії, які стосуються gamedev індустрії:

  • game-дизайнер
  • level-дизайнер
  • сценарист для ЛОР
  • аніматор (2D/3D)
  • художник (2D/3D)
  • звукорежисер

Я вже працюю в ІТ, що є для мене далі

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

Для цього краще створювати pet projects. Це не обов’язково має бути стартап, на якому ти будеш заробляти гроші. Особисто я періодично пробую щось нове, починаючи з написання цієї статі.

Просто потрібно дивитися, що тебе бісить і виправляти це, ось кілька прикладів:

  • часто, коли йду в магазин, записую в телеграмі, що потрібно купити. Тому зробив собі простого телеграм-бота, який створює клікабельний список покупок. Так розібрався, як працює телеграм API та облегшив собі життя;
  • не зміг знайти собі money tracker, який мені подобається (не подобається, що в більшості переказ між своїми рахунками вважається витратами, плюс, додав спільні витрати/ спільні прибутки та інші типи транзакцій). Розібрався з фронтендом, як будувати застосунки на react і як можна безкоштовно хостити вебсайти;
  • зробив сайт для допомоги в популярній грі Wordle (українська версія — «Словко» або «Кобза»), теж заради того, щоб покопатися в фронтенді, дізнався де взагалі потрібно купувати доменні імена, як налаштовувати DNS, статичний кеш, де краще згенерувати ssl-сертифікати, щоб це було безкоштовно, ну, і звісно, як працює React. Якщо комусь цікаво, то посилання на застосунок тут і англійська версія тут;
  • безліч стартап-проєктів, які помирали на різних стадіях, але дозволили розбиратися в тому, що раніше не робив. Де краще розгортати свої бекенд-застосунки, як налаштувати CI/CD, налаштування баз даних та різних доступів тощо.

Теж не потрібно забувати про фундаментальні знання, а це — структури даних та алгоритми. Для цього можна спробувати порозв’язувати те, що називають олімпіадними задачами з програмування: leetcode або hackerrank.

Висновки

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

P.S. Сам нещодавно відкрив для себе світ подкастів з яких можна дізнатися про новини зі світу ІТ, або детальніше розібратися в якійсь спеціалізації:

P.P.S. Якщо комусь цікаво і хоче щось в мене запитати, то можна додатися в телеграм-чат.

Сподобалась стаття? Натискай «Подобається» внизу. Це допоможе автору виграти подарунок у програмі #ПишуНаDOU

👍ПодобаєтьсяСподобалось9
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
тестувальник (QA)
devops

Камон....якщо ти тестувальник або девопс і не розумієш код, то що ти взагалі робиш в ІТ?)

в нас половина (утрірую) програмістів не розуміють код :)
але я не писав що не програмісти не мають знати код. Хоча для джун позиції мабуть можна і без знання коду стати тестувальнико чи девопсом. Але саморозвиток ніхто не відміняв ;)

під DevOps певно маєте на увазі ClickOps? типу оператор адмінки клауду?
інакше як Infrastructure as Code реалізовувати
такі клікальники це ппц — щоб будь яку проблему відлагодити їм треба девелопера, розгорнути нове середовище — клікати мишкою тиждень-другий, замість того щоб заскріптувати все один раз

дивлячись що означає

заскріптувати

бо написати якийсь bash це не зовсім розуміти код. Я б всежтаки розділив скріптування і написання коду в окремі категорії. Але це чисто моя субєктивна думка :)

навряд людина, в якої є проблеми з розумінням коду бізнес логіки, може автоматизувати щось в прийнятні строки та з нормальною якістю

навряд джуну дадуть автоматизовувати процеси ;)

який же він тоді DevOps, так адмін хіба що

навряд людина, в якої є проблеми з розумінням коду бізнес логіки, може автоматизувати щось в прийнятні строки та з нормальною
якістю

А відколи девопси почали вникати в код бізнес логіки?
В кращому випадку вони надають девелоперам інструменти CI/CD типу куба/gitlab пайплани, в гіршому випадку менеджать права на репозиторії/дженкінс і машини рестартують.
До бізнес логіки девопсам як ручним тестерам до архітектури

podlodka — prnt.sc/GZmipllvyUoL

Реально?
Ймовірно, треба було щось краще пошукати і досить непогано англійською мовою (стане дуже в пригоді).

в основному тут посил для людей без досвіду, тому англійською буде тяжко слухати про взагалі новий матеріал. Нажаль не знаю цікавих україномовних підкастів про ІТ (крім ДОУ). + вони висказались проти війни, тому додав їх в список.

Не обов’язково англійською. Ось мені особисто подобається дивитись/слухати Sergey Nemchinskiy — позитивний чувак =)
Так він часто рекламує свої курси але якщо вимкнути фільтр сприйняття реклами — тоді все Ок :)

— скрам-майстер
— фасілітатор

Карл Маркс — это один человек, а не два

help desk — це як раніше системний адміністратор

а Слава Кпсс — вообще не человек

Гугл з тобою не згоден, відстав ти від життя)

Salary: Senior Facilitator (May, 2022) | Glassdoor
The national average salary for a Senior Facilitator is $84,745 per year in United States

фасілітатор

Спасибі, розвеселило)

Як на мене, то в статі вартувало згадати що щоб успішно і відносно легко щось досягнути треба мати чіткі короткострокові(1-3 місяці), середньострокові(1-2 роки) і довгостострокові цілі (5+ років). Виписавши їх на листочку, далі можна думати як їх досягнути.
Для когось це можливість працювати з Таїланду, виїхати в америку, купити беху і т.п.

Наприклад, умовний світчер в довгостроковій перпестиві (5+років) хоче мати ЗП 5к$+ при ненапряжній роботі, жити в Україні і мати час протягом цих 5-ти років проводити час з дітьми, які технології/напрям(фронт, бек, девопс) не важливо.
Виходячи з цього в середньостроковій перпективі (1-2 роки) треба влаштуватись на роботу в фірму з чіткими процесами (щоб не було напрягу), без відсутності овертаймів (значить не стартап) і щоб можна було дорости до 5к$ (тому рога/копита, СНГ замовники і фріланс не підходять, PM/скрам мастера/і решта тих де середня ЗП сіньора по джіні < 5к не підходять).
Вчити потрібно те що вимагають в Україні (значить ніяких аглоритмів) і англійська B2 більше ніж достатньо.
Все вище звучить як опис великої галери типу епаму, серву, глобала, значить в короткостроковій перспективі (1-3 місяці) треба
— знайти найхалявніший напрям на галері де можна дорости до 5к
— скласти навчальний план, список що треба знати щоб пройти,на джуна
— і так дальше ...
Гугл/доу людині підкаже що треба йти в автотестери або девопси.

Дії для студента який хоче через 5 років працювати в ФААНГу будуть зовсім інші, так само як і дії того хто хоче виїхати легально в сша і т.п.

фасілітатор

я сам недавно почув це слово :)
взагалі мета була в тому щоб донести що ІТ це не тільки програмісти і що є значно більше професій на які можна обрати собі по душі, а не для того щоб заробляти 5к+. Бо не думаю що всі зможуть стати сенйорами і отримувати 5к+ не розуміючи що вони роблять, а ходити на роботу і страждати від того що ти робиш, так собі варіант.
це те саме щоб піти IOS розробником бо там більше платять, але ні разу в житті не користуватися iPhone ;)

значно більше професій на які можна обрати собі по душі, а не для того щоб заробляти 5к+

З часом все приїдається. Судячи по собі і своїх колегах, з досвідом робота стає саме активністю для отримання тих xxxx$ а для душі є сім’я, хобі і т.п.

Норм фасилитатор может на изи получить грант или инвестиции. За красивые глаза :)

Пару ідей на тему з чого почати й чому не варто з фронтенду youtu.be/CM3Bh5po4jc

Підписатись на коментарі