Що потрібно знати диджею-початківцю

Вступ до технологій, або IT для початківців

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

Розповім трішки про себе. З 2004 року я почав працювати у сфері освіти в IT, ще будучи студентом Львівської політехніки. Я почав із викладання апаратного забезпечення та адміністрування операційних систем, тому що зрозумів, що викладання закріплює знання швидше, ніж навчання у виші. Зараз я Senior Test Engineer, консультант GlobalLogic, директор Tech School у LITS, і загалом я маю понад 12 років досвіду у комерційних проектах.

То з чого все ж таки почати?

У сфері інформаційних технологій можна виділити три основні ролі: програмісти, інженери з якості (тестувальники) та менеджери. Як правило, молоді спеціалісти розпочинають з позицій програмістів чи тестувальників, а менеджерами стають згодом.

Обираєте роль програміста?

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

Вибір мов програмування загалом залежить від ваших уподобань. Якщо ви навчаєтеся на спеціальності «Комп’ютерна інженерія», або на чомусь схожому, скоріш за все ви вивчаєте C чи C++. Це хороший початок, хоч вам може здаватися, що ці мови складніші для вивчення, ніж інші. Однак, якщо ви будете знати на хорошому рівні хоча би одну із них, вам буде значно легше опанувати й інші. Та й можливості ваші будуть доволі широкими: C++, для прикладу, застосовується в написанні коду як для Linux, так і для Windows. Лабораторних у виші буде недостатньо, щоб опанувати цю мову на хорошому для практичного застосування рівні. Спробуйте порозв’язувати усі завдання з того джерела літератури, яке ви використовуєте, знайдіть додаткову літературу, безкоштовні онлайн-курси тощо.

Давайте коротко розглянемо ще декілька мов, які наразі не менш популярні (у контексті великої кількості вакансій), наприклад .NET і Java. Вивчаючи ці мови, потрібно детально ознайомитися з їхніми бібліотеками та використанням цих бібліотек. Java-програміст повинен добре володіти загальними принципами роботи родини операційних систем Linux. Також йому необхідні навички використання таких наборів готового функціоналу (фреймворків), як Spring та Hibernate. Для опанування ж .NET слід ґрунтовно ознайомитись із технологіями Microsoft та особливостями роботи родини операційних систем Windows. Зовсім не зайвим стане паралельне вивчення C#, ASP тощо.

Якщо хочете рухатися у популярному зараз напрямку веб-розробки (створення веб-сайтів), тут є декілька варіантів. Найчастіше зустрічаються такі типи веб-розробки, як front-end, back-end і full stack. Front-end (фронтенд) — це розробка візуальної частини сайту; це те, що ми бачимо, зайшовши на будь-який сайт. Цю частину іще часто називають клієнтською. Back-end (бекенд) розробка залишається «за лаштунками» візуальної частини. Код бекенду розміщений на сервері і відповідає за відправлення правильних даних у браузер для відображення на сайті. А full stack (фулстек) розробка об’єднує два описані вище типи, тобто фулстек-програміст має вміти писати код як фронтенду, так і бекенду.

Як ви вже могли здогадатися, мови програмування на фронтенді та бекенді — різні. Розробка фронтенду здійснюється на мовах, які живуть у браузері — HTML, CSS і JavaScript. Перші дві дуже прості, і про них можна знайти вдосталь інформації в інтернеті. А почати вивчати JavaScript, наприклад, можна з книги Девіда Фленегана (David Flanagan «JavaScript: The Definitive Guide»), розв’язуючи усі зазначені там практичні завдання. Також для того, щоб стати фронтендщиком, потрібно мати розуміння фреймворків (Bootstrap, Foundation, Backbone.js, AngularJS, EmberJS) та JS-бібліотек (jQuery and LESS).

