Archives

Традиційно GlobalLogic багато уваги приділяє взаємодії з аудиторією, а саме – ком’юніті. Наприклад, професійні спільноти, які ми створили у Facebook минулого року:

Крім того, що це майданчик для цікавого, корисного та комфортного спілкування професіоналів різного рівня, це ще й джерело авторського контенту, яким ми з задоволенням ділимось з нашими читачами. Наприклад, стаття-гайд CI/CD для JS розробників. Чи поради з технічного інтерв’ю з Java-інженерами.

З чого все почалось

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

Як будь-яка магічна історія, ця бере свій початок напередодні новорічних свят. В одного із консультантів GlobalLogic Lviv Сергія Горошка, Test Engineer, Quality Assurance, Consultant, виникла ідея створити спільноту, яка об’єднає усіх любителів комп’ютерних ігор.

Пандемія внесла свої корективи у повсякденне життя людей. Насамперед нема змоги зустрітись великою спільнотою офлайн. То що робити? Треба знайти майданчик для онлайн спілкування! Навколо ідеї об’єднались представники менеджменту, команди маркетингу та People Team. Всього за 10 днів було створено GL Game Community та проведено першу гру напередодні Нового Року.

Слово ініціатору та ідеологу цієї справи, Сергію Горошко, Test Engineer, Quality Assurance, Consultant:

  • Ідея говорила сама за себе ще за часів першої гри в L4D, під час якої я знайшов однодумців. Ми почали спілкуватися, грати, потім дружити. Community – хороший спосіб знайти новий інтерес чи поділитися досвідом, можливо чогось навчитися. Спільнота насправді може більше, тому що її будують люди! – Сергій Горошко, ініціатор та лід GL Game Community у Львові.
Чому вдалось зібрати людей так швидко?

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

Сьогодні GlobalLogic Game Community – спільнота, яка налічує близько 200 учасників та функціонує на платформі Discord. Спільнота побудована з п’яти основних розділів:

  • привітальна частина з правилами та загальним описом;
  • новини, де публікуються останні зміни чи майбутні події;
  • основний блок з кімнатами за інтересами, де кожен може поділитися своїм досвідом чи поставити питання до спільноти;
  • секція з ігровими чатами, які розділені на жанри та платформи;
  • ігрові голосові чати, які мають мітинг-кімнати.

На цей час спільнота продовжує ділитися цікавими ідеями та планує зібрати більше охочих за інтересами.Також було додано можливість local events де кожний охочий може зібрати свій захід власноруч.

Чому ми навчились завдяки GlobalLogic Game Community?

Ця історія, на перший погляд, може здаватись доволі простою. Проте, вона свідчить про те, що створити спільноту за інтересами не важко, для цього не завжди потрібні якісь спеціальні люди чи досвідчені модератори. Якщо ви маєте тему, яка цікавить та об’єднує багатьох людей, то важливо зробити перший крок – визначитись з аудиторією. А потім – лише сформулювати вірний меседж до неї! А спільнота людей – це сила, повторімо ще раз тезу Сергія Горошко.

Бажаємо  успіхів у побудові!

Автор: Орхан Гасімов, Senior Solution Architect, Consultant, GlobalLogic

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

Що таке мікросервіс?

Мікросервіс – це найпростіша одиниця, сервіс, який приймає вхідні запити для здійснення дії. Це може бути бекенд сервіс, який доступний цілодобово та без вихідних, або функція, яка викликається, коли відбувається подія. Простими словами, функція або набір функцій, доступних через певний API через мережу. Отже, це бекенд служба, розгорнута на сервері. У якомусь сенсі це монолітний додаток. Однак він не несе в собі всю функціональність системи, а лише меншу частинку логіки. На відміну від моноліту, отриманий додаток побудований як набір відносно невеликих незалежних служб, що називаються «мікросервісами», які комунікують через комп’ютерну мережу. Можна сказати, мікросервіси – це ті самі логічні модулі монолітного додатка, які розподілені через комп’ютерну мережу, замість того, щоб працювати в рамках одного процесу (пристрою).

Типова довідкова архітектура мікросервісного веб-додатку

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

Front-End — Client Application, Static Content
Back-End — API Gateway, Experience Microservices, Domain Microservices
Data & Integration — Data Stores, Integration Interfaces / Connectors

Розглянемо кожен ярус і опишемо, за що він відповідає.

Логічні яруси
  • Клієнтська програма

У випадку веб-програми, клієнтом, як правило, є веб-браузер. Дехто вважає, що клієнт – це UI, але це не так. Браузер – це клієнт, який завантажує статичний контент із віддаленого сервера і рендерить UI всередині себе. І він же є клієнтом, що обробляє фізичні HTTP запити ща надходять до сервера. Важливо розрізняти клієнт та контент. Особливо, якщо ви розробляєте micro-app frontend.

Клієнт (веб-браузер) взаємодіє з Backend, щоб рендерити UI та викликати API.

  • Статичний контент

Найкраща практика – розділити відповідальність шляхом роз’єднання логічних компонентів, щоб жоден компонент не відповідав за все. З цієї причини рекомендується подавати статичний контент через окремий серверний компонент. Це дозволяє відокремлювати статичний контент від API. Кілька важливих принципів, на які потрібно звернути увагу, – це server-side rendering, кешування та контроль доступів.

  • API Gateway

API Gateway – це центральні двері для всіх публічних API. Це єдина точка входу для так званих Experience APIs, доступних для клієнтських програм, і є важливою складовою найкращих практик управління API (API Management). По суті, він передає запити реальним бекенд сервісам та здатен приймати рішення. Частіше за все, API Gateway відповідає за такий функціонал, як:


  • Request handling
  • Upstream (або downstream) data transfer (або transformation)
  • Access control
  • Security policies
  • Throttling
  • Rate limiting
  • Analytics
  • Caching

  • Experience мікросервіси

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

Experience сервіси покладаються на доменні сервіси, що знаходяться на нижчому ярусі.

Уявіть набір мікросервісів, які надають API вищого рівня, орієнтовані на клієнтський досвід, повторно використовуючи низкорівневі гранулярні API, доступні в системі. Наприклад, різні продукти, що постачаються для веб- і мобільних клієнтів (Experience), можуть використовувати різний набір experience API, представлених незалежними мікросервісами за API шлюзом (API gateway).

