Результати пошуку
ITVDN: курси програмування
Відеокурси з
програмування
Підписка

300+ курсів за популярними IT-напрямками

Вибери свою IT спеціальність

Підписка
Підписка

300+ курсів за популярними IT-напрямками

Результати пошуку за запитом: видеокурс c*
Яку мову програмування варто вчити першою

Автор: Влад Сверчков

На що впливає вибір мови програмування? Які мови обирають першими? Рейтинги мов програмування. Індекс TIOBE. Індекс PYPL. Stack Overflow Developer Survey 2022. Рейтинг від GitHub. Які мови найпопулярніші відповідно до цих рейтингів? Які мови обирають українські розробники? Кількість вакансій та відгуків в Україні. Висновки. Перша мова програмування (скорочено – МП) відкриває світ створення коду перед новачком. І від обраної мови дуже часто залежить те, яким буде цей «світ» – цікавим та захоплюючим, або ж недружнім та занадто складним. Якщо ви хочете з цього знайомства винести максимальну користь для себе, варто уважно підійти до вибору першої мови програмування – і наша стаття вам у цьому допоможе. Ми розберемо мови програмування, які можуть бути чудовими у якості перших мов. Ви дізнаєтесь, в яких ІТ-професіях затребувана та чи інша мова – а також багато іншої корисної та цікавої інформації. На що впливає вибір мови програмування? Для новачка обрання першої мови – важливий крок, який може визначити його подальший шлях розвитку в якості розробника. Головні пункти, на які впливає МП: Швидкість опанування бази. Мови програмування мають різну складність вивчення. Наприклад, JavaScript досить легко вивчається, в той час як C++ носить більш хардкорний характер, а мови сімейства Assembler можуть кинути виклик навіть тим, хто вже є розробником. Мови з динамічною типізацією (JavaScript, Python, Ruby тощо) вивчаються швидше за мови зі статичною (C#, Java, C/C++ та ін.). Парадигма мислення. Мови мають різні парадигми, відповідно до яких ви створюватимете код: процедурна, імперативна, об’єктно-орієнтована, функціональна тощо. Від парадигми обраної вами мови залежить те, як ви будете підходити до вирішення задач. Наприклад, якщо ви вивчаєте ООП-мову, то при зіткненні з мовою з функціональною парадигмою ви витратите додатковий час, аби зрозуміти її і писати код по-іншому (наприклад перехід з Java на Scala). Перспективи працевлаштування. Кожна мова має свої сфери використання – і ви маєте це враховувати, якщо плануєте після опанування МП шукати роботу. Інакше доведеться вчити нову, втрачаючи дорогоцінний час. Напрямок розробки. Хоча найпопулярніші мови програмування є досить універсальними, все ж є напрямки, в яких вони цінуються найбільше. Наприклад, для Java – це Enterprise та мобільне розроблення, JavaScript – веб-розроблення, Python – BackEnd веб-розроблення, написання скриптів, нейронні мережі, C# - корпоративні додатки, бекенд та ігри на Unity, C/C++ - високонавантажені застосунки, Embedded розроблення тощо. Відповідно, якщо ви оберете JavaScript, то працювати за Embedded напрямком у вас не вийде – якісь бібліотеки для роботи з мікроконтролерами з використанням JavaScript ви, можливо, таки знайдете, але роботодавця – навряд чи. Навіщо забивати цвях монітором, якщо є молоток? Пошук ментора та ком’юніті. У кожної МП своє ком’юніті та свої джедаї, що готові брати до себе юних падаванів. У популярних мов більша аудиторія, є гарні та детальні документації, легше знайти ментора – це дозволяє зручніше та швидше навчатися. У більш нішових МП ком’юніті скромніше, тому знайти практикуючого розробника, який візьме до себе учня, аби навчити його програмувати, а також знайти якісні гайди – ще ті задачі. Ментор важливий тим об’ємом знань та практичних навичок, які може вам передати: підказати, як правильніше робити, де ви помиляєтеся, на чому зосередити увагу. Ці поради пришвидшать ваше вивчення МП і дозволять швидше рухатися далі назустріч омріяній ІТ-спеціальності. Стиль програмування. Пункт дуже схожий на 2-й, але якщо там справа стосувалася етики мови програмування, то тут мова більше про етику самого програміста. У різних мовах можуть бути різні правила написання коду, погоджені спільнотою програмістів. Тому опанувавши одну мову, ви можете зіштовхнутися з геть інакшою кодерською етикою при переході до іншої МП (як приклад – перехід із Go на Java). Легкість пошуку відповідей. Чим популярніша мова, тим легше гуглити та шукати відповіді, оскільки багато інших розробників до вас цікавилися тими ж питаннями (високоймовірно). Однак якщо ви захочете використати мову в екстравагантних цілях – для яких вона не призначена – можуть виникнути проблеми з відповідями.  Перехід на іншу мову. Деякі технології та мови застарівають, і доводиться вчити новий стек. Наприклад, так сталося з мобільними iOS розробниками, котрі писали мовою Objective-C і були змушені перейти на Swift, оскільки компанія Apple так вирішила. Зважайте і на це при виборі мови. Які мови обирають першими? Раніше вивчення програмування починалося в школах з мов Pascal або Basic. Ці мови гарно підходять для знайомства з алгоритмічним підходом, структурами даних та фундаментальними концепціями програмування. Вони навчають грамотності та раціональному підходу до вирішення програмістських задач, але у комерційній розробці сьогодні майже не використовуються. Наразі у школах дедалі більш розповсюдженими стають такі популярні мови, як Python та JavaScript (JS). Вони досить прості в опануванні і дозволяють швидко подолати відстань між початком навчання і отриманням справжнього кінцевого результату. Скрипт на JS взагалі можна написати за допомогою звичайного блокноту у Windows і запустити в будь-якому браузері – навіть встановлювати додаткове ПЗ не треба. Простіше кажучи, ці дві мови просто цікавіші та дають більше зручностей та можливостей, аніж Pascal або Basic.   Вивчення JavaScript та Python у школі має на меті зацікавити учнів програмуванням і показати, наскільки легко та просто це може бути, які можливості може дати вміння писати код. Аби відчути силу тієї ж пайтон, можете глянути цікаву підбірку з 10 проєктів довжиною у 10 рядків коду за посиланням. Таким чином, ці мови не тільки знайомлять з програмуванням, але й дозволяють максимально швидко влитися в ІТ і створювати сучасні застосунки. Рейтинги мов програмування Аби краще розуміти, які мови нині користуються попитом, розглянемо декілька відповідних рейтингів. Індекс TIOBE Перша десятка мов відповідно до індексу TIOBE (за січень 2023 року): Python C C++ Java C# Visual Basic JavaScript SQL Assembly language PHP Аналітика індексу TIOBE відштовхується від кількості кваліфікованих інженерів у всьому світі, а також від того, яка кількість курсів та сторонніх постачальників є наразі. Індекс PYPL Перша десятка мов відповідно до індексу PYPL (січень 2023 року): Python Java JavaScript C# C/C++ PHP R TypeScript Swift Objective-C Аналітика даного індексу вибудована навколо частоти пошуку туторіалів (навчальних матеріалів) з тієї чи іншої мови програмування у пошуковій системі Google. Stack Overflow Developer Survey 2022 Тепер подивимось на опитування Stack Overflow Developer Survey 2022 (більше 70 000 опитаних з усього світу). На картинці нижче можна побачити, які мови найчастіше використовують ті, хто тільки вивчає програмування та ІТ (на двох картинках нижче продемонстровано не всі мови з рейтингу): Найбільший попит серед новачків викликають мови верстання HTML & CSS (ними створюють візуальне оформлення веб-сайтів), а також мови програмування JavaScript та Python. Решта мов йде з відривом у більше 19%. Тобто, сучасні початківці все більше і більше відходять від класичних Java, C#, а також Pascal і Basic, обираючи більш прості мови, з якими швидше потрапиш в ІТ. Наступна картинка показує, якими мовами найчастіше користуються професійні розробники: На першому місці JavaScript – маст хев мова для створення клієнтської логіки веб-сайтів та веб-сервісів, далі йде HTML & CSS, мова запитів SQL для роботи з базами даних, вже відомий лаконічний Python, синтаксичний цукор для JavaScript – мова TypeScript (TS), класичні Java і C# та інші мови. Рейтинг від GitHub Аналітика нижче побудована на основі того, які мови найчастіше використовуються у проєктах, котрі публікуються на GitHub. Це найвідоміший ресурс для розробників, де вони розміщують свої проєкти, що дозволяє не тільки демонструвати свої розробки іншим, а ще й зручно вести командне розроблення. В лідерах – JavaScript, Python та Java, за ними – строго типізована TypeScript, C#, C++ та інші. Які мови найпопулярніші відповідно до цих рейтингів? Дуже часто на перших позиціях стоїть Python. Це і не дивно – вона проста, лаконічна і має безліч бібліотек та модулів, які ще більше спрощують процеси створення застосунків і сприяють швидшому вирішенню задач. Основні сфери застосування: системне адміністрування, DevOps інженерія, оброблення даних, Big Data, Data Science (великі масиви даних), ML (машинне навчання), серверне веб-розроблення (BackEnd). У зв’язку з припиненням підтримки пайтона версій 2.x (наразі підтримується лише 3.x), виникла потреба переписувати старий код (legacy) у відповідності до третьої версії – це створює додатковий попит на пайтон розробників. JavaScript також вирізняється простотою та лаконічністю, але її основна сфера використання обмежена WEB-ом, хоча JS має достатньо засобів, аби нею вести зручне розроблення серверного ПЗ, мобільних та десктопних додатків тощо. Рейтинг від Stack Overflow показав, що саме цим двом мовам програмування найчастіше віддають перевагу початківці. TypeScript – це та сама JavaScript, але зі строгою типізацією та іншими фішками, котрі роблять код більш структурованим та зменшують кількість потенційних помилок. Наступні позиції зазвичай займає Java – класична та універсальна мова, яка була створена наприкінці 20 століття, але яка при цьому досі популярна і затребувана. Найуспішніше себе зарекомендувала в кросплатформних застосунках, Enterprise (створення ПЗ для великого бізнесу), а також у мобільному розробленні, хоча її сфера застосування ними не обмежується. Також існує багато легасі коду на Java, який вимагає підтримки та оновлення, що створює додаткову затребуваність грамотних Java девелоперів. Часто згадуються C/C++ - це корифеї серед сучасних мов програмування, часто вивчаються у ВНЗ. Складні в опануванні, але дуже потужні у використанні. Саме вони застосовуються у ресурсоємних застосунках, мікроконтролерах та інших додатках, яким важливо контролювати затрати пам’яті. Якщо хочете швидко потрапити в ІТ – C/C++ не варіант, але у якості мов для вивчення програмістської бази вони – те, що треба. Вивчивши «плюси», ви зможете з легкістю переходити на інші мови. C# - популярна універсальна мова від компанії Microsoft, яка перш за все орієнтована на створення застосунків під ОС Windows, однак вихід платформи .NET Core дозволив створювати ПЗ і під інші популярні платформи. Найбільше застосовується у розробленні корпоративних застосунків, серверної сторони веб-додатків (BackEnd), ігор на Unity, десктопних додатків. PHP – популярна мова для серверного веб-розроблення. Не дивлячись на її поважний вік, досі активно використовується у бекенді. Має своєрідний синтаксис і неоднозначне відношення зі сторони кодерської спільноти, хоча за своєю легкістю нагадує Python та JavaScript. Мовою PHP наразі написано багато legacy коду, тому окрім створення нових застосунків є потреба переписувати код іншими мовами.   SQL – класична мова запитів для маніпуляцій із даними. Використовується усіма розробниками, котрі працюють з реляційними базами даних, тому і має відносно високу популярність. Bash/Shell – це командні оболонки для написання скриптів, котрі дозволяють автоматизувати виконання рутинних задач. Важливі інструменти в роботі системних адміністраторів та DevOps інженерів. Які мови обирають українські розробники? Також звернімося і до аналітики від DOU – спільноти професійних українських розробників, а саме – розглянемо зарплати українських девелоперів (зима 2023). Дізнаємось, які МП наші розробники використовують у якості основних: Першими йдуть мови для створення фронтенду, оскільки майже весь веб FrontEnd створюється мовами JavaScript та/або TypeScript. За ними – універсальні мови C#, Java, Python та мова серверного розроблення PHP. Kotlin та Swift – це мобільне розроблення під Android та iOS відповідно. Далі йдуть менш популярні напрямки. Таким чином, наразі більше 85% українських розробників-респондентів у якості основної МП використовують одну з восьми вищенаведених мов. Тепер розглянемо медіанні зарплати українських розробників відповідно до МП, які вони використовують у якості основних: Найбільш високооплачуваними для вітчизняних Junior розробників-респондентів є Ruby та C++. Але інші мови від них не сильно відстають. На рівень заробітньої плати також впливає навичка проходження співбесід, оскільки багато працедавців просто не вказують в оголошеннях конкретну суму, а отже, чим краще ви пройдете співбесіду, тим більшу суму вам зможуть запропонувати. Динаміка зарплат для джунів за останні пів року: JavaScript – не змінилася. Java – на рівні грудня 2021. C#/.NET – підвищилась на 50 USD. PHP – знизилась на 50 USD. Python – знизилась на 45 USD. C++ - зросла на 100 USD. Ruby/Rails – зросла на 125 USD (але кількість респондентів невелика, тому число може не відображати реальної ситуації). Swift – підвищилась на 50 USD. Kotlin – підвищилась на 100 USD. TypeScript – підвищилась на 60 USD. Кількість вакансій та відгуків в Україні Розглянемо ще одну аналітику від DOU, яка стосується кількості вакансій та відгуків станом на грудень минулого року. До деяких позицій наведемо мови програмування, котрі там використовуються: Найбільше співвідношень відгуків до вакансій у FrontEnd (окрім JavaScript та TypeScript використовують ще мови верстання HTML & CSS) – конкуренція одна з найвищих на ринку ІТ. Менше конкуренції у Java, Python, .NET – їхні сфери використання та мови вже розібрали вище. Node.js – платформа для серверного розроблення мовою JavaScript або TypeScript. Big Data та Data Science – у цих сферах найчастіше використовується Python. iOS/macOS розроблення ведеться мовою Swift, рідше – Objective-C. Flutter – це мобільне розроблення під Android та iOS мовою Dart. Unity – створення ігор мовою C# на рушії Unity. React Native – розроблення мобільних та десктопних застосунків мовами JavaScript & TypeScript. Blockchain – розроблення за допомогою Java, Node.js, Golang, Rust та ін. Android – створення мобільних додатків мовами Java & Kotlin (Kotlin – набагато затребуваніша тут). DBA (Database Administrator) – розроблення ведеться мовою SQL, PL/SQL з використанням різноманітних СУБД (PostgreSQL, MySQL тощо). Ruby – бекенд розроблення мовою Ruby. DevOps – використовується мова Python, інструменти Bash/Shell. Висновки Тож яку мову програмування обрати у якості першої? Є три основні варіанти в залежності від того, яку мету ви перед собою ставите: Якщо ви хочете опанувати програмістський фундамент, сформувати правильне алгоритмічне мислення, а вже потім орієнтуватися на більш прикладні речі – починайте свій шлях у програмуванні разом з Pascal, Basic або C++. Перші дві мови вивчаються ще в школі і закладають правильні кодерські звички, надійну базу, в той час як C++ - це значно складніша мова, котра зачасту розглядається в університетах, але вона також гарна у вивченні фундаменту. Варто відмітити, якщо ви будете успішні у C++, інші мови зможете дуже легко опановувати і швидко розвиватиметеся далі за конкретним напрямом розроблення. Цей варіант підійде тим, у кого є час (якщо йти шляхом Pascal, Basic) або ж тим, у кого є не тільки час, а й любов до викликів (C++). Якщо ви хочете опанувати правильний програмістський фундамент, але прагнете вивчати мову, яка вже активно застосовується у розробленні і при цьому не потребує таких зусиль для вивчення, як більш складні C/C++ – обирайте між Java або C#. Це класичні мови, які навчать вас базі і при цьому будуть досить затребувані на ІТ-ринку ще довгий час, що дозволить відносно швидко знайти роботу. Це найкращий варіант з усіх трьох з точки зору компромісності між легкістю вивчення, швидкістю становлення в подальшому розробником і отриманням кодерської бази. Якщо ви хочете максимально швидко потрапити в ІТ – зверніть увагу на JavaScript та Python. Вони легкі в опануванні, швидко вивчається синтаксис, ринок має досить багато вакансій під JavaScript. Також ці мови мають велике ком'юніті, тому матеріалів для вивчення ви знайдете вдосталь.     Багато хто хоче потрапити в ІТ саме через останній – третій варіант. Але в чому його недоліки? Почнемо з JS: велика конкуренція (згадували під час розгляду аналітики); надто велика варіативність – кожен розробник може писати код за своїми власними правилами і буде важко читати та розуміти логіку його роботи; в інтернеті багато відповідей низької якості; з джаваскрипту важче переходити на інші мови програмування, аніж навпаки; значний шанс пропустити базові концепції програмування і високий ризик написання поганого коду. У Python приблизно ті самі проблеми плюс наявність своєрідного синтаксису, який може плутати. Це не означає, що дані мови – погані. Абсолютно кожна має як свої плюси, так і мінуси – і це нормально. МП треба обирати, відштовхуючись від сфери, в якій ви збираєтеся себе реалізовувати. Тільки тоді цей вибір буде максимально вдалим і корисним для вас. Коротенько резюмуючи: якщо вас цікавить розроблення веб-сайтів – всього того, що на стороні клієнта, ви хочете постійно бачити наочний результат своєї роботи, – обирайте JavaScript. Якщо цікавить кросплатформне ПЗ, Enterprise або мобільне розроблення під Android – вчіть Java (у мобільному розробленні потім довчите Kotlin). C# - гарний вибір для тих, хто хоче працювати з інструментами від Microsoft, створювати корпоративні застосунки, BackEnd веб-додатки, ігри, десктопні додатки під Windows. Python – незамінний у автоматизації рутинних задач, популярний у роботі з великими даними, BackEnd-ом, штучним інтелектом. Ці 4 мови покривають досить великий відсоток ІТ-спеціальностей, тому обравши одну з них ви не прогадаєте. Де можна вивчити мови програмування? Наші курси допоможуть кожному, хто збирається вивчати популярні мови програмування та супутні технології. Портал ITVDN налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких:  Верстальник сайтів FrontEnd Developer Java Developer Python Developer C# / .NET Developer Android Developer Unity / Game Developer PHP Developer та інші. Навчання відбувається у форматі записаних відео курсів – ви можете навчатися у той час, який є для вас комфортним. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN. Якщо вас цікавить вивчення тільки мови програмування, відповідні курси ви знайдете у нашому каталозі. Бажаємо успішного навчання та досягнення ваших амбіцій в ІТ!
Топ 10 телеграм каналів для пошуку роботи в IT

Автор: Вікторія Чабан

Щоб бути в курсі актуальних пропозицій на ринку праці та не пропустити повз себе кар’єрні можливості, скористайтесь добіркою – ТОП 10 актуальних та корисних Telegram-пабліків, які сприятимуть вашому активному пошуку роботи в IT та вашому розвитку. Junior Level: вакансії, івенти, можливості Канал для твого розвитку в Digital та ІТ 🚀 Щодня свіжі вакансії та стажування для джунів, а також багато інформації про цікаві івенти, курси, вебінари тощо. Jobzilla UA Агрегатор вакансій віддаленої роботи від перевірених компаній для кожного: з досвідом чи без, з зарплатою від 300$ до 3000$. Також на каналі можете знайти безліч корисних порад щодо працевлаштування та кар'єрного розвитку. Don't Panic Junior IT Jobs Це канал для пошуку роботи в ІТ та можливостей розвитку для джуніків. Публікують вакансії у вигляді добірок як для технічних спеціалістів, так і для менеджерських спеціальностей. Також канал публікує анонси технічних вебінарів. UNI WORK Допоможе знайти першу роботу навіть в умовах війни. Стажування, вакансії та освітні рішення від більш ніж 150 компаній. В середньому публікують 4 вакансії в тиждень, серед них часто зустрічаються для кандидатів без досвіду. InternsGo! Авторський канал для успішної кар'єри молоді. Створена швидка навігація каналом за допомогою хештегів, тому потрібну інформацію можна знайти легко та швидко, а саме: публікації вакансій та стажування за конкретною сферою, країною, позицією тощо. ITExpert Vacancies Кар'єрні поради та вакансії у сфері IT для українців. Канал ведуть фахівці рекрутингової компанії ITExpert, публікації вакансій для них безкоштовні. Головна мета — допомогти українським айтівцям у складні часи. Junior дайджест dou.ua Актуальна інформація про безкоштовні курси, стажування, інтернатури від українських ІТ-компаній. Також канал генерує новини з сайту DOU, тому ви завжди будете в курсі усіх новітніх подій. JOB for Ukrainians Телеграм-канал, який допомагає українцям знайти роботу у такий складний для всієї України та світу час. На каналі публікуються вакансії як для розробників так і для нетехнічних спеціалістів. Щоб знайти потрібну вакансію, використовуйте хештеги. Вакансії на Джині Телеграм-бот, який генерує вам вакансії за вашим профілем на Джині. Перейдіть у свій профіль в розділ підписки та додайте телеграм, далі за допомогою підказок можете шукати цікаві вам вакансії вже в самому боті. Дуже зручно та швидко. INCO кандидати Абсолютно безкоштовна платформа для пошуку роботи в IT. На сайті INCO ви можете анонімно розмістити своє резюме, яке буде також опубліковане в телеграм-каналі, щоб зацікавлений роботодавець зв'язався з вами. А також корисні поради пошуку роботи в IT від HR-менеджера Пошук роботи – цікавий та складний процес, який вимагає щодених зусиль. Якщо ви прагнете отримати роботу в компанії, в якій зможете реалізовувати свої здібності, отримувати конкурентну оплату праці та виходити на новий рівень як розробник, будьте готові багато часу приділяти якісній підготовці. Практикуйтесь щодня, покращуйте свої навички, готуйтесь до інтерв’ю; прокачувати soft skills також необхідно. Не забувайте і про вивчення англійської мови.  Існує декілька методів пошуку роботи: “Пасивний пошук” та “Активний пошук”.   Перший варіант рекомендую використовувати, якщо ви маєте основну зайнятість та потреба в зміні роботи не є терміновою, або ж ви досвідчений розробник, який працює над власним брендом, і ваші навички затребувані на ринку праці – тоді зацікавлені в вашому досвіді рекрутери самостійно будуть вам писати та хантити у свою компанію. Що ж необхідно зробити щоб розпочати пасивний пошук роботи? Створення та розміщення CV на Job-сайтах. Актуалізація інформації на ваших сторінках в соціальних мережах. Підписка на розсилання про нові кар’єрні можливості. Якщо ви новачок або маєте мінімальний досвід роботи, варто звернути увагу на другий варіант та займатися активним пошуком роботи.  Що включає в себе такий метод? Аналіз ринку праці. Визначення цільових вакансій. Оцінка власних практичних та теоретичних навичок відносно сучасних вимог. Формування списку потенційних ресурсів для пошуку роботи. Визначте, скільки часу на день/тиждень ви готові приділяти для досягнення результату. Підготовка якісного CV, яке розкриває ваші сильні сторони. Написання Cover Letter – в ньому ви можете включити інформацію, яку не зазначили в CV, але яка може бути важливою та цікавою для майбутніх роботодавців. Створення якісного та інформативного LinkedIn. Це одна з основних професійних соцмереж для побудови ділових стосунків, пошуку роботи тощо. Опрацювання та аналіз зворотного зв’язку, після тестових завдань та співбесід. Це допоможе вам зрозуміти ваші сильні та слабкі сторони. Постійний саморозвиток та вдосконалення практичних навичок. В сучасних реаліях, коли ринок перенасичений кандидатами, варто надавати перевагу саме активному пошуку роботи. Тоді ваші шанси отримати бажану посаду будуть значно вищі. І не забувайте: пошук роботи – це також робота. Успіхів! Якщо ви вважаєте за потрібне додати інші корисні ресурси для пошуку роботи в IT-галузі, пишіть у коментарях.
Як вивчати програмування в умовах блекаутів 2023 року

Автор: Влад Сверчков

Добрий день! Для українців одним із найбільш поширених слів останніми місяцями стало «блекаут» – це тотальне зникнення електропостачання. На жаль, навіть у 21 столітті ми потерпаємо від регулярного вимкнення електрики – внаслідок російських обстрілів. Але хіба це може зашкодити нам вчитися і працювати, щоб підтримувати економіку і допомагати нашим захисникам? Багато українців у зв’язку з війною втратили роботу і змушені шукати нові можливості, які б дозволили працювати дистанційно з будь-якої точки України та світу. І саме ІТ-галузь якнайкраще задовольняє цим умовам. Опанування певної ІТ-професії вимагає інтенсивного навчання та регулярної практики. Однак як вибудувати свій процес навчання в умовах блекауту? Які є варіанти навчання за умов відсутності світла та інтернету? Відповіді на ці та інші питання ви знайдете у даній статті.   Які є можливості навчання під час блекауту Паперові книги з програмування. Це безпрограшний варіант, оскільки тут не задіяні ні електрика, ні інтернет. Хіба що додаткове джерело світла знадобиться у темну частину доби (ліхтарик, світло зі смартфону абощо). Придбайте для себе паперовий посібник з вивчення бажаної мови програмування або технології і опановуйте теорію, незважаючи на відсутність електрики. Але вам потрібен буде гаджет, на якому ви могли б практикуватися (наприклад ноутбук), інакше весь теоретичний матеріал не зможе осісти у вашій голові і ви дарма втратите час. А програмування – це на 80% практика. Електронні книги. Вони більш дешеві за паперові аналоги, але потребують наявності гаджета (бажано з гарною батареєю) і, можливо, павербанку для оперативної підзарядки. У випадку, якщо вимкнення тривалі, а вам необхідно підзарядитися, можна скористатися кафе, торговим центром або Пунктом Незламності. Наявність того ж ноутбуку дозволяє практикуватися у написанні коду, вміщувати велику кількість книжок тощо. Освітні веб-портали (якщо є мобільний інтернет). Можна читати теорію з різних спеціалізованих веб-ресурсів зі смартфону або ж роздати WiFi на інші портативні пристрої і читати там (а паралельно ще й займатися практикою). Відео уроки, завантажені з ютубу або спеціальних ІТ-майданчиків на кшталт ITVDN. Гарний варіант для тих, кому подобається більша аудіо та візуальна інтерактивність – коли теорію подає професіонал – практикуючий розробник та/або ментор. Спікер викладає матеріал більш стисло, аніж у книзі, і зачіпає лише найважливіші теми. Такий підхід дозволяє прискорити вивчення мови/технології, а також отримати більш актуальні знання (з урахуванням дати записаного відео).  Як практикуватися? Для практики потрібен ноутбук, оскільки він має портативність, відносну автономність, компактність. У більшості випадків підійде навіть слабкий ноут; головне – аби в ньому батарея була достатньо витривалою, інакше доведеться шукати місце для підзарядки і кодити звідти. Практика передбачає виконання певних домашніх завдань та навчальних проєктів для закріплення знань після читання матеріалу. Освітня платформа ITVDN пропонує досить ефективний спосіб поєднання теорії та практики під час відсутності світла та інтернету: Ви переглядаєте попередньо завантажений відео урок, де автор – практикуючий розробник – викладає актуальний навчальний матеріал, використовуючи презентацію, код у середовищі розробки, а також свій особистий досвід і харизму. Після перегляду ви виконуєте закріплене за кожним уроком д/з, повторюєте теорію, користуючись коротким конспектом, переглядаєте прикріплений вихідний код прикладів, розглянутих автором на уроці. Коли з’явиться світло, у вас буде можливість скористатися ще більшими можливостями ITVDN: Пройти невеликий тест після кожного уроку для перевірки своїх знань. Додатково скористатися Інтерактивним практикумом для більшого відточення навичок написання коду з популярних мов програмування – C#, Java, JavaScript, C++, Python, SQL або мов верстання HTML & CSS. Пройти підсумковий тест за всім відео курсом і отримати відповідний Сертифікат, що підтверджуватиме ваші знання. Новий пакет підписки – спеціально на випадок блекауту Аби отримати можливість скачувати відео уроки та вивчати ІТ в умовах вимкнень світла та інтернету, ми створили особливий пакет підписки – «Преміум Plus». Що до нього входить? Доступ до всіх відео курсів, представлених у каталозі (понад 230) Можливість навчання з усіх спеціальностей Доступ до інтерактивних практикумів Вихідний код навчальних проєктів Презентації, опорний конспект, д/з із кожного уроку Перевірка 20 виконаних завдань Консультації з тренером – 120 хвилин 24 онлайн тестування та сертифікати за пройденими курсами Доступ до нових курсів під час дії підписки Можливість завантажувати відео уроки будь-яких курсів з каталогу ITVDN Приклад Розглянемо формат навчання, який отримують ті, хто придбав підписку «Преміум Plus» на ITVDN, на конкретному прикладі – курсі «C# 8.0 Стартовий». Придбавши пакет і перейшовши на сторінку будь-якого курсу, ви побачите праворуч від відео плеєра список доступних уроків: Під назвою кожного уроку є 4 опції. Натиснувши на «Матеріали уроку», ваш браузер завантажить на комп’ютер матеріали до уроку – презентації, вихідний код, конспект. Після натискання на «Домашні завдання» буде завантажено тільки файл з коротким конспектом та д/з. Опція «Завантажити» запустить процес скачування запису відео уроку у форматі mp4.     При натисканні на «Тестування» ви побачите вікно з пропозицією пройти невеликий тест з даного уроку і перевірити ступінь засвоєння матеріалу: Аби завантажити усі матеріали відео курсу разом (окрім відео уроків у .mp4), можете скористатися кнопкою «Завантажити матеріали курсу» під описом курсу: Сподіваємося, наш гайд є корисним для вас і тепер ви знаєте, як зробити своє ІТ-навчання ефективним навіть в умовах вимкнень світла та інтернету.  Ознайомитися з «Преміум Plus» Навчайтеся разом з ITVDN і нехай ніякі блекаути не стають на заваді вашого розвитку в ІТ!
Як правильно укласти договір на розробку сайту: поради для фрілансерів

Автор: Богдана Гайворонська

Фрілансери не завжди укладають договір на розробку сайту із замовниками, покладаючись на домовленості, озвучені усно чи сформульовані в переписці. Адже сам процес узгодження і підписання документів займає певний час і потребує зусиль. Втім, співпраця на довірі доволі ризикована для обох сторін. Крім того, що один із учасників може безкарно відмовитися від виконання своїх обов’язків, є чимало ньюансів, які ускладнюють співпрацю в разі відсутності документально завірених алгоритмів роботи. Навіть коли обидві сторони мають намір добросовісно виконати всі домовленості, їх може підвести банальне непорозуміння. Договір не лише гарантує захист як виконавця, так і замовника. Він є певною дорожньою картою, яка описує кожен етап робіт, кожну можливу ситуацію, дії партнерів у разі форсмажорів та алгоритм врегулювання спірних питань. Навіть підписання типового договору частково зменшує ризики, але ми все ж радимо створювати окремий контракт для кожного замовника. Хостинг-провайдер та реєстратор доменних імен Cityhost.ua пропонує читачам нашого блогу матеріал, створений спільно з IT-юристами, щоб розібратися в усіх аспектах створення договору на розробку сайту. Етапи узгодження та укладання договору Укладання договору починається в той момент, коли замовник та виконавець обговорюють та узгоджують всі деталі проєкту. Тому цей етап також має бути задокументований у вигляді брифу. Крім того, потрібно скласти детальне ТЗ та сформувати сам договір. Давайте розглянемо кожен крок на цьому шляху. Заповнення брифу Замовники дуже не люблять заповнювати бриф і намагаються пропустити цей етап, обговоривши всі деталі по телефону або в чаті. Часто відбуваються ситуації, коли замовник каже «Ви професіонал, подивіться самі, що там потрібно зробити і викладіть свої пропозиції». Така позиція нерідко виливається у результат: «Ні, це не те, що потрібно, запропонуйте щось інше».  Насправді ж бриф дуже потрібен для співпраці, бо в ньому містяться відповіді на важливі для виконавця запитання. Кожен розробник укладає свій бриф, який може виглядати подібним чином: Назва та галузь роботи компанії. Цільова аудиторія. Локація (місцева, всеукраїнська, міжнародна). Цінності, місія. Корпоративний стиль — слоган, корпоративні кольори, стиль промо-матеріалів (бажано надіслати ці матеріали на пошту). Тип сайту, який бажаєте замовити (візитка, інтернет-магазин, корпоративний сайт, наявність/відсутність блогу тощо). Орієнтовна структура сайту, назви розділів. Побажання щодо оформлення сайту. Приклади сайтів, на які ви б хотіли орієнтуватися. Можна розробити типовий бриф, але все ж варто вносити в нього додаткові запитання, призначені для конкретного замовника. Складання технічного завдання Після заповнення брифу замовник уточнює питання та вносить пропозиції, яким він бачить майбутній сайт — основну концепцію, кількість розділів, візуальний стиль. На основі цих перемовин складається технічне завдання і одночасно з тим починається розробка договору.  У техзавданні прописується конкретний результат і всі послуги, які надає розробник. Це дуже важливо, оскільки «зробити сайт» — доволі розмите поняття. Може трапитися, що власники фірми звернулися до фрілансера, який тільки пише код, і не займається дизайном і контентом. Тож він буде чекати від замовника макет, тексти та фото. Інші ж фрілансери можуть зробити сайт «під ключ» і мають розгалужену мережу субпідрядників — дизайнерів, копірайтерів, фотографів тощо. Техзавдання прописується максимально детально і включає в себе вимірювані параметри, на кшталт: «Сайт має складатися з 5 розділів: головна сторінка, сторінка «Про нас», сторінка контактів, сторінка для представлення товару, розділ для блогу». Якщо у сайту є блог або розділ новин, у ТЗ також пишеться, чи має виконавець заповнити цей розділ 2-3 новинами, чи робить тільки структуру блогу. Чим докладніше буде описано кожен нюанс розробки сайту, тим менше залишиться простору для непорозумінь. Обговорення та узгодження тексту договору Для початку потрібно визначитися з типом договору. Існують два типи — договір на надання послуги та договір підряду. Вони відрізняються тим, що у першому випадку ключовим є сам процес роботи, а у другому — результат. Наприклад, SEO-просування не має кінцевого результату і триває завжди, доки існує сайт — тоді заключається договір на співпрацю. Для розробки сайту більше підходить договір підряду, оскільки замовнику потрібен сайт, його цікавить завершена робота та її плоди. Далі потрібно прописати почергово всі головні етапи співпраці: Надання замовником матеріалів розробнику. Це можуть бути тексти, фото, відео, логотип тощо. Створення та затвердження макету. Розробка сайту. Внесення правок. Перевірка та прийом роботи. Підписання актів про виконання робіт. Оплата виконаної роботи. Це орієнтовний перелік, бо у кожного сайту можуть бути свої етапи. Наприклад, виконавець не лише розробляє сайт, а й проводить маркетингові дослідження, вивчає ринок, аналізує конкурентів та на основі отриманої інформації дає рекомендації замовнику щодо концепції сайту — це окремий етап, який також потребує зусиль та впливає на формування вартості замовлення.  Основні правила складання договору Є елементи договору, без яких він не зможе стати чітким документом, що дисциплінує сторони в процесі роботи. Терміни Обов’язково потрібно прописати терміни виконання кожного етапу. Якщо уважно придивитися до порядку дій, ви побачите, що частина роботи залежить від виконавця (створення сайту, внесення правок), а друга частина — від замовника (надання матеріалів, перевірка, прийом роботи). Якщо в договорі прописана тільки фінальна дата, коли розробник повинен здати сайт, він може потрапити у часову пастку — строки затягнуті, але не з його вини. Також потрібно прописати дії сторін в разі, якщо хтось із партнерів виконує свої обов’язки неналежним чином. Наприклад, якщо замовник не здійснив прийом роботи протягом семи днів, вона автоматично вважається прийнятою. Прописуйте не конкретні дати, а час між етапами, наприклад: «Розробник зобов’язується надати початковий макет сайту протягом 4 днів з моменту отримання матеріалів». Вимірюваність Всі пункти в договорі мають бути описані таким чином, щоб їх можна було виміряти якимось конкретним параметором — часом, дією, результатом. Наприклад, обговорення та внесення правок відбувається протягом тижня після того, як розробник надішле електронною поштою посилання на готовий сайт на таку-то адресу (конкретну). Таким чином знижується вірогідність плутанини, коли одна сторона чекає результат у Вайбері, інша пише повідомлення у Фейсбуці, а час спливає. Конкретика Дуже важливо прописувати чіткі формулювання. До прикладу, «надати макет сайту» — це нечітке формулювання. А ось «надати макет сайту у вигляді проекту в Figma з доступом редактора» — це вже щось конкретне. Так само потрібно прописувати, на які матеріали очікує розробник — фотографії у форматі .png з розширенням не менше 600 пікселів по ширині, тексти у форматі Google Docs з відкритим коментуванням. Далеко не всі замовники орієнтуються в комп’ютерних технологіях. Якщо ваш клієнт — невелике будівельне підприємство чи ФОП, який ремонтує велосипеди, для нього не існує ніяких опцій за замовчанням. Тому конкретний і детальний опис всіх вимог та етапів — це скоріше необхідність, інакше на клієнта і розробника може чекати багато сюрпризів. Збалансованість У договорі мають бути рівномірно дотримані права та обов’язки обох сторін. Не має бути такого, що в усьому винен замовник або вся відповідальність лежить на виконавцеві. Якщо якийсь етап роботи залежить від дій певної сторони — вона несе відповідальність за його реалізацію або сплачує неустойку (чи підпадає під інші санкції) в разі невиконання обов’язків з власної вини. Пункти договору, які потребують уваги У цей розділ винесемо ті аспекти співпраці, про які фрілансери-початківці можуть не знати чи не вміти правильно їх врегулювати. 1) Кількість та порядок поправок, внесення змін у ТЗ Важливим є питання кількості можливих правок та внесення змін у технічне завдання. Найкращий і перевірений метод — коли замовник надсилає всі правки в одному документі, а виконавець вносить їх всі одразу. Оптимально робити три кола правок; якщо у клієнта з’являються додаткові правки, це має оплачуватися. Така політика в першу чергу захищає виконавця від десятків переробок і дисциплінує замовника, який з більшою уважністю вирішує, чи потрібна ця правка. Правки мають бути конкретними та аргументованими, без формулювань на кшталт «зробіть якось інакше, але не так, як є». Щодо ТЗ — всі зміни, які замовник хоче внести в нього вже під час роботи, мають також додатково оплачуватися. В разі потреби можна прописати, які зміни та якого масштабу можна вносити, скільки коштує кожна з них. Одна справа поміняти фотографію, і зовсім інша, коли замовник на фінальній стадії вирішує замінити CMS (по факту це означає робити все наново). 2) Авторські та майнові права Питання авторських прав стосується як матеріалів, які використовуються на сайті під час розробки, так і використання матеріалів сайту після завершення робіт. Важливо відстежувати, чи є унікальним контент, який надає замовник або пропонує виконавець. Для убезпечення обох сторін потрібно прописати порядок дій для запобігання ситуаціям, коли можуть бути порушені авторські права третіх оосіб або одного з учасників проєкту. Наприклад, сторона, яка надає матеріали, має долучити документи, які підтверджують право власності на них — квитанції на придбання фото- та відео-матеріалів чи інший контент. Або для спрощення процедури можна просто зазначити, що відповідальність за порушення авторського права несе сторона, яка надала матеріали. До об’єктів авторського права відносяться назва сайту, тексти, фото, відео, дизайн та код. У договорі має бути вказано, кому належать майнові та авторські права на всі елементи проєкту після його завершення та чи може розробник використовувати якісь із матеріалів для подальшої роботи. Для орієнтиру використовуйте Закон про авторське право і суміжні права. 3) Співпраця з іншими підрядниками Сайт складається з багатьох компонентів, і не всі роботи підрядник може виконати самостійно. Якщо він звертається до субпідрядників для створення дизайну чи текстів, це також має бути зафіксовано у договорі. Але в будь-якому разі за якість кінцевого результату відповідає виконавець. 4) Відповідальні особи за комунікацію з виконавцем Цей момент особливо вартий уваги, якщо компанія-замовник велика, в ній є багато різних відділів та працівників. Скоріш за все, виконавець не працюватиме напряму з директором, а спілкуватиметься з кимось із менеджерів. В такому разі договір має містити ПІБ, посаду та контакти особи, відповідальної за комунікацію. Не завадить також вказати, які канали спілкування вважаються офіційними — ними можуть бути не лише пошта, а й акаунт у Телеграмі чи сторінка у Фейсбуці. В разі, якщо різні аспекти будуть узгоджуватися з різними людьми, це також має бути вказано. Наприклад, за фінансові питання відповідає бухгалтер, за узгодження макету — дизайнер компанії, всі інші питання — до менеджера. Але все ж краще, коли проект курує одна конкретна людина і несе відповідальність за своєчасну та ефективну комунікацію. 5) Форсмажорні обставини Бувають ситуації, коли хтось не може виконати свої обов’язки з причин, які не залежать від нього. На цей випадок потрібно винести окремим пунктом подолання форсмажорних обставин: що можна вважати такими обставинами та порядок дій в разі їхнього виникнення (наприклад, відстрочка для виконавця для завершення робіт або відстрочка оплати для замовника). Зазвичай в цей перелік входять пожежі, стихійні лиха, бойові дії, страйки, введення карантину та інші обставини, які не можна передбачити та підготуватися до них. 6) Фінансові питання В цю категорію входить не лише порядок оплати за виконану роботу (аванс, гонорар) а й супутні витрати. Сюди можна віднести оплату домена та хостинга, замовлення текстів, дизайну, фотозйомки тощо. Виконавець може ці витрати включити в суму гонорару, але можна і покласти їх на замовника. Це все обговорюється і прописується. Також у договорі мають бути зафіксовані такі моменти як порядок оподаткування, розрахункова валюта, рахунки для отримання коштів, порядок перерахунку та спосіб підтвердження отримання коштів виконавцем. 7) Прийом роботи або відмова від нього На перевірку та прийом роботи виділяється певний термін, протягом якого замовник може висунути обгрунтовані зауваження та вимоги щодо доопрацювання сайту або відмовитися прийняти роботу, надавши чіткі аргументи. Відмовитися від прийому роботи можна тільки в разі, якщо сайт не відповідає технічному завданню, виконаний з порушенням законів або має інші об’єктивні недоліки, які унеможливлюють його використання і які можна довести. Не можуть бути враховані суб’єктивні аргументи, коли сайт виконаний за всіма домовленостями, але розробник уявляв собі його якось інакше. Якщо розробник виконав всі пункти ТЗ і договору, клієнт не може відмовитися від підписання акту. В разі, якщо йдеться про масштабні проєкти з великою сумою оплати, радимо звернутися за консультацією до юриста, який допоможе прописати договір максимально чітко та уникнути «шпарин» для подвійного трактування.
Що повинен знати FrontEnd розробник у 2023 році