Для бекенду потрібно знати якусь із серверних мов (а то і декілька): PHP, Ruby, Python, Java або .Net, а також вміти використовувати такі системи, як MySQL, Oracle та SQL Server для знаходження, зберігання, зміни даних, які потім відправляються у фронтенд. Ви також повинні на глибокому рівні розуміти, як працює браузер та як відлагодити (debug) код у консолі розробника. Загалом, дуже важливо постійно навчатись, цікавитися різними технологіями, новинками і пробувати їх застосовувати на практиці. Веб не стоїть на місці і існуючі фреймворки оновлюються раз на декілька місяців. Не менш часто можна зіткнутися і з появою нових фреймворків, які не слід боятися застосовувати. Знання нових методик може показати вас із вигідного боку.

А для загального розвитку кожному розробнику я рекомендую почитати книгу Стіва Макконнела (Steve McConnell «Code Complete»).

Віддаєте перевагу тестуванню?

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

Можна стати інженером, що проводить тестування вручну (Manual QA Engineer, скорочено: QA Engineer чи просто QA) або інженером, що автоматизує тестувальний процес — тестувальником-автоматизатором (QA Automation Engineer, Automation QA). Це означає, що він пише скрипт-код для тестів, які автоматично будуть перевіряти програму швидше, ніж людина.

Що саме потрібно знати та вміти, щоб стати Manual QA Engineer? Насамперед, потрібно мати ґрунтовну теоретичну базу технічних знань. До технічних знань відносять розуміння циклу розробки програмного забезпечення, видів та рівнів тестування, знання основних інструментів тестування. Тим, хто починає вчитися на інженера з якості, раджу почитати книгу С. Мюллера «Модернізація і ремонт ПК» (Scott Mueller «Upgrading and Repairing PCs») та Н. Оліфер і В. Оліфера «Комп’ютерні мережі» (Natalia Olifer, Victor Olifer «Computer Networks: Principles, Technologies and Protocols for Network Design»).

QA Automation Engineer — це вже наступна стадія професійного зростання. Крім навичок ручного тестування, QA Automation Engineer повинен володіти базовими навичками програмування на одній або декількох мовах (Python, JavaScript тощо). Зараз сфера автоматизованого тестування стрімко розвивається, тому це перспективний напрямок для QA-спеціаліста.

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

Що потрібно, щоб спеціалізуватися у певному напрямку?

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

Програмування вбудованих пристроїв (embedded) — до прикладу, медичних апаратів, спортивного спорядження тощо;
Для початку тут підійде знання C/C++, загальне знання апаратного забезпечення та операційних систем.

Розробка програмного забезпечення для носимих пристроїв (wearables) — розумних годинників, фітнес-браслетів тощо;
Тут потрібні ті ж знання, що і для embedded-розробки, але додатково слід розібратися і в апаратному забезпеченні для носимих пристроїв.

Розробка мобільних веб-додатків (applications) для таких операційних систем, як iOS, Android, Windows etc.
Для того, щоб почати розробляти iOS-додатки, потрібно вміти писати код на мові Objective-C або ще краще — на Swift. Для розробки Android-додатків потрібно володіти Java, рідше — C/C++. Для Windows — C#, .NET.

Розробка програм для настільних персональних комп’ютерів — у цій сфері знадобляться знання C/C++, Python, Java (залежно від операційної системи), загальне розуміння структури операційних систем, основи знань про мережі.

Проекти зі сфери «Інтернету речей» (IoT = Internet of Things) — такі проекти передбачають тісну взаємодію між пристроями. Концепція «розумного будинку» є яскравим прикладом «Інтернету речей». Тут крім володіння мовами програмування потрібні ще базові знання мереж та їхнього апаратного забезпечення, розуміння мережевих моделей і мережевих протоколів.

А які перспективи спеціаліста у компанії?

Програміст чи тестувальник-початківець без практичного досвіду розпочинає свій шлях у компанії з позиції початкового рівня — це може бути роль Trainee (так вона називається у GlobalLogic, наприклад) або Intern. На цій позиції початківець перебуває від трьох місяців до року. За цей час майбутній спеціаліст із допомогою ментора та HR-консультанта адаптується до компанії, своєї ролі у ній, багато вчиться і здобуває досвід та необхідні навички для переходу на вищий рівень. Далі рух кар’єрними сходинками виглядає приблизно так:

Junior — Middle — Senior — Lead

Рівень Middle може мати назву Intermediate або Medior, а Lead — Leader.

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

У спеціаліста на позиції Lead з’являється можливість рухатися у бік технічної експертизи — бути Technical Lead (і стати Area Expert або Architect) або у бік менеджменту — бути Team Lead (і згодом обійняти посади Project Manager чи Delivery Manager).

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

Що ще я маю знати?

Робота на проекті передбачає не тільки написання коду і його тестування, але й взаємодію з іншими людьми — колегами у команді і замовником, — тому важливості набувають навички спілкування (як ділового, так і неформального), здатність легко знаходити спільну мову. Ці навички мають свою назву — soft skills, і на співбесіді рекрутери звертають увагу на те, наскільки кандидат ними володіє. Також цінується творчий підхід до роботи, хороші навички тайм-менеджменту (керування своїм часом), вміння правильно встановлювати собі цілі для особистісного зростання. Раджу пошукати статті на ці теми в Інтернеті, зараз їх є вдосталь.

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

Як стати PHP-розробником. План дій для початківців

PHP — це мова програмування, яку використовують у веброзробці. Сьогодні близько 80% усіх сайтів застосовують PHP як серверну мову. Вона входить у пʼятірку найбільш поширених мов програмування серед українських розробників.

У межах рубрики для початківців «Код професії» розповідаємо про те, як вивчити PHP та знайти першу роботу. Для цього ми поспілкувалися з досвідченими розробниками Артемом Висоцьким, Володимиром Кочетковим і Олегом Висоцьким і зібрали їхні поради в один матеріал.

Що таке PHP

PHP — це скриптова мова програмування, створена для генерації HTML-сторінок на стороні вебсервера. Спочатку PHP розшифровувалася як Personal Home Page, але нині її офіційна назва PHP: Hypertext Preprocessor.

PHP є однією з найпоширеніших мов, яку використовують у сфері веброзробки, її підтримує більшість хостинг-провайдерів. PHP інтерпретує вебсервер у HTML-код, який передається на сторону клієнта. На відміну від JavaScript, користувач не бачить PHP-коду, тому що браузер отримує готовий HTML-код. Це є перевагою з погляду безпеки, але погіршує інтерактивність сторінок.

Згідно із зимовим опитуванням DOU, PHP для роботи використовують 10,6% українських розробників. PHP — на п’ятому місці в рейтингу мов програмування серед українців, її популярність на початку 2022 року зросла на 4,2% порівняно з

Якщо говорити про розподіл мов за сферами використання, то PHP послуговуються в роботі близько 18% Back-end розробників та близько 15% Full Stack розробників. Частка PHP як першої мови початківців щороку зростає, у 2022 році вона становить 5,6%.

Згідно з останнім опитуванням, медіанна зарплата Middle PHP-розробника становить $2200; Junior — $900; Senior — $4000. Зарплати у Senior не змінилися, порівняно з торішнім опитуванням, а у менш досвідчених дещо впали: -$25 у джунів та -$100 у мідлів.

Переглянути вакансії в категорії PHP можна тут. На момент публікації цієї статті їх 188.

Чи підходить PHP для початківців

Попри те, що у світовій ІТ-спільноті PHP давно пророкують спад, сьогодні близько 80% усіх сайтів використовують її як серверну мову. З 10 тисяч найнавантаженіших сайтів у світі PHP обирають 56%.

Завдяки такій популярності на PHP початківцю навіть не завжди потрібно писати код, адже його приклади завжди можна знайти в інтернеті. Таким чином новачок під час роботи навряд чи стикнеться з проблемою, яку неможливо розвʼязати.

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

PHP сьогодні використовують у багатьох сферах розробки.