Ці мікросервіси утворюють experience ярус, який логічно відокремлений від інших ярусів. Він може бути керований та налаштований (масштабований, налаштований, захищений тощо) незалежно. Зверніться до архітектурних паттернів API-Led Connectivity та Backend For Frontend, щоб глибоко заглибитися у зв’язані концепції.

  • Доменні мікросервіси

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

Таким чином experience сервіси сфокусовані на користувачі та продукті, в той час, коли доменні мікросервіси відповідають за дані та ресурси, що знаходяться під їх управлінням. Тож, доменні мікросервіси постачають гранулярні API нижчого рівня, які дають можливість створювати різни experience сервіси, повторно використовуючи доступну доменну логіку.

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

  • Бази даних

Best practice полягає в тому, що база даних повинна належати лише одному мікросервісу. Жодні інші сервіси не повинні мати можливості безпосереднього доступу до бази даних, лише через API сервіса-власника. Це дозволяє кожному сервісу керувати консистентністю та структурою бази даних, якою він володіє. Також це дозволяє обирати найбільш відповідну базу даних для конкретних цілей без будь-якої залежності від вимог системи в цілому. Наприклад, один сервіс може використовувати нормалізовану базу даних SQL, тоді як інший може отримати вигоду з бази даних NoSQL. Однак один мікросервіс може керувати кількома базами даних.

Сервіс може мати безпосередній доступ до бази даних, лише якщо він є власником. В іншому випадку він повинен використовувати API мікросервіса-власника і ніколи не мати безпосередній доступ до бази даних інших сервісів.

Спільне використання бази даних може потенційно призвести до анти-паттерна Distributed Monolith. Якщо вам потрібно надати загальний доступ до даних, зверніться до таких концепцій централізованих сховищ, як :

  • DWH (Data Warehouse), 
  • DFS (Distributed File System) 
  • Data Lake. 

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

  • Інтеграційні інтерфейси та конектори

Окрім внутрішніх джерел даних, програмі може знадобитися доступ до інших підсистем та сторонніх API. Корисна практика – розділяти інтеграційний ярус, запровадивши окремі сервіси-конектори.

Підіб’ємо підсумки. Мікросервісна архітектура по суті є патерном який вчить застосовувати різні (чи інші) архітектурні патерни, стилі та підходи в рамках єдиного додатка, розподіленого в мережі. У цій статті ми розглянули лише верхівку айсберга, так звану high-level архітектуру. В наступній частині, ми проаналізуємо набір більш низькорівневих підходів та патернів, які заслуговують на увагу при подальшому зануренні в тему.

Тож не перемикайтесь! 

Автор: Дмитро Мрачковський, Consultant, Engineering, GlobalLogic 

У цій колонці хочемо поділитись власним досвідом у проведенні технічного інтерв’ю зокрема з технології Java.

Перш за все, визначимось з питанням, для чого ми проводимо інтерв’ю? Аби зрозуміти технічний рівень кандидата та оцінити його Soft Skills. Це може бути не так важливо для Trainee чи Junior спеціалістів, але надважливо для Senior, Lead чи менеджерів. Ще одна ціль інтерв’ю – перевірити чи підходить людина команді ментально.

Формат інтерв’ю

Які бувають формати інтерв’ю? Часто поділяють на структуроване та неструктуроване.

Структуроване інтерв’ю – це стандартний список запитань, які ви задаєте співрозмовнику, отримання відповідей та формування свого фідбеку.

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

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

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

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

Структура інтерв’ю

Поговоримо про стандартні секції в інтерв’ю:

  • Привітання та невеликий small talk. Оскільки інтерв’ю для кандидатів це майже завжди стрес, вашою задачею є цей стрес мінімізувати та допомогти вашому співрозмовнику налаштуватись та розслабитись.
  • Інформація про проєкт. Оптимальний час для цього до 5 хвилин. Мета – допомогти кандидату зрозуміти чим проєкт займається, та з чим він гіпотетично матиме справу. Не вдавайтесь в найдрібніші деталі, адже вам потрібно залишити час для технічної частини інтерв’ю.
  • Soft Skill розмова. Це можливість розпитати кандидата про його попередній досвід роботи та спостерігати за тим, як людина спілкується. У цій частині ви також можете перевірити рівень володіння англійської.
  • Технічна частина інтерв’ю (про це далі)
  • Питання від кандидата. Залиште час в кінці бесіди, аби кандидат мав нагоду поставити ті запитання, які його цікавлять чи турбують.
Технічне інтерв’ю

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

OOP

Перша тема, це – OOP. Зазвичай запитуємо про основні принципи та агрегацію композиції, тобто головні поняття з ООР. Ці питання рекомендуємо ставити всім, проте будьте готові, що ви отримаєте різні відповіді.

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

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

Особливості Java Core/ Java 8-11

Запитання по Java 8 та пізніші версії можна теж ставити всім, а особливо техлідам та архітекторам.

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

Collections

Ще одне з обов’язкових запитань для всіх незалежно від рівня та мов програмування, якими кандидат пише, це – колекції, тобто структури даних. Можна розпочати з питання про список та множину (List, Set), fifo/lifo та про асоціативний масив.

Наприклад, пропонуємо кандидатам основні структури даних (в java це list, set, queue, set) та очікуємо, що вони знатимуть ці структури даних та зможуть пояснити чим вони відрізняються.

Хороше запитання: чим відрізняється список від кількості?

Популярна відповідь – кількість не дозволяє дублікатів, а список дозволяє. Насправді це далеко не ключова відмінність списку від множини. Основне це те, що елементи у списку зберігаються в тому порядку, в якому ви їх додаєте. Саме цими властивостями можна пояснити методи, які ви потім спостерігаєте у структурах даних. В список можна по індексу додати елемент, а в set – не можна, тому що set не гарантує порядку, і поняття індексу там немає сенсу. Ось в цьому полягає основна особливість.

Ще один приклад – HashMap. Чому це питання цікаве?