Автор: Влад Сверчков

Основні технології HTML5 & CSS3 Flex та Grid CSS CSS препроцесори Git & GitHub Знання про веб-технології та мережу інтернет JavaScript JavaScript Core (DOM, AJAX, JSON) REST API Алгоритми та структури даних Фреймворки JavaScript Інструменти керування станом програми (State Management) TypeScript Основи Figma Англійська мова Необов’язкові технології Патерни проєктування JavaScript Лінтери Тестування Webpack Gulp / Grunt SOLID принципи Зарплати FrontEnd розробників Підсумки FrontEnd – одна з найлегших професій розробника в ІТ. Вона вигідно вирізняється тим, що поєднує в собі програмування та творчість, оскільки девелопер працює над оживленням дизайнерського макету та створенням відповідної користувацької логіки. Також перевагою фронтенду є те, що побачити результат своєї роботи можна майже одразу – в будь-якому браузері. Відносна легкість фронтенду породжує велику популярність серед бажаючих потрапити в ІТ, а враховуючи наслідки відкритої агресії по відношенню до України – особливо велику популярність, адже це можливість працювати віддалено (на ІТ-компанію або на фрилансі) і отримувати гарну зарплату. Відповідно, конкуренція серед Trainee/Junior FrontEnd розробників шалена, а тому роботодавці вимушені закручувати гайки і підвищувати вимоги до кандидатів, аби відібрати найкращих.   Тож як стати фронтенд розробником? Якими технологіями необхідно володіти, аби стати Intern/Junior FrontEnd розробником у 2023 році? Проаналізувавши вакансії на українському ринку айті, ми склали список актуальних інструментів, які зазвичай вимагають роботодавці від кандидатів. Їхній перелік – нижче у статті. Frontend developer roadmap. Основні технології HTML5 & CSS3 HTML5 і CSS3 – це фундаментальні технології, без знання яких не обійтися жодному веб-розробнику. За допомогою мови гіпертекстової розмітки HTML створюється розмітка (каркас) кожної веб-сторінки. Потім мова стилів CSS збагачує візуальне оформлення сайту і надає йому привабливого та ефектного зовнішнього вигляду. Крім цього, необхідно володіти: кросбраузерним адаптивним верстанням, щоб вміти створювати сайти під мобільні пристрої, планшети і широкоформатні екрани та для різних браузерів; семантичним верстанням для підвищення якості розмітки та покращення пошукової індексації сайту; валідним верстанням, яке передбачає повну відповідність коду розробника всім стандартам W3C - організації, яка створює та впроваджує технологічні стандарти для World Wide Web. Приділіть особливу увагу верстанню під мобільні пристрої, тому що сучасний веб-споживач дуже багато часу проводить у смартфоні. Існує навіть спеціальний підхід, при якому спочатку верстається веб-сайт під мобільні пристрої, а потім під десктопи – називається Mobile First. Це загальні вимоги щодо верстання. Тепер розглянемо більш детально вимоги безпосередньо щодо мови стилів – CSS. Тут ви повинні знати основні властивості CSS3: фони, градієнти, тіні, анімації, трансформації, переходи, а також технології Flex та Grid, про які ми ще поговоримо. Гарне володіння HTML та CSS вже дозволяє займатися верстанням сайтів та заробляти гроші. Саме з цих двох базових технологій починається шлях до професії FrontEnd розробника. Якісно вивчити HTML та CSS ви зможете за допомогою наступних наших курсів: HTML5 & CSS3 Стартовий; HTML5 & CSS3 Базовий; HTML5 & CSS3 Поглиблений. Flex та Grid CSS Технології верстання надійних адаптивних веб-сторінок, які дозволяють легше створювати динамічні сайти та зручніше структурувати їх вміст. Найкраще Flex-верстання в дії показує інтерактивний сайт flexboxfroggy.com, а Grid-верстання – cssgridgarden.com. На нашому ресурсі також є курси, які гарно пояснюють теми Flex та Grid верстання: "Верстання сайту на CSS Grid", "Верстання сайту на FlexBox CSS". CSS препроцесори CSS препроцесор — це програма, яка має власний синтаксис, але може згенерувати з нього CSS-код. Найпопулярнішими вважаються SASS, Stylus, LESS і PostCSS, проте найбільше ком'юніті саме у SASS. Препроцесори призначені для: прискорення процесу написання коду; спрощення читання коду та його подальшої підтримки; мінімізації рутинної роботи під час написання коду. Для підвищення ефективності написання CSS-коду цілком достатнім буде вивчення лише одного препроцесора. Git & GitHub Git - найбільш популярна система контролю версій, яка дозволяє вести історію розроблення проєкту з можливістю доступу до кожної збереженої версії. Крім того, варто вміти працювати з сервісом онлайн-хостингу проєктів, який використовує систему контролю версій. У даному випадку це GitHub. У тандемі з Git він дозволяє розробникам зберігати свій код онлайн у хмарному сховищі, а потім взаємодіяти з іншими розробниками у різних проєктах. Дані системи дозволяють команді програмістів працювати над одним проєктом одночасно, зберігаючи внесені зміни, і навіть відслідковувати виконання завдань кожним членом групи. Git & GitHub — дуже важливі інструменти для будь-якого IT-розробника, вивченням яких слід зайнятися якомога раніше. Ми рекомендуємо вивчати Git на ITVDN за допомогою курсу «Основи роботи з Git». Знання про веб-технології та мережу інтернет Щоб якісно виконувати свою роботу, фронтенд розробник повинен розбиратися у вебі і розуміти принципи його функціонування. Таким чином, необхідно знати: як працює інтернет; протоколи HTTP/HTTPS, веб-сокети; як працюють браузери; що таке DNS та як він працює; що таке доменне ім'я; що таке хостинг. Також буде непогано, якщо ви спробуєте налаштувати сайт на якомусь безкоштовному хостингу, прив'яжете домен до цього хостингу. JavaScript Мова програмування, яка використовується як при розробленні клієнтської сторони веб-застосунку, так і серверної. За допомогою JavaScript (скорочено JS) можна писати навіть настільні та мобільні додатки, використовуючи певні програмні платформи та бібліотеки. Ця мова дозволяє: динамічно змінювати HTML-розмітку; здійснювати інтерактивну взаємодію з користувачем; анімувати зображення; здійснювати валідацію форм; керувати мультимедіа тощо. Іншими словами, JavaScript "оживлює" сторінку та додає їй функціональності. Гарне володіння цією мовою програмування є обов'язковим пунктом для кожного FrontEnd розробника. JavaScript використовує офіційний стандарт ECMAScript (скорочено - ES), який має на увазі певний формальний опис синтаксису, базових об'єктів та алгоритмів. На даний момент існує багато різних версій ES. Роботодавці найчастіше вимагають знання ES6+. Однак спочатку необхідно вивчити чистий JavaScript (vanilla JavaScript) і лише потім вникати в нові стандарти. Як не крути, а класику треба знати. Завдяки гарному володінню JS можна швидко розібратися в будь-якій версії ES, а потім опанувати будь-який фреймворк або бібліотеку. ITVDN надає можливість вивчити JavaScript з нуля до поглибленого рівня за допомогою курсів: JavaScript Стартовий; JavaScript Базовий; JavaScript: Розширені можливості. JavaScript Core (DOM, AJAX, JSON) DOM (Document Object Model) – об'єктне представлення вихідного HTML-документу. Ключовим є поняття DOM-дерева, яке описує структуру сторінки. За допомогою об'єктної моделі JavaScript отримує повну владу над HTML-документом: можливість редагувати, видаляти та додавати елементи і атрибути HTML, змінювати CSS-код тощо.   AJAX (Asynchronous JavaScript And XML) – це синтез технологій JavaScript і XML, який фактично являє собою комбінацію: вбудованого в браузер XMLHttpRequest-об'єкту (щоб запитувати дані з веб-сервера); JavaScript та HTML DOM (щоб відображати або використовувати дані). AJAX дозволяє веб-сторінкам здійснювати асинхронне оновлення, обмінюючись даними з веб-сервером. Завдяки цій технології сторінка не потребує перезавантаження – оновлюється лише конкретна її частина (згадайте стрічку новин у соціальних мережах). JSON (JavaScript Object Notation) – це загальний формат обміну даними. Дозволяє здійснювати обмін інформацією між програмними продуктами, котрі написані різними мовами. Таким чином, клієнт, який використовує JavaScript, може легко передавати дані на сервер, реалізований за допомогою Ruby/Java/PHP. Всі три технології мають особливу цінність для кожного веб-розробника та розкривають організацію роботи інтернет-застосунку. REST API API – Application Programming Interface – це набір правил, при дотриманні яких програми можуть між собою взаємодіяти. Розробник створює API на сервері та дозволяє клієнтам звертатися до нього. Красномовним прикладом буде API від Google Maps, котрий дозволяє веб-розробнику вказати на гугл мапі розташування певної будівлі (точку видачі інтернет-замовлень, офіс компанії абощо) на своєму сайті. Таким чином програміст позбавляє себе необхідності самому розроблювати власну мапу і користується вже готовим рішенням від Google, використовуючи набір правил від API. REST – Representational State Transfer – це архітектурний підхід, котрий регламентує, як саме API мають виглядати. Цьому набору правил має слідувати девелопер під час створення власного застосунку. Простими словами, REST – це звичайний запит виду «клієнт-сервер» з використанням HTTP-протоколу. Фронтенд розробнику необхідно розбиратися у REST API, оскільки ця технологія використовується усюди, де є необхідність працювати з даними від сервера. Алгоритми та структури даних Розуміння алгоритмів та структур даних – обов'язок будь-якого грамотного програміста. До структур даних відносяться: стеки, черги, зв'язані списки, графи тощо. Вивчивши їх, ви зможете керувати складністю своїх програм, роблячи їх більш доступними для розуміння, а також розробляти високопродуктивні програми, які ефективно працюватимуть з пам'яттю. Знання алгоритмів дозволить вам створювати складні конструкції для ефективного розв'язання широкого спектра завдань. Коли говорять про алгоритми, зазвичай мають на увазі алгоритми сортування та пошуку: сортування прямим включенням, прямим вибором, злиттям, пірамідальне, прямий пошук, бінарний, індексно-послідовний та інші. Важливо розумітися і на нотації Big O, яка описує складність кожного алгоритму. Даний механізм допомагає визначити, за яких умов вигідніше використовувати той чи інший алгоритм. Зазначимо, що як новачкові, вам не треба пірнати вглиб цих тем. Буде достатньо теоретичного володіння, розуміння, де яку структуру даних слід використати, а також уміння написати декілька алгоритмів. У розробленні сайтів це не дуже потрібно, але практично жодна співбесіда не оминає тему алгоритмів і структур даних. Фреймворки JavaScript Це інструменти, за допомогою яких створюються динамічні веб-/мобільні/десктопні застосунки мовою JavaScript. Вони прискорюють розроблення веб-додатків та передбачають чітко структуровану організацію коду, підвищуючи його якість та чистоту. Найпопулярнішими фреймворками для фронтенд розроблення можна назвати Vue.js, Angular та бібліотеку React. Кожен із них призначений для вирішення свого спектру завдань і має різний ступінь складності: Vue.js – найлегший (але й з найменшою спільнотою), React – середньої складності, Angular – високої складності. Варто сконцентруватися на глибокому вивченні одного фреймворку, але в той же час дуже рекомендується знати особливості та сферу застосування всіх перерахованих вище технологій. Який фреймворк все ж обрати? Думки щодо цього розходяться. Інструментарій вибирається індивідуально під проєкт та важко передбачити, які задачі вам потрібно буде вирішувати. На даний момент найбільшою популярністю користується React, оскільки він збалансований як з точки зору складності, так і з точки зору багатства функціоналу. До того ж найбільша кількість вакансій припадає саме на цей фреймворк, а значить, що він цікавий не тільки розробникам, а й бізнесу. Кожен із фреймворків доступний для вивчення на платформі ITVDN. За напрямком Angular: Angular 11.0 Базовий; Angular Поглиблений. За напрямком React: React Базовий; React Поглиблений. За напрямком Vue.js: Vue.js Стартовий; Vue.js Базовий. Інструменти керування станом програми (State Management) Великі веб-застосунки постійно зростають у складності, а тому зберігати дані, які можуть використовуватися в різних місцях, стає все складніше. Для вирішення цієї проблеми були вигадані окремі бібліотеки, що йдуть паралельно з фреймворками — вони служать для управління глобальним сховищем даних усього веб-застосунку і називаються менеджерами станів. Їх застосування вже стало стандартом у FrontEnd розробленні. Для девелоперів, які використовують Vue.js, це VueX, для React-розробників – Redux і MobX, для Angular-девів – RxJS, NgRx. TypeScript Кросплатформна строго типізована мова, яка є розширенням JavaScript. Строга типізація дозволяє зменшити кількість потенційних помилок у вихідному коді, написаному на TypeScript. Також ця мова реалізує концепції, які близькі до об'єктно-орієнтованих мов, таких як C#, Java та подібних. TypeScript підвищує швидкість та зручність написання комплексних програм, внаслідок чого їх стає легше підтримувати, масштабувати та тестувати. У вакансіях ця мова зустрічається досить часто незалежно від цільового фреймворку. При цьому для Angular розробників знання TypeScript є обов'язковим. Через високу затребуваність даної мови ми помістили її у список обов’язкових для вивчення. Основи Figma Figma – це популярний дизайнерський інструмент для створення інтерактивних прототипів застосунків або веб-сайтів. З його допомогою дизайнер створює дизайн, який фронтенд-розробник потім верстає за допомогою HTML/CSS і додає інтерактивність при участі JavaScript. Знання основ фігми дозволяє девелоперу зручно взаємодіяти з дизайнерським прототипом: швидко дізнаватися необхідні розміри тих чи інших елементів, робити експорт картинок та іконок тощо. Додатковий плюс – можливість використання браузерної версії Figma. Англійська мова План навчання Front-end повинен обов'язково включати підтягування English. Знання англійської є однією з основних вимог до фронтенд-розробника, оскільки велика кількість корисної інформації знаходиться саме на англомовних сайтах. Рівень читання технічної документації буде достатньо для комфортного користування іноземними ресурсами (Intermediate). Однак чим вищий рівень вашої англійської, тим більші шанси отримати job-офер. Інгліш використовується не тільки при роботі з документацією, а і при комунікації з командою та клієнтами. Серед програмістів побутує вислів: «Яку мову програмування слід вчити першою? Вчи англійську!». Тому не пошкодуйте ваш час і гарненько підтягніть англійську – цілком можливо, що саме гарне володіння нею стане вирішальним при розгляді вашої кандидатури. Необов’язкові технології Патерни проєктування JavaScript Це найкращі практики, які описують типові способи вирішення поширених завдань, що виникають під час проєктування програмного забезпечення. Знання шаблонів проєктування дозволяє писати більш чистий, зрозумілий і читабельний код, а також уникати "винайдення велосипеда". Більше того, володіння патернами показує вашу грамотність як розробника і підвищує вашу цінність в очах роботодавця, що допоможе виділитися на тлі конкурентів. Щоб ви могли добре розібратися з темою шаблонів JavaScript, рекомендуємо курс “JavaScript Шаблони”. Лінтери Інструменти, які дозволяють аналізувати якість JavaScript-коду відповідно до стандарту ES. Вони вбудовуються в середовище розроблення і вказують на наявність невідповідностей стандарту коду, якщо такі є. Даний механізм корисний як для одноосібного розроблення (для самоконтролю), так і для командного, коли кожен розробник повинен слідувати тим самим мовним конструкціям, аби на виході отримати єдиний, цілісний проєкт. Один із найвідоміших лінтерів – ESLint. Це необов’язковий інструмент для роботодавця, але він дуже корисний для веб-розробників у силу його можливостей з контролю якості коду. Тестування Jest та Cypress– головні інструменти модульного тестування, яке покладається на плечі розробника. Але що це таке? Unit тестування (воно ж – модульне тестування) – процес, який полягає у створенні тестів для перевірки працездатності окремих ділянок написаного програмістом коду. Виконується безпосередньо автором коду. Яку користь приносить Unit тестування: суттєве скорочення багів у коді; спрощення рефакторингу коду; забезпечення якісного відокремлення інтерфейсу від реалізації; краще розуміння написаного коду; можливість протестувати найдрібніші ділянки коду. Усі інструменти вчити не треба — достатньо навчитися працювати лише з одним із них. Webpack Потужний збирач модулів, який дозволяє скомпілювати в один файл кілька різних модулів. Використовується для роботи над об'ємними проєктами. Успішно використовується як у фронтенд-розробці, так і при створенні бекенду. Gulp / Grunt Системи збирання, які автоматизують рутинні завдання розробників: мініфікацію коду, оптимізацію зображень, тестування, аналіз якості коду та інше. Підходять для розроблення невеликих проєктів. SOLID принципи SOLID – це принципи, які є своєрідним ременем безпеки для тих, хто працює відповідно до парадигм об'єктно-орієнтованого програмування. Вони були створені з метою убезпечити ООП-орієнтованого розробника від незрозумілого, заплутаного спагеті-коду, який також ще й дуже важко підтримувати. SOLID - це акронім, який складається з п'яти букв, що кодують п'ять основних принципів: S - Single Responsibility Principle (принцип єдиної відповідальності) O - Open-Closed Principle (принцип відкритості-закритості) L - Liskov Substitution Principle (принцип підстановки Барбари Лісков) I - Interface Segregation Principle (принцип розділення інтерфейсу) D - Dependency Inversion Principle (принцип інверсії залежностей) Володіння цими принципами дозволяє грамотно проєктувати та розробляти такі програмні системи, які з великою ймовірністю зможуть тривалий час розвиватися, розширюватися та підтримуватися. Хоча SOLID принципи написані переважно для ООП, їхні ідеї цілком застосовні і до сучасного JavaScript розроблення, що допоможе фронтенд-розробникам створювати більш чистий та лаконічний код. Зарплати FrontEnd розробників Звернемося до статистики, опублікованої на сторінці української IT-спільноти DOU, а саме – до зарплатної аналітики українських розробників за літо 2023 року. Медіанна зарплата всіх українських розробників, які взяли участь в опитуванні (а їх 6605), наступна: Intern Software Engineer – 450 USD; Junior Software Engineer – 1000 USD; Middle Software Engineer – 2600 USD; Senior Software Engineer – 4900 USD. Тепер поглянемо на медіанну ЗП FrontEnd розробників: Junior – 950 USD; Middle – 2500 USD; Senior – 4750 USD. Виходить, медіана фронтендників на всіх тайтлах трохи менша, ніж загальна медіана, проте розрив досить невеликий. Погляньмо, скільки заробляє цей фахівець за межами України. У цьому нам допоможуть результати опитування Stack Overflow Developer Survey 2023 (понад 90 000 респондентів із США, Індії, Німеччини, Канади, Великої Британії та інших країн). Ця цифра – 59 970 USD на рік (приблизно 5000 USD на місяць).   При цьому буде важливо сказати, що фронтендники з даного опитування мають у середньому 8 років професійного кодингу – і це один із найнижчих показників. Нижче за них розташовуються лише Data Scientist / ML Specialist – 7.9 років досвіду, а також студенти, які мають трохи більше 2.8 років досвіду у професійному створенні коду. Підсумки FrontEnd розробник – досить універсальний боєць у світі веб-розроблення. Він повинен вміти і верстати, і створювати логіку роботи клієнтської частини, і розуміти роботу серверної частини веб-застосунку. Для опанування такого великого інструментарію варто запастися часом, терпінням та завзятістю. Зазначені у статті засоби розроблення сайтів також мають аналоги, оскільки для вирішення різних завдань підходять різні веб-інструменти. Однак ми вибрали найпопулярніші та найефективніші з них. Якщо у вас є бажання опановувати цю професію і ви хочете самостійно “помацати”, чим займається фронтенд розробник, на ITVDN створено комплексну програму навчання у форматі відео навчання, яка включає 44 відео курси. Аби отримати доступ до всіх відео курсів на ITVDN терміном на 12 місяців з можливістю скачувати на ваш пристрій відео матеріали (що дуже актуально під час блекаутів), радимо розглянути пакет підписки «Преміум Plus». Якщо ж вам більше до вподоби живе онлайн навчання з тренером та у групі з іншими учнями, пропонуємо формат Live Online для вивчення спеціальності FrontEnd (Angular або React напрямки). Бажаємо вам успіхів у досягненні ваших цілей! Залишайтеся з ITVDN!
Яку ІТ-спеціальність обрати у 2023 році?