Веброзробка. Спершу мову розробляли для створення вебсторінок, завдяки цьому PHP дає змогу робити сайти з інтуїтивним та адаптивним дизайном швидко та легко. Зручності у веброзробці сприяє функціонал PHP, а саме інтеграція з HTML, хороша сумісність з різними базами даних, безпека та зручний інтерфейс користувача.

У сучасній екосистемі кожна вебсторінка вимагає високого рівня кастомізації і повинна забезпечувати високу інтерактивність інтерфейсу користувача. Оскільки скрипти PHP працюють на сервері, сторінка з HTML-кодом може створюватися у динаміці. А відвідувачі сайту мають справу з кастомізованими сторінками, не стикаючись зі скриптами.

Електронна комерція. Це ще одна велика сфера, в якій PHP пропонує безліч простих шляхів для створення продуктів. Багато популярних онлайн-платформ, таких як OpenCart, Zen Cart, Magento, PrestaShop і Ubercart, зроблені за допомогою PHP.

Загальноорганізаційне програмне забезпечення. Організаційне програмне забезпечення охоплює системи управління контентом (CMS), системи управління інформацією про клієнтів (CRM), системи управління ресурсами (ERP) та інші інструменти для управління активами підприємства. Використання PHP для розробки загальноорганізаційного програмного забезпечення набирає обертів завдяки гнучкості, легкій інтеграції та різноманітним можливостям для здійснення платежів.

Створення баз даних. Написання бази даних на PHP значно спрощується завдяки використанню спеціальних розширень або підключенню до однієї з баз даних, які підтримують стандарт ODBC. PHP надає підтримку для різних баз даних, включаючи MySQL, Oracle та MS Access (загалом понад 20), а також може використовуватись для підготовки унікальних баз даних. PHP характерна простота генерації сторінки, що працює з базою даних.

Мобільні застосунки. Сьогодні можна побачити мало самодостатніх застосунків, більшість із них спираються на бекенд-сервіси. Серверна частина програми відповідає за об’єднання різних даних з мобільного пристрою, патернів поведінки користувачів, збереження налаштувань користувачів тощо. Декілька фреймворків PHP, серед яких Symfony та Laravel, добре підходять для створення бекенду мобільних програм.

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

Які технології варто вивчити в межах PHP

Мінімально необхідний набір технологій для вивчення, крім самої мови, це:

  • алгоритми та структури даних;
  • інтернет-протоколи;
  • HTML, CSS та основи JS;
  • бази даних (для початку MySQL);
  • IDE, інтегроване середовище розробки;
  • вебсервери (Nginx, Apache);
  • Git;
  • фреймворки (Laravel, Symfony).

Порада № 1. Вибір додаткових технологій, крім вказаного списку, залежить від потреб ринку. Перегляньте описи вакансій PHP-розробника і побачите, знання яких технологій найчастіше вимагають зараз для роботи з мовою.

Порада № 2. Важливо зрозуміти, що одразу вивчити все неможливо, тож гуглити відповіді на Stack Overflow — це щоденна практика розробників усіх рівнів. Але є проблема з доступністю інформації — швидко знайдена у відкритих джерелах та імплементована відповідь так само швидко стирається з пам’яті, і через тиждень її доведеться гуглити наново. Тож записуйте моменти, які довелось шукати, і вивчайте їх напам’ять.

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

Корисні ресурси для вивчення PHP

Офіційна документація від творців PHP. Цей посібник проведе вас від елементарних знань до того, як встановити PHP і розібратися в основному синтаксисі. Він написаний лаконічно і чітко, проте початківцям у програмуванні може бути складно його зрозуміти. В такому разі радимо вивчити основи мови за допомогою уроків або курсів, які легко знайти в інтернеті, поступово читаючи документацію і зіставляючи нову інформацію з нею. Такий алгоритм дій навчить вас розуміти офіційну документацію, і кожен наступний посібник буде зрозуміліший.