Практично всі розпочинають з кошиків (buckets), відповідаючи, що коли ми по hash-коду отримуємо bucket, то виникають певні нестикуванняколізії. Це стандартна відповідь. Мені ж тут цікаво запитати де ж ті самі buckets зберігаються. Кандидати, зазвичай, відповідають, що вони зберігаються в масиві. Далі запитую наступне: у нас є hash-код, і як же нам у масивах цих кошиків визначити індекс buckets, в які ми ці елементи додамо?

Тут є дві варіанти:

  • Люди знають як це зробити – і можна далі розпитувати. До прикладу, можна запитати як саме це робиться, для чого, та чому розмір масиву у HashMap завжди рівний. Мета цих питань, звісно, не завалити кандидата, а зрозуміти глибину його знань.
  • Люди не знають як зробити, але якимось чином знаходять рішення.
    Проте завдання не просто знайти buckets. Особливість HashMap – це амортизована константа доступу до елементу по ключу. Питання в тому, як добитися цієї константи складності пошуку елементу, і це найголовніша перевага HashMap перед будь-якою іншою імплементацією мапи. Тут важливо те, що ми не очікуємо правильної відповіді, важливо подумати та дослідити з кандидатом як можна за константний час визначити індекс в масиві. Чудовий момент, аби зрозуміти стиль мислення кандидата та побачити як він приходить до певного рішення.
Concurrency

Питання з Concurrency до Middle-спеціалістів ставляться рідко, бо люди на цих позиціях впевнено себе почувають у цій темі. Розпитувати у них деталі є беззмістовним. А от у Senior та Lead – краще запитати. Знання Concurrency для Senior є обов’язковим.

Серед популярних питань – про синхронізацію та що означає volatile. Всі ці запитання дають вам можливість зрозуміти наскільки добре люди розбираються у суті речей.

Data Stores

Далі, важливо з кандидатом поговорити про бази даних. Знову ж таки, це запитання для спеціалістів всіх рівнів, проте з молодими фахівцями варто подискутувати лише про базові речі, типу SQL. Middle, Senior та Tech Lead фахівців радимо запитати про теорему (обов’язково), чим відрізняються реляційні бази даних від не реляційних, коли та які саме застосовувати. Про SQL теж можна запитувати, але при необхідності.

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

JVMGC

Про JVMGC у Middle рекомендуємо запитувати на рівні загальних знань, а от для Senior та Tech Lead варто поставити більш конкретні питання. Проте, якщо у вас не вимогливий до перфомансу додаток, ці питання не є ключовими.

Ще один дуже важлива навичка, особливо для Senior та Team Lead, це – troubleshooting.

Troubleshooting

Це вміння зрозуміти в чому проблема, під’єднатися до неї моніторинг-інструментом (наприклад, Java Mission Control), зібрати дані та успішно розв’язати проблему на продакшені.

Framework

По Framework варто запитувати те, що використовується на проєкті. Можна також розпитати про те, на який фреймворк хотів би інженер перейти. Важливо запитати для чого придумали Spring, яку проблему він вирішує, на якому шаблоні він побудований, тощо. Гарний приклад питання на Spring – життєвий цикл bin в контейнері.

Сподіваюсь, що ці поради допоможуть вам зробити інтерв’ю цікавими та результативними.

Бажаєте дізнатись більше про інтерв’ю? Тоді вам будуть цікавими такі статті:

  1. Як пройти інтерв’ю з клієнтом від Олександри Скібіної, Project Manager, Kharkiv Agile Practice Head, Consultant, GlobalLogic.
  2. Як побудувати спілкування з кандидатом найкращим чином та презентувати свій проєкт та команду найліпшим шляхом від Андрія Кульшана, Business Analyst, Product Owner, Consultant, GlobalLogic
  3. Як підготуватись до інтерв’ю, якщо ви у пошуках того самого проєкту мрії від Катерини Сич, Associate Recruiter, Consultant, GlobalLogic.

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

Автор: Анастасія Васьків, University Program Coordinator, GlobalLogic

Пріоритетним напрямком роботи для компанії GlobalLogic є співпраця з молодими спеціалістами, які починають свій шлях в ІТ сфері. Багато часу та ресурсів компанія вже інвестує для розвитку молодого покоління технічних спеціалістів – ми активно проводимо технічні тренінги, курси, хакатони та семінари. Курс «Communicate like a PRO: навички професійної комунікації», про який піде мова нижче, як раз один з них.

Ми розуміємо, що великою та не менш важливою частиною навчання є напрямок розвитку soft skills для trainee та junior спеціалістів. Грамотний та стратегічний розвиток гнучких якостей є запорукою успішного кар’єрного зростання у майбутньому.

В процесі безперервної комунікації зі студентами ми помічали те, що теоретична база, ґрунтовні технічні знання у студентів є, проте їм дуже часто бракує так званих soft skills, а саме навичок самопрезентації, бізнес-комунікації, досвіду в плануванні та інше. З іншого боку – в компанії є велика кількість досвідчених спеціалістів та професіоналів, які завжди готові ділитись своїми знаннями з початківцями.

Саме тому, команда GlobalLogic Education (спільно з платформою професійного розвитку Happy Monday) вирішила створити онлайн курс «Communicate like a PRO: навички професійної комунікації», який дозволить молодим спеціалістам глибше зануритись в тему бізнес-комунікації.

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

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

В рамках цієї статті ми відповімо на ТОП-5 найпоширеніших запитань про курс від учасників, розвію всі міфи стосовно курсу та сподіваюсь заохочу вас до подальшого активного навчання.

  • Чи даний курс є платний?
    Даний курс є абсолютно безкоштовним та всі лекції ми виклали у вільному доступі на сайті GlobalLogic, а також на YouTube каналі GlobalLogic Ukraine.
  • Чи можу я отримати сертифікат по завершенні курсу?
    На цей час функціонал генерації сертифікатів в процесі розробки, але, звісно, ми плануємо ввести його та надавати учасникам сертифікати від компанії.
  • Що мені робити з інформацією, яку я здобув/здобула на курсі?
    В даному питанні одними з можливих варіантів є:
    Почати застосовувати лайфхаки з курсу та практичні рекомендації в реальному житті. Відстежуйте, наскільки ця інформація впливає на вашу роботу в команді, на реалізацію нових проєктів та на успішність в пошуку роботи.
    Додати в своє резюме інформацію про те, що ви успішно пройшли закінчили курс. Ці дані точно будуть цікаві роботодавцю, а особливо компанії GlobalLogic.
  • Чи можу я подивитись записи лекцій пізніше, оскільки зараз сесія і часу на додаткову освіту бракує?
    Так, звичайно. Лекції є в наявності у відкритому доступі на сайті компанії та на корпоративному YouTube каналі і ви можете з легкістю переглянути їх саме тоді, коли вам зручно. Також, ви можете переглядати лекції частинами, що теж особливо зручно.
  • Чи планує компанія створювати онлайн курси на схожу тематику?
    В наших планах є створення низки онлайн курсів для студентів та початківців – як і на теми soft skills, так і в напрямку профорієнтації. Якщо у вас є конкретні пропозиції та ідеї, будь ласка, дайте нам знати за допомогою цієї форми.

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