Автор: Влад Сверчков

Коротко про українське ІТ в 2022 році. Український ІТ-спеціаліст у 2022 році. Аналітичні огляди сучасного ІТ. Які ІТ-спеціальності будуть затребувані у 2023 році? Кому потрібне гарне володіння англійською мовою? Висновки. Вітаємо наших читачів! Українське ІТ демонструє чудові міцність та адаптивність навіть в умовах повномасштабної війни. Так, багатьом айтішникам довелося здійснити вимушене переселення в інші регіони країни, ба навіть інші держави, аби знаходитися у відносній безпеці. Однак більшість зберегла за собою роботу і доходи, які дозволяють не тільки забезпечувати себе та свої родини необхідними умовами та засобами для життя, але ще й активно донатити на армію та різноманітні волонтерські проєкти – середній донат станом на червень 2022 року становив $270 на місяць (відповідно до результатів опитування на DOU). Стабільність та гарні умови праці, можливість віддаленої роботи з будь-якої точки світу, де є інтернет, велика кількість ІТ-напрямків на вибір – ці та інші особливості стали вельми затребуваними у багатьох українців. З’явилася велика кількість бажаючих спробувати свої сили в ІТ, і піднялися одні з найголовніших питань: “З чого почати? Яку ІТ спеціальність обрати у 2023 році?”. А й дійсно – як грамотно оцінити ситуацію на ринку ІТ та обрати собі спеціальність, яка: буде подобатися; матиме гарні кар’єрні перспективи; буде забезпечувати задовільні умови праці та ЗП? Будемо розбиратися з цим у даній статті. Ми розглянемо найголовніші спеціальності, які будуть оптимальними для новачків та матимуть попит на ринку ІТ ще довгий час.   Коротко про українське ІТ в 2022 році Не встиг світ оговтатися від кризи, спричиненої коронавірусом, як одразу з’явилася нова внаслідок повномасштабного вторгнення росії на територію України. Відповідно до аналітики Opendatabot – українського ресурсу, що надає доступ до державних даних та аналізує відкриті дані, – ІТ-послуги стали єдиним напрямком бізнесу, який показав приріст у 2022 році в порівнянні з 2021 – аж на 27% (січень-травень 2022). А друге дослідження показує, що за 8 місяців даного року відбулося зростання експорту ІТ-послуг на 16% у порівнянні з відповідним періодом у 2021 році. У серпні 48% усіх послуг, що експортувалися Україною, належали саме ІТ-галузі.    Красномовною є і статистика Джину – українського ресурсу з анонімного пошуку вакансій. Попит на Djinni перевищує кількість пропозицій майже втричі. У вересні – 18 779 відкритих вакансій і 52 405 кандидатів. З посту в телеграм-каналі Джину легко бачити, що у серпні 2022 було понад 250 тисяч відгуків на вакансії – це при тому, що з серпня 2021 по лютий 2022 кількість відгуків кожного місяця коливалася в межах від 77 до майже 111 тисяч. Ще один серпневий пост демонструє залежність середньої кількості відгуків на вакансію від вимоги до досвіду кандидата. Таким чином: кандидати без досвіду – 75.25 відгуків на вакансію; 1 рік досвіду – 31.36 відгуків; 2 роки – 12.39; 3 роки – 5.76; 5 років – 4.1. У новачків сезон справжніх “голодних ігор”. Тим не менш, ІТ-сектор демонструє гарну стійкість та позитивну динаміку попри негаразди війни. Це перспективна галузь, яка не тільки дає масу переваг українцям-айтішникам, але й гарно підживлює економіку. Варто не забувати, що така успішність багато в чому залежить від закордонних замовників, адже переважна більшість українських ІТ-продуктів та ІТ-послуг експортуються за кордон – приблизно 95% (за матеріалами “Економічної правди”).   Український ІТ-спеціаліст у 2022 році Звернемося також і до свіжого портрету українського ІТ-спеціаліста від DOU за 2022 рік (15 135 респондентів). Найбільша кількість чоловіків відповідно до напрямків: DevOps, SRE (97.3%); системне адміністрування (95.8%); CTO, найвищі керівні посади (92.9%); розроблення ПЗ, Software Engineering (91.3%); розроблення ігор (89.5%); Data Science (80.3%); технічна служба підтримки (70%); тестування (65.8%); менеджерські посади (64.9%). Найбільша кількість жінок у HR/Recruiting (90%), маркетингу (64%) та технічному письменництві (62%). За ними йдуть дизайн (45.6%), сфера продажів (44%) та аналітика (42.5%). Відповідно до картинки вище, найбільша кількість опитаних українських айтішників працює у якості розробників. Далі йде професія тестувальника, менеджера, HR/рекрутера і т. д. З картинки вище видно, що найчастіше респонденти мають тайтл Middle (1-5 років досвіду) та Senior (3-9 років). Розробники рівня Junior складають 16.2% (до 2-х років досвіду), а інтерни – всього 1.3% (без досвіду).  Найбільша кількість початківців (Junior та Intern) серед: HTML Coder (45%); Data Science (27%); Game Developers (25%); аналітики (24%); тестувальники (23%). При цьому ІТ України нараховує багато початківців. 6% опитаних знаходяться в ІТ менше року, 59% працевлаштовані в ІТ 5 років або менше, а 71% мають до 6-ти років досвіду за своєю поточною спеціалізацією. 87% респондентів мають вищу освіту, а 8% з них – навіть дві. Ще 5% є студентами і тільки на шляху до отримання диплому. Науковим ступенем володіє близько 2% опитаних. Найчастіше це ті, хто розробляє ПЗ під різну електроніку (Hardware Engineers – 9%), Data Science спеціалісти (7%) і представники найвищих керівних посад – CTO/CEO (6%). Щодо англійської: в цьому році 53% респондентів оцінили свій рівень як Upper Intermediate (вище середнього) або Advanced (поглиблений). 33% визначають свій рівень як Intermediate (середній). На зображенні бачимо, що найбільш цікава робота у керівників найвищої ланки (а хто б сумнівався?), спеціалістів у сфері маркетингу та HR/рекрутерів (критерії “цікава” та “дуже цікава”). Найбільш невдоволеними виявилися сисадміни, Support та спеціалісти з продажів. Фахівці перших двох напрямків спеціалізуються на вирішенні технічних проблем, тому часті смикання під час роботи, необхідність швидко все полагодити та афілійовані із цими процесами стреси для них не є рідкістю. Ще можна додати відносно невисоку медіанну ЗП – $1000-$1045 – трохи вища за Junior розробника. А невдоволення спеціалістів із продажів можна пов’язати з великою відповідальністю і наслідками частого спілкування з різними клієнтами: Sales Manager-и повинні завжди демонструвати впевненість, знати все про свою компанію та свій продукт, діяти так, аби не заплямувати їх імідж, швидко знаходити відповіді на запитання клієнтів та виконувати інші професійні обов’язки.   Аналітичні огляди сучасного ІТ Скористаємося аналітикою всесвітньовідомого ресурсу Stack Overflow, яким користується абсолютно кожний програміст сучасності. Порівняємо останні на сьогоднішній день опитування, проведені даним ресурсом – Stack Overflow Developer Survey 2022 (70 000 респондентів) та Stack Overflow Developer Survey 2021 (80 000 респондентів). В опитуваннях брали участь фахівці із різних куточків світу. З ілюстрації вище видно, що найпопулярнішими напрямками, в яких працюють ІТ-спеціалісти, є: Електронна комерція – інтернет-магазини, фінансові та торгові угоди і транзакції, проведені через інтернет тощо. Фінансові технології – оптимізація та вдосконалення фінансових послуг, які надає той чи інший бізнес, компанія, корпорація і т. д. Розроблення мобільних додатків під Android та iOS. Медіа сфера. Медичні технології – поліпшення якості та безпеки медичних послуг різноманітного характеру. Розроблення ігор під різноманітні платформи. Далі йдуть напрямки, що цьогоріч не перетнули 5-відсотковий бар’єр. Із зображення вище бачимо, що найбільша кількість спеціалістів належить до наступних ІТ-напрямків: FullStack – розроблення серверної + клієнтської частини вебдодатків; BackEnd – серверна сторона вебдодатків; FrontEnd – клієнтська частина вебдодатків; Desktop or enterprise – розроблення настільних додатків (Desktop-додатків), розроблення додатків для потреб бізнесу (Enterprise). На наступних сходинках йдуть: розробники мобільних додатків – як для Android, так і для iOS; DevOps спеціалісти – синхронізують всі етапи розроблення ПЗ: від створення коду до тестування та релізу; інженери з хмарних технологій – займаються хмарною (cloud) інфраструктурою; адміністратори баз даних; системні адміністратори. Переглянемо перші позиції цього ж рейтингу, але за 2021 рік. Спостерігаємо аналогічну картину: перші позиції зайняті напрямками FullStack, BackEnd, FrontEnd, Desktop, Enterprise, Mobile Development, DevOps. Звернемося і до рейтингів мов програмування. Опитування Stack Overflow 2022: Опитування Stack Overflow 2021: Перше місце в обох рейтингах займає мова програмування JavaScript, яка широко застосовується у web девелопменті (і у FrontEnd, і в BackEnd царинах). Далі йдуть мови верстання – HTML & CSS – інструменти, які застосовуються під час створення візуальної складової вебсайтів та вебдодатків (FrontEnd). На третє місце цьогоріч потрапляє SQL – мова запитів для роботи з реляційними базами даних (БД), яку обов’язково використовують розробники серверної частини вебдодатків, адміністратори БД та інші спеціалісти. Python, Java та C# – дуже затребувані серед роботодавців та популярні серед розробників мови програмування, які вирізняються широким спектром застосування, зрозумілістю синтаксису, відносною простотою. Вони потрапляють у кожен ТОП-10 різноманітних мовних опитувань вже протягом багатьох років; їхня перспективність та актуальність обіцяє утримуватися ще довгий час. Особливою популярністю користується Python, оскільки його синтаксис максимально простий та лаконічний. TypeScript – це та сама JavaScript, тільки з декількома нововведеннями та строгою типізацією для збільшення читаності коду і зменшення кількості ймовірних помилок. Використовується у веброзробці разом із відповідними фреймворками та платформами. Node.js – платформа, яка розширює можливості та область застосування JavaScript (бекенд, настільні додатки, мікроконтролери). Bash/Shell/PowerShell – інструменти, які найчастіше стають у нагоді системним адміністраторам та DevOps інженерам, бо дозволяють автоматизувати різноманітні рутинні процеси, завдяки чому вони і отримали високі позиції в рейтингу. C/C++ – це сучасні корифеї від світу ІТ-розроблення. Непрості у вивченні мови, які при цьому мають дуже великі можливості та потужності. Незамінні під час створення ресурсоємного ПЗ, ігор, мікроконтролерів тощо. PHP – класична мова серверного розроблення. Незважаючи на її вік, досі популярна та затребувана. Розглянемо також і рейтинг мов відповідно до індексу TIOBE. Він щомісячно оцінює популярність мов програмування та вважається респектабельним джерелом – маса аналітиків посилається на нього в ході своїх досліджень. Рейтинг TIOBE відрізняється від опитування Stack Overflow – це пов’язано з різницею опорних точок цих аналітик. Стек оверфлоу спирається на опитування, а статистика TIOBE ґрунтується на кількості кваліфікованих інженерів у всьому світі, а також на кількості курсів та сторонніх постачальників. Такі відомі пошукові рушіїі та сервіси, як Google, Yahoo!, Wikipedia, Amazon, Bing, YouTube та Baidu використовуються у розрахуванні рейтингів. Варто зазначити, що TIOBE не вказує, яка мова є найкращою, або якою написано найбільшу кількість коду. Він може бути використаний, аби виявити, чи відповідають ваші навички запитам сучасності, або, щоб прийняти стратегічне рішення щодо того, яку мову слід використати для створення нового додатку або програмної системи. Більше інформації стосовно методів визначення індексу за посиланням. Рейтинг мов відповідно до індексу PYPL має наступний вигляд: PYPL створений за рахунок аналізу того, наскільки часто люди шукають в пошуковій системі Google туторіали (інструкції) з мов програмування. Простіше кажучи, чим більше гуглять туторіали до тієї чи іншої мови, тим вища її позиція в рейтингу.  Розглянемо список популярних вебтехнологій відповідно до опитування Stack Overflow за 2022-й та 2021-й роки відповідно: Як видно з діаграм, головні позиції належать FrontEnd бібліотекам та фреймворкам – jQuery, React.js, Vue.js, Angular, BackEnd-технологіям (Node.js, Express) а також технологіям .NET платформи – ASP.NET та ASP.NET Core. Після них йдуть фреймворки Django і Flask (Python). Список інших фреймворків, бібліотек та інструментів розроблення: Наразі перше місце посідає платформа .NET від компанії Майкрософт. Потім йдуть технології напрямку Python: NumPy (дає доступ до низки математичних конструкцій), Pandas (маніпулювання даними та їх аналіз). За ними – фреймворк Spring (Java), який призначений для веброзроблення. Менш популярними є інструменти Python для роботи з даними та ML – TensorFlow, Scikit-learn, а також платформи для мобільного розроблення – Flutter та React Native. Отримані відомості вже дають достатньо уявлення про те, що зараз відбувається на ринку IT-послуг і дозволяють робити певні прогнози щодо затребуваності IT-професій.   Які ІТ-спеціальності будуть затребувані у 2023 році? FrontEnd Developer FrontEnd – це відгалуження у розробленні, спрямоване на створення клієнтської сторони вебдодатків, вебсайтів або іншого ПЗ та інформаційних систем: зовнішній вигляд застосунків, користувацька логіка, анімації – все, із чим користувач може взаємодіяти напряму. Коли кажуть про FrontEnd або BackEnd, найчастіше мають на увазі саме Web стихію. Насправді ж, фронтенд і бекенд бувають не лише у вебі але й у десктопних та мобільних застосунках. Однак історично склалося, що під цими двома термінами розуміють саме веб складову, тому і в цій статті ми будемо притримуватися цих традицій. Відповідно до аналізу Stack Overflow Developer Survey 2022 та 2021 років, а також аналізу індексів TIOBE та PYPL, ядро фронтенду – HTML, CSS та JavaScript – досі є затребуваним і використовується багатьма розробниками. Крім того, ресурси з пошуку роботи в ІТ містять велику кількість вакансій FrontEnd Developer. Наприклад, на вже згаданому Djinni на момент написання статті було опубліковано 1399 пропозицій за напрямком JavaScript / FrontEnd, тоді як на C# / .NET, Java та Python спеціальності припадало 678, 884 та 514 вакансій відповідно. ІТ-індустрія має великий попит на FrontEnd розробників, тому немає жодних сумнівів, що цей напрямок буде актуальним і у 2023-му році. BackEnd Developer (Python, Java, C#, PHP) BackEnd – це відгалуження у розробленні, спрямоване на створення серверної сторони вебдодатків або вебсайтів: взаємодія застосунку з БД, робота з даними користувача, серверна та обчислювальна логіка, програмно-апаратна частина сервісу – все, що приховано від користувача і знаходиться “під капотом”. На озброєнні BackEnd девелопер тримає одну з популярних мов програмування: C# / PHP / Python / Java / JavaScript (Node.js) / Ruby тощо. Також даний спеціаліст знає безліч супутніх технологій та інструментів серверного розроблення. BackEnd розвивається паралельно з FrontEnd-ом, айті-ринок має багато відповідних пропозицій з гарними умовами праці, тому перспективність вивчення даного напрямку є очевидною. Full Stack Developer Синтез двох вищеописаних спеціальностей. Не секрет, що будь-який працедавець цінує співробітника, який може успішно виконувати декілька задач, поєднуючи в собі обов’язки інших спеціалістів. Так само і в ІТ – особливо цінними є розробники, які здатні своїми знаннями та навичками покрити декілька професій, а в даному випадку – FrontEnd та BackEnd. Детальний розбір спеціальності Full Stack Developer ви знайдете в нашій статті. В ній ми пояснюємо специфіку даного напрямку, необхідні для вивчення технології, переваги та недоліки професії, а також даємо важливі поради щодо опанування цього фаху. Mobile Developer (Android / iOS) Мобільне розроблення є відносно молодим, оскільки зародилося трохи більше двох десятків років тому. За цей час воно зазнало багатьох змін і сьогодні очолює одну з головних позицій в ІТ. При цьому напрацюваннями фахівців цієї сфери користується майже кожна людина — це не лише смартфони та планшети, а й фітнес-браслети, смарт годинники, електронні книги, складові “інтернету речей” та інші гаджети. Найбільш популярні мови мобільного розроблення: Java / Kotlin під Android розроблення та Objective-C / Swift під iOS. DevOps інженер DevOps – це методологія, котра є симбіозом розроблення (Development) та системного адміністрування (Operations). Її головна мета – збільшення частоти випуску релізів. Фахівці даного напрямку також повинні розбиратися у використанні хмарних технологій та мати навички автоматизації інфраструктури. DevOps Engineers обирають Python у якості основної мови програмування за її лаконічність, багатозадачність та підтримку великого різноманіття спеціальних пакетів, створених для підвищення ефективності цієї мови програмування, а також за інші переваги. Python в основному використовують разом із командною оболонкою Bash, маючи на меті спростити процеси розгортання ПЗ та автоматизувати різні завдання системного адміністрування (написання скриптів). Фактично, DevOps спеціалісти – це програмісти-сисадміни. Бізнес дуже любить фахівців-мультитулів, тому ця професія дуже актуальна, престижна та є однією з найбільш високооплачуваних в ІТ. CyberSecurity IT-індустрія нарощує свої об’єми та потужності, а отже, зростає затребуваність і тих, хто має її захищати. На це і направлена діяльність фахівця з кібербезпеки. Цей напрямок має декілька відгалужень, і ви можете як захищати інфраструктуру від проникнення та вибудовувати надійну оборону (напрямок "захисту"), так і виявляти вразливості шляхом різноманітних хакерських методів – такі фахівці називаються пентестерами (напрямок "атаки"). Можете зануритися в аналіз та ризики (посада Security Analyst та Risk Compliance Specialist відповідно), займатися захистом інфраструктури та пошуком комп'ютерних вірусів (Malware Researcher), а також випробувати себе в багатьох інших «кібербезпекових» спеціальностях – ця сфера дає багато можливостей для реалізації людям із сильними аналітичними здібностями, уважністю, розсудливістю та стресостійкістю. Database Administrator, DBA Комфортна життєдіяльність у сучасному світі дуже залежить від баз даних: картотека пацієнтів лікарні, облік студентів та їх успішності, облікові записи користувачів різних сервісів, банківські рахунки, різноманітний контент в інтернеті тощо. Існує реальна потреба у спеціалістах, які вміють грамотно обслуговувати ці БД і супутню інфраструктуру. Крім цього DBA бере на себе такі функції, як вироблення вимог до баз даних, їх проєктування, реалізація, ефективне використання та підтримка цілісності БД, включаючи керування обліковими записами користувачів БД та захист від несанкціонованого доступу. Тут важливо володіти мовою запитів SQL, однією із СУБД (PostgreSQL, наприклад), а також різними технологіями та прийомами системного адміністрування. PM (Project Manager) Сучасне IT має гострий дефіцит гарних, талановитих проєктних менеджерів – управлінців, котрі керують IT-проєктом загалом. Часто це колишні програмісти чи тестувальники. Однак щоб стати проджект менеджером, необов'язково мати айтішне минуле. Ключові обов’язки PM: проєктування та розстановка пріоритетів, планування виконання завдань, контроль, комунікації, а також оперативне вирішення проблем всередині проєкту. Найголовніше завдання – зробити так, щоб ідея замовника була реалізована в межах заданих термінів з урахуванням обмеженості ресурсів. Звичайно, даний перелік обов'язків виконаний широкими мазками. Насправді PM-и часто працюють понаднормово і їхній робочий стан можна описати як "білка в колесі". Але важко щось протиставити післясмаку успішно виконаного проєкту. Нюанс цієї професії полягає в тому, що посада PM-а передбачає значну конкуренцію. Відповідно до даних, у вересні 2022-го року на сайті DOU на одну вакансію PM-а відгукнулося більше 34-х кандидатів (всього 184 вакансії). Більша кількість відгуків лише у FrontEnd, HR, QA та Legal (право). Тому, щоб отримати бажаний job-офер, необхідно мати не тільки досвід і знання, а й гарні організаторські здібності, а також інші важливі для цієї професії особистісні якості. QA Engineer, тестувальник Фахівець із забезпечення якості, він же – тестувальник. І хоча QA та тестувальник – це трішки не одне і те ж саме, але ми прирівняємо їх один до одного, бо це не грає значної ролі в даній статті. Сфера відповідальності тестувальника – виявлення несправностей, багів ПЗ, допущених розробниками. Затребуваність цих фахівців важко оскаржити, адже кожний програмний продукт перед появою може пройти не одну ітерацію тестування, де виявляється вагома кількість багів. Виходить, без QA ми мали б дуже недопрацьоване ПЗ, а виробник — провал продукту на ринку, падіння репутації та, ймовірно, навіть банкротство. Тестувальників ділять на два види – Manual QA Engineer та Automation QA Engineer. Перші виконують всю роботу вручну, а другі використовують інструменти автоматизації, у тому числі мови програмування (наприклад Java, Python), що підвищує цінність такого співробітника, і, відповідно, його зарплату. Конкуренція за місце тестувальника в українських реаліях надзвичайно висока, тому для отримання першого job-оферу потрібно буде докласти багато зусиль. Data Scientist Вчений-експерт, головними завданнями якого є вилучення з великого масиву даних корисної інформації, яка потім може використовуватися в різних сферах; в основному, це бізнес та наука. Даний фахівець повинен мати чудове аналітичне мислення, володіти математичним апаратом (включаючи мат. статистику та мат. моделювання), знати програмування (Python, R) та бази даних (як реляційні, так і нереляційні). З початку 2010-х років професія Data Scientist вважається однією з найбільш привабливих, високооплачуваних та перспективних в IT. Data Analyst Якщо Data Scientist орієнтується на предиктивну аналітику, то Data Analyst працює з інформацією постфактум. У цього спеціаліста менш технічна роль — він працює зі вже готовими даними, а саме: проводить дескриптивний аналіз, інтерпретує та візуалізує результати, а також презентує звіт своїм замовникам. При цьому з БД, мовами Python і SQL та іншими інструментами збору та оброблення інформації аналітик також має бути гарно знайомий, аби ефективно виконувати покладені на нього задачі.   Кому потрібне гарне володіння англійською мовою? Відповідно до вже згаданого портрета ІТ-спеціаліста, високий рівень англійської у тих, хто спілкується з іноземними замовниками та клієнтами або займається просуванням продуктів: Customer Success Manager, Project Manager, найвища ланка керівництва, спеціалісти з продажів, архітектори, техліди. Також англійська на рівні Upper Intermediate+ у технічних письменників та спеціалістів з роботи з даними (Data Scientists, аналітики). Розробникам буде достатньо рівня Intermediate, аби читати технічну документацію без зайвих проблем. Однак бажано мати Upper Intermediate та вище, оскільки це не тільки сприяє більш комфортній взаємодії з англомовними ресурсами та іноземними колегами, але й підштовхує вас вгору кар’єрними сходами і, звичайно ж, позитивно впливає на ЗП (відповідно до зарплатного опитування від DOU за літо 2022 року).   Висновки У цій статті ми постаралися дати вичерпну відповідь на запитання: “Яку IT-спеціальність варто обрати у 2023 році?”. У наших судженнях та висновках ми спиралися на такі авторитетні ресурси (міжнародні та українські), як Stack Overflow, Djinni, DOU, індекси TIOBE та PYPL. Також була проведена кореляція з минулим роком, аби продемонструвати стабільність ринку ІТ-професій та показати, що вкладені вами сили та час у навчання не будуть марними, а обраний вами напрямок нікуди не зникне. На лідерських позиціях, як і в минулі роки, залишаються Web, Enterprise та Mobile розроблення. Тестувальники також затребувані, хоча і мають надзвичайно велику конкуренцію серед початківців, оскільки це один із найлегших способів потрапити в ІТ, а з початком повномасштабного вторгнення інтерес до ІТ зріс так само стрімко, як і під час ковіду. Висока затребуваність також і у DevOps інженерів при відносно невисокій конкуренції – 3.7 відгуки на одну вакансію у вересні 2022 року (всього вакансій – 243, джерело). Звичайно, повномасштабна війна наклала свій відбиток на ІТ у вигляді міграції бізнесів та айтішників на захід України, різкого притоку новачків, збільшення “дистанційних” вакансій та проблем з електроенергією через обстріли росіянами нашої енергетичної інфраструктури, але зарплати залишилися високими – десь навіть підвищилися, – та й в цілому ІТ стоїть і забезпечує як айтішників, так і нашу армію. То ж навіщо чекати відповідного моменту? Беріть момент та робіть його відповідним! ITVDN – це освітня платформа для онлайн навчання програмуванню та інформаційним технологіям. Наш портал налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких: Верстальник сайтів FrontEnd Developer Java Developer Python Developer C# / .NET Developer Android Developer Unity / Game Developer PHP Developer та інші. Формат навчання – записані відео курси, за якими можна навчатися у будь-який зручний час. Таким чином, ви зможете опанувати IT-професію, не виходячи з дому. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN. Окрім записаних відео курсів наша освітня платформа надає навчання у новому форматі – Live Online. Він передбачає регулярні онлайн заняття з ментором у невеликих групах із 6-25 осіб, на яких пояснюється новий матеріал, обговорюються нюанси виконання практичних завдань, є перевірка ДЗ та чат для спілкування з одногрупниками, а також доступ до відео курсів ITVDN. У процесі навчання учні також розробляють власний курсовий проєкт, який наприкінці захищають та додають до свого портфоліо. На даний момент Live Online навчання проводиться за чотирма найпопулярнішими IT-спеціальностями: C#/.NET Developer Frontend Developer Java Developer Python Developer Якщо вас зацікавив формат Live Online, переходьте за посиланнями та ознайомтеся з подробицями пропозицій щодо кожної з чотирьох спеціальностей. Також пропонуємо вашій увазі підбірку вебінарів, які допоможуть вам розібратися в головних моментах тієї чи іншої мови програмування або спеціальності: Чи варто вчити Ruby у 2023 році? Як стати Java розробником у 2023 році? Яку мову програмування вчити в 2023 році? Огляд корисних ресурсів для вивчення C# та .NET з нуля Як швидко вивчити Python. Покроковий план з нуля Як стати PHP розробником та отримати офер від ІТ-компанії Старт кар’єри в Java розробці. Особистий досвід, актуальні тренди та підводні камені Що таке DevOps та інші корисні вебінари – у нашому каталозі. Сподіваємось, що наша стаття була корисною для вас.З радістю приймемо будь-які побажання та з розумінням і повагою – будь-які зауваження. Обирайте IT-професію вашої мрії та нехай ніщо не зупиняє вас на шляху до неї! Вивчайте ІТ-спеціальності на ITVDN!
Вебінари Артема Мураховського з програмування на Python

