Результати пошуку за запитом: видеокурс c*
Хто такий Full-stack розробник
Автор: Влад Сверчков
Суперечки навколо Full-stack
Різновиди Full-stack розробників. Стек мов та технологій для кожного
Плюси професії Full-stack Developer
Мінуси професії Full-stack Developer
Як стати Full-stack розробником?
Зарплати Full-stack розробників
Підсумки
Оновлено 9 червня 2023 року
Привіт, друзі!
Full-stack розробник (вимовляється "фул стек") – це якийсь майстер на всі руки у світі веб-розробки. Йому під силу реалізувати як клієнтську, так і серверну сторону додатку, якими, зазвичай, займаються FrontEnd і BackEnd розробники окремо один від одного. Таким чином, Full-stack спеціаліст здатний одноосібно вести проєкт від початку до кінця.
Ще в далеких нульових і раніше не існувало такого розподілу обов'язків між розробниками. Відносна простота ПЗ, що розроблялося, так само як і технології того часу дозволяли тримати процеси, які зараз виконують різні люди, в одних руках. Наприклад, у ті часи IT-фахівець, який називається веб-майстром, і зовнішній вигляд сайту створював, і серверну частину реалізовував, і розміщував сайт на хостингу. Тобто, Full-stack розробники існували і раніше, просто ніхто їх так не називав.
Однак IT-сектор не стояв на місці. Вимоги до програмних продуктів зростали, з'являлися нові мови та технології, змінювалися підходи до розробки. Дерево IT почало ставати все більш гіллястим, породжуючи нові спеціальності. Разом із цим професія універсального бійця розбилася на два окремі напрямки, а потім знову відродилася з гордою назвою "Full-stack Developer".
Суперечки навколо Full-stack
Не все так гладко, як здається на перший погляд. Багато досвідчених програмістів та IT-фахівців вищої ланки не визнають цю посаду за визначенням. "Чому?" — спитаєте ви. Адже раніше були ті самі веб-спеціалісти, які успішно поєднували обов'язки сучасних напрямків — фронту та беку. Чому сьогодні поняття Full-stack викликає суперечки?
Поширеною є думка, що Full-stack розробників не існує, а ті, хто такими називаються, насправді не відповідають вимогам цієї спеціальності.
Наприклад, Сергій Немчинський — програміст з 20-річним стажем, керівник та власник навчально-виробничої компанії FoxmindEd — в опублікованому відео на YouTube відгукується про Web Full-stack розробників наступним чином (посилання):
“В принципі, в ідеалі, Full-stack розробник – це класно та чудово. Проблема в тому, що... Таких немає. Фактично все, що ми маємо на ринку з тих людей, які називають себе Full-stack девелоперами – це приблизно 50% BackEnd девелоперів, які трошки вивчили FrontEnd і вже можуть Angular або React скомпілювати і, відповідно, зібрати-підключити, плюс трошки розуміють у верстанні – навіть не на рівні Junior верстальника. Вони у більшості випадків зробити добре, красиво не можуть ніяк. Максимум, що можуть – зробити так, щоб кнопка натискалася.
Або ж Full-stack девелопери – це решта 50% FrontEnd розробників, які трошки вивчили BackEnd; в більшості випадків – якийсь Node.js. Можливо, PHP. Такий розробник мінімально вміє щось підрихтувати, але, знову-таки, говорити про те, що він сяде і напише вам нормальний Full-stack додаток – ні, ні і ще раз ні.
(…)
Чесно скажу, мені ідея з об'єднанням у Full-stack девелоперів здається, з одного боку, не дуже вдалою, тому що фактично ми отримуємо "ні риба, ні м'ясо". З іншого боку, ринок вимагає – отже, треба. Тому затребуваність у Full-stack девелоперів, за великим рахунком, трохи більша, ніж у чистих BackEnd або FrontEnd розробників. Однак ринок вже усвідомив, що вони (Full-stack розробники) у своїй більшості "ні риба, ні м'ясо", і тому термін "Full-stack" починає пропадати. Тепер просто вважається, що це BackEnd розробник з невеликим знанням фронту і, навпаки, FrontEnd розробник з невеликим знанням однієї з BackEnd мов. Мені здається, що так набагато правильніше”.
Інші розробники схиляються більше до того, що Full-stack розробка – це ні що інше, як хитрощі бізнесу. Роботодавець не бажає переплачувати за двох різних фахівців, віддаючи перевагу більш дешевому аналогу, котрий вміє все те саме.
По суті, вся суперечка щодо Full-stack розробника зав'язана на скептицизмі. Прихильники міфологічності цієї професії не вірять у існування розробника, здатного добре реалізувати як FrontEnd, так і BackEnd частини, оскільки за обома ховається безліч технологій і мов, а вивчити все і працювати не гірше за фронтендерів і бекендників — практично неможливо.
Ті ж, хто займаються Full-stack девелопментом, парирують, вказуючи на велику кількість часу, проведеного за розробкою, в ході чого так чи інакше доводиться заглядати по інший бік барикад і розбиратися в усіх процесах, що супроводжують розробку всього проєкту від і до. Ну а далі справа техніки — вивчаєш необхідні інструменти, практикуєшся і можеш самостійно працювати над цілим проєктом. Звичайно, пізнання у всіх використовуваних мовах і технологіях у Full-stack спеціаліста будуть не такі глибокі, як у вузькоспеціалізованих побратимів по цеху, але зробити повноцінний робочий проєкт з нуля, реалізувавши як BackEnd, так і FrontEnd, йому буде під силу.
Різновиди Full-stack розробників
Варіацій Full-stack розробників насправді безліч: PHP Full-stack Developer, Node.js Full-stack Developer, Java Full-stack Developer і так далі. Назва, яка стоїть на початку спеціальності, говорить про те, яка мова/платформа береться за основу під час реалізації BackEnd частини. Стек технологій FrontEnd практично завжди однаковий і відрізняється лише використовуваними JavaScript-фреймворками / бібліотеками: Angular, React або Vue.js. А ось бекенд надає набагато більше можливостей для реалізації своїх амбіцій.
Ще раз проговоримо, що Full-stack Developer – це розробник, який бере безпосередню участь у всіх етапах розробки веб-додатків: від створення клієнтської частини (візуальна частина + логіка користувача) до реалізації серверної (бази даних, серверна архітектура, програмна логіка). Який стек технологій та мов знаходиться у розпорядженні цього фахівця? Якщо говорити про FrontEnd складову (клієнтська сторона), то вона у всіх приблизно однакова:
мова верстання HTML та мова стилів CSS;
мови програмування JavaScript та TypeScript;
препроцесори SASS та LESS;
фреймворк Angular/Vue.js або бібліотека React;
технології DOM, AJAX, REST API, знання про інтернет та веб-технології в цілому тощо;
навички адаптивного та кросбраузерного верстання.
А що потрібно знати full stack розробнику із серверного набору? Тепер розберемося з відгалуженнями в бекенді, які вказують на популярні мови та технології, що використовуються під час реалізації серверної сторони веб-додатків, котрі розробляються.
Node.js Full-stack Developer
BackEnd складова (серверна сторона) може мати різну начинку, на відміну від FrontEnd. Якщо говорити про Node.js Full-stack розробника, то в якості основної мови виступає JavaScript, а сам стек наступний:
платформа Node.js;
фреймворки Express.js, Nest.js;
пакетний менеджер npm;
Web Sockets;
розуміння REST API;
інші спеціалізовані технології.
Java Full-stack Developer
Головний акцент робиться на мову програмування Java та пов'язані з нею технології. BackEnd-стек у такого розробника має бути наступним:
мова Java + Java Core;
веб-сервер Apache;
інструменти для комфортної взаємодії з БД – JDBC, Hibernate;
веб-сервіси;
фреймворк Spring та його популярні модулі (Spring MVC, Spring Boot, Spring REST, Spring Web тощо);
ASP.NET Full-stack Developer
.NET розробники мають широкий інструментарій для самореалізації у вебі. Як основну мову програмування вони використовують C#. Скарбничка знань BackEnd частини у ASP.NET Full-stack Developer-а повинна містити:
мову C#;
знання інфраструктури .NET.
платформу ASP.NET MVC/ASP.NET Core (Web API);
Entity Framework (Core);
хмарний сервіс Azure;
мову T-SQL;
розуміння RESTful API.
PHP Full-stack Developer
PHP – класична мова веб-розробки. Типовий BackEnd-стек даного розробника відрізняється від інших своєю компактністю. РНР у вебі вже досить давно, а тому йому багато не потрібно; достатньо лише:
власне, сама мова PHP;
фреймворк Yii2/Symfony/Laravel.
Python Full-stack Developer
Універсальність Python не знає меж! Не стала винятком сфера веб-розробки. BackEnd-стек Python Full-stack спеціаліста наступний:
мова Python;
фреймворк Django/Flask;
REST API;
Web Sockets;
навички роботи з ОС Linux та веб-сервером Nginx/Apache (можливо);
досвід роботи із хмарними сервісами.
Також окрім спеціалізованих технологій, усім Full-stack розробникам необхідно:
знати систему керування версіями Git + сервіс для хостингу IT-проєктів GitHub;
знати реляційні (SQL) та нереляційні (NoSQL) бази даних, вміти їх проєктувати;
розумітися на протоколах HTTP, HTTPS та роботі FrontEnd + BackEnd загалом;
вміти оперувати мовою запитів SQL та однією із СУБД – MySQL / PostgreSQL / SQLlite, або однією з NoSQL СУБД (MongoDB, Redis, Cassandra, наприклад);
вміти проводити тестування додатків;
здійснювати Code Review;
використовувати Docker;
володіти англійською мовою на рівні Intermediate та вище;
знати популярні патерни програмування та вміти їх реалізовувати;
мати гарне знання алгоритмів та структур даних.
Також від Full-stack спеціаліста можуть вимагати навички мобільної розробки, якщо роботодавець має намір портувати веб-додаток на відповідні платформи.
Як бачите, список необхідних мов і технологій для створення гарної серверної складової веб-додатків є досить значним. У наступному розділі ми розберемося, які переваги та недоліки чатують на тих, хто таки має намір пов'язати свою професійну діяльність з Full-stack розробкою.
Плюси професії Full-stack Developer
Можливість самостійно вести цілий проєкт
Очевидна перевага розробника даної спрямованості полягає в об'єднанні двох течій – FrontEnd та BackEnd – в одному фахівці. Крім того, що такий професіонал здатний реалізувати обидві частини веб-додатку, він може безпроблемно налаштувати їхній взаємозв'язок, що є частим каменем спотикання між фронтендниками та бекендниками. Тим самим усуваються непорозуміння і протиріччя, які неминуче виникли б між декількома розробниками, які працюють над одним і тим самим продуктом.
В'ячеслав Лобода, Senior Full-stack PHP Developer, про свою професію відгукується наступним чином:
“Часто при вирішенні завдань веб-розробки виникає необхідність вносити редагування одночасно і до FrontEnd, і до BackEnd. Для цього можна найняти двох різних спеціалістів чи одного Full-stack розробника. Останній варіант дозволяє заощадити час на комунікацію”
Даний відгук і всі наступні взяті зі статті на dou.ua "Кар'єра в IT: посада Full-stack розробник".
Висока швидкість розробки, можливість приймати власні рішення, мінімальні витрати часу на зайву комунікацію
Full-stack розробник – це вже фахівець досить високого рівня, який здатний приймати певні самостійні рішення, не витрачаючи час на зайві обговорення та узгодження з іншими розробниками, адже проєкт цілком перебуває під його крилом.
“Подобається, що можу створювати веб-додатки одноосібно, менше затримок під час роботи. Наприклад, коли працюєш як FrontEnd і потрібно, щоб BackEnd віддавав нові дані, ти просиш колегу внести зміни, чекаєш. Full-stack розробнику чекати ні на кого не потрібно. Взяв і зробив як слід” – Геннадій Догаєв, Web Full-stack Developer
Легкість пошуку роботи на фрілансі
На біржах фрілансу замовники найчастіше шукають такого веб-спеціаліста, який зробить всю роботу самостійно без залучення додаткових розробників. Хто, як не Full-stack девелопер найкраще підійде на цю роль, маючи таку перевагу перед вузькоспеціалізованими побратимами? Отже, обравши цей шлях, ви не залишитеся без роботи і зможете користуватися всіма благами, які дарує фрілансерство.
Великі кар'єрні можливості
Широкоформатність професії Full-stack розробника дозволяє реалізувати себе в будь-якій сфері веб-девелопменту. Ви можете в будь-який момент перейти на більш вузький профіль – чисту FrontEnd або чисту BackEnd розробку (горизонтальний розвиток, поглиблення в конкретну сферу діяльності), а можете стати сильним тімлідом або архітектором, який чудово розуміється на всіх процесах створення веб-додатків і має багатий досвід за плечима (вертикальний розвиток, просування кар'єрними сходами).
Також Full-stack розробник може знайти успішне застосування своїм здібностям у стартапах. Стартап-команди, як правило, мають дуже малий бюджет і їм набагато вигідніше мати тих, хто може взяти на себе обов'язки декількох людей. Таким чином ви і новий досвід отримаєте, і зможете попрацювати над чимось свіжим, цікавим, раніше не баченим.
Ну а щодо потреб ринку в Full-stack розробниках навіть згадувати не варто – безліч компаній хоче отримати спеціаліста широкого профілю в свій штат. Кількість вакансій для них менша, ніж для фронтендників та бекендників, однак і конкуренції теж не так багато.
Мало рутини та вигорянь
Багата на різноманітність діяльність Full-stack розробників знижує ризики загрузнути в одноманітній роботі. Ви володієте великим арсеналом знань, що дозволяє вам періодично перемикатися між проєктами і менше втомлюватися від застосування одних і тих самих технологій.
Легкість у розвитку свого продукту
Ви маєте достатньо знань та вмінь, щоб самостійно створити власний проєкт. У майбутньому ви зможете організувати свою команду для вдосконалення та подальшого розвитку програмного продукту, проте вже на старті ви маєте все необхідне для того, аби реалізувати ваші ідеї.
Мінуси професії Full-stack Developer
Програш вузькоспеціалізованому розробнику на його полі бою
Full-stack девелопер володіє багатьма інструментами, але не може знати кожен настільки ж добре, наскільки окремо взятий фахівець. Ця професія передбачає подібне розпилення і унеможливлює поглиблення в будь-яку мову або технологію. Виходить, ви вмієте все, але гірше за розробника конкретного напряму.
Багато часу на навчання
Технологій, які має опанувати Full-stack спеціаліст, багато. Під час вивчення, наприклад, бекенду легко забути те, що ти вчив по фронтенду. Щоб усі знання та вміння утримувати на гарному рівні, необхідно витрачати багато зусиль. Впоратися з цим можна наступним чином: вивчаєте одну спеціальність, влаштовуєтеся на роботу, а потім вивчаєте другий напрямок. Виходить, ви не тільки поточні знання зберігаєте, але й примножуєте їх, рухаючись до фул-стек розробки.
“Нарощуйте компетенцію поступово, з невеликих завдань. Пройдіть курс із напрямку, якого вам бракує, щоб вникнути в базові принципи. А далі опановуйте знання на практиці за правилом Learning by doing” – Олексій Голубєв, Team Lead Full-stack Developer в GlobalLogic.
Важко стежити за новими тенденціями
Світ IT дуже гнучкий і мінливий. Наче імперії – виникають і руйнуються нові мови, технології, підходи в розробці ПЗ, техніки написання та ревізії коду. Вам, як фахівцю широкого профілю, необхідно знати всі новинки, адже, зрештою, цього і вимагатимуть від вас роботодавці — використання сучасних інструментів та підходів.
Занадто багато обов'язків
Роботодавці іноді починають висувати велику кількість вимог до фул-стек фахівця. Раніше згадуваний Full-stack розробник Геннадій Догаєв має таку думку щодо цього:
“Замовники хочуть звалити на одну людину надто багато. Наприклад, вже зустрічаються оголошення Node.js+React.js+React Native, тобто до веб-стеку додається ще й мобільна розробка. Це впливає на якість знань та кінцевого продукту: чим більше технологій потрібно охопити, тим більш поверхнево знаєш кожну з них. Крім того, людині не можуть подобатися всі напрямки одночасно. Мені з цього набору не дуже цікава мобільна розробка”.
Вами хочуть залатати дуже багато дірок
Фул-стек розробнику можуть часто делегувати різноманітні завдання на робочому місці. Дописати за кимось код, щось переглянути, пофіксити, доробити. Працювати замість FrontEnd/BackEnd розробника, який пішов у відпустку, – мила справа. А якщо вас найняли як альтернативу 5-ти розробникам, то й взагалі будуть тримати як раба.
Складні завдання
Ви знаєте більше інших, а значить, вам під силу розібратися з тою чи іншою важкою задачею. Принаймні так думає той, хто вам їх роздаватиме.
Велика завантаженість
Як ви вже помітили за попередніми пунктами, Full-stack розробнику не дадуть відпочити. Справ по вуха – це точний опис його стану на кожний робочий день.
Складнощі у заміні
Цей пункт одночасно є і перевагою, і недоліком. З одного боку, вам важко знайти заміну і, відповідно, вас цінуватимуть. З іншого боку, вам буде проблемно піти у відпустку, адже де взяти заміну? Тут і почнуться дзвінки у будь-який час доби, неможливість перекладання деяких завдань на інших розробників та інше.
Як стати розробником Full-stack?
Відповідь проста – оберіть найбільш близький до вас варіант професії та вивчіть необхідні технології за допомогою різних ресурсів, або підіть на курси full stack розробників. Радимо зробити свій вибір на користь освітньої IT-платформи ITVDN – тут ви зможете знайти 90% усіх потрібних вам відео курсів за будь-яким із обраних напрямків. Наприкінці статті ми залишимо корисні посилання на всі спеціальності, які допоможуть вам у вивченні ремесла Full-stack.
Наприклад, вам сподобався BackEnd-стек Python розробника – тоді вам підійдуть 2 курси за наступними спеціальностями:
FrontEnd Developer.
Python Developer.
З кожною програмою навчання ви зможете ознайомитися докладніше, перейшовши за залишеними посиланнями.
Зарплати Full-stack розробників
Відповідно до липневої зарплатної аналітики від DOU.ua (опитано 6605 українських розробників), медіанна зарплата FullStack розробників наступна:
Junior – 980 USD;
Middle – 2475 USD;
Senior – 4750 USD.
При цьому ЗП у колег по цеху – FrontEnd та Mobile розробників – приблизно такі ж. Єдині, хто помітно виділяються – BackEnd девелопери рівня Middle та Senior. Їхня медіанна оплата праці становить 2800 USD і 5000 USD відповідно, що на кілька сотень доларів перевищує зарплату фулстеккерів.
Якщо звернутися до міжнародного веб-сайту з пошуку роботи Jooble (має українське коріння), то станом на липень середня пропозиція щодо зарплати для FullStack Developer у Києві становить 114 183 грн (приблизно 3100 USD).
Відповідно до міжнародного опитування Stack Overflow Developer Survey 2023 (понад 90 000 респондентів з усього світу), річна медіанна ЗП FullStack фахівця складає 71 140 USD (приблизно 5930 USD на місяць).
Підсумки
Full-stack Developer — універсальний веб-розробник, який поєднує у собі силу FrontEnd та BackEnd напрямків. Так, спеціалізовані девелопери зроблять всю роботу краще, ніж фул-стек фахівець, проте головний коник героя цієї статті – можливість розробляти повноцінні веб-додатки самостійно, доводячи їх до повністю готового стану. Як і будь-яке інше, Full-stack ремесло має свої переваги та недоліки.
Шлях, яким повинен пройти full stack розробник з нуля досить тернистий і насичений. Проте недаремно казали класики — терпіння та праця все перетруть. Так що все у ваших руках!
Можливо, нас читають розробники Full-stack? Із задоволенням прочитаємо вашу точку зору на позиції, викладені в цій статті. Також будемо раді будь-яким питанням та зауваженням від усіх читачів!
Ну а тим, хто вирішив обрати професію Full-stack Developer, ми бажаємо бути впертими, оптимістичними і з незагасаючим вогником спраги знань в очах.
Успіхів та кодерського натхнення на вашому шляху!
Корисні посилання
Весь каталог спеціальностей: ІТ-спеціальності на ITVDN.
FrontEnd складова: відео курс за спеціальністю FrontEnd Developer.
BackEnd складова:
Python Developer
PHP Developer
ASP.NET MVC Developer
ASP.NET Core Developer
Java Developer
Онлайн навчання в групі з тренером за спеціальністю FullStack Node.js Developer.
Ідеальне резюме програміста: що писати в резюме ІТ спеціалісту
Автор: Влад Сверчков
Всім привіт!
Що таке резюме? По суті, це візитна картка, яка повинна переконати рекрутера або HR-менеджера запросити вас на співбесіду. Однак вона може не тільки переконувати наймачів, а й відмовляти розробникам навіть із завидним багажем досвіду та знань. Що написати про себе в резюме IT спеціалісту? Яким має бути резюме у програміста, щоб воно сподобалося рекрутеру та стало вашою перепусткою в IT-компанію? Чим відрізняються резюме досвідченого розробника і програміста-початківця (junior)? Давайте розберемося!
Насамперед зазначимо, що у вашому резюме має бути відсутнім:
Розмитість, неточності. Кожна людина дорожить своїм часом. Особливо рекрутер, у якого крім вашого ще кілька десятків (а буває навіть і сотень) резюме. Ніхто не захоче витрачати час на перепитування або уточнення у вас інформації, яка важлива для тієї чи іншої позиції, але яку при цьому ви забули або не захотіли вказати.
Вода. Резюме – не твір на вільну тему і не автобіографія, починаючи з пелюшок. Цей документ має чітку мету і призначення, а значить пустослів'я в ньому – поганий тон і водночас найбільш вірний шлях до кошику рекрутера.
Брехня. Також не забувайте, що брехня завжди спливає назовні – або під час співбесіди, або безпосередньо в ході трудових буднів. Не видавайте бажане за дійсне та складайте чесне резюме. Ми ще поговоримо в цій статті про те, під яким соусом краще подавати ту чи іншу інформацію, залишаючись чесним та у виграшному становищі одночасно.
Якщо підсумувати ці пункти, вірним є наступне: гарне резюме має рясніти лаконічністю, бути чесним і містити лише важливу інформацію. Тепер поговоримо детальніше, що воно має включати, і як правильно складати кожен розділ.
Структура
Жорстких вимог щодо оформлення резюме для програмістів немає. Однак існують певні правила, яких слід дотримуватись у процесі його складання. Рекомендуємо використовувати наступний шаблон (у дужках вказано назву, котру треба використовувати при складанні резюме англійською):
Прізвище, ім'я (First Name, Last Name)
Вік (Age)
Контакти (Contacts) – місто проживання, телефон, e-mail, Skype. Акцентуємо увагу на тому, що назва електронної пошти та скайпу має бути в офіційному стилі у вигляді вашого імені та прізвища: a.ivanov@... або alexander_ivanov@... і т. д. Ніяких stasik_ananasik@... та інших химерних назв. Пошту краще обирати з найпопулярніших — Gmail, Outlook та подібних. Також пошта не повинна бути прив'язана до попередніх місць роботи.
Тут же додайте посилання на ваш профіль GitHub, де знаходяться опубліковані вами проєкти. Якщо маєте гарно заповнений профіль у LinkedIn (із зазначеними місцями навчання та роботи, вивченими технологіями, вашим якісним фото та іншою інформацією), додайте посилання і на нього.
Тут же торкнемося і питання соціальних мереж. Якщо ваше резюме зацікавило рекрутера, існує висока ймовірність, що вас знайдуть через соцмережі і ознайомляться зі вмістом ваших сторінок. Тому проведіть попередню ревізію своїх профілів у Мережі та приберіть усе те, що псуватиме вам імідж (гострі політичні висловлювання, пости, що суперечать загальноприйнятим нормам моралі, та інші елементи, які будуть працювати проти вас).
Мета (Objective) — пункт, де ви повідомляєте наймачу, яку позицію бажаєте займати у компанії.
Резюме кваліфікації (Summary Of Qualification) – у цьому розділі слід розмістити основну інформацію з резюме, яку буде корисно дізнатися роботодавцю в першу чергу (не більше п'яти ключових тез, які розкажуть про вас та ваш досвід роботи в обраній сфері IT). Якщо не маєте якихось сильних аргументів про ваш кар'єрний шлях, пропустіть цей пункт.
Професійні навички (Hard Skills) – тут ви описуєте всі технології, які знаєте та вмієте використовувати. Поруч вказуйте рівень володіння кожною. Припустимо, щось знаєте добре, щось базово, але готові вивчати далі. Головне — пишіть чесно, адже з кожної технології чи вказаної мови програмування прилетять запитання.
Особисті навички (Soft Skills) – це нетехнічні навички, якими ви володієте. Які ключові навички вказати у резюме програміста? Вміння працювати в команді, вирішувати конфліктні ситуації, бути уважним до деталей, володіння гарно розвиненим критичним мисленням, уміння слухати та чітко викладати свої думки, а також інші подібні навички відносяться до софт скілів, які важливо було б почути працедавцю. Тобто це ті вміння, які допомагають нам бути ефективними на будь-якій роботі. Багато софт скілів писати не треба, однак, щонайменше три найкращі свої якості вказати необхідно.
Тут теж пишіть чесно, не вводячи роботодавців в оману – співбесіда змусить вас розкрити карти у будь-якому випадку. На допомогу прийде невелика порада, яка допоможе залишатися чесним і при цьому не торкатися ваших недоліків.
Кожен роботодавець хоче, щоб його співробітник був робочою конячкою з відмінними комунікативними навичками, здатністю швидко навчатися, чудовим володінням техніками тайм-менеджменту та іншими скілами. Але всі знають, що ідеальних людей не існує. Припустимо, якщо ви інтроверт і потребуєте певного часу на розкриття себе в колективі, не пускайтеся в оману, мовляв, ви швидко і легко знаходите спільну мову з командою. Буде розумно вчинити інакше — обійти стороною ваші навички комунікації та вказати інші позитивні якості, якими володієте – наприклад, уміння слухати, аналізувати інформацію та швидко знаходити вихід із проблеми.
Досвід (Experience) – слід вказувати у зворотному порядку, починаючи з вашого останнього місця роботи. Кожне описуване місце роботи повинно мати наступну структуру:
дати початку і кінця роботи (буде плюсом, якщо додасте в дужках час, протягом якого обіймали посаду);
назва компанії;
посада;
короткий опис проєкту (по можливості з посиланням), обов'язків, опис використовуваних технологій та досягнень.
Якщо ви до цього працювали не за фахом, спробуйте в останньому пункті описати якісь важливі навички, які ви опанували в ході роботи, і які при цьому важливі на цій позиції, на яку ви подаєте резюме.
Якщо ви тільки закінчили університет, спробуйте поміркувати та написати про університетський досвід — ймовірно, ви займалися чимось корисним на кафедрі, перебували в якійсь університетській організації або з одногрупниками розробляли власні проєкти, займалися громадською діяльністю, внаслідок чого опанували деякі вміння/навички або просто отримали досвід у застосуванні певних програмних або апаратних засобів.
З одного боку, може здатися, що досвід роботи не за фахом зовсім не цікавить роботодавця. Частково це так, однак грамотному рекрутеру/HR-менеджеру цей пункт (при правильному його описі) відкриє вас як людину, яка має досвід роботи та комунікації всередині команди. А якщо ви ще й вказали, що в процесі роботи навчилися раціонально розпоряджатися своїм часом та вчасно виконувати покладені на вас доручення, це ще один плюсик вам.
Однак якщо у вас вже є певний IT-бекграунд, то варто вказувати лише досвід в IT – які найвдаліші проєкти, якою командою керували (якщо керували), які обов'язки виконували, чого досягли і т. д.
Освіта (Education) – інформація про вищу освіту. Вказуйте назву ВНЗ, факультет, спеціальність, здобутий ступінь, роки навчання. Якщо отримали червоний диплом, згадайте про це. Школу згадувати немає потреби. Хіба що це ваша перша робота або стажування в IT і ви маєте за плечима якийсь крутий технічний ліцей.
Якщо нещодавно закінчили навчальний заклад, можете написати тему вашої дипломної роботи та середній бал за весь час навчання.
Додаткові навички (Additional Skills) – інформація про курси, семінари, тренінги та інші програми навчання, які ви проходили самостійно. В цьому ж розділі розкажіть про ваші сертифікати, якщо вони у вас є – тут настає їхня зіркова година.
Знання мов (Knowledge Of Languages) – простий пункт. Складається у вигляді “Мова – рівень володіння мовою”. Ключовим у цьому розділі є знання англійської, адже потрапити до IT без неї практично нереально. Не будьте профаном і не пишіть, наприклад, “English – гарний”. Англійська має декілька рівнів володіння: Elementary, Pre-Intermediate, Intermediate, Upper-Intermediate, Advanced, Proficiency, тому в даному прикладі доречно писати “English – Intermediate”. Можете додати уточнення, мовляв, без проблем читаєте технічну документацію, але розмовний інгліш ще підтягуєте. Дозволяється вказати поруч із рівнем володіння мовою, що на даний момент ви відвідуєте відповідні курси, якщо це відповідає дійсності.
Об'єктивно оцінюйте свій рівень володіння англійською – це дуже легко перевіряється під час співбесіди.
Додаткова інформація (Additional Information) – відомості про вас, якими ви хотіли б поділитися: ваші інтереси, захоплення, або певні особливості – наявність маленької дитини, родича, за яким вам необхідно наглядати і т. д. Зрештою, на роботу беруть не шестерню, яка буде частиною бездушного механізму, а особистість із певними знаннями, професійними навичками, поглядами на життя та рисами характеру.
Головне – вміло подати інформацію. Маєте маленьку дитину і багато часу працювали з дому – уточніть, що ці умови навчили вас стійкості до стресів і багатозадачності. Будьте на позитиві, витягайте із, здавалося б, глухих ситуацій позитивні сторони і демонструйте їх тому, хто буде дивитися ваше резюме.
Загальні поради
Вимоги до тексту.
Для резюме обирайте 12-14 кегль та шрифт Arial або Times New Roman – текст буде максимально читабельний і без дратівливих елементів. Для новачків оптимальний розмір тексту — до однієї сторінки А4, від досвідчених програмістів чекають на текст побільше, але краще не перевищувати 2-х сторінок. Причому більшу частину повинні займати ваші скіли та досвід роботи.
Суцільний текст читати важко, втомлююче і не цікаво. Оформлюйте резюме таким чином, щоб воно було легким і саме просилося у вічі. Для цього структуруйте інформацію, використовуйте відступи, абзаци, лінії тощо. Наприклад, той самий розділ “Досвід” можна зобразити у вигляді таблиці. Головне — згрупувати інформацію по блокам. Все має бути лаконічно, акуратно та читабельно.
Не забувайте про грамотність написаного тексту. Перед відправкою робіть ретельну вичитку резюме — граматичні, орфографічні та пунктуаційні помилки чудово псують думку рекрутера про претендента на посаду.
До речі про фото.
Його можна як додавати, так і не додавати. Фотографія має бути гарної якості, але не з вечірки, шашликів чи інших місць підвищеної концентрації відпочиваючих. Також на ній має бути чітко видно ваше обличчя. Якщо вірити психологам, найкраще фото — на якому ви у позитивному настрої та з посмішкою. Підходящої фотографії немає? Тоді не додавайте її зовсім. У деяких країнах фото в резюме — табу через можливу дискримінацію за статевою, расовою або іншою ознакою. Також відсутність зображення дозволяє оцінювати людину за її професійними та особистісними якостями, а не за зовнішніми даними.
Формат електронного резюме.
На розгляд рекрутеру потрібно надсилати резюме у форматі PDF. Це найуніверсальніший формат електронних документів, який безпроблемно відкривається та читається на всіх можливих пристроях.
Відповідність резюме вакансії.
Також уважно переглядайте вимоги до кожної посади і, якщо необхідно, вносьте корективи в написане вами резюме таким чином, щоб було видно, що дане резюме було складено саме для відповідної вакансії — і рекрутеру зручніше, і більше шансів бути поміченим. Адже резюме, яке розсилається всім без звертання уваги на вимоги та побажання роботодавців (резюме-спам), не викликає симпатій та має великі шанси потрапити до кошику.
Резюме англійською.
Якщо вакансія складена англійською мовою, то роботодавець однозначно хоче від кандидата англомовне резюме. Навіть якщо вакансія україномовна, а ви склали та надіслали резюме на інгліші, це буде солідним плюсом, адже, як ми говорили раніше, ця мова в IT дуже важлива. Головне, не забувайте про грамотне написання. Після складання резюме дайте його на перевірку тому, хто добре знає англійську.
Неформальність у резюме.
Цікавий момент: в IT допускається неформальність у резюме програміста, наприклад – жарти. Однак це ходіння дуже тонким льодом. Якщо ви і збираєтеся в якомусь місці показати гостроту свого розуму, робіть це вміло та доречно, інакше буде тільки гірше. Але все ж таки арсенал жартів краще приберегти на саму співбесіду — там вони допоможуть і віртуозно вийти зі скрутних положень, і зарядити всіх позитивом.
Портфоліо.
Як ми вже зазначили, у пункті “Контакти” варто розмістити посилання на свій GitHub, де розміщуються ваші проєкти, які й складають ваше портфоліо. Якщо ви новачок, там повинні бути саме ті проєкти, які ви розробляли самостійно (не здерті з ютубу чи інших ресурсів). Продемонструйте роботодавцю всі свої навички та вміння в них. Дайте зрозуміти, якими технологіями та мовами володієте.
Навігація вашим портфоліо також має бути інтуїтивно зрозумілою та зручною.
Супровідний лист.
В Україні практика написання супровідного листа не є особливо популярною, проте правильне його складання може дати вам додаткову перевагу перед іншими кандидатами-конкурентами. Це лист, який доповнює резюме. Його мета — зацікавити рекрутера/роботодавця та створити гарне перше враження про себе. Структура супровідного листа наступна:
Привітання, звернення до роботодавця.
Джерело інформації про вакансію.
Відомості, що характеризують вас як фахівця.
Демонстрація зацікавленості у вакансії.
Контактні дані.
Фривольностей тут краще не допускати – дотримуйтесь офіційного стилю викладу.
Встаньте на місце рекрутера/роботодавця.
При складанні резюме час від часу абстрагуйтеся та дивіться на нього з різних боків. Чи подобається вам те, що написано? Чи є послідовність та логічність у написаному? Що можна скоротити? Як краще виділити ту чи іншу здатність/вміння/якість/технологію? Подібна рефлексія допоможе об'єктивно розглядати резюме та на виході отримати справді якісний екземпляр.
Ресурси для автогенерації резюме
Фішка двадцять першого століття – повсюдна автоматизація різних рутинних процесів. Торкнулася ця тенденція і сфери пошуку роботи. На даний момент існує безліч сервісів, які надають послуги зі створення якісного резюме. Ми ділимо їх на два типи: вбудовані та незалежні.
До першого типу належать сервіси, що знаходяться на сайтах пошуку роботи. Як приклад, така функціональність реалізована на сайтах work.ua, grc.ua тощо. Якщо раптом десь заплутаєтеся — кожен пункт містить підказки, що дуже зручно.
Також ви можете скачати створене резюме, проте воно не буде таким стильним і барвистим у порівнянні з тим, яке пропонують ресурси генерації “візитки” другого типу.
Незалежні сервіси створення резюме – спеціалізовані сайти, які мають безліч інструментів для створення ефектного зовнішнього вигляду резюме. Вам необхідно тільки обрати шаблон, котрий сподобався, налаштувати його під себе і заповнити розділи. Розкажемо про деякі з них.
LinkedIn – соціальна мережа для ділового спілкування, яка орієнтована на пошук співробітників та вакансій. При створенні облікового запису ви вказуєте різні дані про себе: місця навчання та роботи, технології та мови програмування, якими володієте, додаткову інформацію про себе, фото тощо. LinkedIn має вбудований інструмент генерації резюме, виходячи з інформації, опублікованої у вашому профілі, проте добре заповнений профіль вже певною мірою є вашою візитною карткою. І все ж, рекрутери його розглядатимуть лише у другу чергу в якості прикріпленого посилання у розділі резюме “Контакти”.
При цьому LinkedIn має одну особливість: у майбутньому, коли ви станете розробником рівня Middle+ і матимете широку мережу знайомств на цьому ресурсі (400+ осіб), жодне резюме вам більше не знадобиться — рекрутери самі вас знаходитимуть і пропонуватимуть вакантні посади. А поки ви джуніор з нульовим досвідом роботи, LinkedIn не зможе замінити вам повноцінне резюме.
Canva.com – сервіс, що дозволяє безкоштовно створити стильне та привабливе резюме за допомогою сотень різних дизайнерських шаблонів на будь-який смак. Обираєте один із них, налаштовуєте кольори, шрифти, фон та сам макет, а потім вносите вашу інформацію та фото. Зручно та просто.
Cvmaker.com — безкоштовний ресурс, який дає можливість створювати резюме, використовуючи один із дев'яти класичних шаблонів, що відрізняються своєю лаконічністю та відсутністю надмірностей. Гарний варіант для шанувальників легкого мінімалізму.
Також існує безліч інших сервісів створення резюме — використовуйте гугл і ви знайдете для себе варіант, який вам ідеально підійде.
Ну а найоригінальнішою та найефективнішою анкетою для роботодавця може бути резюме фронтенд розробника. Цей фахівець за професією розробляє веб-інтерфейси, а тому може реалізувати своє CV у вигляді веб-сайту. Демонструєте свої скіли і одночасно подаєте необхідну інформацію про себе – дуже зручно та практично.
Підсумки
Резюме розробника — це лист-запрошення на співбесіду в IT-компанію, який ви самі і складаєте. Воно має бути структурованим, інформативним і при цьому не містити нічого зайвого. Найголовніше — резюме має справити приємне враження на того, хто його переглядатиме, і принести бажане запрошення на співбесіду. Пишіть лаконічно, уникайте води, неточностей та неправди – обман все одно розкриється під час зустрічі. Відверту брехню ніхто не терпітиме. Насамперед будьте чесні з самим собою, об'єктивно оцінюючи свої знання та здібності. Звертайте на себе увагу за допомогою креативу, нестандартного підходу – ці якості завжди цінуються наймачами.
Резюме досвідченого програміста має утримувати акцент на досвіді та проєктах, над якими розробник працював: які технології були задіяні, які обов'язки виконувались, яких результатів було досягнуто тощо. Резюме програміста-початківця (junior) має спиратися більше на самостійно розроблені проєкти, амбіції, особисті якості та навички претендента, які допоможуть йому розвиватися в IT-напрямку.
Складати резюме можете самостійно або за допомогою спеціалізованих сервісів, які допоможуть додати ефектності та помітності вашому документу. Головне – не переборщити, і все буде окей. Для додаткового ефекту напишіть гарний супровідний лист, який допоможе вам виділитись серед інших кандидатів.
Дотримуйтесь наших порад, і ви неодмінно досягнете успіху!
Бажаємо здоров'я та успіхів на вашому кар'єрному шляху!
Залишайтесь на ITVDN!
Як стати розробником ігор?
Автор: Влад Сверчков
Компьютерные игры - это, наверное, одна из самых крутых вещей, которую только придумало человечество. Где еще вы сможете выполнить ведьмачий заказ на грифона, расколдовать вихта либо посостязаться с Бестией из Боклера? А сделать тюнинг своей Dodge Viper SRT 10 и обогнать всех соперников в Need For Speed: Most Wanted? Отыграть роль неуловимого Агента 47, либо же от имени Брюса Уэйна бороться с преступностью на улицах Готэма? Все это возможно благодаря видеоиграм, которые затягивают и заставляют пропадать в них часами, неделями, а то и месяцами.
Должно быть, многие игроки мечтали стать частью геймдев-индустрии и применять всю глубину своей фантазии в разработке собственных игр. Пришло время узнать о специфике работы гейм девелоперов, о тех технологиях, которыми они должны владеть, а также получить ответ на вопрос - как стать разработчиком игр.
Разработчик игр - кто это?
На самом деле разработка видеоигр являет собой комплексный процесс, в котором зачастую задействована целая команда специалистов. Таким образом, над созданием крупного гейм-продукта может работать порядка двух сотен человек, а именно:
аниматоры движений
аниматоры лицевые
художники
геймдизайнеры игровых уровней, персонажей, диалогов и т. д.
UI/UX разработчики
скриптеры
моделлеры
программисты
актёры озвучки
локализаторы
сценаристы
тестировщики
композиторы
звукорежиссеры
HR-ы
менеджеры проектов
и другие специалисты
Естественно, для создания игры не обязательно иметь целую армию сотрудников. Их можно разрабатывать небольшой командой, ограничиваясь гейм-дизайнерами и программистами, или даже в одиночку, совмещая в себе несколько профессий сразу.
В данной статье нас интересуют именно игровые программисты - участники процесса создания игры, на плечи которых возлагается реализация игровых идей и концепций в виде программного кода. Давайте приступим к рассмотрению их разновидностей и применяемому инструментарию каждого из них. Однако, прежде мы узнаем, какими знаниями и навыками должен обладать любой разработчик компьютерных игр.
Математика и физика
Именно математика заставляет игры работать. Доправление вашего снаряда к месту пребывания вражеского танка, расчет траектории полета брошенной гранаты, реализация прыжка с возвращением обратно на землю, реалистичное восхождение персонажа по ступенькам - все это невозможно без математики, как, впрочем, и любое другое действие. В разработанных игровых движках уже есть определенные шаблоны, согласно которым функционирует игровая механика. Однако, это лишь базовые законы взаимодействия внутриигрового мира. Если хотите внести что-то свое - программируйте.
В создании игр используются такие области математики, как: линейная алгебра, аналитическая геометрия, дискретная математика, тригонометрия, мат. анализ. Проще говоря, вам следует хорошо владеть математикой уровня первого курса технического ВУЗа.
Знание физики также важно. Если математика предоставляет инструментарий для программирования игры, то физика его реализует. Необходима для того, чтобы создавать законы вашей игровой вселенной: полет пуль, разрушение, падение предметов, передвижение машин и прочее. Здесь пригодятся знания в области классической механики, механики жидкостей, оптики.
Конечно, в каждом ответвлении разработки игр математика и физика вам по-разному пригодятся, однако, если вы собираетесь взяться за игростроение на серьезной основе, то этими предметами необходимо хорошо владеть.
Алгоритмы и структуры данных
Не менее важным для разработчика игр будет знание и понимание алгоритмов, ведь все в игровом мире происходит исходя из четко заданного последствия операций.
Знание структур данных позволит вам понять способы организации данных, их свойства и принципы работы с информацией. Разработка игр связана с огромным количеством данных (отрисовка объектов, подгрузка локаций и т. д.), поэтому умение правильно работать с ними обязательно.
Английский язык
Знание английского на уровне чтения технической документации - это минимальное требование для комфортной работы с англоязычными форумами, текстами, и технологиями, с которыми вы обязательно столкнетесь в ходе создания игр. Более того, изучение иностранных языков не только помогает в профессии, но также развивает наше мышление и улучшает память. Сколько языков ты знаешь, столько раз ты человек, верно?
Git & GitHub
Git - наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. GitHub - сервис онлайн-хостинга проектов, где храняться сами проекты.
Помимо своего очевидного предназначения, данные инструменты позволяют изучать проекты с открытым исходным кодом, которые были сделаны и опубликованы другими программистами, а также делиться с сообществом разработчиков своими собственными, получая обратную связь, которая поможет вам развиваться в правильном направлении и поддерживать мотивацию.
Огромный энтузиазм, сильнейшая мотивация и любовь к играм
Область игростроения - это та сфера деятельности, в которой главной движущей силой является ваша мотивация и заинтересованность в работе, которую вы выполняете. Разработчики игр, создавая различные видеоигры, многие годы могут не получать желаемого результата и признания - зачастую так и происходит. В такой ситуации очень важно не сбавлять обороты и только наращивать производственные мощности. Другими словами - чтобы создавать игры, вы должны быть в них влюблены по уши, ведь это - творчество, и оно требует бóльшего вложения, нежели просто знания математики и умения хорошо программировать.
Разработчик ресурсоемких игр
Язык программирования С++
Серьезные игры требуют задействования большого количества вычислительных ресурсов компьютера, которые, как известно, ограничены. Также, для получения бóльшей прибыли конечный продукт необходимо распространить среди максимального числа игроков. Это достигается не только удачными PR-кампаниями, но и путем портирования игры на разные геймерские платформы (Xbox, PlayStation и другие). Возникает необходимость в применении мультипарадигмального, кроссплатформенного, высокопроизводительного языка программирования, с помощью которого можно управлять памятью и не создавать лишнюю загруженность системы. Таким критериям отвечает язык С++. Без него не обходится ни одна разработка серьезного гейм-продукта.
Благодаря С++ создается механика игры - взаимодействие игрока с миром и мира с игроком. Когда говорят о профессиональных программистах игр, обычно имеют ввиду именно программистов С++. За возможность создавать оптимизированные крупномасштабные игры уровня ААА придется заплатить немалым количеством сил и времени, ведь данный язык программирования считается одним из самых сложных в изучении. Этот путь разработки зачастую выбирают самые хардкорные ребята, готовые к вызовам и испытаниям, которые очень увлечены гейм индустрией и желают стать ее неотъемлемой частью.
Игровой движок
Это ядро, которое помогает программистам создавать игры, беря за основу уже имеющееся программное обеспечение, тем самым автоматизируя некоторые рутинные процессы. Зачастую движок включает в себя игровую логику, поведение объектов, визуальный редактор сцен, утилиту для анимаций, инструменты дизайна игрового окружения и прочие элементы. Таким образом, приступая к созданию игры, программисту не нужно с нуля прописывать физику воды, объектов и выполнять другие капитальные работы - достаточно взять уже готовое и из него творить что-то свое. Ниже мы расскажем о некоторых широко известных средах разработки видеоигр.
Unreal Engine - это очень популярный игровой движок. Среди его преимуществ выделяют: гибкость, мультиплатформенность, высокие показатели графической составляющей, качественное освещение, возможность создавать игры под VR, общая дружелюбность к разработчику и богатый встроенный инструментарий разработки. Самые известные игры, созданные при помощи Unreal Engine: Mass Effect, Bioshock Infinite, Mortal Combat 11, Fortnite, Borderlands, Batman: Arkham Asylum.
Разработка на этом движке ведется на языке С++, однако, возможно использование специального скриптового языка Blueprint, который в определенной степени может упростить создание игр.
CryEngine - мощный движок от немецкой компании Crytek, детищем которого стали такие игры, как: Crysis, Far Cry, Ryse: Son of Rome, Sniper II: Ghost Warrior и другие. Обладает кроссплатформенностью, продвинутой системой анимаций, впечатляющим уровнем графики, реалистичной физикой, собственной технологией трассировки лучей и многими другими достоинствами. Стоит отметить, что в разработка на CryEngine вызывает больше трудностей, чем на Unreal Engine.
Если провести анализ данных движков, то Unreal Engine подойдет для разработки ААА игр, особенно шутеров и приключенческих экшенов. Также, это неплохой выбор для инди-разработчиков из-за своей выгодной политики лицензирования. CryEngine же больше подойдет опытным командам, которые обладают большим количеством времени и средств для создания дорогих и крупномасштабных игр.
Существует множество других движков: Chrome Engine, C-Engine, Frostbite, Source, Id Tech, Creation Engine и т. д. Изучайте информацию о них и выбирайте тот, который лучше всего подойдет под ваши нужды.
Разработчик игр на Unity
Мы решили отдельно выделить данную специальность, поскольку Unity являет собой достаточно дружелюбный по отношению к новичкам движок, который использует язык программирования C#. Более того, на соответствующих сайтах поиска работы работодатели часто сами выделяют эту профессию, указывая вместо привычного “Разработчик игр” должность “Unity разработчик”. Перейдем к рассмотрению технологий, которые должен знать потенциальный кандидат.
Язык программирования C#
Популярный объектно-ориентированный язык программирования, который имеет множество сфер применения: настольные, мобильные и веб-приложения, а также игры для различных платформ. C# не является настолько высокопроизводительным, как С++ и, соответственно, на нем нельзя разрабатывать столь качественные и хорошо оптимизированные игры. Однако, С# имеет очень важное преимущество - он достаточно легкий в изучении (по сравнению с теми же “плюсами”) и подойдет новичкам, которые только открывают для себя мир геймдева.
Unity
Игровой движок, разработанный специально для создания игр на языке C#. Главные особенности Unity: наличие удобной визуальной среды разработки и большой библиотеки различных ассетов и плагинов, возможность легкого портирования игр на разные платформы, возможность интеграции со многими графическими или анимационными приложениями, наличие большого сообщества, низкий порог вхождения.
Unity используется в создании одиночных и сетевых игр для настольных компьютеров и устройств виртуальной реальности. Самые громкие творения этого движка: Cuphead, Hearthstone, Cities: Skylines, Rust, 7 Days To Die, Hitman: Sniper, The Forest и множество других видеоигр. Также, при помощи Unity можно создавать анимированные видео, игровые трейлеры, кат-сцены и другие подобные продукты, которые находят широкое применение в рекламных кампаниях.
Unity - это прекрасный выбор для новичков. Вы можете разработать игру даже не имея при этом навыков программирования - продуманный визуальный редактор скриптов возьмет на себя всю работу. Однако, для создания чего-то стоящего на Unity вам придется таки изучить С#.
Также, благодаря своим широким возможностям и богатому инструментарию, этот движок очень активно используется в мобильном игростроении для разработки 2D и 3D игр.
Разработчик мобильных игр
Мобильные операционные системы предоставляют большое пространство для реализации амбиций гейм девелоперов. Игры для смартфонов требуют меньше усилий при разработке и имеют более высокий шанс быть замеченными пользователями. Данный сегмент создания игр имеет немалое количество применяемых языков. Традиционно, рассмотрим наиболее популярные из них.
Java - один из самых популярных языков разработки мобильных приложений под ОС Android. Это надежный объектно-ориентированный кроссплатформенный язык, который хорошо зарекомендовал себя и в создании мобильных игр. В Java гейм девелопменте вам пригодиться среда разработки Android Studio либо jMonkeyEngine.
С++ - данный язык, как говорилось в одном из разделов выше, может применяться практически везде. В мобильных играх его также применяют - там, где необходимо бережно обходиться с памятью девайса и поддерживать высокую производительность игры. Разработку можно вести на все том же Unreal Engine, либо используя любые другие подходящие движки и среды разработки.
C# (Unity) - благодаря своей кроссплатформенности и универсальности в целом, среда разработки Unity также позволяет разрабатывать 2D и 3D игры как для Android, так и для платформы iOS, что открывает большие возможности перед программистами на “шарпе”. Более того, можно создавать мобильные игры и на JavaScript, который также доступен в Unity.
Objective-C / Swift - языки программирования, которые используются в разработке ПО для iOS и macOS. Objective-C, будучи предшественником Swift, потихоньку отходит на второй план и уступает место этому молодому, открытому, быстрому, мультипарадигмальному языку. Мы предлагаем смотреть в будущее и выбирать именно Swift, несмотря на его небольшую сыроватость - это нормально для языков, которые переживают период развития. Также выбирайте движок SpriteKit, который в полной мере раскрывает Swift как инструмент разработки мобильных игр.
Вообще, эти два языка подходят для разработки любого вида ПО для платформ компании Apple. Так что, если вас привлекает создание продукции под “яблоко”, смело выбирайте Swift и/или Objective-C.
Разработчик браузерных игр
Об онлайновых браузерных играх жители СНГ узнали, когда началось широкое распространение Интернета. Сегодня эта игровая отрасль продолжает жить и успешно развиваться. Единственные глобальные изменения касаются компании Adobe - флагмана разработки браузерных игр, которая объявила о прекращении поддержки Flash до конца 2020 года. Это популярная мультимедийная и программная платформа, благодаря которой разрабатываются веб-приложения, а в частности - браузерные игры. Таким образом. основной фокус будет окончательно смещен в сторону HTML5, JavaScript и вспомогательных графических технологий - WebGL, Canvas и т. д.
HTML5 (язык верстки веб-страниц) прекрасно взаимодействует с JavaScript (мультипарадигменный язык программирования) посредством элемента Canvas, который делает возможным добавление растровой 2D графики на веб-сайт. WebGL - кроссплатформенный графический API - главный инструмент создания 3D графики в браузере. Очень часто эти технологии используются не только для создания игр, но и для добавления крутой интерактивности сайтам, что справляет приятное впечатление на пользователей.
Для разработки серверной стороны браузерных игр необходимо знать РНР/Python либо любой другой язык, который хорошо подойдет под организацию закулисных взаимодействий - регистрация и авторизация пользователей, обработка пользовательских данных, ведение игровой статистики, хранение информации в базе данных, реализация многопользовательского режима и прочее.
Как начать свой путь?
Для получения первого опыта в гейм разработке на ПК, можно заняться созданием модов для ваших любимых игр. Это модификации, дополнения, которые, как правило, сделаны не самими разработчиками, а при помощи фанатов либо других команд разработчиков. Они могут улучшать визуальную составляющую видеоигры, менять геймплей, добавлять новые игровые элементы (персонажей, музыку, предметы, спецэффекты и т. д.) либо и вовсе кардинально менять всю игру, создавая практически новую. Такие дополнения зачастую делают при помощи набора средств разработки - SDK, которые прилагаются к играм, либо разрабатываются отдельно.
Модостроение - неплохое начало гейм девелоперского пути. Оно позволит лучше понять внутреннюю логику игр и даст определенный опыт в разработке. В процессе создания мода вы можете познакомиться с другими модостроителями на различных фанатских форумах и перенять у них определенные знания, которые помогут в вашем развитии в сфере геймдева.
Вот вам интересный пример успешного пути юного модмейкера, которого зовут Alexander J. Velicky. 19-летний поклонник игры The Elder Scrolls V: Skyrim настолько сильно хотел работать в студии разработчиков Bethesda, что создал дополнение к игре под названием Falskaar, которое добавляет к оригиналу 25 часов игрового контента, большое количество новых локаций, персонажей с новой, полноценной озвучкой, а также массу квестов. На создание мода было затрачено около 2000 часов. К сожалению, Bethesda не предложила парню работу, однако его взяла к себе компания Bungie, где он смог раскрыть свой потенциал на полную. За успехами Александра можете следить на его странице в LinkedIn.
В мобильной разработке создание модов не практикуется, поэтому тут лучшим выходом будет брать простые игры и пытаться их запрограммировать самостоятельно. Это даст понимание основных концепций разработки под мобильные девайсы и принесет полезный опыт.
Проводите много времени на англоязычных ресурсах. Обычно, именно там находится самая ценная и актуальная информация, которая может вам помочь во многих начинаниях.
Где учиться и как искать первую работу?
На самом деле, в мире существует не так много высших учебных заведений, в которых можно получить знания и навыки разработки игр. В большинстве случаев это дорогостоящие зарубежные ВУЗы. Если вы хотите обучаться программированию игр на территории СНГ, ищите в Интернете соответствующие курсы либо попробуйте заняться самообучением при помощи специализированных ресурсов по тем или иным языкам и технологиям.
К примеру, если вас интересует создание игр с применением возможностей Unity и вы хотите узнать больше об этом движке, можете ознакомиться со специальностью “Unity/Game Developer” на нашем сайте.
Первую работу стоит искать, следуя отработанной тактике:
Изучаете необходимые языки и технологии, параллельно уделяя много времени практике.
Составляете достойное портфолио, в котором буду несколько ваших удачных работ.
Отправляетесь на сайты поиска работы и рассылаете свое резюме, указывая ссылку на ваши работы, которые вы заранее выложили в GitHub.
Вопрос первого трудоустройства был более подробно рассмотрен в нашей статье “FAQ начинающего программиста”.
Заключение
Таким образом, мы рассмотрели самые популярные направления в современном игростроении. Если желаете серьезно заниматься созданием игр - выбирайте язык С++ и соответствующий вашим потребностям движок. Если вы не гонитесь за высокой оптимизацией, лучшим выбором будет движок Unity и язык C#. Для iOS и macOS выбирайте Objective-C и/или Swift. Мобильная разработка имеет достаточно места для реализации амбиций при помощи Java, C++, C#, Swift и других языков. Ну а веб-пространство будет прекрасным плацдармом для HTML, JavaScript и ряда вспомогательных технологий. Вообще, умелые программисты могут создавать игры на каких угодно языках. Так что самое главное - изучить необходимые технологии, научиться хорошо писать код, и, конечно, быть влюбленным в геймдев. Тогда у вас все обязательно получиться!
Если вам понравилась эта статья, поделитесь информацией с теми, кому она может быть интересна. Пишите в комментариях, на какие еще вопросы, связанные с выбором специальности и планированием обучения вы хотите получить ответы. Мы постараемся ответить на них в наших новых обзорах!
FAQ програміста-початківця
Автор: Влад Сверчков
Приветствуем вас!
Все, кто решились выбрать для себя путь программирования очень часто сталкиваются со стандартными вопросами: “С чего начать?”, “Что учить?”, “Сколько времени мне надо потратить на обучение, чтобы получить должность разработчика и зарабатывать N-ную сумму денег?” и т. д.
Мы решили собрать наиболее часто задаваемые вопросы (от англ. “Frequently Asked Questions” - F.A.Q.), которые интересуют будущих программистов, и дать на них максимально информативные ответы. Надеемся, что наша статья окажется для вас ценной находкой.
Какой язык программирования выбрать?
Самыми легкими для изучения обычно называют такие языки программирования:
Python
JavaScript
Ruby
Java
C#
Если решитесь изучать один из них, будьте готовы к многочисленной конкуренции, ведь о простоте этих языков известно не только вам.
Однако, мы советуем ориентироваться не на язык программирования, а на сферу разработки, в которой желаете себя реализовать и которая будет вам при этом интересна.
Если вам хочется создавать красивые и эффектные веб-страницы вместе с пользовательской логикой - выбирайте направление FrontEnd разработки и изучайте JavaScript + языки верстки HTML и CSS, а также смежные технологии.
Хотите создавать то, что находится “под капотом” веб-приложений? Тогда вам больше подойдет BackEnd разработка, которая представлена следующими языками: PHP, Java, C#, Python, JavaScript, Ruby и другими.
Хотите посвятить себя созданию мобильных приложений? Обратите внимание на C#/Java/Kotlin (для ОС Android), Objective-C/Swift (iOS).
Любите компьютерные игры и горите желанием их разрабатывать? Для более легковесных игр подойдет C# со средой разработки Unity либо язык Java, в то время, как создание серьезных игр невозможно без высокопроизводительного С++.
Программирование роботов и прочих устройств, в которых используются микроконтроллеры требует владения низкоуровневым языком программирования Assembler, а также C/C++.
При выборе сразу отбросьте мысли, мол, “буду учить тот язык программирования, за который больше платят”.
Во-первых, потому что помимо самого языка необходимо знать еще целый стек вспомогательных технологий: сборщики проектов, пакетные менеджеры, системы управления базами данных и/или другие важные компоненты разработки ПО (для каждой специальности свой набор). Вы должны отдавать себе отчет касательно готовности освоения того или иного стека. Конкретный список технологий под каждую специальность можно найти в требованиях к вакансиям либо на различных ресурсах, которые специализируются на IT. Как пример, в каталоге специальностей ITVDN вы сможете узнать о специфике работы порядка 20 IT-профессий.
Во-вторых, такой денежно-ориентированный подход имеет один существенный минус, который перечеркнет все ваши старания - рано или поздно вы просто-напросто морально выгорите. Деньги - это хороший стимул, однако, если вы не будете получать от своей работы удовольствия, она превратится в каторгу, ваша трудоспособность упадет и в итоге вы будете вынуждены искать себе другой источник заработка.
Поэтому вначале выберите ту сферу разработки, которая вам по душе, а затем уже выбирайте язык программирования и вспомогательные технологии. Ведь то, что вам нравится, будет легче и интереснее изучать. А солидные деньги вы сможете зарабатывать в любой IT-области. Главное - вырасти как профессионал и любить свое дело.
Нужно ли высшее образование?
Чтобы стать программистом, не обязательно получать высшее образование. В конце-концов, на собеседовании диплом вам вряд ли чем-то поможет, если вы не справитесь с тестовым заданием, либо не сможете дать достойные ответы на теоретические вопросы и произвести положительное впечатление на рекрутера.
На деле в большинстве компаний диплом не требуют (он “для галочки”), а смотрят лишь на ваши профессиональные навыки и личные качества. Крупные компании, однако, очень часто поступают иначе - отказываются рассматривать кандидата без высшего образования (либо требуют, чтоб кандидат был в процессе получения соответствующего образования).
Не секрет, что большое количество отечественных ВУЗов имеет устаревшую программу обучения (лет на 10 в лучшем случае) и способно дать студентам только фундаментальное понимание программирования и его концепций.
Если говорить о развитых странах, то там все серьезнее. Учеба в “вышке” тяжелее, к выпускникам ВУЗов относятся лучше и диплом действительно играет более значимую, нежели у нас, роль. Довольно часто иностранные компании вне зависимости от ваших навыков и опыта требуют диплом бакалавра либо, как минимум, чтоб вы на момент подачи резюме учились в ВУЗе и были на финишной прямой. Более того, диплом упрощает процесс получения рабочей визы, без которой вы не сможете легально работать программистом, например, в Чехии или США.
А вот на какие должности вас 100% не примут без диплома как в родной стране, так и в зарубежье - это руководящие позиции в IT. Их занимать имеет право только человек с полным высшим образованием.
Несмотря на все противоречивые моменты, университет - это неплохая школа жизни. Самое важное, что можно для себя вынести из ВУЗа - это связи. Вы можете заиметь хорошие знакомства и получить очень полезные советы касаемо вашего дальнейшего развития в IT буквально из первых уст. Идеальным вариантом будет отучиться 2 года на очной форме обучения, затем перейти на заочную и параллельно работать по специальности. Как итог - по окончании бакалавриата вы имеете и университетскую базу, и диплом, и опыт работы.
Надо ли знать математику?
Если вы собираетесь реализовывать себя в научной области, либо в таких IT-сферах, как машинное и глубокое обучение, Data Science, Big Data, разработка искусственного интеллекта, то без высшей математики никак не обойтись. Это именно тот случай, когда необходимо по максимуму знать и применять математический аппарат для разработки сложных алгоритмов, а также систем, которые работают с огромными массивами данных.
Однако, зачастую IT не требует знания глубоких материй и необходимый мат. аппарат ограничивается первыми курсами университета (теория множеств, графов, автоматов, алгоритмов, базовая логика) ну и плюс стандартная школьная программа, естественно. Наименее зависимыми от математики являются такие специальности, как верстальщик и FrontEnd разработчик.
Вообще-то, математика в программировании - это прежде всего о математическом и аналитическом мышлении, которое помогает критически мыслить, абстрагироваться и развязывать задачи, умело используя логику. Именно правильный взгляд и рациональный подход к решению задач является главным оружием программиста. С развитием мат. мышления вам помогут различные книги, а также практика - кодинг, решение математических задачек и прочие упражнения, которые можно найти на просторах интернета.
Сколько учиться на программиста?
Зависит от выбранной специальности и способа обучения. Быстрее всего освоение программирования происходит на курсах, поскольку вы изучаете все необходимые технологии в компактном и структурированном виде. Также над вами есть ментор, который не дает расслабиться, поддерживая дисциплину и помогая в случае необходимости.
Выбрав самообучение, вы увеличите время освоения IT-профессии, поскольку будете сами выбирать программу обучения, составлять план занятий и подбирать информационные ресурсы. Более того, очень тяжело будет поддерживать мотивацию, что чревато прокрастинацией, и, как следствие, вы рискуете “забросить” учебу так и не достигнув желаемой цели.
Подробнее о том, как необходимо планировать самообучение вы можете прочесть в нашей статье “Онлайн обучение программированию: подводные камни и советы”.
Обычно на обучение с помощью курсов уходит от нескольких месяцев до 6-8, а при самообучении - от 6 месяцев до года либо полутора года при условии организации систематических занятий и практик.
Как попасть на работу, не имея опыта?
Если вы практикуете классический вариант поиска работы, то вначале необходимо составить достойное портфолио, в котором вы продемонстрируете все ваши знания и навыки. Разработайте несколько удачных проектов, которые максимально раскроют вас как разработчика в выбранной IT-сфере. Не менее важным является и грамотное оформление резюме, ведь это ваша визитная карточка, ваш крючок, за который должен зацепиться рекрутер. Оно должно быть составлено без ошибок и без лишних деталей. При этом в резюме желательно указывать все ваши заслуги в сфере вашей будущей работы либо в смежных областях: диплом технического ВУЗа, сертификаты пройденных IT-курсов, победы в состязаниях программистов и т. д. Указывайте все то, что повышает вашу ценность как сотрудника.
Однако, в программировании есть и другие варианты поиска первой работы:
Попасть на стажировку. Вы учите необходимые технологии и языки самостоятельно, а затем ищете вакансии, которые предусматривают данную форму занятости. Стажировка хороша тем, что она ориентирована на тех, кто хорошо владеет теорией, но не имеет практики. Во время ее прохождения вы учитесь применять ваши знания. Стажировка не всегда оплачивается, зато опыт, приобретенный во время ее прохождения - бесценен. Даже если вас не приняли на полноценную работу после стажировки, у вас уже будет минимальный набор профессиональных навыков и опыт, что даст фору перед другими новичками в дальнейших поисках работы.
Успешно пройти курсы от IT-компании по выбранной специальности и затем попасть к ним на стажировку. Многие компании набирают желающих и учат их “под себя”. Если вы демонстрируете хорошие показатели в ходе обучения и выполняете все домашние задания, проходите все тесты, успешно разрабатываете и защищаете свой курсовой проект, вам по завершении учебы предложат стажировку в этой компании. Это отличный вариант, поскольку вам дают актуальные знания, не учат лишнему и при этом вы обогащаетесь опытом. Единственный нюанс - чтобы попасть на такие курсы, необходимо пройти предварительное тестирование и последующее собеседование (техническое либо нетехническое). То есть, этот вариант предусматривает априорное владение изучаемыми на курсе технологиями на определенном уровне.
Знакомства, они же связи (^^). За подробностями обращайтесь к вашим друзьям и знакомым.
Какие личные качества должны присутствовать у будущего программиста?
Стрессоустойчивость.
Работа программистов связана с дедлайнами - конечными сроками, в которые необходимо выполнить ту или иную задачу. Иногда могут возникать ситуации, когда не все идет по плану - вы замечаете какие-то неполадки в вашем коде либо попросту не успеваете выполнить свою часть работы. В таких случаях стрессоустойчивость позволяет вам сохранять спокойствие и не бросаться в панику, подходя к решению проблем рационально и с холодным умом.
Коммуникабельность и умение работать в команде.
В сегодняшних реалиях никто не занимается разработкой коммерческого ПО в одиночку. Хороший программный продукт требует команды разработчиков с отлаженным механизмом взаимодействия внутри ее. Каждый член коллектива - это как шестеренка в механических часах, без нормального функционирования которой останавливается весь механизм. Необходимо уметь перенимать опыт коллег и обмениваться им с другими, делиться своим мнением, обсуждать различные производственные моменты и просто быть со всеми на короткой ноге. Здоровая атмосфера в коллективе порождает хороший конечный продукт. Более того, навыки коммуникабельности вам помогут не только на работе, но и во всех других сферах жизнедеятельности.
Умение всегда учиться
Мир имеет высокую динамику развития, и такие люди, как программисты, очень хорошо ощущают перемены в IT и зачастую сами их порождают. Возникновение новых технологий, концепций и подходов к разработке ПО, различные обновления спецификаций языков программирования - все это и даже больше заставляет программистов постоянно учиться и обновлять свои знания.
Математическое мышление и аналитический склад ума
Мы уже упоминали о мат. мышлении в разделе “Надо ли знать математику?”. Оно помогает быстрее и эффективнее решать программистские задачи. Аналитический склад ума позволяет смотреть на проблемы со всех ракурсов, выцепливая самые рациональные подходы. Без этих качеств программисту не обойтись. Да и по жизни такой способ восприятия и обработки информации явно будет не лишним.
Упорство
Работа программистов очень сильно привязана к моральной выносливости. Не все решения приходят в голову сразу и не все задачи имеют очевидные ответы. В такие моменты очень важно не опускать руки. Комбинируйте эту пассивную способность с другими - обращайтесь за помощью к коллегам, абстрагируйтесь от текущей задачи, попробуйте проанализировать все возможные пути подступа к решению. Главное - не отступать и не сдаваться.
Усидчивость и внимательность
В данном пункте обойдемся без комментариев.
Сколько денег можно получать, работая программистом?
Это зависит от опыта работы на позиции, а также от набора технологий, которые вы знаете и применяете на практике. Актуальную зарплату программистов можно узнать на сайте jobs.dou.ua (Украина), jobs.dev.by (Беларусь), itmozg.ru (Украина, Россия, Беларусь, Казахстан) или на Stack Overflow (все страны).
Насколько важно знать английский язык?
Английский язык очень важен для программиста. Большинство материалов, документаций и просто хороших советов находится на англоязычных ресурсах. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно. Однако если вы планируете самостоятельно вести переговоры и переписку с иностранным заказчиком, либо находитесь в интернациональной команде, ваш уровень английского должен быть выше.
Итоги
Мы разобрали самые популярные вопросы, которыми задаются новички в программировании, и постарались сделать ответы максимально развернутыми, чтобы вы понимали, в каком направлении вам следует двигаться дальше. Надеемся, статья была полезной для вас. Пишите в комментариях свое мнение и задавайте интересующие вас вопросы!
Будьте здоровы и не останавливайтесь на пути к вашим целям!
Выбирайте ITVDN!
10 крутих англомовних подкастів для програмістів
Автор: EnglishDom
80% всей информации в интернете, которая хоть немного касается программирования, написана на английском. И самые свежие новости и тренды всегда сначала выходят на английском, а уже потом переводятся на остальные языки.
Хотите всегда быть в курсе? Онлайн-школа английского языка EnglishDom собрала для вас топ-10 англоязычных подкастов для программистов. Максимум полезной информации, интересные темы и обсуждение нюансов и секретов, о которых многие не знают.
Итак, не будем долго рассусоливать. Поехали!
Code Newbie
Частота публикаций: 1 эпизод в неделю
Запущен в 2014 году
Требуемый уровень английского: advanced
Замечательный подкаст для тех, кто интересуется программированием, но не знает, с чего начать. В этом подкасте большое количество интервью с различными известными программистами и их историями успеха. Подкаст больше общеобразовательный, чем узконаправленный. Его будет интересно послушать и тем, кто просто интересуется, но не собирается заниматься программированием профессионально.
Каждый эпизод знакомит новичка с разными особенностями разработки и анализа данных. Здесь вы найдете огромное количество советов, которые помогут определиться со сферами дальнейшего изучения языков программирования.
Правда, английский здесь довольно сложный. Интервью дают носители языка, которые говорят быстро и не всегда внятно. Так что придется напрячься, чтобы понять абсолютно все.
Software Engineering Daily
Частота публикаций: 1 эпизод в день
Запущен в 2015 году
Требуемый уровень английского: intermediate
Просто must have для разработчиков программного обеспечения. Здесь просто огромное количество полезной информации как для новичков, так и для Senior-разработчиков.
В среднем подкасты длятся полчаса-час и очень детально раскрывают один или несколько нюансов разработки. Кроме подкастов на сайте есть большое количество специализированных статей.
Английский у лекторов почти сценический. Фразы проговариваются очень четко, темп вполне нормальный. Есть, конечно, большое количество специфической лексики, но даже для Junior’ов все вполне понятно.
Talk Python To Me
Частота публикаций: 1 эпизод в неделю
Запущен в 2015 году
Требуемый уровень английского: upper-intermediate
Если вы изучаете Python, то этот подкаст снабдит вас огромным количеством полезной информации.
Здесь вы узнаете, как правильно изучать Python, чтобы не упустить ничего важного, как использовать все нюансы архитектуры. Это огромная база знаний с более чем 260 часами записей на тему Python. Особенно рекомендуем подкаст разработчикам с уровнем Middle.
По лексике английского никаких сложностей, но нужно привыкнуть к речи лекторов. Они говорят довольно бегло, так что здесь потребуется высокий навык восприятия речи на слух.
The Cynical Developer
Частота публикаций: 2 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: advanced
«Циничный разработчик» — это отличный подкаст, где о разработке рассказывают с юмором и иронией.
Он будет полезен не только кодерам, но также менеджерам проектов и тимлидам. Очень много информации о комплексном процессе разработки, ведению проектов, работе в команде. Также авторы рассказывают о популярных тенденциях и трендах в разработке.
Что касается английского, то здесь очень беглый язык. Некоторые слова и фразы произносятся слитно, редуцируются отдельные звуки, темп речи очень высокий. Полезной информации просто куча, но чтобы ее получить, нужен уровень английского не ниже advanced.
Coding Blocks
Частота публикаций: 2 эпизода в месяц
Запущен в 2013 году
Требуемый уровень английского: intermediate-advanced
Еще один хороший подкаст для разработчиков ПО. Широченный архив полезных материалов буквально по всем темам: от анализа big data до всех тонкостей разработки приложений на iOS и Android.
Также есть подкасты на темы личной эффективности программиста, обзоры полезных каналов, конференций и материалов для обучения. Очень удобная система тегов, по которой можно найти все эпизоды на интересующую вас тему.
Английский здесь несложный, но все зависит от конкретного лектора. Одни говорят предельно понятно, а другие — бегло и смазано. Поэтому нужно смотреть по каждому конкретному эпизоду.
Front End Happy Hour
Частота публикаций: 3 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: intermediate
А вот и полезности для фронтенд-разработчиков подъехали. Авторы обсуждают новые инструменты, полезные для верстальщика, делятся новыми библиотеками, рассматривают распространенные проблемы и их решения.
Тонны информации для веб-разработчиков. Кстати, недавно они отпраздновали свой 100-й выпуск, с чем их и поздравляем.
Речь авторов довольно быстрая, но у них очень четкая артикуляция, поэтому в целом подкаст воспринимается очень хорошо.
Test and Code
Частота публикаций: 1 эпизод в неделю
Запущен в 2015 году
Требуемый уровень английского: upper-intermediate
Авторы цепляют большое количество тем, среди которых тестирование, разработка программного обеспечения, программирование на Python и много связанных вопросов и проблем. Базы данных, автоматизация, постоянная интеграция, пирамида тестирования, TDD — и это только небольшая часть информации, которую вы сможете получить.
Очень годный подкаст, который особенно хорошо зайдет Python-разработчикам. Но иногда бывает ужасный звук, который жутко мешает восприятию. Лексика английского довольно специализирована, поэтому для абсолютных новичков не подойдет.
Learn to Code With Me
Частота публикаций: 2 эпизода в месяц
Запущен в 2016 году
Требуемый уровень английского: intermediate
Еще один подкаст для новичков. Авторы канала реально позаботились о них, потому что здесь собрана уйма действительно полезных материалов для Junior’ов в разных отраслях программирования.
Будет очень полезным для самоучек, которые изучают программирование или веб-дизайн самостоятельно.
Язык подкаста довольно понятный, но самое главное — вместе с каждым выпуском есть ключевые моменты в текстовом формате, которые можно проработать после или прямо во время прослушивания. Так можно ознакомиться с основной лексикой и терминологией.
Fragmented
Частота публикаций: 1 эпизод в день
Запущен в 2015 году
Требуемый уровень английского: intermediate
Отличный подкаст для разработчиков мобильных приложений на Android, в котором обсуждают возможности и особенности самой платформы, ее инструментов, паттернов и практик, с помощью которых можно превратить хорошее приложение в идеальное.
Авторы сами активно занимаются разработкой приложений, поэтому обсуждают только те моменты, которые успели оценить на практике.
Большинство лекторов говорят с акцентом, что усложняет понимание материала. НО лексика вполне понятная и если привыкнуть к акцентам, можно почерпнуть много полезного.
Soft Skills Engineering
Частота публикаций: 1 эпизод в неделю
Запущен в 2016 году
Требуемый уровень английского: intermediate
Этот подкаст больше не про разработку или отдельные инструменты программиста. В нем рассказывают, как развиваться, чтобы быть грамотным специалистом. Тут много полезной информации про методики обучения программированию, организацию времени и рабочего пространства.
Рекомендуем этот подкаст всем разработчикам, вне зависимости от сферы и уровня знаний.
Английский подкаста просто отличный. Несложный, вполне себе понятный и хорошо артикулированный. Так что можно его попробовать понять даже с уровнем pre-intermediate, но лучше все же intermediate.
Конечно, еще есть большое количество полезных подкастов, которые мы здесь не упомянули. Выбирайте, какие нравятся вам больше всего, и слушайте с удовольствием. Учите английский вместе с EnglishDom и пусть код всегда будет идеальным.
Онлайн навчання програмуванню: підводні камені та поради
Автор: Влад Сверчков
Двадцать первый век знаменует “бум” информационных технологий. Научно-технические достижения за последние двадцать лет достигли значительных высот и позволили человечеству выйти на новый уровень жизни. Прогресс не обошел стороной и сферу образования - с развитием персональных компьютеров, сети Интернет и других приспособлений обработки информации практически у каждого человека появилась возможность обучаться не выходя из дома.
Возможность получения знаний в онлайн-режиме - одно из главных достижений нашего века. На сегодняшний день особый спрос на онлайн-обучение прослеживается в связи со сложившимися карантинными условиями. Зачем зря терять время и сидеть сложа руки, если можно извлечь из ситуации максимум выгоды, прокачав свои знания?
Образовательная платформа ITVDN предлагает вам использовать свой потенциал и технологию онлайн-обучения, чтобы сделать первый шаг навстречу одной из наиболее востребованных профессий нашего времени - профессии программиста.
Возможно ли стать программистом, обучаясь онлайн?
Конечно! Просторы интернета полны различных образовательных ресурсов. Если рассматривать англоязычные платформы с доступом к IT-курсам, стоит отметить:
MIT OpenCourseWare - онлайн-курсы от Массачусетского института технологий - одного из самых престижных технических учебных заведений мира;
edX - платформа, которая содержит курсы от более чем 140 ведущих ВУЗов мира;
Coursera - проект для публикации образовательных материалов, основанный профессорами математики Стэнфордского университета;
Pluralsight - онлайн-платформа с большим количеством всевозможных видео курсов.
Если говорить о русскоязычных онлайн-ресурсах:
Hexlet - проект, содержащий программы по обучению 6 IT-специальностям;
JavaRush - онлайн-курс по программированию на Java;
ITVDN - образовательная онлайн-платформа, содержащая полноценные программы обучения по 12 самым популярным специальностям. В каталоге ITVDN свыше 180 видео курсов по различным языкам программирования и информационным технологиям;
другие онлайн-ресурсы.
Наиболее качественными являются англоязычные курсы, так как английский - интернациональный язык и преимущественное количество форумов с полезной информацией ведется именно на нем.
Если ваше владение языком Туманного Альбиона не является столь продвинутым и вы предпочитаете русскоязычные платформы, мы советуем вам ITVDN. Это один из лидирующих образовательных IT-ресурсов в СНГ, который начал свою работу в 2014-м году и на данный момент имеет в своем распоряжении огромную базу видео уроков, которая помогает всем, кто изучает программирование и информационные технологии, обучаться и становиться профессионалами выбранной IT-специальности.
Какой язык программирования учить?
Зависит от IT-сферы, в которой вы хотите себя реализовать. Если это FrontEnd разработка (создание внешнего вида веб-сайта), то не обойтись без JavaScript + языки верстки HTML и CSS. Если BackEnd (создание всего, что находится “под капотом” сайта), то здесь выбор шире - PHP, Java, C#, Python, Ruby, Go, JavaScript (Node.js). В мире машинного обучения очень важен Python и его библиотеки. Компьютерные игры крупных масштабов и с высокой производительностью создают на С++, рангом поменьше - на движке Unity.
Это очень поверхностные описания того, какие языки надо учить для овладения определенной IT-специальностью, поскольку каждая профессия в IT имеет целый перечень требуемых к изучению технологий. С полным списком требований к некоторым профессиям вы можете ознакомиться в наших статьях, перейдя по ссылке.
Как учиться онлайн самостоятельно? Как правильно спланировать свое обучение?
Планировка - очень важный и ответственный момент в онлайн-обучении. Вы находитесь дома под воздействием множества отвлекающих факторов - будь то ваши сожители, домашний питомец, сосед с перфоратором, вкусно пахнущая еда из кухни, открытый ютуб или интересная компьютерная игра. Важно не только избавиться от всех помех, но и следовать составленному под себя учебному плану.
После определения желаемой IT-профессии и выбора образовательной онлайн-платформы необходимо запастись мотивацией. Но одной только мотивации будет мало, причем она быстро иссякает. Следует составить расписание, в котором будет органично сочетаться теория, практика, выполнение домашнего задания и тестирование (проверка знаний). Мы предлагаем следующее:
Прежде всего выделите время на онлайн-учебу и организуйте регулярные занятия. К примеру, с 19:00 до 21:00 каждый день вы занимаетесь онлайн-обучением и ничем иным (небольшие перерывы допускаются, естественно). Работа короткими интенсивными интервалами улучшит общую продуктивность урока. Учебный процесс не должен прерываться готовкой пищи, выгулом собаки, разговорами по мессенджеру и прочими делами, для которых также находится место в вашей жизни.
Все образовательные интернет-ресурсы используют схожую тактику: вначале вам дается теория, затем предлагается решить несколько практических задач, а для закрепления знаний - домашнее задания по теме. Придерживайтесь ее. Распределите ваше учебное время на ознакомление и изучение материала, а также для последующей практики (включая прохождение тестов). Домашнее задание лучше оставить на следующий день либо сделать длительный перерыв перед ним, чтобы дать вашему мозгу спокойно обработать новую информацию.
Проходите тесты, предусмотренные выбранной образовательной платформой. Помимо проверки усвоения материала тестирование способствует развитию навыков эффективного написания кода.
На ITVDN для усовершенствования навыков создания кода был разработан специальный интерактивный тренажер, а для подтверждения знаний и получения соответствующего сертификата мы предлагаем testprovider.com.
Разрабатывайте собственный интересный проект в специально отведенные дни: придумайте себе задачу (либо поищите в интернете) и занимайтесь ее постепенной реализацией, используя изученные темы - так вы и освежите знания, и попрактикуетесь в написании кода. Если выйдет неплохой проект, добавите его в свое портфолио.
Используйте гугл и форумы для программистов. Профессия программиста предусматривает широкое использование сети Интернет в процессе поиска решения возникающих проблем. Вам очень пригодятся такие сайты как stackoverflow.ru, quora.com и прочие, где вы найдете ответы на программистские “как?” и “почему?”.
Какие подводные камни у онлайн-обучения?
Потеря мотивации. Изучение программирования - это длительный и кропотливый процесс. Именно на мотивацию делают ставку большинство новичков и именно поэтому большинство очень быстро “выгорают” и прекращают обучение. Регулярные занятия, выполнение домашних заданий, закрепление новых тем через тестирование, разработка собственного проекта, участие в различных событиях, касающихся выбранной IT-профессии (хакатоны, тренинги и прочие активности) создадут благоприятные условия для подпитывания ваших сил и будут давать вам уверенность для продвижения вперед.
Отсутствие ментора и контроля. В среде онлайн-обучения отсутствует жесткий контроль, поскольку вы сам себе хозяин. Вы можете поддаваться лени, ничего не учить, не практиковаться и вовсе “забросить” учебу. Это главный камень преткновения в интернет-обучении. Над вами нет никого, перед кем вы бы несли ответственность за свои результаты и кто вами курировал бы.
Сколько стоит онлайн-обучение?
Есть три варианта онлайн-обучения:
С использованием сервиса YouTube и документаций, которые свободно распространяются в интернете. Выбрав эту опцию, вы будете обучаться бесплатно. Но эффективность данного варианта оставляет желать лучшего.
Приобретение видео курсов. Здесь вам придется потратить небольшую сумму денег. Взамен вы получите доступ к видео базе, над которой трудились профессионалы, домашним заданиям, дополнительным обучающим материалам, конспектам по рассмотренным темам, онлайн-тестам.
Онлайн-обучение в мини группе с тренером. Данный вариант самый дорогостоящий, но и эффективность его максимально высока, так как вы получаете возможность дистанционно общаться с ментором и небольшой группой учащихся через специальные программы (Skype, Zoom и т. д.), задавать вопросы и получать развернутые ответы, просматривать видеозаписи уроков. Проблема с мотивацией также решена - вы вложили свои деньги и над вами есть куратор, который следит за вашими успехами и выполнением домашних заданий.
Таким образом, если вы не хотите тратить много денег либо и вовсе желаете освоить программирование бесплатно, подумайте над выбором одного из первых двух вариантов. Если же вам нужно больше общения с ментором, обратите внимание на третью опцию. На ITVDN она представлена новым форматом обучения - Live Online. Занятия проходят в небольшой группе в форме регулярных онлайн встреч, на которых объясняется новый материал, обсуждаются нюансы выполнения практических заданий, есть проверка ДЗ и чат для общения с одногруппниками, а также доступ ко всем видео курсам ITVDN по выбранной специальности. Опция онлайн-обучения с тренером доступна на ITVDN по 3-м специальностям: .NET Developer, FrontEnd Developer и Java Developer. Параллельно процессу обучения вы также создаете собственный курсовой проект, который украсит ваше портфолио и станет неплохим подспорьем во время дальнейшего трудоустройства.
Надеемся, что наши советы помогли вам составить целостную картину онлайн-обучения.
Желаем вам здоровья и успехов в прокачке знаний!
Оставайтесь на ITVDN!
Що повинен знати Java розробник у 2020 році?
Автор: Влад Сверчков
Язык программирования Java и ООП
Алгоритмы и структуры данных
Шаблоны проектирования
Язык запросов SQL
Технологии JDBC & Hibernate
Java Enterprise Edition и фреймворк Spring
MVC
SOLID
Модульное тестирование
Git & GitHub
Scrum
Английский язык
Выводы
Мы вновь приветствуем вас, друзья!
На этот раз в нашей рубрике “Что должен знать разработчик...” под прицелом оказался такой многофункциональный язык программирования, как Java. В современном IT-рынке область веб-разработки является очень популярной, поэтому сегодня вы узнаете, каким стеком технологий должен обладать потенциальный соискатель вакансии Java веб-разработчика. Не будем медлить - начинаем!
Язык программирования Java (“Джава”)
Опираясь на данные Stack Overflow Developer Survey (около 90 000 опрошенных респондентов), можно сказать, что язык Java входит в пятерку самых популярных. Это универсальный объектно-ориентированный язык программирования, который используется в создании различного информационного продукта:
веб-приложений (серверной части);
мобильных приложений под Android;
облачных хранилищ данных;
настольных приложений;
компьютерных игр;
программного обеспечения для банковских систем и т. д.
Java был создан компанией Sun Microsystems в 1995 году. Он достаточно быстро завоевал популярность среди программистов и стал использоваться в создании клиентских приложений и серверного программного обеспечения. Java-приложения транслируются в специальный байт-код, выполняемый виртуальной машиной JVM (Java Virtual Machine), которая может быть установлена практически на любое устройство. Это делает программы, разработанные на Java, кроссплатформенными.
Что конкретно необходимо знать? Языком Java следует владеть на достаточно хорошем уровне, поэтому и список необходимых для освоения тем будет немаленьким.
Среди обязательных базовых разделов: машинная математика, переменные и типы данных, условные конструкции, логические операции, циклические конструкции, методы, рекурсия, массивы, объекты и классы, списки, обработка исключений, суперкласс Object, обобщения (Generics), работа с памятью.
Далее идут более продвинутые темы: коллекции, карты (Map), основы вывода (IO, NIO), методы работы со строками (String, StringBuilder, StringBuffer), регулярные выражения, Date API, рефлексия, ClassLoader, аннотации, Javadoc, VarArgs, сериализация, клонирование, потоки и интерфейс Runnable, лямбда выражения, Stream API.
Стоит знать, что совокупность вышеперечисленных разделов Java + ООП парадигмы в среде джавистов именуется Java Core (от англ. “core” - ядро).
Дабы закрепить знания и не лишиться полученных навыков написания кода мы советуем вам как можно чаще практиковаться и решать прикладные задачки из интернета либо составленные самолично.
Также советуем использовать онлайн-тренажеры, например, интерактивный тренажер от ITVDN. С его помощью вы сможете потренироваться в кодинге на Java и проверить свои знания.
Объектно-ориентированное программирование (ООП)
Объектно-ориентированное программирование - это методология разработки программного обеспечения, в основе которой лежат четыре главных принципа: абстракция, инкапсуляция, наследование и полиморфизм. Поскольку Java является объектно-ориентированным языком, необходимость изучения и полного понимания ООП парадигм обязательно. Однако, есть и приятная новость: все принципы быстро и легко усваиваются во время изучения Java.
Алгоритмы и структуры данных
Понимание алгоритмов и структур данных - обязательное требование для любого программиста. Это необходимый фундамент, благодаря которому разработчик обучается написанию хорошего исходного кода путем подбора оптимальных формы представления информации и последовательности действий.
Изучив структуры данных, вы сможете управлять сложностью своих программ, делая их более доступными для понимания, а также разрабатывать высокопроизводительные приложения, которые будут рациональнее работать с памятью.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач на Java.
Шаблоны проектирования
Паттерны (они же шаблоны) представляют собой архитектурные конструкции, которые описывают типичные способы решения распространенных задач, возникающих в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако виртуозно ими владеть должен архитектор ПО, а не рядовой разработчик. Обычно в одном проекте используется небольшое количество паттернов, поэтому вам достаточно знать лишь самые популярные из них.
SQL
Structured Query Language - декларативный язык структурированных запросов, который создан для взаимодействия с базами данных. Особенность SQL состоит в том, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены.
Каждый программный продукт подразумевает работу с данными, будь то обыкновенная процедура приема данных от сервера (например, скачивание файлов) или внесение в БД информации о новом зарегистрированном пользователе - умение работать с данными одинаково важно во всех сферах разработки, разве что за исключением FrontEnd.
Также изучите одну из систем управления базами данных (СУБД). Это может быть MySQL либо PostgreSQL. Их главное отличие от SQL в том, что SQL - это язык запросов, а MySQL/PostgreSQL - реализации СУБД, имеющие свой диалект языка SQL.
XML
Extensible Markup Language - расширяемый язык разметки, с помощью которого можно структурировать данные для удобства их дальнейшей обработки. Прежде всего нацелен на использование в интернет среде и являет собой формат хранения и передачи данных на сервер. XML хорошо масштабируем, сочетает в себе простой и удобный синтаксис, а также базируется на кодировках Юникод для представления содержания документов.
JDBC & Hibernate
Java Database Connectivity - это стандарт взаимодействия Java-приложений с различными СУБД.
Простыми словами, JDBC имеет единый интерфейс, позволяющий любой Java-программе работать с любой базой данных одинаковыми методами. Для реализации этого универсального взаимодействия применяются специальные драйвера (не те, которые мы привыкли устанавливать на наши компьютеры). Как результат - программа никак не меняется от переключения с одной базы данных на другую, что дает JDBC весомую значимость в Java разработке.
Hibernate - это ORM (от англ. “Object-Relational Mapping” - объектно-реляционное отображение) фреймворк, главная задача которого отображение объектно-ориентированной модели данных в традиционные реляционные базы данных, то есть, связывание ООП с реляционной БД. Представляет собой программное обеспечение с открытым исходным кодом.
Java EE / Spring
Java Enterprise Edition - это платформа для создания корпоративных решений с помощью языка Java. Чаще всего на ней разрабатывают различные веб-приложения и веб-сервисы. Java EE включает в себя множество спецификаций (JSP, EJB, CDI, JPA, Servlet и прочие), главная задача которых состоит в обеспечении масштабируемости приложений и целостности данных во время работы системы.
Spring - популярный фреймворк с открытым исходным кодом, который используют для создания веб-приложений на Java. Он дает Java-разработчикам большую свободу в проектировании приложений, предоставляя средства решения проблем корпоративного масштаба. Является альтернативой Java EE в создании веб-сервисов. Spring имеет обширную документацию и достаточно прост в использовании.
Максимальной популярностью на данный момент пользуется именно Spring. Его лучше всего выбирать при создании небольших приложений или программ с микросервисной архитектурой. Java EE больше подходит для разработки легко масштабируемых монолитных приложений.
MVC (Model-View-Controller)
Архитектурный шаблон, который предусматривает разделение приложения на три компонента: Модель, Представление, Контроллер, что способствует реализации концепции распределения и закрепления ответственности за каждым компонентом. Данный подход позволяет упростить и ускорить разработку проектов, благодаря чему паттерн MVC широко применяется множеством разработчиков. Java EE и Spring имеют специальные MVC-надстройки, которые обеспечивают удобное использование данного шаблона.
Scala (опционально)
Строго типизированный мультипарадигмальный язык программирования. Одной из его особенностей является комбинирование стандартного ООП подхода с функциональным программированием. Scala, как правило, применяется в мощных системах с большим объемом данных и внушительным количеством пользователей. Данный язык программирования подходит для машинного обучения и анализа данных.
Scala не является обязательной к изучению для Java программистов. Однако, ее знание будет огромным плюсом на собеседовании. В дальнейшем вы сможете переквалифицироваться в полноценного Scala разработчика, имея необходимый бэкграунд, полученный во время Java разработки.
SOLID
Акроним, который обозначает пять основных принципов объектно-ориентированного программирования. Следование стандарту SOLID позволяет создавать легко поддерживаемые и масштабируемые проекты с удобной архитектурой и минимальным количеством “запахов кода”. Также знание данных принципов показывает грамотность разработчика, уровень его профессионализма. Это безусловно сыграет вам на руку на собеседовании.
Unit тестирование
Тот самый тип тестирования, который берет на себя не тестировщик, а сам программист. Идея - в написании тестов под каждую нетривиальную функцию либо метод. Цель модульного тестирования — изолировать отдельные части программы и показать, что по отдельности они являются работоспособными. Таким образом происходит проверка кода на регрессию и соответствующее обнаружение ошибок.
Git & GitHub
Git - наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. В роли главного конкурента Git выступает SVN (централизованная система, в отличие от Git).
Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах.
Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы.
Scrum
Методология ведения разработки программного обеспечения, которая относится к семейству гибких (Agile). Исповедует командный подход к созданию ПО, короткие итерации, частые выпуски новых версий продукта, учет изменений и непрерывное улучшение в процессе работы. Scrum применяется не только в IT, но и в производстве, маркетинге, консалтинге и прочих сферах.
Множество команд разработки ПО успешно применяют данную методологию, поэтому ее важность сложно переоценить.
Английский язык
Знание английского языка - естественное требование для каждого разработчика в IT, поскольку большинство новых сведений о технологиях, курсы, учебные и справочные материалы появляются в первую очередь на английском. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно, однако если вы планируете самостоятельно вести переговоры и переписку с иностранным заказчиком, ваш уровень должен быть выше.
Выводы
Таким образом мы с вами рассмотрели основные технологии, которыми должен владеть кандидат, стремящийся занять должность Java разработчика. Сам Java уже много лет прочно удерживает высокие позиции во всевозможных рейтингах языков программирования и покидать свой пьедестал не собирается, о чем свидетельствуют следующие статистики: dou.ua (Украина), tiobe.com (Tiobe - нидерландская компания, которая занимается оценкой качества программного обеспечения), вышеупомянутый Stack Overflow Developer Survey и другие информационные ресурсы.
Несмотря на то, что в статье мы была затронута именно путь веб-разработчика на Java, данный язык успешно применяется в разработке Android-приложений (Kotlin и Objective-C), разработке объемных программных систем; также на нем можно писать настольные игры (хотя он не имеет таких инструментов создания игр, как у платформы .NET).
Java достаточно универсален и способен на практически все что угодно в руках умелого программиста. А таковым вы можете стать с помощью наших курсов, направленных на интенсивное изучение языка Java. Программа обучения предлагает 23 видео курса общей продолжительностью более 160 часов. Также ITVDN предоставляет интерактивный тренажер, с помощью которого можно отточить навыки написания кода на различных языках, в том числе и на Java.
Если вам понравилась эта статья, поделитесь информацией с теми, кому она может быть интересна. Пишите в комментариях, на какие еще вопросы, связанные с выбором специальности и планированием обучения вы хотите получить ответы. Мы постараемся ответить на них в наших новых обзорах.
Що повинен знати Python розробник у 2020 році
Автор: Влад Сверчков
Общие знания, которые нужны каждому Python разработчику
Что должен знать Python Developer, работающий в сфере Data Science
Python BackEnd Developer
Python Developer в сфере DevOps
Automation QA Engineer (Python)
Desktop, Mobile, Game Python Developer
Итоги
Добрый день, дорогие читатели блога ITVDN! Предлагаем вашему вниманию новую публикацию в рубрике “Что должен знать разработчик...”, в которой мы пишем о самых популярных IT-профессиях. Ранее уже были опубликованы обзоры по FrontEnd и .NET. В этот раз в центре внимания язык Python. В каких сферах он успешно применяется, а в каких буквально незаменим? Какими знаниями нужно обладать, чтобы стать, к примеру, Python BackEnd разработчиком? Все это вы узнаете в нашей статье. Приятного чтения!
В последние годы язык программирования Python стремительно набирает популярность. По данным Stack Overflow Developer Survey 2019, в котором приняли участие более 87 тысяч IT специалистов из разных стран, Python в 2019 году опередил даже таких постоянных и несомненных лидеров как Java, С# и С++. Сейчас он широко используется в Data Science (машинное обучение, анализ данных, визуализация), разработке встроенного программного обеспечения и в реализации серверной части веб-приложений. Также при помощи Python можно создавать игры, десктопные и мобильные приложения, писать тесты для ПО, а также упрощать администрирование ОС.
Как видите, сферы применения довольно обширны. Мы постараемся затронуть самые популярные, в которых Python используется в качестве основного средства программирования.
Начнем с технологий, которые должен знать любой Python-разработчик вне зависимости от специализации.
Python
Многие сходятся во мнении, что язык программирования Python - один из самых легких для изучения, его часто рекомендуют в качестве первого языка начинающим программистам. В то же время это высокоуровневый язык программирования общего назначения, с большим потенциалом повышения производительности программиста, скорости разработки и читаемости кода. Каждый Python-девелопер должен владеть таким набором знаний:
Синтаксис языка Python: типы данных, строки и символы, операции с целыми и вещественными числами, отступы, условные и циклические конструкции, функции, списки, словари, классы, файловый ввод-вывод, логические операции и операции сравнения.
Популярные библиотеки и фреймворки. Этот пункт зависит от выбранного IT-направления. К примеру, если вы планируете себя реализовать в веб-разработке, отличным выбором станет библиотека Requests, которая облегчит процессы составления HTTP-запросов, также будут полезны фреймворки Django и Flask. Если же вас увлекает машинное обучение, то Theano, TensorFlow, Keras и другие библиотеки помогут с построением и тренировкой нейронных сетей.
IDE и редактором кода. Проекты лучше создавать в интегрированной среде разработки (IDE) или в редакторе кода. Это позволяет сделать написание кода максимально удобным: подсветка синтаксиса, автодополнение, инструменты сборки, возможность отладки код и прочее. Самыми популярными платформами являются PyCharm, WingWare IDE, Komodo.
Открытым остается и вопрос, какую версию Python стоит изучать: 2.x либо 3.х? Согласно информации из официального источника разработчиков python.org, в 2020 году прекращается поддержка Python 2.7. Соответственно, стоит сконцентрировать усилия на изучении именно версии 3.х.
Разработчик должен иметь глубокие знания языка Python, понимать и уметь применять на практике принципы объектно-ориентированного программирования (ООП).
Английский язык
Знание английского языка - естественное требование для каждого разработчика в IT, поскольку большинство новых сведений о технологиях, курсы, учебные и справочные материалы появляются в первую очередь на английском. Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно, однако если вы планируете самостоятельно вести переговоры и переписку с иностранным заказчиком, ваш уровень должен быть выше.
Git & GitHub
Git - наиболее популярная система контроля версий, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии.
Помимо этого, стоит уметь работать с сервисом онлайн-хостинга проектов, использующих систему контроля версий. В данном случае это GitHub. В тандеме с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах.
Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы.
Алгоритмы и структуры данных
Понимание алгоритмов и структур данных является очень важным для любого программиста. Исключением могут быть разве что FrontEnd разработчики.
Данные используются во всех сферах нашей жизни: от банковских счетов и медицинских карт вплоть до списка оплаченных покупок в супермаркете. Знание структур данных поможет вам хранить информацию в упорядоченном виде, что упростит работу с ней. Также это повысит общую производительность ваших программ.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач.
Методологии разработки Agile/Scrum
Методологии разработки - это своеобразные путеводители по процессам эффективной разработки ПО. Их применение помогает организовать максимально продуктивную работу всех участников, которые напрямую или косвенно задействованы в разработке продукта в соответствии с выбранной стратегией.
Agile - семейство гибких методологий разработки программного обеспечения, которое позволяет выпускать продукт небольшими частями, постоянно его дополняя и совершенствуя. При таком подходе технические и бизнес-подразделения работают совместно, ПО постоянно обновляется, обеспечивается быстрое принятие решений и выявление неправильных подходов, приложение проще обслуживать, а качество кода готового продукта более высокое. Agile имеет собственный манифест, который подробно описывает основные принципы, на которых строится гибкая разработка.
Scrum является одной из реализаций agile-подхода. Его используют многие команды, поэтому знание особенностей работы со scrum-моделью для разработчика серверного ПО является востребованным и весьма полезным.
Итак, мы рассмотрели технологии, которыми должны владеть все Python разработчики, не зависимо от прикладной области, в которой они работают. Теперь давайте рассмотрим наиболее популярные специализации, в которых может себя реализовать Python разработчик, а это:
Data Scientist
BackEnd Developer
DevOps Engineer
Automation QA Engineer (Python)
Проанализируем каждое направление, затронув основные технологии. Также расскажем, каким образом Python используется в Desktop, Mobile и Game разработке.
Что должен знать Python Developer, работающий в сфере Data Science
Легкий и лаконичный Python нашел себе широкое применение в такой важной сфере разработки, как Data Science. Почему именно Python? Он прост в изучении и способен в несколько строк кода создать искусственный интеллект, который будет способен к самообучению, либо посчитать матрицу внушительных размеров.
Data Science подразумевает работу с большими объемами данных и включает в себя сбор, анализ, структурирование и дальнейшую визуализацию информации. Каждый специалист данной области занимается:
сбором большого количества неупорядоченных данных и преобразованием их в удобный формат;
решением бизнес-задач с использованием данных;
программированием на Python, R и других языках;
работой со статистикой;
использованием Machine Learning, Deep Learning и текстовой аналитике;
сотрудничеством с IT и бизнесом в равной мере;
изучением современных тенденций, которые могут помочь в разработке, которая ведется на данный момент в компании.
Итак, какими технологиями необходимо владеть, чтобы стать Data Scientist?
Линейная алгебра и математический анализ
Data Science - это как раз та область, в которой без знаний математики ну никак. Работа с колоссальным объемом данных предусматривает в обязательном порядке применение аппарата линейной алгебры. А это матрицы, векторы, линейные уравнения, различные алгоритмы классификации и кластеризации, которые широко используются (подробнее в следующих разделах). Также необходимо знать оптимизацию средствами матанализа.
Статистика
Наука, которая применяет совокупность методов и приемов по сбору, обработке, представлению и анализу числовых данных, чтобы впоследствии на их основании сделать те или иные выводы.
Статистика содержит такие важные разделы, как: выборка, распределение частот, среднее значение, взвешенное среднее значение, медиана, вероятность, распределения вероятностей, тестирование значимости, а также ряд других тем и понятий. В интернете есть множество хороших англоязычных курсов, которые помогут освоить разделы статистики, которые обязательны для специалиста Data Science.
Библиотеки и дополнительные инструменты Python
Для всевозможных математических вычислений используется Python, а точнее - его библиотеки. К примеру, Matplotlib и Seaborn используются при необходимости визуализации данных, NumPy для работы с уже упомянутой линейной алгеброй. Для научных вычислений прибегают к использованию SciPy. Pandas позволяет выполнять быстрый анализ, очистку и подготовку данных из разных источников - Excel, SQL, веб-страницы, файлы CSV. Таким образом, библиотеки Python предоставляют отличный набор для анализа данных и визуализации.
Среди дополнительных инструментов особого внимания заслуживает Jupyter Notebook, который позволяет создавать очень наглядные и информативные аналитические отчеты путем совместного хранения кода, иллюстраций, комментариев, формул и графиков.
Базы данных
Поскольку работа Data Scientist-а плотно связана с обработкой большого количества информации, очевидно, что без баз данных тут не обойтись. Необходимо знать, как извлекать и обрабатывать данные, уметь писать и выполнять сложные запросы.
Существуют реляционные базы данных (так называемые, SQL базы данных) которые используют структурированный язык запросов, и нереляционные (NoSQL), которые предлагают динамическую структуру для определения и обработки данных. К системам управления баз данных (СУБД) первого типа относят MySQL, PostgreSQL, Microsoft SQL Server, Oracle. Ко второму типу - MongoDB, Cassandra, BigTable, Redis, RavenDB и прочие.
Несмотря на широкое распространение NoSQL, специалисты Data Science все же используют SQL технологии, поскольку зачастую работают именно с упорядоченным множеством данных (медицинские карты пациентов, транзакции клиентов и т. д.). Здесь наилучшим выбором станет PostgreSQL/MySQL/SQL Server.
Машинное обучение
Это ответвление искусственного интеллекта, основная идея которого состоит в следующем: компьютер должен не просто использовать заранее написанный алгоритм, а самостоятельно обучаться решению поставленной задачи (например, задачи определения символов по отсканированному изображению текста, опознавания лиц и голосов, подборки видеороликов на YouTube с учетом просмотренных ранее).
Минимальный набор базовых алгоритмов машинного обучения, который необходимо знать: линейная регрессия, логистическая регрессия, SVM (метод опорных векторов), random forest (“случайный лес”), дерево принятия решений, Gradient Boosting, РСА (метод главных компонент), k-means (кластеризация методом k-средних), k-NN (классификация методом k-ближайших соседей), ARIMA (интегрированная модель авторегрессии скользящего среднего).
Говоря о библиотеках Python, которые применяются в машинном обучении, отметим scikit-learn (работа с классическими алгоритмами машинного обучения), TensorFlow и Keras (работа с глубоким обучением, которое направленное на работу с нейронными сетями).
Если подытожить вышеизложенное, вам необходимо знать основные алгоритмы кластеризации, классификации, уметь работать с нейронными сетями, умело использовать указанные библиотеки в ходе решения задач, а также понимать и применять на практике принципы машинного обучения. Затем можно будет переходить к подробному изучению глубокого обучения, искусственного интеллекта и разрабатывать проекты для портфолио.
Что должен знать Python BackEnd Developer
Веб-сервера (Nginx, Apache)
BackEnd разработчику необходимо знать общие принципы работы веб-серверов, а также понимать, как в целом работает интернет и каким образом ваш код взаимодействует с серверами, базами данных и вообще с “внешним миром”.
Веб-сервер - это программное обеспечение либо аппаратное средство, которое работает с целью приема HTTP-запросов, их обработки и последующей выдачи НТТР-ответов. На данный момент их существует множество, однако наибольшее распространение получили Nginx и Apache.
Этим двум веб-серверам посвящено несметное количество статей, которые рассматривают их плюсы и минусы и благодаря которым вы сможете определиться, какой из них лучше всего подходит под решение ваших задач.
Но также отметим, что сами по себе Nginx и Apache способны не только конкурировать, а и эффективно взаимодействовать между собой при правильной конфигурации, создавая мощную, гибкую и высокофункциональную систему с возможностью горизонтального масштабирования.
Базы данных (MySQL, MongoDB)
Серверная сторона программного обеспечения предусматривает активное использование серверов (от англ. “to serve” - служить). Это компьютеры, которые выполняют какую-либо сервисную задачу по приему, обработке и предоставлению информации пользователям.
Для BackEnd разработчика знание серверов и умение работать с ними является настолько же важным, насколько для FrontEnd разработчика - знание триады HTML, CSS и JavaScript.
Работаете со структурированными данными, а среди ваших приоритетов надежность, окупаемость и совместимость со всеми основными ОС? Выбирайте MySQL. Если же вы ориентируетесь на скорость, гибкость, масштабируемость, удобство в управлении СУБД, либо вы просто не можете определить схему для своей БД, вам стоит сфокусироваться на изучении систем управления нереляционными базами данных. Хорошим выбором станет MongoDB благодаря своей распространенности.
Фреймворки Flask/Django
Два данных фреймворка являются самыми популярными в веб-разработке на языке Python. Какому стоит отдать предпочтение?
Flask подойдет тем, кто заинтересован в тонкостях настройки проекта, и кто хочет иметь полноту власти над всеми его компонентами. Также данный фреймворк лучше подходит для создания REST API. Минимализм, максимальный контроль составляющих приложения, свобода в управлении каждым элементом - это визитные карточки Flask.
С другой стороны, если вы ищете набор готовых инструментов, стоит обратить внимание на Django. Он ориентирован больше на стек готовых решений и конечный продукт, нежели на подробную настройку всех компонентов проекта. Если вас интересует разработка и развертывание приложения в кратчайшие сроки, простота в его создании, масштабируемость, поддерживаемость и наличие очень хорошо структурированной и детальной документации по используемому фреймворку, смело выбирайте Django.
Паттерн MVC (Model-View-Controller)
Паттерн MVC достаточно востребован в наше время. Данный шаблон предусматривает разделение приложения на три компонента: Модель, Представление, Контроллер, благодаря чему реализуется концепция разделения и закрепления ответственности за каждым компонентом, что упрощает разработку веб-проектов.
Вспомогательные технологии (Celery, RabbitMQ)
Среди известных технологий, которые облегчают жизнь BackEnd разработчику можно отметить Celery. Это инструмент для управления очередями задач, который применяется для фоновой обработки долго выполняющихся задач, снижая нагрузку на процессор.
Упомянем также и RabbitMQ - менеджер сообщений, который предназначен для передачи данных (так называемых сообщений) между сервисами и упрощающий работу со сложными ресурсоемкими задачами при помощи очередей.
Что должен знать Python Developer для работы в сфере DevOps
Python особо популярен у DevOps специалистов. DevOps - это методология, которая совмещает в себе разработку (Development) и системное администрирование (Operations) с целью увеличения частоты выпуска релизов. Данные специалисты также должны обладать навыками использования облачных технологий и автоматизации инфраструктуры.
DevOps инженеры отдают свое предпочтение Python за его простоту, мощность, надежность, многозадачность, поддержку большого количества специальных пакетов, которые повышают эффективность данного языка программирования и за другие преимущества. Python используют, в основном, вместе с командной оболочкой Bash для упрощения процессов развертывания ПО и автоматизации различных задач системного администрирования (написание скриптов).
Что еще должен уметь DevOps инженер, помимо написания скриптов?
Понимать устройство ОС Linux/Windows.
Знать, как работают компьютерные сети (сетевая модель передачи данных TCP/IP и эталонная модель OSI), понимать инфраструктуру сетей.
Знать основные сетевые протоколы (HTTP, HTTPS, SSH, IP, TCP и другие).
Работать с популярной облачной инфраструктурой AWS.
Применять контейнеризацию (Docker), кластеризацию (Kubernetes), принципы CI/CD (Jenkins), инструменты мониторинга (Zabbix, Nagios), управлять ПО на удаленных серверах (Ansible).
Работать с веб-серверами (например, Nginx и Apache), уметь их настраивать.
Данный стек технологий вполне достаточный для уверенного старта в качестве DevOps инженера.
Что должен знать Automation QA Engineer (Python)
Python также имеет большую популярность в тестировании. Он применяется для написания скриптов, которые автоматизируют процессы проведения тестов. Помимо классических навыков и знаний тестирования необходимо владеть языком Python, разбираться в принципах ООП и также владеть тестовыми фреймворками (в данном случае - PyTest, Robot Framework, unittest и другие).
Desktop, Mobile, Game Python Developer
Менее популярные сферы использования Python. Для разработки настольных приложений можно использовать библиотеку Tkinter и фреймворк PyQt, который позволяет работать с графическим инструментарием, подобным тому, что использует Visual Studio для создания Windows Forms приложений.
Игры на Python также можно создавать - PyGame библиотека в помощь. Однако они будут далеко не уровня ААА. При этом Python успешно используется в таких тяжеловесах гейм-индустрии, как World Of Tanks, Battlefield 2 и EVE Online для запуска скриптовых сцен, реализации пользовательского интерфейса, обработки событий.
Если говорить о мобильных приложениях, то там Python применяется разве что для реализации серверной стороны приложения. К примеру, клиент Instagram для iOS написан на языке Objective-C, а сервер — на Python.
Итоги
Мы рассказали вам об IT-специальностях, в которых Python пользуется наибольшим спросом. Благодаря своей универсальности, кроссплатформенности, простому синтаксису, читабельности и значительному количеству разнообразных библиотек и фреймворков этот язык программирования значительно облегчает работу программистов и тестировщиков, позволяя существенно сократить время написания кода.
Сейчас Python просто незаменим в Data Science из-за своего богатейшего инструментария сбора, анализа, обработки и дальнейшей визуализации данных. DevOps инженеры в несколько строк кода могут с легкостью автоматизировать рутинные и/или масштабные процессы. BackEnd разработчики используют все возможности, которые им предоставляют веб-фреймворки для создания эффективных веб-приложений.
На ITVDN есть подборка видео курсов по языку программирования Python, а также по нескольким самым популярным технологиям, которые должен знать специалист. Комплексная программа обучения состоит из 12 курсов общей продолжительностью более 82 часов. Для формирования практических навыков написания кода мы рекомендуем использовать интерактивные тренажеры по Python.
Если вам понравилась эта статья, поделитесь информацией с теми, кому она может быть интересна. Пишите в комментариях, на какие еще вопросы, связанные с выбором специальности и планированием обучения вы хотите получить ответы. Мы постараемся ответить на них в наших новых обзорах.
Смотрите также:
Знакомство с Python
Как стать Python разработчиком?
Що повинен знати FrontEnd розробник у 2019 році
Автор: Влад Сверчков
Верстка сайтов и веб-программирование привлекают большое количество новичков в мир IT. Это связано с достаточно низким порогом вхождения. Количество желающих стать фронтендщиком с каждым годом увеличивается, вследствии чего растут и требования к кандидатам.
Какие технологии необходимо изучить, чтобы стать FrontEnd разработчиком в 2019 году? Давайте разберемся.
HTML5 & CSS3
HTML5 и CSS3 - это фундаментальные технологии, без знания которых не обойтись любому веб-разработчику. С помощью языка гипертекстовой разметки HTML создается разметка (каркас) каждой интернет-страницы. Затем язык стилей CSS преображает сайт и придает ему привлекательный и эффектный внешний вид.
Также необходимо владеть:
кроссбраузерной адаптивной версткой, чтобы уметь создавать сайты под мобильные устройства, планшеты и широкоформатные экраны и для различных браузеров;
семантической версткой для повышения качества разметки и улучшения поисковой индексации сайта.
Хорошее владение HTML и CSS уже позволяет заниматься версткой сайтов и начать зарабатывать деньги. Именно с этих двух базовых технологий начинается путь к профессии FrontEnd разработчика.
Bootstrap 4
Популярная HTML/CSS платформа для разработки адаптивных веб-приложений, которую применяют при создании сайтов и интерфейсов администраторских панелей. Основные преимущества Bootstrap:
высокая скорость верстки;
кроссбраузерность и кроссплатформенность;
наличие хорошей документации, большого сообщества и огромного количества разнообразных обучающих материалов;
низкий порог вхождения (необходимо знать лишь основы HTML, CSS, JavaScript и jQuery).
JavaScript
Язык программирования, который используется как при разработке клиентской стороны веб-приложения, так и серверной. При помощи JavaScript (сокращенно - JS) можно писать даже десктопные (настольные) и мобильные приложения, используя определенные программные платформы и библиотеки. Этот язык позволяет:
динамически изменять разметку;
осуществлять интерактивное взаимодействие с пользователем;
анимировать изображения;
совершать валидацию форм;
управлять мультимедиа и т. д.
Другими словами, JavaScript “оживляет” страницу и добавляет ей функциональности. Хорошее владение данным языком программирования является обязательным для каждого FrontEnd разработчика.
Сергей Росоха, Software Architect с 11-летним опыта во FrontEnd/JS, отмечает важность изучения алгоритмов и структур данных на JavaScript:
“JavaScript давно уже используется не только для разработки динамических интерфейсов пользователя, но и для написания достаточно сложной бизнес-логики. Поэтому знание алгоритмов и структур данных становится критичным для JS-разработчиков. ” (источник)
JavaScript использует официальный стандарт ECMAScript (сокращенно - ES), который подразумевает определенное формальное описание синтаксиса, базовых объектов и алгоритмов. На данный момент существует множество различных версий ES. Работодатели чаще всего требуют знание ES6.
Однако, вначале необходимо изучить чистый JavaScript и лишь потом вникать в новые стандарты. Как ни крути, а классику надо знать. Благодаря хорошему владению JS можно быстро разобраться в любой версии ES и затем освоить любой фреймворк или библиотеку.
Фреймворки JavaScript
Это инструменты, с помощью которых создаются динамические веб/мобильные/десктопные приложения на языке JavaScript. Они ускоряют разработку веб-приложений и предусматривают четко структурированную организацию кода, повышая его качество и чистоту.
Самыми популярными фреймворками для фронтенд-разработки можно назвать Vue.js, React и Angular. Каждый из них предназначен для решения своего спектра задач и имеет различную степень сложности: Vue.js - самый легкий (но и с наименьшим сообществом), React - средней сложности, Angular - высокой сложности. Стоит сконцентрироваться на глубоком изучении одного фреймворка, но в то же время очень рекомендуется знать особенности и сферу применения всех вышеперечисленных технологий.
Какой фреймворк все же выбрать? Мнения на этот счет расходятся. Инструментарий выбирается индивидуально под проект и трудно предугадать, какие задачи вам нужно будет решать. Мы рекомендуем Angular.
CSS препроцессоры
CSS препроцессор - это программа, которая имеет свой собственный синтаксис, но может сгенерировать из него CSS код. Самыми популярными считаются SASS, Stylus, LESS и PostCSS, однако, наибольшее комьюнити имеет именно SASS. Препроцессоры предназначены для:
ускорения процесса написания кода;
упрощения чтения кода и дальнейшей его поддержки;
минимизации рутинной работы при написании кода.
Для повышения эффективности написания CSS кода вполне достаточным будет изучение лишь одного препроцессора.
Git
Самая популярная распределенная система управления версиями, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Таким образом, если в процессе создания программный продукт стал неправильно функционировать, есть возможность вернуться к предыдущей рабочей версии вместо длительных поисков ошибок.
Также системы управления версиями являются неотъемлемым инструментом командной разработки, который дает возможность девелоперам работать над одним проектом одновременно, сохраняя внесенные изменения. Заодно удобно отслеживать выполнение задач каждым членом команды. Очень важный инструмент для любого IT-разработчика.
jQuery
Небольшая, быстрая и многофункциональная JavaScript-библиотека, для работы с которой необходимо владеть HTML, CSS и JavaScript на базовом уровне. Она призвана упростить программирование на JS. Данная библиотека представляет объемные решения распространенных задач в виде методов, которые вызываются одной строчкой кода.
Несмотря на то, что jQuery теряет популярность, уступая место фреймворкам JS, большое количество сайтов все еще используют эту библиотеку. FrontEnd разработчик, работающий в офисе, не всегда создает новые веб-сайты - необходимо поддерживать и обновлять уже существующие. Тут без знания jQuery никак не обойтись.
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.
Все три технологии являют особую ценность для каждого веб-разработчика и раскрывают организацию работы интернет-приложения.
БЭМ
“Блок, Элемент, Модификатор” - методология, предусматривающая компонентный подход к разработке веб-страниц, в основе которого лежит принцип разделения интерфейса на независимые блоки. Подход БЭМ позволяет повторно использовать существующий код в создании других страниц с сохранением всех его свойств (размеры, шрифт, цвет и т. д.).
Webpack
Мощный сборщик модулей, который позволяет скомпилировать в один файл несколько разных модулей. Используется во время работы над объемными проектами. Успешно применяется как во фронтенд-разработке, так и при создании бэкенд-приложений.
Flex и Grid CSS
Технологии верстки надежных адаптивных веб-страниц, которые позволяют легче создавать динамические сайты и удобнее структурировать их содержимое. Лучше всего Flex-верстку в действии показывает интерактивный сайт flexboxfroggy.com, а Grid-верстку - cssgridgarden.com.
Gulp / Grunt
Системы сборки, которые автоматизируют рутинные задачи разработчиков: минификацию кода, оптимизацию изображений, тестирование, анализ качества кода и прочее. Подходят при разработке небольших проектов.
TypeScript
Кроссплатформенный строго типизированный язык, который является расширением JavaScript. Строгая типизация позволяет уменьшить количество потенциальных ошибок в исходном коде, написанном на TypeScript. Также, этот язык реализует концепции, которые близки объектно-ориентированным языкам, таким как C#, Java и подобным. TypeScript повышает скорость и удобство написания сложных комплексных программ, вследствии чего их становится легче поддерживать, масштабировать и тестировать.
SVG
Язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с различным разрешением, не теряя при этом своего качества, в отличии от традиционных растровых .jpeg, .png и других.
Английский язык
Знание английского языка является одним из основных требований к фронтенд-разработчику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного пользования иностранными ресурсами.
Итоги
FrontEnd разработчик - достаточно универсальный боец в мире веб-разработки. Он должен уметь и верстать, и создавать логику работы клиентской части, и понимать работу серверной части веб-приложения. Для освоения такого обширного инструментария стоит запастись временем, терпением и упорством. Перечисленные в статье средства разработки сайтов также имеют аналоги, поскольку для решения разных задач подходят разные веб-инструменты. Однако мы выбрали самые популярные и эффективные из них.
Если у вас остались вопросы о последовательности и необходимости изучения тех или иных технологий, ответы вы можете найти в видео Как стать FrontEnd разработчиком, в котором подробно рассматриваются основные технологии создания клиентских веб-приложений.
Для тех, кто хочет стать FrontEnd разработчиком, на ITVDN создана комплексная программа обучения, которая включает в себя 35 видео курсов.
Желаем вам успехов в достижении ваших целей!
Оставайтесь с ITVDN!
Створюємо Telegram-бота на Python. Частина 2
Автор: Армен Маїлян
Чат боты — это новый инструмент взаимодействия разработчика с пользователем. Их все чаще внедряют для совершенно различных целей. Новостные ленты, обработка налоговых деклараций, сохранение файлов – боты становятся удобным интерфейсом взаимодействия c различными сервисами.
В прошлой статье мы рассмотрели, как написать простейшего чат-бота на Python и запустить его на своем компьютере. Сегодня мы рассмотрим, как того, написанного нами бота, разместить на внешнем сервере в сети Интернет.
В качестве места размещения мы будем использовать бесплатный сервис Heroku.
Установка и настройка Git
Для дальнейшей работы нам понадобится установить Git, зарегистрироваться на GitHub и создать репозиторий с именем нашего приложения. В нашем случае это MyFirstTestBot.
Скачать версии Git, соответствующие вашей операционной системе, можно по следующим ссылкам для macOS и для Windows. На Linux Git можно установить, выполнив такую команду:
sudo apt-get install git-all
Далее, желательно использовать виртуальную среду. Если она не установлена, при установке Python вы можете ее установить, выполнив команду:
pip install virtualenv
Создадим новую папку для нашего приложения и связи его с GitHub. В нашем случае это папка PythonApplication1 в корне диска C.
Выполним клонирование репозитория. Для этого находясь в нашей папке в консоли выполним команду, введя ссылку на ваш репозиторий:
git clone https://github.com/your_github_account/your_repository_name
После выполнения этой команды в нашей папке с именем PythonApplication1 мы получили еще одну папку – MyFirstTestBot.
В консоли перейдем в корень диска C и выполним команду:
virtualenv PythonApplication1
Если команда не выполняется, и вы на экране консоли видите «"virtualenv" не является внутренней или внешней командой…» - вам следует настроить системную переменную PATH и добавить в нее адреса расположения вашей папки с Python и подпапки со скриптами (в моем случае C:\Users\B\AppData\Local\Programs\Python\Python37-32\Scripts).
Будем в дальнейшем пользоваться консолью Git, которую мы установили ранее:
После выполнения этого скрипта в нашей папке будет такое содержимое:
Поместим скрипт в папку, полученную в результате выполнения команды git clone (папка MyFirstTestBot). Имя файла с нашим скриптом - mftb.py
Теперь запустим наше виртуальное окружение. Перейдем в консоли в папку C:\PythonApplication1 и выполним команду:
source C:\PythonApplication1\Scripts\activate
Если все сработало нормально – в консоли приглашение командной строки будет начинаться с имени нашей папки (PythonApplication1):
Перейдём в нашу папку репозитория и выполним команду:
pip install requests
Создадим список зависимостей для Heroku, введя команду:
pip freeze > requirements.txt
Обратите внимание – в файле requirements.txt указываются требования к серверу Huroku. Там должно быть приблизительно такое содержимое:
Если вы не продолжаете проект из предыдущей статьи, а создали новый – не забудьте указать все зависимости.
В папке MyFirstTestBot создадим файл с именем Procfile без расширения. В теле этого файла пропишем:
web: python mftb.py
В папке MyFirstTestBot создадим также файл с именем __init__.py без содержимого.
Содержимое нашей папки MyFirstTestBot теперь такое:
Отправим в GitHub репозиторий наш набор изменений. Для этого выполним следующую серию команд, с указанием ссылки на ваш репозиторий:
git init
git add .
git commit -m “first commit – ваше сообщение комментарий к коммиту”
git push -u https://github.com/your_github_account/your_repository_name
Код нашего бота теперь загружен на GitHub и нам остается загрузить его на Heroku, где будет хоститься наш бот.
Рекомендуется ознакомиться с основами работы с Heroku по ссылке. По той же ссылке следует скачать установщик интерфейса командной строки (CLI) от Heroku и запустить его.
После установки CLI зарегистрируемся на Heroku через веб браузер.
Далее подключимся к Heroku через консоль используя команду:
heroku login
Нас попросят подключиться через браузер к сайту Heroku и залогиниться там. Нужно будет ввести ваши данные.
Выполним команду для создания приложения в Heroku:
heroku create
Дальнейшие наши команды отправят наш проект на сервер Heroku и укажут необходимую настройку:
git push heroku master
heroku ps:scale web=1
Последняя команда запустит наше приложение на сервере:
heroku open
Теперь наше предложение установлено и запущено на сервере. Мы можем проверить это, пообщавшись с нашим ботом в Telegram:
Как мы видим – все работает. Если по каким-то причинам бот не запустился, нужно ввести в консоли команду:
heroku logs –tail
И смотреть на коды ошибок на сайте.
Резюме.
В прошлой статье мы с вами посмотрели, как можно создать простого Telegram бота. Теперь мы опубликовали его на удаленном сервере. Наш чатбот работает, и мы можем к нему обращаться, используя привычный мессенджер. Конечно, этот вариант бота далек от идеала, но для учебных целей, как первый проект бота, он подойдет.
Попробуйте создать своего бота с другим набором предопределенных ответов. В дальнейшем вы сможете создавать более продвинутых чатботов, работающих с нейросетями и другими элементам искусственного интеллекта.
Чаще всего востребованные библиотеки для работы ботов сейчас пишут на Python. Именно поэтому мы рассмотрели этот простой пример. Для дальнейшего развития вас как квалифицированного Python разработчика мы рекомендуем ознакомиться с курсом подготовки Python-разработчика на портале ITVDN.