Спілкуйтесь з профі, спілкуйтесь, як профі!
Авторка: Світлана Охович-Шаповал, University Program Coordinator, GlobalLogic

Для інженерів, що лише розпочинають свій шлях, та entry level фахівців GL BaseCamp — це чудова нагода підтягнути практичні знання та розпочати ІТ-кар’єру. Команда Університетської програми GlobalLogic зібрала ТОП-6 питань від потенційних учасників та учасниць наших курсів та описала особливості відбору, деталі навчального процесу та старту професійного шляху.

Аби не бути голослівними, ми вирішили запитати у наших колег, як їм допомогли ініціативи GlobalLogic вступити на професійний шлях й набратися впевненості у власних скіллах. Тож годі гаяти час, поїхали!

Яка мета GL BaseСamp?

Навчальні програми курсів GL BaseCamp — це ініціатива, яка з одного боку дозволяє entry level фахівцям отримати актуальні практичні знання та навички, а з іншого – допомагає команді відшукати таланти.

За усю історію GL BaseСamp відбулося більше 20 курсів за різними напрямками та спеціальностями. Програма кожного курсу адаптується та оновлюється щоразу перед стартом.


Олег Андрус

Associate Software Engineer, Engineering, GlobalLogic

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


Як пройти відбір на курс?

Конкурс в середньому це 5-6 людей на одне місце. Навчальні групи включають від 15 до 30 людей. Відбір студентів та студенток програми відбувається протягом 2- 4 тижнів. Критеріями відбору завжди є результати вступного тесту, мотивація, рівень англійської.

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

Вступне онлайн завдання отримують усі, хто зареєструвався. Різні GL BaseСamp мають свої вступні тести. Наприклад, для С/С++ чи Linux Kernel BaseCamp треба відповісти на питання з мови програмування С, а також орієнтуватися у роботі з Git і Bash. Задачі мають варіанти відповідей або відкрите поле для вашого коду. Щоб долучитися до QA Automation BaseCamp, ми просимо виконати вступне завдання на базі будь-якої релевантної мови програмування.


Віталій Андрушевич

Junior Software Engineer, Engineering, GlobalLogic

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

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


Як побудовано навчання на курсі?

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

У разі потреби, активні студенти онлайн курсів отримують на час навчання додаткове обладнання. Наприклад, якщо до програми курсу входить опанування роботи з GL Embedded Starter Kit чи іншими апаратними пристроями.

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

Навантаження у курсів може бути різне в залежності від запиту стейкхолдерів курсу і вимог до майбутніх інженерів. Наприклад, у СС++ BaseCamp зазвичай дуже насичена програма, заняття проходять 4 рази на тиждень, а практичні завдання студенти виконують разом з досвідченими менторами. Програма QA Automation включає перший інтенсивний місяць, коли заняття проводяться тричі на тиждень, а далі — двічі.

Заняття на усіх програмах тривають 2,5-3 місяці. Ментори та викладачі курсу відстежують успішність, а наприкінці складають рейтинг студентів.

Що відбувається наприкінці курсу?

Після завершення лекцій та практичних робіт навчальна група отримує свої результати або відбувається презентація індивідуальних підсумкових проєктів. Зокрема, розробка власного pet-проєкту входить до програми Linux Kernel BaseCamp та може бути обрана за бажанням у СС++ BaseCamp.

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

Іменні сертифікати отримують усі, хто успішно пройшов курс.


Андрій Дубик

Software Engineer, Engineering, GlobalLogic

ВНЗ мені дав хорошу теоретичну базу, яка стала в пригоді під час моїх інтерв’ю у різних компаніях. Проте, часто не вистачало саме практичних навичок, особливо у світлі браку менторів або людини, яка може пояснити деякі речі на власному досвіді, показати це з практичної сторони.

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


Чи достатньо знань, отриманих на BaseCamp, щоб отримати першу роботу?

Програми курсів завжди включають багато практики. У QA Automation BaseCamp окрім профільних занять, програма включає знайомство з життєвим циклу проєкту та інші теми, що пов’язані з типовими задачами QA Engineer.

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

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

Я ще навчаюсь, чи зможу я поєднувати навчання в університеті та Trainee програму?

Ми пишаємося консультантами, які здобувають або уже мають вищу освіту. Серед наших консультантів в Україні близько 13% студентство. Це нелегке завдання, але необхідна підтримка з нашого боку завжди є.

Віднедавна у компанії існує два види програми для трейні для ІТ фахівців: перший — це фултайм взаємодія протягом трьох місяців, а другий триває до пів року і проходить у форматі part-time.


Орест Онищенко,

Trainee Software Engineer, Engineering, GlobalLogic

Я проходив різні ІТ курси. Зараз я вже 3 місяці як доєднався до компанії GlobalLogic у статусі Trainee. Тут маю ментора, який вводить мене в курс справ, допомагає засвоїти теоретичні знання та показує як застосовувати ці знання на практиці. Попри те, що я Trainee, я вже залучений до реального комерційного медіапроєкту. Саме підтримка з боку компанії дає мені сили та бажання рухатись вперед!


Успіхів та до зустрічі на GL BaseCamp!

Якщо кінець року – кращий час, аби підбивати підсумки, то початок нового – кращий час аби згадати найкраще!