PHP-туторіал від W3Schools. Він досить простий та доступний, там є безліч посилань і прикладів для наочності, а також вправ та тестів, що допоможуть закріпити знання з PHP.

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

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

Codeacademy. Це безкоштовний ресурс, насамперед націлений на навчання кодингу на практиці. Хоча він здебільшого складається з інтерактивних уроків, там є тести та статті на різні теми з PHP.

PHP Apprentice. Це безплатна онлайн-книга, яка містить багато прикладів практичного застосування PHP. Вона нагадує звичайну документацію з програмування, але простіша та зрозуміліша для новачків.

Learn PHP in Y Minutes. У цьому документі все коротко, лише код. Тут немає довгих пояснень, тож якщо вам подобаються лаконічні туторіали — цей варіант для вас.

Інтерактивний туторіал Learn-php.org. Унікальність цього PHP-туторіалу полягає в тому, що він є набором інтерактивних вправ, що занурюють вас у написання коду, результати якого ви бачите відразу ж, щоб зрозуміти, чи отримали очікуваний висновок. Якщо зробите щось не так, туторіал повідомить, де ви помилилися, як справжній компілятор. Спробуйте його, якщо цікаво перевірити знання синтаксису в режимі реального часу.

PHP Front To Back від Traversy Media. Цей плейлист навчить вас усього, що потрібно знати про PHP, за 22 відеоуроки. Тут розглядаються основи програмування на PHP, такі як синтаксис мови, а потім розкриваються більш просунуті теми: інтеграція з MySQL та налаштування файлів cookie за допомогою PHP.

Туторіали з PHP від Udemy. Це популярна онлайн-платформа курсів, де доступні сотні навчальних програм з PHP.

Корисні статті на DOU

Як шукати роботу початківцю в PHP

Перш ніж розсилати резюме, потренуйтесь писати код, наприклад на Codewars або LeetCode. Production-ready код ви зможете побачити й почати писати, тільки коли влаштуєтеся на роботу, але перед цим корисно опанувати написання базових алгоритмів. Знайдіть прості завдання з PHP в інтернеті, виконайте їх, а проєкт залийте на GitHub.

Пишіть у резюме те, що ви справді розумієте та вмієте. Хороше CV PHP-розробника містить:

  • речення з коротким описом себе та своєї мотивації.
  • Список навичок і знань, які потрібні більшості PHP-розробників (про них йшлося вище).
  • Досвід роботи або стажування. Їх можна знаходити в компаніях будь-якого розміру. Плюси великих компаній — їхній процес найму стажистів уже налагоджений, і там із більшою ймовірністю є готовий план розвитку співробітників та більший вибір проєктів, мінус — велика конкуренція. У малих компаніях конкуренція може бути меншою. Якщо певний комерційний досвід вже є — обов’язково опишіть в резюме, яка була ваша роль на проєкті та який саме внесок ви зробили.
  • Якщо у вас є свої проєкти з відкритим кодом (нехай навіть код там не ідеальний), вкажіть посилання на них.
  • Зазначте решту технологій, з якими працювали. Тільки не перераховуйте все поспіль, а лише те, з чим справді стикались впритул.

Приєднайтесь до онлайн-спільнот розробників — там зручно відстежувати актуальні вакансії «з перших рук». До того ж ви матимете змогу безпосередньо поспілкуватися з потенційними майбутніми колегами. Можливо, після знайомства хтось сам рекомендуватиме компанії найняти вас.

Перед підготовкою до співбесіди радимо звернути увагу на статтю «Співбесіда з PHP. 250+ запитань для Junior, Middle та Senior».

Роботу рекомендуємо шукати на Djinni та DOU. На DOU є розділ «Перша робота» з курсами, стажуваннями та вакансіями для початківців.

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

Бажаємо успіху у вивченні PHP і віримо, що вам все вдасться!

Раніше ми писали про те, як вивчити JavaScript, Python та .NET. Напишіть у коментарях, про яку технологію ви б хотіли почитати наступного разу.