Автор: Редакция ITVDN

Коли людина робить те, що вона любить, що вона сама обрала як свою справу, вона надихає інших жити і творити. Таким був Артем Мураховський. Він працював Python розробником, у вечірній час проводив курси по пайтон у CyberBionic Systematics і провів декілька класних вебінарів на ITVDN. На жаль, Артем загинув у березні цього року в боях під Авдіівкою, захищаючи Україну. На згадку про нього ми підготували добірку його вебінарів. Дивіться. Тут він живий. Слава герою!   Чи варто вчити Python? Python – вельми популярна мова програмування, яка широко використовується у різних напрямках ІТ-розробки: серверна веб-розробка, десктопні та мобільні додатки, ігри, Data Science, ML, тестування ПЗ, спрощення адміністрування ОС тощо. На вебінарі ви дізнаєтеся, хто такий Python розробник і що він робить, які знання, вміння та навички йому потрібні, з чого розпочати та як спланувати своє навчання за даним фахом, а також отримаєте корисні поради і підбірку літератури. Прогноз погоди мовою Python Інтенсивний тренінг зі створення Telegram-бота, який сповіщує вас про актуальну погоду. Мінімум теорії, максимум практики – підійде як новачкам, які не знайомі з програмуванням, так і розробникам-початківцям, що прагнуть випробувати себе. Ви познайомитеся з базовим синтаксисом Python, навчитеся працювати із запитами, дізнаєтесь, що таке API і скористаєтесь Telegram API, створите бота для Telegram і навчитеся використовувати існуючі сервіси для прив'язки до вашого додатку. BlackJack мовою Python Інтенсивний тренінг зі створення карткової гри BlackJack для новачків та розробників-початківців. Ви навчитеся: Писати просту програму на Python, повторюючи діі тренера. Розбивати задачі на дрібні підзадачі і успішно їх вирішувати. Проектувати архітектуру програми. Писати програми на рівні класів. Вирішувати алгоритмічні задачі. Розуміти призначення патернів проектування. Автоматизація парсингу сайтів Інформація – це нафта 21-го століття. На вебінарі ми розглянемо один із найпоширеніших підходів збору та обробки інформації – парсинг сайтів (мовою Python). Ми візьмемо один із популярних сайтів із робочими вакансіями і на його прикладі розберемо бібліотеки для парсингу веб-сайтів, бібліотеки для роботи із запитами. Розберемо види популярних баз даних і зрозуміємо, де і яку потрібно використовувати.
ТОП-10 найкращих відео з Python