Тож зустрічайте добірку блогів з рубрики BlogSpot за 2020 рік: актуальні теми, цікаві думки, поради та гайди від експертів. Приємного читання!

Як перестати хвилюватись та не перетворити навчання на прокрастинацію

Автор: Тетяна Хряпіна, Director, CEE Learning & Development Head, GlobalLogic Ukraine

Про що: Як вчитися ефективно, без прокрастинації та з задоволенням? Чим відрізняється мікро-навчання від макро? Що робити, аби вивчене не забувалось на наступний день? На ці та інші відповіді знайдете відповіді у цій колонці.

Тонкощі CV або Як скласти та кому надіслати, щоб отримати пропозицію мрії про співпрацю

Автор: Анна Туліна, Talent Acquisition Specialist, GlobalLogic 

Тема створення резюме актуальна завжди. Опис підводних каменів на цьому шляху та навички грамотної презентації власних досягнень часто прирівнюється до скрижалей мудрості або мапи скарбів. Проте, не все так складно, як здається на перший погляд. Як скласти CV? Що треба пам’ятати та як вірно розставити акценти, аби отримати пропозицію мрії про співпрацю? Відповіді – у детальній статті від експерта!

Soft and Hard Skills: Що важливіше? Розповідь одного рекрутера

Автор: Олена Лісовська, Recruitment specialist, Consultant, GlobalLogic Ukraine

Що важливіше: Hard чи Soft? А особливо, якщо мова йде про скілли? У чому полягає їх розділення? А що про це думають рекрутери? Питань багато, тож саме час розставити усі крапки над і. Саме це ми й спробували зробити у спеціальній статті.

Як успішно пройти інтерв’ю з клієнтом? Поради менеджера

Автор: Олександра Cкібіна, Project Manager, Kharkiv Agile Practice Head, Consultant, GlobalLogic Ukraine

Сьогодні багато компаній в Україні та Європі надають послуги за моделлю outsource. А це означає, що крім технічного інтерв’ю з рекрутерами і фахівцями компанії, вас може чекати ще й спілкування безпосередньо з менеджментом і технічними експертами на стороні клієнта. Ця колонка містить рекомендації, як успішно подолати цей етап!

Always put your best foot forward, або Як Trainee пройти перше в житті інтерв’ю — 10 порад

Автор: Катерина Сич, Associate Recruiter, Consultant, GlobalLogic Kharkiv

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

Декомпозуй це: розкладаємо великі та складні задачі на компоненти

Автори:  Андрій Сидор, Senior Consultant, Quality Assurance, GlobalLogic Ukraine, Андріан Яблонський, Senior Consultant, Engineering, GlobalLogic Ukraine

Будь-яка велика задача складається з маленьких. Її можна розкласти на компоненти – це називається декомпозиція. Як декомпозувати складні задачі? Які техніки є ефективні? Про це та більше – розказали у цій колонці.

Python: чому вивчати та з чого почати?

Автор: Віктор Мойсеєнко, Team Lead, Python speaker and trainer, conducted over 25 group training courses, Consultant, GlogbalLogic Ukraine

Звісно, не міг цей дайджест обійтись без технічних статей! Чому Python такий популярний сьогодні? У яких сферах він використовується? А найголовніше – з чого почати вивчення цієї мови? На ці та інші важливі питання відповіли у великій оглядовій статті про Python!

Автоматизоване мобільне тестування: перші кроки

Автор: Антон Пелянський, Test Engineer, Quality Assurance, Consultant, GlobalLogic Ukraine

Перед кожним QA з часом може постати питання – чи можна зробити тест ефективнішим, швидшим та надійнішим? Можна! За допомогою автоматизації. З чого почати, які підводні камені тут існують та які методі є найбільш ефективними – розібрали у спеціальній колонці.

Інтерв’ю як історія: шлях героя для Agile проєкту

Автор: Андрій Кульшан, Business Analyst, Product Owner, Consultant, GlobalLogic Kharkiv

Продовжуємо тему інтерв’ю. А що робити, коли питання ставлять не вам, а ви? Як побудувати спілкування з кандидатом найкращим чином та презентувати свій проєкт та команду найліпшим шляхом? Практичні поради для менеджера проєкту щодо проведення інтерв’ю – прямо за лінком!

Кар’єра для студента: на проєкт без комерційного досвіду

Автор: Юлія Марсо, Recruitment specialist, Consultant, GlobalLogic Ukraine

З чого почати свої кар’єрний шлях? На що звернути увагу вчорашньому студенту? Які курси прийдуть на допомогу та як подолати фільтр “відсутність комерційного досвіду”? Що криється за назвами GL BaseCamp та GL ProCamp? Читайте за посиланням!

Бажаєте бути в курсі появи нових Блогів та оновлень? Слідкуйте за нами у соціальних мережах: Facebook, LinkedIn, Instagram та Телеграм-каналі.

А також – запрошуємо долучитись до технічних спільнот GlobalLogic, де крім спілкування на вас чекають вебінари та інший професійний контент:

Продовжуємо розповідати про наші Concepts на сторінках BlogPost!

Назва: Smart Collar

Локація: Харків

Автори: Євген Напрягло та його команда.

Статус: In Progress, є прототип

Сьогодні поговоримо про братів наших менших – песиків! Адже кожен хазяїн хоче, аби його пес був здоровий та захищений. Як цього досягти? На допомогу приходять технології! Одна з розробок інженерів GlobalLogic – розумний нашийник! Чому саме він?

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

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

Що таке Smart Collar?

“Розумний нашийник” або “Smart Collar” – це рішення, яке допомагає вивести спілкування між власником і улюбленцем на новий рівень. На жаль, коти та собаки не вміють розмовляти, але за них це можуть зробити технології: “Smart Collar” інформує про нагальні потреби вихованця та його добробут.

Мета:

Основна мета “Розумного нашийника” – це відстежувати дані про стан здоров’я собаки, сповіщати ветеринара та власника про зміни в її здоров’ї, а також аналізувати та прогнозувати тенденції здоров’я. Медичні записи вихованця забезпечують доступ до історії хвороби.

Як це працює?

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

Ключові особливості:

  • Сигналізує про найперші симптоми хвороб. Розпізнайте перші симптоми та збережіть дорогоцінний час.
  • Вбудований GPS-трекер. Ви завжди будете знати, де знаходиться ваш маленький друг.
  • Відстеження фізичної активності вихованця, його харчування. Нашийник також допомагає відстежувати вагу та активність тваринки.
  • Нашийник світиться в темряві, що полегшує утримання собаки в поле зору, а також зменшує ризики зіткнення з автомобілями, велосипедами, тощо.
  • Моніторинг температури, який убереже собаку від перегріву – додаток сповістить вас про небезпеку, якщо песик перегрівся.
  • Додаток працює спільно з ветеринарною клінікою. Ви завжди матимете доступ до медичної документації вашого улюбленця, де ви зможете побачити всі процедури, які проходила ваша собака, вакцини та взяті аналізи.
  • Розумний нашийник може бути частиною розумного будинку. Він може регулювати температуру навколишнього середовища, якщо собака відчуває жар чи холод, вмикати світло, відчиняти та зачиняти двері, аби улюбленець міг пересуватися вільно. Він також може увімкнути камеру, щоб ви могли в режимі реального часу бачити, чим займається ваш вихованець.

Моделі використання:

Історія 1

У вихідні Тарас взяв собаку на сімейний виїзд у сільську місцевість. Протягом дня собака бігає самостійно й може провести назовні цілий день, повертаючись додому вночі. Тарас періодично відстежує місцеположення улюбленця, використовуючи GPS-трекер у нашийнику.
Раптом він отримує сповіщення на свій телефон: “Ваша собака знаходиться в небезпечній зоні”. Тарас розуміє, що собака забігла занадто далеко і знаходиться біля швидкісної автостради. Тож він не гаючи часу сідає в машину та їду до пса, підбирає тваринку та відвозить додому. Пес у безпеці, Тарас задоволений тим, що вчасно отримав сповіщення й уник можливих проблем.

Історія 2

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

Підсумок

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

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

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

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

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

Назва: GloDroid 

Локація: Харків

Автори: Maryna Sergiyenko та її команда.

Статус: In Progress

Уявіть, що у вас є остання версія Android, одноплатний комп’ютер і цілий рік вільного часу на експерименти. Що б ви зробили? Спробували б запустити на ньому Android? А тепер уявіть, що це вже зроблено: презентуємо вашій увазі GloDroid! Це безпечне (no backdoor) та недороге рішення з відкритим кодом, яке працює прямо “з коробки” без жодних додаткових маніпуляцій.

GloDroid – це проєкт по портуванню та адаптації Android-додатків з відкритим кодом для роботи на широко доступних одноплатних комп’ютерних платформах.

Основними цілями GloDroid є:

Створити дешеву та надійну платформу з найсучаснішим Android “на борту” для створення прототипів, навчання та досліджень.

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

Поділитись усіма напрацюваннями та здобутками зі спільнотою.

На відміну від існуючих пристроїв, на кшталт Raspberry Pi, що мають на борту старі версії Android, GloDroid постачається з актуальною версією Android, що використовує open-source драйвери, залишається актуальною та має підтримку від Google.

Як це виглядає?

Проєкт складається з одноплатного комп’ютера — Orange Pi Plus 2E — та Android 10 з відкритим кодом на борту.

Чому ми обрали саме цю плату?

  • Вона дешева.
  • Має велику спільноту.
  • Гарне “залізо”, що задовольняє нашим цілям: 32-bit процесор, 4-ядра 1.6 GHz, Mali-400 графічний чіп, 2 GB RAM та 16 GB MMC. Плюс усі необхідні інтерфейси: USB для периферії, Wi-Fi та Ethernet.

GloDroid базується на Google AOSP та містить репозиторії, зазначені у таблиці нижче. Ми зробили makefiles для конфігурації Android на основі того, що ми хочемо створити (TV, Automotive, та інше) та яку підтримку HAL/сервісів ми хочемо мати (наприклад, Wi-Fi та Bluetooth).

Ключові переваги рішення:

  • Відкрите та безкоштовне рішення настільки, наскільки це можливо.
  • Має актуальну версію Android.
  • Близьке до основного Android, наскільки це можливо.
  • Поставляється з усіма необхідними бібліотеками та софтом, так що користувач може легко запустити свіжий Android без зайвих дій.
  • Працює “з коробки”.
Що ми зробили

Фінальний проєкт ми виклали на GitHub. А ось його wiki.

Також ми провели спеціальний вебінар та розповіли про наші розробки на DOU.

Сьогодні, GloDroid успішно працює на базі Android 11 та Linux 5.6.

Підтримує такі плати:

  • Orange PI family: Plus 2E / PC / PI 3 / WIN
  • Pinephone / Pinetab
  • Raspberry PI 4
  • PodCast

Та такі девайси:

  • Pinephone
  • Pinetab

Ми написали приблизно 1,800 рядків Android makefiles та близько 2000 рядків файлів коду C/C++/DTS та ін., аби все працювало добре. Близько 2% часу роботи над проєктом було присвячено розробці коду, 5% – створенню файлів побудови. Для наочності: протягом 3–4 місяців фази активного розвитку, лише 10 днів було витрачено на написання коду, а 25% часу ми витратили на компіляцію та виправлення помилок.

Android OS – це система, що живе та розвивається у реальному часі. Що було актуальним для версії 8, часто-густо вже немає жодного сенсу для версії 10.
Нам довелось багато аналізувати вихідний код, тому ми впевнено кажемо, що крім розв’язання практичної задачі портування, робота над проєктом значно покращила наші навички самоосвіти:

Заглибившись в офіційну документацію Google, ми зрозуміли логіку нового Android 11.

Ми набули практичного досвіду з наявними репозиторіями AOSP, з’ясували практичні аспекти їх роботи – щоб висвітлити деякі “сліпі місця” офіційної документації Google.

На цей момент ми зайняті виправленням помилок, про які нам сигналізувала спільнота через репозиторій GloDroid, та всебічно розбираємось з прев’ю Android 11 аби згодом портувати й цю версію.

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

Автор: Віктор Мойсеєнко, Team Lead, Python speaker and trainer, conducted over 25 group training courses, Consultant, GlogbalLogic Ukraine.