Автор: Влад Сверчков

Вітаємо! Друзі, цього разу ми підготували для вас підбірку найкращих вебінарів від ITVDN за напрямком Python. До рейтингу увійшли як пізнавальні вебінари з актуальною інформацією, так і вебінари, орієнтовані на прокачування ваших навичок створення коду. Давайте приступимо до їх розгляду.     Пишемо API додаток на Python за допомогою FastAPI та Docker   Автор – Антон Козаченко, Python Back-end Developer з Латвії   На вебінарі автор розбирає приклад написання API додатку на Python за допомогою фреймворку FastAPI та інструменту Docker. Розглядається фреймворк FastAPI, також створюється декілька методів API. Автор розглядає Docker, пише свою конфігурацію та запускає контейнери. Додатково відбувається покриття API додатку тестами.   План вебінару:   Ознайомлення із фреймворком FastAPI. Написання кількох endpoint-ів API. Написання тестів для цих endpoint-ів. Написання конфігурації для Docker. Запуск додатку в Docker containers. Запуск тестів.     2. Підготовка до технічної співбесіди з Python ➤ Як пройти співбесіду на Junior Python?   Авторка – Людмила Міщенко, Python розробниця   Вебінар присвячений ключовим моментам технічної співбесіди на позицію Junior Python Developer. Розглядаються найчастіші питання, логічні та технічні завдання. Ви дізнаєтесь, як правильно готуватися до співбесіди. Приділено увагу тому, як отримати користь від проходження технічного інтерв'ю та як залишити приємне враження про себе у спеціалістів компанії. Також автор порушує теми важливості роботи над помилками та аналізу співбесіди.   План вебінару:   Як готуватися до технічної співбесіди? На які запитання має знати відповідь Junior Python Developer? На що у відповідях кандидатів найбільше звертають увагу? Чи потрібні (і яку роль грають) pet-projects для фахівця-початківця? Як не розгубитися під час кодингу на співбесіді? (+ поради та лайфхаки) Робота над помилками та аналіз фідбеку після співбесіди.     3. Що краще: Django, Flask чи FastAPI? Огляд фреймворків для веб-розроблення на Python.   Автор – Максим Кузнєцов, Senior Python Developer   В даному вебінарі розглядаються декілька популярних веб-фреймворків на Python (Django, Flask, FastAPI). Автор порівнює їхню продуктивність і пояснює, для яких цілей який фреймворк більше підійде.   План вебінару:   Огляд Django та його фічі. Огляд Flask та його фічі. Огляд FastAPI та його фічі. Порівняння продуктивності. Коли який фреймворк вигідно застосовувати. Відповіді на питання.   Даний вебінар буде цікавий Python розробникам-початківцям, і тим, хто збирається перейти на Python і хоче спланувати своє навчання з урахуванням особливостей різних інструментів.     4. Створення гри BlackJack на Python з нуля (Частина 1 та Частина 2)   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   "Створення гри BlackJack на Python" – це дводенний інтенсивний тренінг зі створення відомої карткової гри. Вебінар покликаний у захоплюючій формі познайомити новачків з Python та попрактикуватися у написанні коду цією мовою. Мінімум теорії та максимум практики – що ще потрібно для швидкого старту в програмуванні?   Чому можна навчитися, вивчивши відео матеріали тренінгу та випробувавши отримані знання на практиці:   Писати просту програму мовою Python Розбивати завдання на дрібні підзадачі та успішно їх вирішувати Проєктувати архітектуру програм Писати програми на рівні класів Розв'язувати алгоритмічні задачі Розуміти призначення патернів проєктування   План першого відео (першої частини):   Знайомство із середовищем розроблення PyCharm та мовою програмування Python. Розбір основних елементів мови. Створення архітектури програми на рівні класів. Поліпшення архітектури з використанням патернів. Створення перших об'єктів.   План другого відео (другої частини):   Створення структури проєкту. Наслідування та композиція. Створення спеціальних типів даних. Зв'язок компонентів між собою. Тестування. Підбиття підсумків.     5. Об'єктно-орієнтоване програмування в Python ➤ Що таке ООП та як воно працює.   Автор – Бондаренко Кирило, Data Scientist / Python Developer, "CreatorIQ"   Об'єктно-орієнтоване програмування (ООП) – дуже важлива парадигма у сучасному програмуванні. Цей вебінар розкриває основні принципи ООП і показує, як вони реалізовані у мові Python.   Наскільки важливим є знання ООП для Python розробника? Як часто доводиться використовувати ООП у роботі? У яких проєктах, у яких завданнях? Чи візьмуть вас працювати без знання ООП? Ці та інші питання будуть поставлені в даному вебінарі.   Теми, що розкриваються:   Що таке ООП і як це працює у Python. Приклади розв'язання задач через ООП. Підбиття підсумків. Відповіді на питання.     6. Створення чат-бота "прогноз погоди" на Python   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   Якщо ви хочете випробувати свої сили в програмуванні на Python і створити власного Telegram-бота, який сповіщатиме вас про актуальну погоду, цей відеоролик буде дуже доречним.   Підійде як новачкам, які ніколи не програмували, так і розробникам-початківцям, які бажають поглибити і застосувати на практиці свої знання Python.   План:   Рівні моделі мережі Інтернет. Що таке бібліотеки на Python. Що таке API. Telegram API. Бібліотеки для Telegram API. Робота з чистим API.   Чого ви навчитеся:   Реалізовувати нескладну програму мовою Python, яка прогнозуватиме погоду. Основам базового синтаксису мови Python. Теоретичним основам API – зрозумієте, як він працює. Працювати із запитами. Створювати роботів для месенджеру Telegram. Використовувати існуючі сервіси для прив'язки до вашої програми.     Автоматизація парсингу сайтів на Python   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   В епоху машинного навчання інформація стає нафтою XXI століття. Проєкти, пов'язані зі збором та аналізом даних, виходять на перші позиції у глобальних компаніях та в стартапах.   Як збирати та обробляти інформацію? Залежно від цілей проєкту, дані можуть збиратися абсолютно різні. На вебінарі ми розглянемо один із найпоширеніших підходів – парсинг сайтів.   Ми візьмемо один із популярних сайтів з робочими вакансіями та на його прикладі розберемо бібліотеки для парсингу веб-сайтів, бібліотеки для роботи із запитами. Розберемо види популярних баз даних і зрозуміємо, де і яку потрібно використовувати.   План вебінару:   Що таке парсинг веб-сайтів? Бібліотеки для парсингу веб-сайтів. Бібліотеки для роботи із мережею. Написання коду парсерів. SQL та NoSQL – за яких завдань який тип використовується. Написання коду менеджерів баз даних.     8. Створення простої казуальної гри на Python   Авторка – Людмила Міщенко, Python розробниця   На вебінарі буде розглянуто реалізацію простої гри на Python. Суть гри полягає у навчанні людей, особливо дітей, вести еко-дружній спосіб життя – правильно сортувати сміття. Тобто, користь буде не тільки для вас у отриманні нових знань у програмуванні, а й у спробі виявити більше турботи про нашу планету.   План вебінару:   1. Постановка задачі.   а) Мета вебінару – створити свою гру на Python, яка вчить сортувати сміття; б) правила гри – обирати правильний кошик для різного типу сміття; закінчення гри за таймером; наприкінці гри користувач отримує суму зароблених балів за правильно обрані кошики.   2. Реалізація програми:   а) встановлення модулів; б) завантаження потрібних зображень; в) написання логіки влучення сміття в кошик (поведінка кошика); г) оголошення та опис елементів сміття (органіка, пластик, папір) – клас поведінки сміття; д) виклик написаних класів та запуск гри.   3. Отримання результатів:   а) запуск та тестування коду; б) проходження гри; в) аналіз виконаної роботи – додавання та зміна умов гри, оптимізація коду, майбутні доопрацювання.       9. Структури даних у Python. Рівень Advanced   Автор – Бондаренко Кирило, Data Scientist / Python Developer, "CreatorIQ"   Якщо ви маєте труднощі з розумінням документованих структур мови Python, таких як list, tuple, dict, set, цей вебінар для вас. Ми розбиратимемося з тим, як написати такі структури даних, як черги (queues), дерева (trees), розглянемо роботу зі вкладеними словниками (nested dicts), а також застосування ООП для розширення можливостей існуючих структур даних.   Матеріал цієї зустрічі буде корисний Python розробникам із різних областей, зокрема Data Science спеціалістам та web-розробникам.   План вебінару:   Робота з розширенням структур даних мови через наслідування та ООП. Робота з комбінованими структурами, такими як nested dict, defaultdict, named tuple і т. д. Написання незадокументованих структур даних, таких як дерева, черги, зв'язані списки та інші.   Цей вебінар буде цікавий розробникам, які добре знайомі з Python, знають про імпорт бібліотек і хочуть заглибитися в роботу зі структурами даних для більшої ефективності роботи з ними.     10. Як стати Python розробником у 2021 році?   Автор – Артем Мураховський, Python Developer, тренер-консультант CyberBionic Systematics   В останні роки мова програмування Python стрімко набирає популярність. За даними Stack Overflow Developer Survey 2019, в якому взяли участь понад 87 тисяч IT-фахівців з різних країн, Python випередила навіть таких постійних та безперечних лідерів, як Java, С# та С++.   Зараз вона широко використовується в Data Science (машинне навчання, аналіз даних, візуалізація), розробленні вбудованого програмного забезпечення та реалізації серверної частини веб-додатків. Також за допомогою Python можна створювати ігри, десктопні та мобільні програми, писати тести для ПЗ та спрощувати адміністрування ОС.   Програма зустрічі:   Хто такий Python розробник і що він робить? Які знання, вміння та навички потрібні Python розробнику? Вимоги до розробників рівня Junior. З чого розпочати вивчення мови Python? Складання плану навчання. Рекомендована література. Відповіді на питання.   Вивчайте Python розроблення на ITVDN!
Співбесіда з QA. 250+ питань для Junior, Middle, Senior