В цій колонці ми розглянемо кілька питань: чому Python такий популярний сьогодні, у яких сферах він використовується та з чого почати вивчення цієї мови. Тож поїхали по черзі!

Чому популярність Python набирає обертів?

Python зараз в трійці найпопулярніших мов програмування, інколи навіть обганяючи Java. Причин цього кілька:

  • Простота та легкість в написанні коду, а також при його читанні. Python – це мова програмування, якій легко навчитися, а ще головніше – навчити.
  • Швидкість розробки. На перший погляд, це не так вже і важливо, але час розробника – це гроші замовника. Як приклад, написати й розгорнути бекенд на Python можна набагато швидше ніж на будь-якій іншій мові (навіть швидше за Node.js). Тому ринок зацікавлений у Python. Корпорації на кшталт Google та Apple взагалі вже майже десятиліття більшість своєї внутрішньої розробки пишуть саме на цій мові.
  • Ком’юніті – любов до цієї мови зі сторони розробників створила величезне ком’юніті, яке активно підтримує перспективні проєкти, фреймворки, відповідає на складні питання на StackOverFlow, та розвиває мову.
  • Універсальність – ця мова на сьогодні є найбільш універсальною: на ній можна вчити програмувати дітей в школах, писати веб-додатки, сервіси, тестувати сайти чи програми, використовувати машинне навчання та програмувати пристрої для Internet Of Things.
Якщо я вивчу Python, у яких сферах я маю перспективи, чим цікавим зможу займатися?

Python це дуже гнучка мова, на ній пишуть ігри, сервіси, веб-додатки, крон-скрипти для бекапу, юніт тестування та з її допомогою навчають нейромережі. Та все ж, виділимо три основні напрямки:

  • Веб-розробка

Python один з лідерів в розрізі розробки веб-додатків та REST API сервісів – тут Python конкурує лише з Node.js. Це стало можливим завдяки масі перевірених часом фреймворків, серед яких:

  1. Django – популярний фреймворк-комбайн по принципу “все за ціною одного”. Для багатьох веб розробка почалась і “закінчилась” з вивченням лише цього одного фреймворку, бо в ньому є все необхідне для написання додатку будь-якої складності – від туторіального блогу до порталу (саме на Django був написаний Instagram). Тут є своя екосистема, структурованість, свій ORM та мова шаблонів. Для легкого “прикручування” REST API до Django проєкту існує чудовий пакет Django REST Framework.
  2. Flask – міні-веб-фреймворк. Тут вже інша ідеологія, ніж в Django – якщо в тому вся структура вже задана, у Flask розробник має сам її побудувати. І якщо в Django треба створити за допомогою утиліт ціле дерево директорій та файлів для проєкту та додатку, щоб створити початковий проєкт у Flask треба п’ять строк коду. І ще кілька, щоб прикрутити REST API за допомогою Flask-Restless.
  3. Aiohttp – майже повністю український проєкт. Для тих, кому цього мало, можна додати, що це повністю асинхронний HTTP як сервер, так і клієнт – тобто на ньому можна писати як супер швидкі веб-застосунки, так і скачувати/шукати щось в вебі. Багато проєктів, яким важлива швидкодія, переходять з традиційних на асинхронні фреймворки/технології (до речі, Django 3.x вже також може працювати в асинхронному режимі також).
  • Машинне навчання

Якщо в інших сферах можна знайти якісь альтернативи, то в цій Python на першому місці без варіантів. Так, для статистики та деяких задач є ще чудова мова R. Але для продакшен вона не дуже згодиться. Тому Python, який однаково зручно використовувати як для початкового концепту, так і для фінального. Ще важливим чинником для лідерства в цій області є (знову!) простота та гнучкість Python. Старі розробки для складних розрахунків, що були написані десятиліття назад на мовах С та Fortran були легко перенесені у Python. Google та Microsoft використовують цю мову як основну для машинного навчання.

За допомогою Python можна:

  • Читати текст або визначати типи об’єктів на фото чи відео
  • Спрогнозувати показники на біржах, вірогідність заторів на дорогах чи хвороби пацієнтів по даних їх аналізів
  • Генерувати картинки чи змінювати відео в потоці

Зараз є такі основні/цікаві бібліотеки для машинного навчання:

  • Numpy – “основа всього”, реалізація класів матриць/векторів та пов’язаних операцій
  • Pandas – бібліотека для аналізу даних, майже повністю злизана з чудової мови R.
  • Matplotlib – бібліотека для візуалізації даних, дуже стара та надпотужна з безліччю форматів та можливостей – навіть інтерактивних (як приклад, ось гра Сапер, написана на matplotlib). Єдиний мінус – ця бібліотека трохи складна, тому високо-рівневі бібліотеки на кшталт Seaborn набирають популярності.
  • Scikit-learn, Kerras, PyTorch, TensorFlow – популярні пакети/фреймворки для реалізації різних алгоритмів машинного навчання – від лінійної регресії до нейромереж.
  • Автоматизоване тестування

Третя сфера застосовуваності Python. Знову ж таки завдяки простоті мови її зручно використовувати для написання автотестів. При цьому тестувальники фокусуються на самому тестуванні, а не на нюансах мови – тому не дивно, що Python один з лідерів і в цій області.

Є багато бібліотек/фреймворків для тестування. Серед тих, що постачаються відразу з Python – є проста, що дозволяє писати тести прямо в коді майже серед коментарів – doctest, так і потужна unittest, що є базою для тестів у багатьох проєктах. Є навіть такі, що перейшли з тестування на Java (JUnit) на Python. Перехід досить простий тому що обидві ці бібліотеки належать до одного сімейства xUnit, і в них дуже схожий API.

Але все більшою популярності набуває модерновий фреймворк Pytest, який є незалежним проєктом та дозволяє робити речі, не просто неможливі для unittest, а в деяких випадках – навіть просто фантастичні (наприклад, динамічні та параметризовані фікстури, маркери для тестів та багато іншого).

З чого варто почати, які ресурси для новачків?

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

  • LearnPython – супер-мінімалістичний інтерактивний туторіал. Прекрасний варіант, якщо хочеться глянути на мову, спробувати базові методи. Має перелік тем, на кожну з яких треба десь 5 хвилин.
  • Python for Absolute Beginners! – Безкоштовний курс на Udemi для абсолютних початківців.
  • Python for Everybody Specialization – безкоштовні курси по Python від Coursera. Я чув гарні відгуки щодо них.
  • My GitBook – матеріали для курсу по Python, який я веду в GlobalLogic.
  • Python3 on SoloLearn – безкоштовний курс. На вигляд дуже простий, але покриває основні теми досить глибоко + є тести. Є мобільний додаток з таким же ім’ям – дуже гарно зроблений з оновлюваним контентом від користувачів.
  • Python Lectures – набір лекцій по Python від Rajath Kumar у вигляді Jupyter notebooks. Мені ці лекції подобаються тому, що вони схожі на мої власні, які я використовую на курсі. Це інтерактивні Jupyter зошити (notebooks), які можна скачати і запускати локально, переглядаючи в браузері.

Ще дуже рекомендую підписатися та слідкувати за цими блогами:

  • Codeguida – дуже файний український девелоперський блог. Гарні статті по Python.
  • Python on Reddit – Python-меми та новини.
  • Python Insider – Майже офіційний блог Python ком’юніті. Основні новини від головних розробників.

Як можна розвиватись, та що прокачувати далі, якщо ти вже Junior чи Middle розробник, але хочеш стати справжнім гуру?

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

  • Можливо, на поточному проєкті потрібна автоматизація якоїсь рутини? Завантаження файлу, пошук певних записів серед логів?
  • Чи треба адмінку для моніторингу статусу когось чи чогось?
  • Можливо треба веб база даних для книжок проєкту? Чи цікавих серіалів? Чи каталог мемів? База використовуваних віртуалок на проєкті?
  • Може потрібен Telegram чи Slack бот, який буде допомагати запускати тести, білди чи повідомляти про помилки?

Якщо цього замало – ось ще купа ідей:

Кожний такий проєкт – це цікава задача, цікава подорож у світ. Тож час в дорогу! Бажаю вам приємної подорожі та сподіваюсь, що зміг зацікавити Python!

А якщо ви хочете ще гайдів – то можете прочитати про те, як робити перші кроки у вивченні BiGData: частина перша та частина друга.

Автор: Інна Іващук, Senior Software Engineer, Engineering, Counsultant, GlobalLogic Ukraine

Продовжуємо розбиратись з СІCD аби покращити життя розробників. Першу частину про теоретичний огляд концепції можна прочитати за посиланням.

У цій частині ми глянемо на основні популярні інструменти CI/CD, які можна використати у розробці, і спробуємо швидко сконфігуруємо Travis CI (і, звісно, запустимо), і глянемо на GitHub Actions.

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

Плюси використання CI/CD практик

Для початку, глянемо, що нам потрібно, щоб почати використовувати СІ:

  • Написати автоматичні тести.
  • Сервер або сервіс, який буде слідкувати за основним репозиторієм, і буде запускати авто тести на кожен комміт, а це в свою чергу допоможе нам бачити статус та валідність коду.
  • Мерджити код якомога частіше, як мінімум один раз на день.

Що ми отримаємо?

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

Для того, щоб почати використовувати практику СD, потрібно:

  • Високе покриття коду тестами.
  • Деплоймент повинен відбуватися автоматично.
  • Використання додаткових flags, які дозволять нам приховувати незакінчений функціонал (наприклад Launch Darkly).

Що ми отримаємо?

  • Деплоймент веб додатку стане набагато простішим.
  • Можливість робити реліз набагато частіше.

Для того, щоб почати використовувати практику СD (continuous deployment), потрібно:

  • Різні типи автоматизованих тестів (integration, performance, acceptance і тд), написаних не лише розробниками, а і QA.
  • Документація, яку потрібно тримати в актуальному стані.
  • Додаткові flags, які допоможуть приховати незакінчені частини, які зараз в процесі розробки.

Що нам це дасть?

  • Повністю автоматизований реліз.
  • Не потрібно робити code freeze, через те, що реліз довго готується.
  • Відсутність ризиків, адже все продумано, налаштовано та сконфігуровано.
  • Задоволені користувачі, які бачать покращення кожного тижня або, навіть, кожного дня.
Easy start with Travis CI

А тепер саме час спробувати один з інструментів, а саме Travis CI. Для того, щоб розпочати роботу, нам потрібно:

  • Перейти на сайт travic-ci.com та авторизуватись використовуючи GitHub акаунт
  • Підтвердити авторизацію на travis-ci.com, після чого буде перенаправлення на GitHub.
  • Пройти декілька простих кроків та обрати репозиторій, до якого ми хочемо додати відстежування Travis.
  • Додати у вибраний репозиторій файл travis.yml, у якому ми напишемо буквально декілька рядків і таким чином, запустимо роботу CI.

А тепер до коду!

GitHub Actions: чому варто звернути на них увагу

GitHub Actions однозначно вартує вашої уваги, тому що вони:

  • Вбудовані в GitHub, через те інтеграція проходить надзвичайно швидко
  • Дозволяють мультиконтейнерити тестування. У GitHub є багато різних темплейтів для будь-яких типів Continuous Integration
  • Дозволяють створювати свої власні actions та публікувати їх на GitHub Marketplace
  • Абсолютно безкоштовні для open source репозиторіїв

Основні концепції GitHub Actions:

  • Actions – це найменші частинки описаної поведінки.
  • Events, до яких ми можемо прив’язуватись, такі як push, pull request, та виконувати певні задачі
  • Runners
  • Job
  • Steps
  • Workflow – це безпосередньо наш файл, в якому описані поступові кроки, які містять actions, job і steps.

Ось що потрібно, щоб підключити GitHub Actions до репозиторію: невеличкий відео-туторіал. 

Висновки

Повертаючись до заголовка статті, пора все-таки відповісти на запитання: CI/CD для JS – потрібен чи ні?

Звісно ж, так! Це дійсно дуже гаряча тема, про яку варто дізнатись більше, а головне спробувати застосувати на проєкт, як мінімум провести експеримент на своєму власному репозиторії.

Бажаємо вам успіхів, а якщо хочете більше корисних матеріалів – завітайте до нашого JS Community!