Автор: Влад Сверчков

Junior 1.1 Теория тестирования. 1.2 AQA      1.2.1 Программирование и Selenium      1.2.2 TestNG/JUnit, Git, CI              1.3 Web              1.4 Mobile              1.5 Практические задания   Middle 2.1 Теория 2.2 AQA      2.2.1 Selenium      2.2.2 Тестовая инфраструктура 2.3 Web 2.4 Mobile 2.5 Практические задания   Senior 3.1 Теория 3.2 Практические задания     Дорогие друзья! Предлагаем вашему вниманию перевод статьи, опубликованной на DOU.ua 12 января 2022 года. Оригинальная версия на украинском языке доступна по ссылке. Эту подборку вопросов, которые ставят кандидатам разных уровней на технических собеседованиях на позицию QA, составили совместными усилиями практики. Список – лишь ориентир. Кандидатам советуем пробежаться по вопросам и отметить неизвестные слова, погуглить и заодно повысить шансы пройти собеседование. Интервьюерам – пополнить свой запас интересных вопросов. Но не переборщите :) Если вы не претендуете на позицию QA, просмотрите переводы подборок вопросов по другим популярным IT-специальностям.   Junior   Теория тестирования 1. Что такое тестирование? 2. Зачем тестировать ПО? 3. Какие существуют этапы тестирования? 4. Какие типы тестирования можете назвать? 5. Какие уровни тестирования знаете? 6. Какие техники тест-дизайна знаете? 7. Что такое техника анализа классов эквивалентности? 8. Что такое техника анализа предельных значений? В чем ценность этой техники? 9. Что такое Regression и Confirmation тестирование, какая между ними разница? 10. Как часто следует проводить регрессионное тестирование продукта? 11. Какие бывают виды интеграционного тестирования? 12. Что такое Configuration Testing? 13. Что такое Exploratory Testing? 14. Какие существуют UI-стандарты? 15. Что такое Black/Grey/White Box Testing? 16. Что такое Performance Testing? 17. Что такое Smoke и Sanity тестирование и какая между ними разница? 18. Что такое Traceability Matrix? 19. Что такое Sanity Testing? 20. Что такое End-to-End тест? 21. Что такое тестирование безопасности? 22. Что такое испытание на основе рисков? 23. Что такое динамическое тестирование? 24. Что такое «парадокс пестицида»? 25. Опишите основные фазы STLC? Дайте определение Entry и Exit Criteria. 26. Что такое Bug, Error, Failure, Fault? 27. Какие есть атрибуты баг-репорта? Какие основные поля для заполнения? 28. Какова разница между приоритетом и серьезностью? 29. Приведите примеры серьезного, но не приоритетного бага. 30. В чем разница между валидацией и верификацией? 31. Зачем нужна тестовая документация? Какие её виды? 32. Что такое тест-план? Какие элементы у него есть? 33. Какую обязательную информацию должен содержать тест-план? Как правильно его использовать, поддерживать и нужен ли он вообще для большинства проектов? 34. Какая разница между чеклистом и тест-кейсами? 35. Приведите пример хорошего тест-кейса.   Ответы на некоторые из этих вопросов вы можете найти в видео курсе QA Стартовый (урок 1, урок 3, урок 4, урок 5), Основы тестирования (урок 6), Основы тестирования ПО (урок 1-5), а также в вебинаре “QA практикум. Техники тест дизайна” (часть 1 и часть 2).   AQA (Automation QA)   Программирование 36. Что такое ООП? Назовите его принципы с примерами? 37. Что такое интерфейс? Что такое абстрактный класс? Чем они отличаются? 38. Что такое SOLID? Приведите примеры. 39. Что такое DRY, KISS, YAGNI? 40. Какие паттерны GOF вам известны? Приведите примеры их использования. 41. Что такое PageObject и PageFactory? 42. Какая иерархия Collections? 43. Какая разница между Thread class и Runnable interface? 44. Какая разница между String, Stringbuffer и Stringbuilder? 45. Разница между final, finally и finalize?   Selenium 46. ​​Что такое Selenium и зачем его используют? 47. Что такое драйвер браузера? 48. Какие виды локаторов страницы существуют? Каковы их преимущества и недостатки? 49. Что такое Selenium Waits? Какие есть и чем отличаются? 50. Какие exceptions может бросить Selenium? Что они означают и как их обрабатывать? 51. Для чего используют JavaScriptExecutor? Приведите примеры. 52. Что такое Selenium Grid? 53. Какие способы click и send keys Selenium? 54. Как вы запускаете параллельное выполнение тестов? Что такое ThreadLocal? 55. Какая разница между Action и Actions? 56. Как написать метод isElementPresent? 57. Как вычитать данные из динамической веб-таблицы? 58. Можете ли вы назвать 10 интерфейсов в Selenium? 59. Назовите два способа, позволяющих автоматизировать капчу. 60. Вспомните типы навигационных команд Selenium. 61. Как найти поврежденные ссылки в Selenium WebDriver? 62. Какую технику следует рассмотреть, используя весь сценарий, если «нет ни frame id, ни frame name»?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java (урок 1), Автоматизация тестирования мобильных приложений (урок 5), а также в вебинаре “Selenoid или Selenium Grid — что лучше?”.   TestNG/JUnit 63. Для чего нужны TestNG/JUnit? 64. Какие инструкции используются в TestNG/JUnit? 65. Какие assertions есть в TestNG/JUnit? 66. Как выполнять тесты параллельно TestNG/JUnit?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 4).   Git 67. Для чего используют системы контроля версий? 68. Что такое Git? Каков принцип его работы? 69. Что такое commits, branches в Git? 70. Для чего нужны GitHub, GitLab и другие, базирующиеся на Git, вебхостинги проектов?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Основы работы с Git.   CI 71. Что такое CI? 72. Как автоматическое тестирование интегрируется в CI? 73. Как настроить Job или Pipeline на знакомом вам CI-инструменте? 74. Какие инструменты для генерации репорта после выполнения автоматических тестов вы знаете? 75. Какую информацию должен содержать отчет о выполнении автоматических тестов?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing (урок 4).   Web 76. Что такое клиент-серверная архитектура? 77. Что может выступать в роли клиента? 78. Что такое REST API, SOAP? В чем разница? 79. Какие протоколы передачи данных знаете? 80. Какие способы взаимодействия с API существуют? В чем разница между ними? 81. Как можно протестировать API, что там нужно проверять? 82. Как расшифровывается CRUD? 83. Чем отличается GET от POST? 84. Какие отличия между XML и JSON? 85. Какие знаете форматы передачи данных? 86. Как происходит шифрование? 87. Какие бывают виды баз данных? 88. Охарактеризуйте каждый класс status code (1хх; 2xx; 3xx; 4xx; 5xx). 89. Какие есть HTTP-методы? 90. Какие знаете Web elements? 91. Какие браузеры знаете? В чем их отличие? 92. Для чего необходимы инструменты разработчика в браузере (Chrome DevTools) и как они помогают в тестировании. 93. Что такое кэш? 94. Что такое сессия? 95. Зачем нужны cookies? 96. Что такое фрейм? 97. Что такое HTML/CSS/JavaScript? 98. Какую структуру имеет веб-страница? 99. Зачем чистить кэш? 100. Какие виды тестирования можно применить только к Web? 101. Для чего в веб-страницах используют JavaScript? 102. Что такое REST? 103. Что такое AJAX?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах QA Стартовый (урок 6), Web Testing, SQL Базовый.   Mobile 104. Какие мобильные платформы существуют? 105. Какие версии Android и iOS используются на рынке (минимальные и максимальные)? 106. Какие версии Android нужно тестировать, если заказчик сказал поддерживать с версии 5.0? 107. Назовите типы мобильных приложений. 108. Каков формат файлов сборок приложений для Android и iOS? 109. Что такое ADB? 110. Как снять логи с AOS/IOS? 111. Что нужно проверять при использовании сканера отпечатка/Face ID? 112. Как я могу запускать тесты Android без Appium? 113. Объясните концепцию дизайна Appium.   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений.   Практические задания 114. Написать чеклист для функционала корзины в интернет-магазине. 115. Написать тестовые наборы данных для поля ввода даты, которое отсеивает пользователей в возрасте до 18 лет. 116. Написать чеклист тестирования формы ввода данных платежной карты. 117. Протестовать «предмет» относительно различных видов тестирования. (Предмет - лифт, карандаш, калькулятор и т. д.) 118. Есть Input поле, принимающее целые значения от 18 до 99 включительно. Надо протестировать с помощью техники тест-дизайна Boundary Values ​​Analysis и Equivalence Partitioning. 119. Есть веб-страница с полями: e-mail, password и кнопкой submit. Необходимо привести примеры отрицательных тест-кейсов, которыми можно проверить эту страницу. 120. Привести примеры тест-кейсов для функционала, находящегося на нескольких страницах проекта (например, поле поиска). 121. Как протестировать процесс оплаты в интернет-магазине? 122. Как протестировать сломанный тостер? 123. Объясните для 7-летнего ребенка, что такое база данных. 124. Определите необходимое количество функциональных тест-кейсов, чтобы проверить Log in форму. 125. Есть форма регистрации в веб-приложении с полями (first name, last name, username, password, repeat password) и кнопкой Register. Какие проверки нужно провести? 126. Поле username должно быть обязательным, но оно не является обязательным. Приведите пример баг-репорта, созданного для этой ошибки. 127. Как бы вы провели smoke-testing для приложения типа Telegram? 133. Как будет выглядеть баг-репорт, если, к примеру, не работает электрический чайник? 128. Есть таблица books с полями: name, price, page_count. Следует выбрать все имена книг, в которых price более 10 единиц и количество страниц от 20 до 100. 129. У вас есть функционал калькулятора, который доступен через веб-браузер по ссылке. Он имеет только функцию делить, так сказать, MVP-версию. Диапазоны для вписывания в числитель и делитель от 0,1 до 99,9. Вывод значения происходит автоматически, потому что front-end реализован на React JS. Как вы будете тестировать этот функционал? Какие виды тестирования примените? Какие техники тест-дизайна используете?     130. Задание на работу с SQL.   извлечь номер телефона и адрес пользователя Muzik. Извлечь данные о пользователях, имеющих сумму заказа более 2000 грн. Подсчитать количество заказов в таблице и общую сумму сделанных заказов.     131. Ваша компания разрабатывает программное обеспечение для медицинских систем, и вы тестируете компонент, управляющий дефибриллятором сердца. Вы заметили, что одно решение в тестовом модуле состоит из 34 независимых атомарных условий. Какой метод тестирования белого ящика следует выбрать для этого и почему? 132. Оздоровительная программа для сотрудников совмещена с оплатой медицинского страхования и имеет следующие правила:   сотрудники, потребляющие 17 единиц или менее алкоголя в неделю, получают $28 скидки на оплату. Для сотрудников, которые заполнят «Оценку риска для здоровья», оплата уменьшается на $23. Сотрудники, участвующие в ежегодном контроле за состоянием здоровья в компании: получат скидку на $50 за то, что имеют индекс массы тела (ИМТ) 25,5 или менее, и $19 скидки при ИМТ ниже 30. Некурящие получают дополнительную скидку на $46. Курильщики, присоединившиеся к курсу отказа от курения, получают скидку в $24. Курильщики, не присоединившиеся к курсу отказа от курения, оплачивают дополнительно $75.   133. Используя технику классов эквивалентности, сколько тестов нужно написать, чтобы покрыть вышеупомянутые условия на 100%? 134. Какое минимальное количество тестов необходимо для покрытия следующих условий автогражданки:   лица до 18 лет не застраховываются. Для мужчин на красном авто прибавляется +15% к стоимости полиса. Для женщин от 18 до 64 лет страховая премия 1000 грн. Для мужчин от 18 до 64 лет страховая премия 1200 грн. Для лиц старше 64 лет страховая премия 1800 грн.   135. Напишите сценарии автоматического тестирования для сортировки по цене и добавлению товара в корзину на сайте. К вашим тестам добавьте документацию с настройками и разместите ваше решение на GitHub.   Middle   Теория 1. Назовите обязанности QA? 2. Что знаете о тестировании нагрузки? В каком случае следует проводить такое тестирование? На каком этапе готовности продукта? 3. Что такое таблица решений/decision table и как её можно использовать? 4. Что может быть критериями запуска и завершения тестирования? 5. Расскажите о вариантах интегрирования тестовой документации в проект, инструментах для работы с ней. 6. Как организовать сквозное тестирование (e2e)? 7. Какие тест-кейсы можно сдать для тестирования баз данных? 8. Приведите примеры подходов для тестирования локализации. 9. Что такое A/B тестирование? 10. Что такое mock/stub? Какие знаете инструменты для работы с ними? 11. Когда нужно использовать технику Pairwise? 12. Что такое fuzz-тестирование и где его используют? 13. Что такое REgexp? 14. Как меняется стоимость дефекта при тестировании программного обеспечения? 15. Каковы пути анализа бизнеса клиента? Как определить целесообразность того или иного функционала? 16. Назовите последовательность выполнения CI/CD процесса на проекте. 17. Какое должно быть процентное соотношение между положительным и отрицательным тестированием на проекте? 18. Какой вид тестирования целесообразнее проводить до релиза? 19. Есть ли разница между bug leakage и bug release? 20. Может ли быть ситуация, когда критерии завершения (exit criteria) не выполнены? Что должно происходить в этом случае? 21. Что мы действительно должны покрывать тест-кейсами, а что считается избыточным расходом времени и денег? Когда нецелесообразно писать тест-кейсы? 22. Для какого функционала труднее всего написать тест-кейсы? 23. Как посчитать Cyclomatic complexity? 24. В чем основная разница между defect detection percentage и defect removal efficiency? 25. Какие модели risk-based testing вы знаете? 26. Что такое тестирование API? Какими инструментами пользуются для его выполнения? 27. Что такое performance testing? Какими инструментами пользуются для его выполнения? 28. Что такое load и stress testing? Какими инструментами пользуются для их выполнения? 29. Что такое contract testing? 30. Какая разница между Scrum и Kanban? 31. Расскажите о ритуалах, ценностях и ролях в Scrum. 32. Как выбор методологии может повлиять на качество разработки? 33. Нулевой спринт в Scrum. Для тестирования есть задание под названием «Настройка среды». Что здесь нужно выполнять?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing, QA Стартовый, “Методология управления проектами. Вступление в SCRUM”.   AQA   Selenium 34. Расскажите, как вы будете строить и внедрять стратегию по автоматизации тестирования. 35. Как взаимодействуют клиентская библиотека Selenium, драйвер браузера и сам браузер? 36. Для чего используют browser capabilities, arguments и options? 37. Что такое iframe и как с ним работать в Selenium? 38. Как обрабатывать браузерные сообщения (alerts)? 39. Что такое Appium? 40. Что такое Electron-based applications? Как использовать Selenium и Appium для их тестирования? 41. Как взаимодействовать с запросами, отправляемыми из браузера? 42. Как взаимодействовать с cookies, LocalStorage и SessionStorage?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Web Testing Automation on Java (урок 1) и Автоматизация тестирования мобильных приложений.   Тестовая инфраструктура 43. Что такое и чем отличаются виртуальная машина, симулятор и эмулятор? 44. Что такое контейнер и чем он отличается от виртуальной машины? 45. Как используют виртуальные машины и контейнеры в автоматизации? 46. ​​Что такое IaaS и PaaS? Приведите примеры. 47. Что такое Configuration Management? 48. Что такое Provisioning? 49. Какие команды Linux Shell вам известны? Как с помощью команд Linux Shell найти лог-файл и строчку с ошибкой в ​​файле? 50. Какие команды Windows CMD вам известны? Как с помощью команд Windows CMD найти IP-адрес машины? 51. Что такое SSH и как им пользоваться? 52. Что такое bash и batch скрипты? Зачем их используют?   Web 53. Какая разница между авторизацией и аутентификацией? 54. Как происходит авторизация на сервере? 55. Какие статус-коды ошибок бывают? Может ли сервер отправить код 400, если проблема на его стороне? 56. Как выполнить Debug страницы в браузере? 57. Как протестировать адаптивную верстку? 58. Что такое WebSocket и как проверить обрыв соединения? 59. Каковы есть основные виды уязвимости веб-приложений? 60. Какие инструменты для тестирования Web performance client-side знаете? 61. Какова разница между методами GET и POST? 62. Какая разница между методами PUT и PATCH? 63. Какие знаете сниферы? 64. Какова разница между DROP и TRUNCATE? 65. Что такое case function? 66. Что такое collation? 67. Что такое схема GraphQL? 68. Объясните разницу между OLTP и OLAP. 69. Вспомните разные типы репликации в SQL Server? 70. Что вы понимаете под Self Join? Приведите примеры. 71. Что такое cursor и как им пользоваться?   Ответы на некоторые из этих вопросов вы можете найти в видео курсах Web Testing Automation on Java, SQL Базовый.   Mobile 72. Что основное нужно проверить при тестировании мобильного приложения? 73. Что такое Manifest.xml в .apk файле и какие данные там указывают? 74. Что такое режим разработчика Do not keep activities? 75. Как происходит перехват трафика http/https для мобильных устройств? 76. В каком виде хранятся данные в мобильных приложениях локально? 77. Как тестировать миграцию локальных данных? 78. Каковы основные компоненты Android-приложений (активити / фрагмент / сервис / интент-фильтр)? 79. Опишите жизненный цикл активити. 80. Что такое утечки памяти? Как найти? 81. Как протестировать билд на Android? 82. Что такое Testflight? Как тестировать с его помощью? 83. Как работает Android? Какая у него архитектура? 84. Как происходит деплой программ IOS/AOS?   Ответы на некоторые из этих вопросов вы можете найти в видео курсе Автоматизация тестирования мобильных приложений.   Практические задания 85. Что делать, если разработчик не соглашается, что указанный баг действительно является багом? А если в требованиях использована неоднозначная формулировка? Если бизнес-аналитик, PM и представитель клиента сейчас недоступны, чтобы подсказать? Как можно предотвратить такую ​​ситуацию? 86. Сложилась ситуация, когда команда тестирования не успевает закончить свою работу в дедлайн. Как правильно действовать в этом случае? А если релиз передвинуть нельзя? А если никакие фичи из релиза забрать нельзя? 87. Что делать, если проект уже начался, а QA-инженер там начал работать только когда начали разрабатываться бизнес-фичи? Какие этапы тестирования теперь нужно наверстать и нужно ли это? Как это сделать максимально грамотно без ущерба для загрузки по тестированию новых фич? Какие риски имеет позднее вовлечение QA-инженера в разработку? 88. Веб-страница с полями e-mail, password и кнопкой submit. Назовите отрицательные тест-кейсы, по которым можно проверить эту страницу. 89. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что информация отправлена ​​в базу данных? 90. Как проверить, что данные отправились на сервер, если у нас нет доступа к бэкенду? 91. Приведите примеры улучшений для приведенной веб-страницы (любая на выбор). 92. Составить Smoke Test Suite для DOU.ua. 93. Протестовать функционал банкомата с помощью техники State Transition Diagram. 95. Написать предельные значения для ввода в форму оплаты товара на сайте. 96. Есть метод POST, который регистрирует нового пользователя на сайте, есть тело запроса, содержащее данные о почте, телефоне, имени пользователя и адресе проживания. Какие кейсы для проверки можете привести? 97. На что следует акцентировать внимание при автоматизации методов API? Что следует проверять? 98. Вы тестируете логин-форму, вводите логин и пароль, нажимаете кнопку логин и ничего не происходит. Ваши действия? 99. В течение 5 минут найдите и опишите дефекты, которые вы видите:     100. Вам нужно сделать Regression Testing за два дня. Как вы это сделаете, если Regression Run охватывает 1000 тест-кейсов? 101. Вы тестируете интернет-магазин, который продаёт карандаши. В заказе нужно указать количество карандашей (максимум для заказа – 1000 штук). В зависимости от заказанного количества карандашей отличается цена:   1–100 – 10 грн за шт. 101-200 – 9 грн за шт. 201-300 – 8 грн за шт.   С каждой новой сотней цена уменьшается на 1 гривну. Задание: используя тест-дизайн, опишите все необходимые тест-кейсы, которые будут максимально покрывать описанную функциональность.   102. Есть приложение типа мессенджера, пользователь заходит в чат и отсылает файл (видит сообщение Failed to send...) Когда это может быть баг, а когда нет? 103. Есть веб-приложение интернет-магазина (регистрация, логин, поиск товаров, корзина и покупки). Программу поддерживают следующие браузеры: Chrome, Safari, Edge. У нас есть ограниченное время на тестирование. Расскажите, как вы будете проверять приложение? 104. Напишите автоматические тестовые сценарии для проверки API операций создания и просмотра GitHub Gists. Интегрируйте ваш проект с известной вам CI-системой.   Senior   Теория 1. Как вы преодолеете трудности из-за отсутствия надлежащей документации для тестирования? 2. Какой подход является наилучшим для старта QA в проекте? 3. Какие препятствия могут возникнуть в обеспечении качества для Agile Tester? 4. Что такое Definition of Done? 5. Когда можно считать, что тестирование окончено? 6. Что такое RCA в тестировании? Нужно ли его проводить? 7. Какой подход вы используете для Test Cases Review? 8. Какие виды рисков существуют? Что такое Mitigation Plan? 9. На основе чего нужно составлять стратегию для проведения тестирования нагрузки? 10. Как часто следует ревьюировать тестовую документацию? 11. Как можно быстро сделать выборку необходимых проверок для смоук-тестирования? 12. Как запланировать загруженность команды тестировщиков? 13. Какую ценность несет анализ результатов тестирования команде и проекту в целом? 14. Как можно подкорректировать флоу разработки, чтобы получать более чистые результаты на выходе и уменьшить количество багов на проде? 15. Расскажите о метриках качества, которые вы применяли. Зачем они нужны? 16. Как провести эстимейт задачи? Каковы техники оценки объема тестирования существуют? 17. Как можно посчитать покрытие тестами функционала? 18. Какое оптимальное количество шагов в тестовом сценарии? 19. Как избежать появления регрессивных дефектов? 20. Что такое тестирование со смещением влево (Shift left testing)? 21. Как будете тестировать программу, если для продукта нет документации? 22. В чем смысл юнит-тестов? 23. Какие минусы полной автоматизации тестирования? 24. Что такое ROI и как его считать? 25. Что такое CI/CD? Какие плюсы и минусы этого подхода? 26. TOP OWASP: какие знаете уязвимости и методы защиты? 27. Что вы думаете по поводу BDD? Когда следует использовать, а когда будет только хуже? Если все же следует использовать, то для UI или API автоматизированного тестирования? 28. Что такое сокеты и как их тестировать, вручную и автоматизировано? Зачем их используют? 29. Когда следует делать стресс-тестирование на проектах? От чего отталкиваться, когда строите сценарий для такого тестирования? Что учесть при выборе инструмента? 30. Расскажите об алгоритмах шифрования трафика. 31. Что такое NIC? 32. Для чего нужен протокол RTP? 33. Что, по вашему мнению, лучше – SIP или PRI? 34. Что такое NAT?     Практические задания 35. Сформулируйте негативные сценарии для POST-запроса, который создаёт нового пользователя. 36. Как вы регулируете конфликтные ситуации между QA и разработчиками? 37. Есть проект, на котором нет тестовой документации, но проекту уже год. Мануальным QA не хватает времени на тестирование, они очень устали, есть желание уволиться. Какое решение по команде можно принять? 38. Продайте мне тестирование как клиенту, не желающему его покупать. Кратко и структурированно опишите вашу работу на каждом из этапов разработки ПО, используя профессиональные термины (не лить воду). 39. У вас есть онлайн-калькулятор. Вы вводите 1+1 и получаете 3. Расскажите, как вы будете искать причину проблемы. 40. Могут ли быть такие виды архитектур? Чего может быть недостаточно для правильной работы архитектур, приведенных ниже?   Пример 1     Пример 2     Пример 3     Пример 4   Вопросы при выполнении этого задания:   какие запросы выполняются по форме авторизации? Какой запрос выполняется, когда мы сохраняем данные в базе данных? Можно ли авторизоваться с помощью GET-запроса и нормально ли так делать? Какой код ответа мы получаем при падении ошибки на сервере, код при ошибочных credentials на форме авторизации? Можно ли заменить SSL-сертификат шифрованием данных в пакете от клиента к серверу для протокола HTTP или это будет равноценной заменой?   41. Есть веб-страница с полями e-mail, password и кнопкой submit. Предположим, что после нажатия кнопки submit страница перезагружается и ранее введенные данные исчезают. Как проверить, что данные отправлены в базу данных? 42. Какое минимальное количество тест-кейсов необходимо, чтобы убедиться в корректной работе этой веб-страницы? 43. Как проверить безопасность на веб-странице (на выбор)?   Редакция DOU.ua выражает благодарность за вопросы и рецензию: Роману Поботину, Андрею Заблоцкому, Виктору Максименко, Марьяне Батюк, Ирине Литвин, Сергею Могилевскому, Святославу Логину, Роману Маринскому, Олегу Заревичу, Олесе Паславской, Тарасу Лирке, Максиму Богуну, Вадиму Гуличу, Виталию Кашубе, Юрию Суравскому, Светлане Франковой, Владимиру Арутину, Станиславу Жупинасу, Людмиле Федчук, Иванне Черухе, Юлии Левченко, Владиславу Куличенко, Юрию Бояру.
ТОП-10 найкращих відео з Java від ITVDN

Автор: Влад Сверчков

Вітаємо, друзі!   Сьогодні на вас чекає підбірка класних, наповнених корисним контентом відео від ITVDN за напрямком Java. Топ насичений як теоретичними відеоматеріалами, які допомагають побудувати ефективне навчання, так і практичними вебінарами, орієнтованими на прокачування навичок програмування за допомогою джави та супутніх технологій (фреймворк Spring, Elasticsearch). Отже, які відео увійшли до цього рейтингу?     Карта спеціальності Java розробник   Автор – Андрій Бондаренко, Android Developer & Trainer, Samsung R&D Institute, Ukraine   Java – це популярна об'єктно-орієнтована мова програмування, якою написані програми для більш ніж 3-х мільярдів пристроїв по всій планеті. Сфера її застосування практично безмежна, а ті, хто добре володіють Java, мають великі можливості та завжди будуть забезпечені цікавими завданнями та високооплачуваною роботою.   На вебінарі ви отримаєте відповіді на всі питання, пов'язані з навчанням, набуттям досвіду, розстановкою пріоритетів у виборі технологій та навчальних матеріалів, а також кар'єрою програміста Java-напрямку.   Програма зустрічі:   Хто такий Java розробник? Актуальність спеціальності та затребуваність на IT-ринку. Як стати Java розробником: попередні вимоги; картка спеціальності; огляд обов'язкових та факультативних технологій.         Де та як вивчити мову програмування Java. Як отримати перший практичний досвід Стажування та перша робота - можливості і перспективи. Питання та відповіді.     Створення базового Spring Boot веб-сервісу на Java   Автор – В'ячеслав Аксьонов, Java/Kotlin Software Engineer   Spring Boot – це найпопулярніший фреймворк для розроблення веб-додатків на Java. У вебінарі буде розглянуто, як влаштовані додатки, котрі створені з використанням Spring Boot, на прикладі найпростішого stateless веб-сервісу. Також автор розгляне http взаємодії з використанням REST, побудову масштабованої архітектури бізнес-логіки, взаємодію з базами даних через найбільш популярні та прості прийоми.   План вебінару:   Що таке Spring/Spring Boot та Dependency Injection. Контекст та як його створювати. @Service/@Component/@Repository/@Controller – що все це таке і навіщо потрібно. Створюємо шаблон проєкту Spring Boot. Пишемо веб-сервіс із нуля. Розглядаємо найбільш простий та зручний спосіб роботи з базою даних. Перевіряємо працездатність та відповідаємо на запитання.     3. Як стати Java розробником у 2021?   Автор – Максим Федосов, Java Developer   З цього вебінару ви дізнаєтеся, як почати свій шлях у якості Java розробника – від новачка без досвіду в програмуванні до рівня фахівця, затребуваного на ринку.   У вебінарі будуть розглянуті дві сторони:   Що вчити: автор поділиться своїм баченням того, що потрібно вивчати насамперед як базу, що потрібно опановувати на етапі пошуку першої роботи, і що потрібно підтягнути, коли спеціаліст вже працює (на прикладі Java стеку). Як шукати роботу: з боку побудови кар'єри йтиметься про те, які шляхи можна обрати для побудови кар'єри, про ринок з точки зору роботодавця, курсів, шукачів. Який проєкт краще обрати, як часто змінювати роботу, як розвивати свою кар'єру.   Весь вебінар буде розділено на 2 частини – до першої роботи та під час роботи. В результаті у фахівців-початківців з'явиться конкретний план дій для того, щоб розпочати кар'єру, а у працюючих фахівців — розуміння того, як рости далі.   План вебінару:   Знайомство, трохи про себе та свій шлях у IT-сфері. Що потрібно вчити розробнику-початківцю Java. Напрацювання практики програмування. Портфоліо. Підготовка до пошуку роботи та подальша кар'єра.     4. Elasticsearch - пишемо свій пошуковик на Java   Автор – Федір Яременко, Senior Java Developer   На вебінарі буде розглянуто, як на Java реалізувати повнотекстовий пошук на об'ємному масиві документів з мінімальними затримками за допомогою Elasticsearch.   План вебінару:   Про повнотекстовий пошук та індексацію Огляд Elasticsearch Налаштування проєкту Додавання індексів Пошук за індексом Пошук за кількома полями Пошук у знайденому Агрегація результатів пошуку Пошук запитів з помилками Інші корисні опції пошуку Ранжування результатів Налаштування форматування результатів Пагінація Налаштування індексів для російської та української мов Асинхронні виклики Масштабування за допомогою кластера Візуалізація даних за допомогою Kibana Висновок       5. Створення 2D гри Танчики з Денді на Java з нуля   Автор – Андрій Бондаренко, Android Developer & Trainer, Samsung R&D Institute, Ukraine   Дане відео є захоплюючим онлайн тренінгом із написання графічної гри "Танки", який допоможе легко і швидко познайомитися з практичною стороною розроблення на Java. Нуль теорії – лише практика.   Кому це буде корисно:   Новачкам. Відсутність досвіду у програмуванні не повинна вас зупиняти. Ми даємо вам шанс зробити свою першу програму на Java та отримати досвід практичного застосування цієї мови програмування у створенні справжньої комп'ютерної гри. Розробникам-початківцям Java без досвіду. Ви зможете поглибити і застосувати на практиці знання мови Java під керівництвом тренера.   Чого ви навчитеся:   Писати прості програми та підпрограми з використанням мови Java Працювати з масивами даних Використовувати типи даних та класи Java Застосовувати всі базові навички (змінні, умовні конструкції, цикли, методи) на практиці   Програма тренінгу:   Створення карти поля бою. Робота над пересуванням танка Реалізація стрільби. Навчання танка рухатися у вказаний квадрант. Додавання танка-ворога. Підсумок: танк проходить все поле бою та чистить його. Відповіді на питання. Куди розвиватись далі?     6. Spring для початківців. Огляд можливостей та переваг. Початок роботи зі Spring   Автор – Дзюба Роман, Java Developer   Spring – це один з найбільш популярних та універсальних фреймворків для створення веб-додатків для бізнесу. Він дає Java-розробникам більшу свободу в проєктуванні програм, надаючи засоби вирішення проблем корпоративного масштабу. Spring має велику документацію і досить простий у використанні.   Дане відео є першим відеоуроком з відео курсу “Spring”, який знайомить з однойменним фреймворком.   На самому курсі розглядаються різні способи використання модулів Spring, написання REST додатків, використання MVC моделей та інші теми.   Проходження курсу за даним фреймворком буде корисним як тим, хто тільки познайомився з мовою Java і шукає, що вчити далі, так і тим, хто вже має певні знання і хоче освіжити в пам'яті навички використання SpringCore, SpringWeb, SpringSecurity.   Головні теми цього відео:   Ознайомлення із базовими принципами фреймворку. Переваги Spring, знайомство з основними принципами ООП та поняттям POJO. Області видимості Java Bean.     7. Створення гри Морський Бій на Java з нуля. (Частина 1, Частина 2)   Автор – Антон Кашніков, Java Developer, тренер-консультант CyberBionic Systematics   Відео у форматі онлайн тренінгу з написання консольної гри "Морський бій". З його допомогою ви швидко познайомитеся з Java, відразу ж розпочавши розроблення. Як результат – ви випробуєте джаву у справі, відчуєте її потужність, а також отримаєте на виході власноруч зроблену гру, яка після доопрацювання може стати чудовим проєктом у вашому майбутньому резюме Java розробника.   Програма тренінгу:   Частина 1   Знайомство із засобом розроблення IntelliJ IDEA та мовою програмування Java. Розбивання проєкту на підзавдання. Робота з масивами під час створення поля бою. Створення перших об'єктів. Використання об'єктів з масивами.   Частина 2   Тонкості роботи з консоллю при відображенні ігрових об'єктів. Продумування логіки гри. Створення геймплею. Оброблення винятків. Розбір помилок. Підбиття підсумків.     Що потрібно знати Java розробнику? ➤ Як вивчити Java?   Автор – Дмитро Саєвський, Java Developer   На цьому вебінарі ви дізнаєтеся, чим займається джавіст, які типи розроблення Java найбільш затребувані. Також автор розгляне весь шлях Java розробника з моменту вибору цієї спеціальності до рівня Senior.   План вебінару:   Типи розроблення Java. Якими вміннями повинен володіти Java розробник. Особливості Java. Історія версій Java. З чого розпочати навчання та скільки потрібно вчитися? Складання плану навчання. Кар'єрний шлях розробника. Рекомендовані посилання. Рекомендована література.     9. Підготовка до співбесіди з позицією Junior Java Developer   Авторка – Вікторія Силенко, Java розробниця desktop та web додатків.   Незважаючи на дату випуску даного вебінару, він досі залишається актуальним для тих, хто вирішив пов'язати свою кар'єру з розробленням Java і при цьому прагне з успіхом пройти співбесіду на позицію Junior Java Developer.   На цьому вебінарі ви дізнаєтесь, як правильно складати резюме, які популярні питання на співбесіді (+ відповіді), теми під час перевірки рівня англійської мови, як добре зарекомендувати себе у перші місяці роботи.     10. Створення багатопотокового клієнт-серверного додатку на Java   Автор – Євген Волосатов, професійний програміст, викладач мови Java у коледжі, автор відео курсів з мов C#, Java, PHP; має більше 20 років досвіду у якості провідного програміста в різних фірмах, має значний викладацький досвід; 6 років досвіду у проведенні вебінарів та створенні відео курсів   Євген Волосатов – справжній метр в області алгоритмів і структур даних на C#, Java, PHP — в даному вебінарі демонструє, як необхідно створювати багатопоточний клієнт-серверний додаток мовою Java.   На цьому вебінарі на вас чекає практика, котра зачіпає сокети та потоки. За допомогою Java буде написано невелику клієнт-серверну програму на сокетах. Для цього автор створить дві різні програми, які запускаються на різних комп'ютерах, але при цьому працюють спільно, надсилаючи одна одній дані.   Для зв'язку програм одна з одною буде створено універсальний клас Phone – він використовуватиметься як на сервері, так і на клієнті в JAR файлі. Наприкінці вебінару автор додасть багатопоточність до серверної частини, щоб сервер міг обробляти кілька клієнтів одночасно.   План вебінару:   Найпростіший сервер – Автовідповідач. Найпростіший клієнт – Вміти читати. Клієнт-серверний діалог. Універсальний сокет – Телефон. Серверна багатопоточність.   Для успішного засвоєння матеріалу необхідні базові навички роботи з Java у середовищі IntelliJ IDEA.   Вивчайте Java розроблення на ITVDN!
Notification success