Результати пошуку за запитом: видеокурс c*
Міфи про програмування та програмістів
Автор: Влад Сверчков
Миф 1. Без знания математики дверь в программирование закрыта
Миф 2. “Прочту книгу — стану программистом”
Миф 3. Чтобы освоить программирование, необходимо быть очень умным
Миф 4. Необходимо обладать талантом к написанию кода
Миф 5. Программисты — замкнутые и необщительные люди
Миф 6. Программирование — скучное занятие
Миф 7. Программисты всё пишут с нуля
Миф 8. Чтобы устроиться на работу в качестве программиста, необходимо очень долго учиться
Миф 9. После курсов у вас сразу высокая ЗП
Миф 10. “Выучи язык программирования… за 1 час!”
Миф 11. Нельзя освоить программирование самостоятельно
Миф 12. Программисты разбираются во всём, что связано с техникой
Миф 13. Программирование — мужское занятие
Миф 14. Существует самый-самый лучший языка программирования
Миф 15. Разработчики компьютерных игр — самые богатые и счастливые люди в IT
Миф 16. Начинающим айтишникам устроиться на работу невозможно
Миф 17. Пойду в ВУЗ, там меня научат программированию
Миф 18. Программирование имеет возрастные ограничения
Миф 19. Программист — вымирающая профессия: роботы заменят этих специалистов
Итоги
Приветствуем вас, друзья!
При своей относительной молодости программирование успело обзавестись приличным количеством мифов. Время, когда писателей кода считали дикими отшельниками, потихоньку уходит. Однако, и по сегодняшний день многие имеют ложные представления о программировании.
Некоторые считают, что программист - это человек, который взламывает компьютерные системы, банкоматы и совершает прочие несогласованные с буквой закона действия. Другие уверены: программист и компьютер тебе починит, и Windows переустановит, и ТВ-каналы настроит, и новый Фейсбук за ночь напишет, и покажет, как генерировать содержание документа в Ворде.
Более того, некоторые стереотипы настолько прижились, что стали отпугивать новичков в IT и мешать их профессиональному дебюту в данной сфере.
Мы подготовили для вас рейтинг самых главных мифов, которые необходимо развеять в первую очередь. Давайте же приступим к их разрушению.
Миф 1. Без знания математики дверь в программирование закрыта
Одно из самых распространенных заблуждений. Как мы уже упоминали в статьях “Нужно ли программисту высшее образование?” и “FAQ начинающего программиста”, важно не столько знание математики напрямую, сколько само математическое мышление. Сейчас мы все объясним.
Для того, чтобы начать изучение любого популярного языка программирования (ЯП), с головой хватит знаний школьной алгебры. Согласно опросу Stack Overflow Developer Survey 2020, более 50% разработчиков-респондентов написало свою первую строку кода до 16 лет, а в этом возрасте никто еще не изучает высшую математику. Значит, сделать старт в программировании может любой, кто учился/учится в обыкновенной среднестатистической школе.
Это первая ступенька на пути к качественному овладению ЯП. Когда вы начнете более-менее ориентироваться в языке и поднабьете руку на практических задачках, вам необходимо будет изучить смежные с математикой дисциплины: теорию множеств, графов, автоматов, алгоритмов, базовую логику. Это программа первых курсов технических вузов по IT-направлению, однако и самостоятельное ее освоение — вполне подъемная задача. При этом наименее зависимыми от математики являются такие специальности, как верстальщик и FrontEnd разработчик.
Хорошие знания в области высшей математики необходимы тем, кто хочет реализовать себя в таких направлениях: научная область, шифрование, машинное и глубокое обучение, Data Science, разработка искусственного интеллекта и все, что связано с большими данными. Именно там находит широкое применение тот мат. аппарат, которым славятся технические вузы.
Математика в программировании — это, прежде всего, о математическом и аналитическом мышлениях, которые тесно связаны с критическим мышлением и позволяют абстрагироваться, развязывать задачи с умелым применением логики. Именно правильный взгляд и рациональный подход к решению задач является главным оружием программиста, поскольку программирование — это динамика, в то время, как формулы, теоремы и аксиомы статичны. С развитием мат. мышления вам помогут различные книги, а также практика — кодинг, решение математических задачек и прочие упражнения, которые можно найти на просторах интернета.
Кстати, критическое мышление отлично развивают шоу с фокусниками. Посмотрите их, подумайте над тем, как маэстро смог провернуть тот или иной трюк (затем посмотрите соответствующие разоблачения). Также будут полезны детективные игры в стиле “Шерлока Холмса”, где, казалось бы, мистическим событиям находяться вполне логические объяснения. Умение не принимать всю информацию как чистую правду, а смотреть на нее со всех возможных углов — очень полезный навык не только в кодинге, но и в повседневной жизни.
В любом случае, данный миф о математике разрушен, а это означает, что начать программировать вы можете прямо сейчас.
Миф 2. Можно стать программистом, просто прочтя одну или несколько книг (“Прочту книгу — стану программистом”)
Программирование — это в большей степени практика. Теория здесь обязательно должна подкрепляться добротным кодингом. Это обеспечит закрепление полученной информации, а также будет гарантировать понимание вами материала и способствовать развитию ваших навыков написания кода. Поэтому чтение книг начинающими программистами должно обязательно сопровождаться соответствующими отработками (практикой), иначе получите ноль пользы от литературы и только зря потратите свое время, не достигнув желаемого.
Миф 3. Чтобы освоить программирование, необходимо быть очень умным
Миф, который отпугивает множество потенциальных программистов. Появился он из-за ложного убеждения, мол, программисты — это сверхразумы, которые видят мир, как в “Матрице” — в форме бесконечно бегущих зеленых символов. На самом деле они обыкновенные люди. Просто они горят кодом.
Программистам нравится создавать компьютерные программы, веб-сервисы, игры, мобильные приложения. Точно так же экстремалам-байкерам нравится выделывать различные трюки на железном коне, знатокам поварского дела — готовить вкусные и красивые блюда, летчикам — поднимать в воздух многотонные крылатые гиганты, водителям — колесить по бескрайним просторам, психологам — помогать людям понимать себя.
Если посмотреть на каждую профессию со стороны, в каждой можно найти свои сложности. И каждое препятствие преодолевается прежде всего большим трудом и упорством. А мозги — это часть организма, которая поддается прокачке, как и мышцы тела. Поэтому если вы чувствуете, что “недостаточно умны” для программирования, начинайте ломать этот барьер, работайте над собой и ни в коем случае не позволяйте каким-либо предубеждениям вставать у вас на пути. Никто этот шаг за вас не предпримет, так что все в ваших руках.
Миф 4. Необходимо обладать талантом к написанию кода
Успех программиста как такового обусловлен его заинтересованностью выполняемой задачи, количеством специализированных знаний, степенью владения ЯП и математическим мышлением, а также прилагаемыми усилиями. Таланта или какого-то дара в перечне нет. Так что программирование — это 95% усердной работы. Не ожидайте манны небесной — работайте, трудитесь и тогда вы сможете преуспеть в создании кода.
Миф 5. Программисты — замкнутые и необщительные люди
Возможно, в далеком прошлом это и было правдой, однако сейчас все совершенно по-другому. Более того, одними из главных требований к личным качествам программистов сегодня являются коммуникабельность, открытость и умение работать в команде. Время компьютерных гиков-одиночек кануло в Лету.
Различные конференции, хакатоны, совместный отдых и развлечения — эти вещи как-то мало совместимы с замкнутостью и необщительностью, вы не находите?
Такой спектр коммуникабельности не всегда можно встретить в фирмах, которые специализируются на коммуникациях с клиентами, а тут целые мероприятия, куда разработчики приходят пообщаться, заиметь новые связи, обменяться опытом и просто отдохнуть.
Миф 6. Программирование — скучное занятие
На первый взгляд это правдоподобно: человек сидит перед монитором (или несколькими), набирает строчки кода и так целый день напролет. Ну что тут может быть интересного? Даже как-то страшно становится... Однако, это очень урезанный взгляд на то, чем занимается программист.
Прежде всего, в рассматриваемой ситуации он может:
разрабатывать одну из механик компьютерной/мобильной игры;
создавать мобильное приложение;
реализовывать привлекательный внешний вид веб-сайта;
разрабатывать программу для какого-то “умного” устройства;
работать над автоматизацией каких-то рутинных процессов, которые обыватели проделывают чуть ли не каждый день;
писать программное обеспечение для космического аппарата, самолета, машины;
и многое другое.
Поверьте, кто-кто, а программисты не скучают — для них всегда есть работа, которая требует и знаний, и навыков, и творческого подхода к решению. К тому же, у каждого человека свой спектр интересов. Кто-то программирование считает скучным вследствие своего гиперактивного способа жизни, а кто-то просто поддается влиянию когнитивного искажения, прислушиваясь к собственному ложному суждению, обусловленному субъективными предубеждениями и стереотипами, социальными, моральными и эмоциональными причинами, то есть, вырабатывает свое отношение к программированию на основе искаженной информации.
Миф 7. Программисты всё пишут с нуля
Современные сложные программы состоят из сотен тысяч строк кода. Если бы программисты писали всё с нуля, то на разработку одной такой программы уходило бы очень много времени, особенно, если говорить про игры — там и вовсе приходилось бы для каждого нового экземпляра и движок свой создавать, и физику свою писать и делать много других лишних движений. А это и время, и деньги, и лишние нервы.
Поэтому в среде программистов принято не заниматься разработкой “велосипедов”, а использовать проверенные наработки. Разработчики часто применяют сторонние библиотеки, а также код, который был написан ими самими либо другими кодерами для других проектов. Это существенно упрощает и ускоряет создание проектов любой сложности и любого объема.
Миф 8. Чтобы устроиться на работу в качестве программиста, необходимо очень долго учиться
В каждом человеке это утверждение находит различное отображение. Кто-то может освоить ЯП и необходимые технологии за месяц. Кому-то на это потребуется пол года. Некоторые и за год не управятся.
Все зависит от вашего желания и стремления изучать ЯП, а также от времени, выделяемого вами на теорию и практику. Поставьте перед собой четкую цель и не сворачивайте с выбранного пути. Максимально быстрого обучения можно достичь, выбрав хорошие курсы, разбавляя их большим количеством самостоятельной практики.
Миф 9. После курсов у вас сразу высокая ЗП
Один из самых распространенных мифов, который делает программистов в глазах других, незнакомых с данной сферой занятости людей, буквально миллионерами. Мол, “вот мой знакомый недавно листовки раздавал, потом походил на курсы 2 месяца и теперь деньги лопатой гребет”. На самом деле все не так.
Те, кто только окончил курсы по освоению той или иной IT-специальности, по своему уровню знаний и умений могут претендовать на должность разработчика-джуниора (младший разработчик, Junior Developer). Конечно, все зависит от выбранного направления и конкретного места работы, однако джуниоры не срывают куш и первое время имеют довольно невысокую зарплату, которая не всегда доходит до пятизначной отметки (если говорить об украинских гривнах). Приблизительно на третий год работы можно говорить о действительно хорошей заработной плате.
Так что запомните: высокая ЗП — даже в IT — результат не курсов, а усердной и ответственной работы.
Миф 10. “Выучи язык программирования… за 1 час!”
Миф касается различных видео уроков на YouTube, которые пестрят подобным названием и тем самым обманывают вас. Ни один язык программирования не учится за час. Большое количество опытных программистов утверждают: сколько лет они программируют, столько они изучают ЯП. Языки взаимодействия с электронно-вычислительными устройствами настолько же компактны и многогранны, как и те, которыми мы пользуемся в повседневности.
Таким образом, во время изучения ЯП вы осваиваете основной синтаксис языка и то, как с ним работать. Затем во время профессиональной деятельности вы углубляетесь в язык и открываете для себя новые техники кодинга и решения различных задач. Но даже процесс овладения языком (синтаксис + основы работы с ним) — небыстрый процесс. У опытного программиста изучение нового ЯП может занять несколько дней. У новичка могут уйти месяцы — все зависит только от вас. Но на всевозможные “Выучи язык… за 1 час!” и подобные вещи не ведитесь; такие видео ролики создают иллюзию того, что вы знаете ЯП, в то время, как на самом деле вы толком ничего и не умеете.
Миф 11. Нельзя освоить программирование самостоятельно
Можно. Просто на это уйдет больше времени, чем на обучение при помощи специализированных курсов. Причины тому очень просты:
отсутствие ментора, который бы мог направлять вас в нужное русло, давать советы и отвечать на вопросы;
отсутствие предельно четкого понимания о знаниях и умениях, которыми необходимо обладать, чтобы в будущем занять соответствующую должность;
отсутствие четкой программы обучения, которая покроет весь необходимый профильный материал;
отсутствие стимула и достаточной мотивации, которые обычно присутствуют в коллективной среде (тренер, другие учащиеся, домашние задания и т. д.).
Главная проблема самостоятельного обучения в силе воли, которая зачастую быстро испаряется и в итоге изучение ЯП сводится к нулю. А программирование вещь серьезная — на недельку-другую все забросил и вот ты уже ничего не помнишь. Так что самостоятельно обучаться программированию можно, главное — запастись упорством, терпением, силой воли и мощной мотивацией, которая должна постоянно подпитываться.
Миф 12. Программисты разбираются во всём, что связано с техникой
Как вы поняли из вступления статьи, это тоже миф, причем один из самых распространенных.
Разработчик мобильных приложений специализируется на создании программ под мобильные устройства. Он знает соответствующие ЯП и смежные технологии, которые позволяют ему выполнять свою работу качественно и без лишних затрат времени, однако, с какой стати этот специалист должен уметь чинить телевизоры и устанавливать Windows?
Или, например, человек увлекается программированием микроконтроллеров. Почему он должен уметь создавать веб-сайты, если это абсолютно другая отрасль в IT? Вы же не требуете от педиатра вылечить вам зуб, а от стоматолога — избавить вас от кашля? Хотя и тот и тот специалист — врач. Каждый является специалистом в своей области и не следует это забывать.
Сюда же относится и миф о хакерах, согласно которому программисты приравниваются к людям этого рода деятельности. Опять-таки, сторонники данной теории слишком плохо знают IT-сферу, поэтому все равняют под одну гребенку. То, что человек разбирается в определенном ЯП и смежных технологиях не делает его хакером. Хакерство — это специфический род деятельности, который предусматривает достаточно глубокие знания компьютерных сетей, операционных систем, социальной инженерии, криптографии и множества других IT-ответвлений.
Если хотите узнать больше подробностей, не пожалейте своего времени — совершите поиск по специализированным ресурсам и тогда сможете расставить все точки над “i“ — кто кем является и какой спектр знаний-умений какому IT-специалисту свойственен.
Миф 13. Программирование — мужское занятие
Безусловно, мужчин в программировании больше, чем женщин. По данным исследования Stack Overflow Developer Survey 2020, женщин среди разработчиков 8%. В Украине процент женщин в IT в 2020 году достиг уровня 25%, согласно исследованиям DOU.ua. Однако, это связано, скорее, с определенными социальными и психологическими явлениями. Дело в том, что женщины по своей природе более “социальны”, чем представители мужского пола. Соответственно, они чаще выбирают те сферы занятости, которые предусматривают общение и социум.
В то же время парни и мужчины увлечены преимущественно техническими науками, поскольку достаточно распространенная среди них интровертивность позволяет посвятить необходимое количество времени цифрам, формулам и вычислениям. Плюс детская любовь к конструкторам, машинам, компьютерным играм и всему, что связано с техникой, с экспериментами. Ну и стереотипы, привитые обществом — куда же без них.
Однако, это ни в коем случае не означает, что женщинам путь в программирование заказан. С каждым годом все больше и больше представительниц прекрасного пола покоряют IT в различных его секторах. Не ведитесь на предубеждения — программирование абсолютно открыто для всех полов, народов и возрастов.
Миф 14. Существует самый-самый лучший языка программирования
Очень часто в интернете можно наткнутся на неутихающие дискуссии касательно того, какой ЯП лучше. Однако “лучшего” не существует. ЯП подбирается под задачу, а не задачи под ЯП. Если вы хотите максимально быстро развернуть свой сайт, лучше обратить внимание на Python и фреймворк Django. Хотите самостоятельно запрограммировать, допустим, сигнализацию с инфракрасным датчиком? Выбирайте C/C++ либо низкоуровневый Assembler. Те же С/С++ подойдут под разработку тяжеловесных игр, а для более простых идеальным выбором будет среда разработки Unity вместе с языком C#. FrontEnd разработка немыслима без языков верстки HTML & CSS, а также языка программирования JavaScript. Определитесь с тем, какая сфера разработки вам интересна и тогда выбирайте тот язык, который вам по душе.
Миф 15. Разработчики компьютерных игр — самые богатые и счастливые люди в IT
Казалось бы: ты посвящаешь себя тому, о чем мечтал, наверное, каждый ребенок девяностых и нулевых — компьютерным играм. Ну что может быть прекраснее этого? Воплощаешь в жизнь все свои детские задумки: создаешь героев, работаешь над их характерами, занимаешься реализацией собственного геймплея, придумываешь уникальные квесты, сюжет не хуже “Игры престолов”, открытый и насыщенный игровой мир… Да вот только одна проблема — это так не работает; на деле все получается совсем иначе.
Чтобы стать разработчиком игр, необходимо ими “гореть”, причем “гореть” так, чтобы ни время, ни вода, ни песок, ни отсутствие кислорода не смогли потушить ваше пламя.
Во-первых, богатство гейм девелоперов преувеличено. Если игра “выстреливает”, либо вы работаете на плюс-минус солидную студию, то тогда можно говорить о деньгах. Однако, приличное количество разработчиков занимаются инди-играми, то есть, разрабатывают игры без финансирования крупных компаний (в одиночку, либо небольшими группами энтузиастов). Естественно, пока вы работаете над своим продуктом, единственным источником внешних доходов могут быть лишь пожертвования (донаты) от потенциальной аудитории, которая заинтересована в вашем творении.
Также, важно знать, что разрабатывать игры и играть в них — две абсолютно разные вещи. Игростроение — сам по себе трудоемкий и комплексный процесс, который сильно отличается от того, что мы себе воображали в детстве.
Подробнее о пути гейм-мейкеров вы можете прочесть в нашей статье “Как стать разработчиком игр”. В ней мы постарались собрать максимальное количество информации с отечественных и зарубежных информационных ресурсов, чтобы подать вам все самое вкусное в одном компактном виде.
Миф 16. Начинающим айтишникам устроится на работу невозможно
Действительно, если брать на рассмотрение популярные направления в IT, то конкуренция достаточно большая. И это на фоне растущих с каждым годом требований от работодателей. Однако, это не означает, что IT-отрасль закрыла свои двери перед новичками. Как раз таки наоборот.
Сегодня функционирует множество программ стажировок от известных компаний, занимающихся созданием программного обеспечения. Например, EPAM, GlobalLogic, SoftServe и другие открывают вакантные места для тех, кто хорошо знает предметную область, но не имеет опыта работы. Конечно, необходимо будет пройти тестирование и/или собеседование, однако, это уже упрощает процесс внедрения в рабочую среду желанной IT-секции.
Миф 17. Пойду в ВУЗ, там меня научат программированию
В ВУЗе не обучают программированию в соответствии с теми требованиями и ожиданиями, которые предъявляют к соискателям IT компании. Хоть вам и будут преподавать алгоритмы и различные ЯП, но нагрузка в вузе будет настолько объемной и пёстрой, что вы физически не сможете нормально научиться программировать. Все равно вы будете вынуждены самостоятельно учить/доучивать тот или иной язык.
Если бы вы поступали на факультет, допустим, прикладной математики, вы бы туда шли с сильными знаниями по математике, правда? Так же само и с айтишными факультетами: если вы туда идете, у вас УЖЕ должен быть опыт программирования на любом ЯП. Иначе вам будет очень тяжело и мучительно больно.
Миф 18. Программирование имеет возрастные ограничения
Языки программирования, как и любые иностранные языки, вы можете начать изучать в любом возрасте. Возрастные рамки отсутствуют. Самое главное — это ваше желание учиться, развиваться и познавать.
Как показывает практика, уже с 8-9 лет дети способны понимать основные концепции ЯП и успешно создавать собственные программы. Если говорить об относительно великовозрастных людях, с ними работает то же правило — никогда не поздно учиться и узнавать нечто новое. Более того, активная мозговая деятельность (как такая, которая происходит в процессе программирования) является отличной профилактикой многих заболеваний мозга, связанных со старением. Так что программирование и юных развивает, и взрослых прокачивает + помогает держать в тонусе свои мысли.
Однако, при трудоустройстве возрастные ограничения могут иметь место. Это зависит от политики компании, которая ищет специалиста.
Миф 19. Программист — вымирающая профессия: роботы заменят этих специалистов
Очень распространенное мнение, имеющее право на жизнь. С одной стороны, все верно:
программ становится все больше и больше, а значит, потребность в программистах должна потихоньку отпадать (ведь скоро будет нечего программировать!);
при этом активно развивается искусственный интеллект, способный перенимать определенные функции человека, включая написание кода, на себя.
Поговорим о первом тезисе. Вроде бы все логично, но есть одно НО. Рассмотренная выше мысль будет абсолютно верна в том случае, когда мы говорим об информационных технологиях, как об области, которая находится в некоем вакууме, причем вакуум этот ограничен, то есть, имеет свой “потолок”, выше которого не прыгнешь. Наш же мир не является ограниченным, по крайней мере, человечество еще не смогло определить его грани.
Да, человеческие возможности упираются в определенные физические ограничения (невозможно поднять руками или ногами самолет, самостоятельно прыгнуть на высоту 5 метров, проглотить целиком кокос и т. д.), однако в нашем мозгу пока что не было замечено четких ограничений. Более того, с его помощью мы научились обходить естественные физические преграды: придумали и реализовали специальный транспорт, который может перевозить тяжелые объекты; изобрели джамперы, джетпаки (реактивные ранцы) для совершения высоких прыжков и полетов в воздух на относительно небольшие высоты; специальные предметы для разделывания экзотических фруктов и т. п.
Пока что ученые не смогли выжать максимум из нашего мозга и разглядеть границы нашего сознания. Если сложить вместе безграничность наших мыслей и безграничность мира, можно прийти к выводу, что любая сфера нашей жизни поддается совершенствованию и всегда есть, куда дальше двигаться.
Все области нашей жизнедеятельности неразрывно связаны между собой, хотим мы того или нет. Особенно сфера IT — сейчас она находит свое отображение везде:
музыка;
киноиндустрия;
компьютерные игры;
банковская сфера;
транспортная инфраструктура;
сфера безопасности (физическая и кибербезопасность);
СМИ;
медицина;
аграрная отрасль;
все, что связано с космическими разработками;
научные исследования любых направлений;
сфера образования...
Так можно продолжать, пока не будут перечислены все отрасли человеческой деятельности.
Давайте обратимся к сухим фактам и посмотрим на то, как “умерли” некоторые профессии в результате их совершенствования:
человечество уже научилось создавать искусственные фрукты и овощи, но фермеры никуда не пропали; более того — некоторые страны имеют острую нехватку профессионалов в аграрном деле;
существуют дистанционно управляемые боевые машины, дроны и другие приспособления для ведения боевых действий, но никто не говорит о роспуске армейских подразделений; набор призывников и добровольцев продолжается и приветствуется во всех странах;
в супермаркетах появились терминалы самообслуживания, однако продавцов никто не уволил; посмотрите вакансии на данную должность — их пруд пруди;
пассажирские самолеты обустроены очень надежными и серьезными компьютерными системами, которые выполняют много работы за человека и даже имеют функцию автопилота, но никто не спешит увольнять самих пилотов; более того, в мире острая нехватка данных специалистов, а их зарплаты считаются одними из самых высоких в мире;
такая же ситуация и с поездами — сегодня не надо кидать уголь в печь и разгонять поезд (как в XIX веке), но водители поездов никуда не испарились;
беспилотные автомобили уже разъезжают по улицам некоторых городов, однако водители государственных и коммерческих предприятий тоже никуда не делись, вакансии пестрят предложениями для водителей;
множество других примеров.
Примерно та же ситуация и у программистов. Правда, сфера IT настолько многогранна, что профессии в результате развития данной области будут просто эволюционировать. Например, веб-мастер двухтысячных стал современным FullStack девелопером, а само направление сайтостроения поделилось на два лагеря — FrontEnd и BackEnd. На границе программирования и системного администрирования образовалась DevOps инженерия. IT-специальности будут попросту перерождаться и образовывать новый виток с новыми должностями.
Для осознания системности нашего мира советуем прочесть книгу “Введение в системный анализ” (Ф. И. Перегудов, Ф. П. Тарасенко). Прекрасный труд, который очень хорошо демонстрирует взаимосвязанность всего, что нас окружает. Воспитывает системное мышление и заставляет смотреть на вещи более адекватно и трезво, находить логические связи между всевозможными событиями и процессами в нашем мире.
Поговорим о втором тезисе. Он касается искусственного интеллекта (ИИ). Сюда же добавим системы генерации кода, существующие в наше время. К примеру, взглянем на сервисы, которые позволяют создавать собственные сайты без знания IT технологий.
Действительно, сегодня существуют подобные системы, использование которых исключает необходимость владения языками верстки и программирования, однако они предоставляют достаточно шаблонные решения. В них вы не сможете воплотить все свои задумки — это сможет сделать только живой специалист. Системы генерации кода хорошо справляются с типичными задачами, однако в реальных ситуациях, где не всегда всё просто и зачастую необходимо импровизировать, сохраняя при этом код “в чистоте”, они бессильны.
Возвращаясь к разработчикам сайтов: верстальщики, FrontEnd и BackEnd разработчики не исчезли и спрос на них является одним из самых высоких среди направлений в IT.
ИИ уже давно разрабатывается и ученые демонстрируют потрясающие результаты: системы, которые обыгрывают шахматных гроссмейстеров и легенд покера, робот София, системы по распознаванию образов и т. д. Однако, какого-то обвала рынка программистов не последовало, массовые увольнения специалистов замечены также не были. Все спокойно.
Посетите, например, такие ресурсы по поиску работы, как https://jobs.dou.ua/, grc.ua, hh.ru — вакансий для сайтостроителей много, равно как и для других айтишных специальностей. Не похоже на упадок эпохи программирования.
Несмотря на то, что сфера IT и без того находится на пике популярности, она испытывает дефицит рабочих кадров. Так что вы сможете прекрасно себя реализовывать в IT еще несколько десятилетий как минимум. Главное — следите за тенденциями в IT и ловите попутный ветер.
Итоги
Большинство мифов, касающихся IT, рождены обыкновенным незнанием предметной области и изрядной долей ложных предубеждений. Сегодня мы постарались разрушить некоторую часть из них и показать вам, что программирование — не башня из слоновой кости, а вполне реальная и податливая сфера человеческой деятельности, в которой кипит жизнь и которая нуждается в пополнении своих рядов.
Не бойтесь делать шаги навстречу программированию. Разрушайте стены незнаний и непониманий. Если вы в чем-то неуверенны, интересуйтесь у знакомых-программистов, пишите на форумах, спрашивайте на стримах. Все зависит только от вас!
Желаем вам всевозможных успехов и профессиональных свершений!
Оставайтесь с ITVDN!
З чого розпочинається створення сайтів? Спеціальність верстальник
Автор: Влад Сверчков
Кто такой верстальщик?
Языки верстки HTML & CSS
Техники верстки
Препроцессоры
Графический редактор и векторная графика
Инструмент упрощения верстки Bootstrap 4
Язык программирования JavaScript
Библиотека jQuery
Методология БЭМ
Вспомогательные инструменты
Система управления версиями Git
Английский язык
Итоги
Всем привет!
Вы когда-либо задумывались о том, как происходит полный цикл разработки современного веб-сайта? С чего все начинается и как мы приходим к такому сервису, который имеет привлекательный и гармоничный внешний вид, а также богатый функционал? Давайте разберемся с этим вопросом, а заодно поближе познакомимся с героем данной статьи.
Прежде всего стоит знать, что сегодня человек-оркестр, который мог бы осуществить полный цикл создания веб-сайта — очень редкое явление. Процесс реализации одной только клиентской стороны уже является трудом целой команды специалистов.
Если говорить о профессиональной веб-студии, то разработка несложного корпоративного веб-сайта осуществляется следующим образом. Вначале за заказчика сайта берется менеджер по продажам. Он общается с клиентом через телефон, электронную почту, при личной встрече. Обсуждает все детали возможного сотрудничества. Задача менеджера по продажам — решить все финансовые и юридические нюансы, связанные с созданием сайта.
После заключения договора и оплаты услуг наступает звездный час PM`а (менеджер проекта), который и управляет проектом. Он ответственен за координацию действий команды разработчиков: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, своевременное решение проблем, согласование промежуточных и конечных этапов создания и продвижения сайта. PM является связующим звеном между заказчиком и разработчиками: он плотно сотрудничает с клиентом, выясняет его требования, желания, предпочтения, затем конвертирует всю информацию в понятный команде девелоперов вид.
После определения требований за работу берется веб-дизайнер. Данный специалист занимается графической и художественной составляющими сайта. В этой секции веб-кухни происходит создание красивого и приятного интерфейса с удобным размещением кнопок, меню и других элементов веб-сайта. На выходе получаются макеты, которые учитывают различные платформы потенциальных посетителей (стандартные и широкоформатные экраны ПК, планшеты, мобильные устройства и т. д.). Результат работы веб-дизайнера — графическая схема с указанием оттенков, отступов и других параметров веб-сайта в статическом виде, которая максимально точно отображает внешний вид будущего сайта. Фактически, это точный рисунок сайта.
Готовый макет передается в руки верстальщика. Теперь при помощи различных элементов языка разметки веб-страницы графические элементы дизайна (рисунки, шрифты, таблицы и т. д.) будут переведены в понятный для браузера формат. Можно сказать, что он создает текстовый макет того, что придумал дизайнер. После того, как страница сверстана и проверена в различных браузерах на правильность отображения, она передается в работу специалисту, который подключает необходимый клиентский функционал, используя JavaScript-фреймворки, библиотеки и сопутствующие технологии. Как правило это FrontEnd разработчик.
Затем начинается работа BackEnd разработчика, который занимается реализацией серверной стороны веб-сайта (базы данных, серверная архитектура, программная логика). Обработка пользовательских запросов, хранение и оперирование пользовательскими данными, аутентификация, оптимизация функциональных возможностей сайта и многое другое — обязанности бэкендщика.
С уже готовым сайтом работают те специалисты, которые ответственны за его наполнение и продвижение в поисковых системах: контент-менеджер, специалист по контекстной рекламе, SEO-специалист, копирайтер и другие.
Сегодня же нас интересует именно тот, кто превращает графику в узнаваемый браузером формат — верстальщик. Разберемся в специфике его работы и навыках, которыми должен обладать потенциальный кандидат на данную должность.
Кто такой верстальщик?
Сразу дадим определение терминам, которые важны для составления целостной картины. Верстальщик — это специалист, который занимается версткой интернет-страниц. Верстка — процесс создания визуальной составляющей сайта. Структура самого сайта задается языком гипертекстовой разметки HTML, а каскадная таблица стилей CSS описывает его внешний вид. Проще говоря, HTML задает каркас страницы, а CSS занимается его облагораживанием (цвет, шрифты, стили, расположение, отображение блоков и т. д.).
Если говорить о профессиональной верстке, то она происходит согласно заранее разработанному макету, который обычно создает веб-дизайнер, знающий тонкости своего ремесла. После получения графического документа от дизайнера верстальщик использует Photoshop или другие аналоги для извлечения необходимой информации (Illustrator, Sketch, Figma и другие): используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Только после такой подготовительной работы герой нашей статьи может открыть среду написания кода и приступить к верстке. Давайте узнаем, каков арсенал инструментов использует верстальщик в своей работе.
Какие языки / технологии / инструменты применяет верстальщик?
HTML & CSS
Языки верстки, которые мы уже упоминали. Являются главными инструментами верстальщика. Без них не обходится создание ни одного веб-сайта. HTML определяет его структуру (костяк), а CSS — внешний вид (вся остальная надстройка).
Техники верстки
Для создания качественных веб-сайтов необходимо использовать специальные техники, которые упрощают верстку, делая код понятным и легко масштабируемым. Таким образом, выделяют три вида верстки:
фиксированная;
резиновая;
адаптивная.
Фиксированную верстку применяли еще при создании самых первых сайтов. Тогда они были простые, не требовали какой-либо оптимизации и кроссбраузерности, а потому не было потребности в разработке новых сайтостроительных техник. При фиксированной верстке ширина сайта всегда одинаковая вне зависимости от разрешения экрана. Это самый простой подход к реализации верстки, но при этом самый непопулярный, поскольку сегодня пользователи используют множество моделей компьютеров, ноутбуков, телефонов и планшетов для выхода в сеть. В связи с этим, разрешение экранов варьируется от 200 до 3000 пикселей.
Резиновая верстка способна менять размеры сайта в зависимости от размерности экрана. Таким образом, проблемы фиксированного вида решаются, однако сама процедура набора страницы усложняется. Верстальщику приходится думать о том, как растянуть картинки, чтобы они не потеряли в качестве и корректно отображались на всевозможных девайсах. Ну и о производительности не забывать. Кому нужен сайт, который будет прогружаться вечность?
Адаптивная верстка является самой сложной. Сайт помимо размеров меняет свой внешний вид в зависимости от размеров устройства, на котором воспроизводится. Ориентирована в первую очередь на мобильные устройства, оттого и имеет сегодня большой спрос.
Также, качественная верстка должна обладать следующими свойствами:
семантичность;
кроссбраузерность;
валидность.
Семантика в верстке означает соответствие тегов информации, которая находится внутри них. С ее использованием код становится чище, читабельнее и лаконичнее. Более того, поисковые системы начинают лучше воспринимать такие сайты, повышая их позиции при ранжировке.
Кроссбраузерность означает, что разработанный сайт должен качественно отображаться во всех популярных браузерах (Mozilla Firefox, Opera, Google Chrome, Safari, IE). Почему она так важна? Все дело в том, что один и тот же сайт может по-разному отображаться в разных браузерах. Не будем заглядывать за кулисы этого явления — просто подчеркнем, что современные сайты обязаны отвечать требованию кроссбраузерности.
Валидность веб-сайта означает соответствие его HTML-кода стандартам W3C (Консорциум Всемирной паутины). Валидация предусматривает соблюдение корректности кода страниц, отсутствие синтаксических ошибок, наличие вложенности тегов и т. д. Проверка HTML-кода выполняется при помощи специальной программы — валидатора кода. Она находит и фиксирует все несоответствия со стандартом, указывая на их местонахождение и формулируя, где проблемный участок и почему он должен быть исправлен.
Естественно, важным является и тот нюанс, что ваш код должен быть минимален, а интернет-страница, созданная с его помощью, должна быстро прогружаться. Ниже мы также рассмотрим вспомогательные инструменты, которые обеспечивают выполнение этих условий.
Sass/SCSS
Препроцессор, который является расширением CSS. Если современный CSS сам по себе простой и мощный инструмент, то в комбинации с препроцессором это вовсе боевая машина для качественного оформления контента на интернет-страницах. Польза Sass/SCSS особенно отчетливо ощущается в больших проектах, когда количество строчек кода кажется бесконечным. Препроцессор позволяет использовать функции, недоступные в самом CSS. Например, переменные, вложенности, миксины, наследование и другие вещи, которые упрощают и делают удобным написание CSS-кода.
Photoshop / Illustrator / Sketch / Figma / Avocode
Графический редактор, как мы уже упоминали, необходим верстальщику для извлечения необходимой информации из предварительно подготовленного макета: используемые шрифты, иконки, картинки, точные кодировки цветов, размеры элементов в пикселях, их точное расположение. Какой редактор был использован для создания макета, такой следует использовать и для изъятия необходимых данных.
SVG
Вдогонку за графическими редакторами упомянем об SVG. Это язык разметки масштабируемой векторной графики. Изображения на странице, сделанные с помощью SVG, корректно отображаются на экранах с различным разрешением не теряя при этом своего качества, в отличии от традиционных растровых .jpeg, .png и других. Верстальщик должен уметь работать с SVG, поскольку он важен для оптимизации и быстродействия сайта, а также используется для реализации анимации векторных изображений, разработки прелоадеров и других интерактивностей.
Bootstrap 4
Это HTML, CSS, JS фреймворк для разработки кроссбраузерных веб ориентированных интерфейсов. Bootstrap являет собой набор инструментов от Twitter, созданный для облегчения разработки веб-приложений и сайтов. Он использует CSS и HTML для типографии, форм, кнопок, таблиц, сеток, навигации и т. д., а также дополнительные расширения JavaScript, упрощающие работу веб-разработчика. Данные свойства позволяют коду, написанному с применением Bootstrap, быть переиспользуемым, понятным и компактным.
Основные преимущества фреймворка:
высокая скорость верстки;
кроссбраузерность и кроссплатформенность;
наличие хорошей документации, большого сообщества и огромного количества разнообразных обучающих материалов;
низкий порог вхождения (необходимо знать лишь основы HTML, CSS, JavaScript и jQuery).
JavaScript
Язык программирования, который повсеместно используется в создании сайтов, даже в реализации их серверной стороны. Становиться ниндзя JavaScript верстальщику не нужно — это задача FrontEnd разработчика, который прорабатывает логику клиентской стороны веб-приложений. Герою статьи JS необходим для реализации различных динамических элементов на странице: анимации, слайдеры, калькуляторы и т. д. Также, этот язык применяется для подключения различных библиотек и определенных взаимодействий с ними. Знание базы JavaScript необходимо для комфортного использования библиотеки jQuery, подробнее о которой пойдет далее речь.
jQuery
Небольшая, быстрая и многофункциональная JavaScript-библиотека, для работы с которой необходимо владеть HTML, CSS и JavaScript на базовом уровне. Она упрощает процесс программирования на JS и представляет объемные решения распространенных задач в виде методов, которые вызываются одной строчкой кода.
Этой особенностью jQuery приносит ощутимую пользу верстальщикам. Вместо углубления в JavaScript и написания тонны кода, можно просто использовать уже готовые решения в различных задачах.
Методология БЭМ
“Блок, Элемент, Модификатор” — методология, предусматривающая компонентный подход к разработке веб-страниц, в основе которого лежит принцип разделения интерфейса на независимые блоки. Подход БЭМ позволяет повторно использовать существующий код в создании других страниц с сохранением всех его свойств (размеры, шрифт, цвет и т. д.). Таким образом обеспечивается расширяемость и повторная используемость компонентов интерфейса. Соблюдение принципов БЭМ повышает качество, читаемость кода, увеличивает производительность и упрощает командную работу.
CMS (Wordpress / Opencart / Joomla / Bitrix)
Content Management System — система управления контентом, являющая собой движок для обеспечения и организации процесса создания, редактирования и управления контентом. В случае отсутствия CMS разработчики были бы обязаны реализовывать дополнительную функциональность для каждой новой страницы, вносить новый контент самостоятельно программным путем и т. д. Ниже приведем пример для наглядности.
Допустим, вы ведете собственный блог на специализированной платформе и у вас появилась необходимость сделать новую рубрику. Вы же не будете просить целую команду разработчиков создать новую интернет-страницу с нуля со всей функциональностью либо дорабатывать уже существующую под каждый новый пост? А в случае с интернет-магазином вы были бы вынуждены проделывать такие манипуляции для каждого нового товара. Вот для этого и существуют CMS. Они предоставляют удобную администраторскую панель вашему сайту, с которой в дальнейшем работает контент-менеджер. В профессиональной среде процесс настройки взаимодействия движка и готового шаблона сайта называется “натяжкой” шаблона на CMS.
Основные функции CMS:
предоставление инструментария для работы над контентом;
управление контентом — хранение, управление потоком документов, соблюдение режима доступа, контроль версий;
публикация контента;
представление необходимой информации в удобном для навигации и поиска виде.
Gulp / Webpack
Gulp — система сборки, которая автоматизирует рутинные задачи верстальщика. В число ее обязанностей входят: минимизация кода, оптимизация изображений, тестирование, анализ качества кода и прочее. Другими словами, она используется для сбора верстки. Webpack по сравнению с Gulp обладает более широкими настройками и функционалом. Предназначенный для удобной разработки одностраничных веб-приложений с использованием JavaScript.
Git
Самая популярная распределенная система управления версиями, которая позволяет вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Таким образом, если в процессе создания программный продукт стал неправильно функционировать, есть возможность вернуться к предыдущей рабочей версии вместо длительных поисков ошибок.
Также системы управления версиями являются неотъемлемым инструментом командной разработки, который дает возможность девелоперам работать над одним проектом одновременно, сохраняя внесенные изменения. Заодно удобно отслеживать выполнение задач каждым членом команды. Очень важный инструмент для любого IT-разработчика.
Английский язык
Знание английского языка является одним из основных требований к верстальщику, поскольку большое количество полезной информации находится именно на англоязычных сайтах. Уровень чтения технической документации будет достаточным для комфортного пользования иностранными ресурсами.
Итоги
Верстальщик — это специалист по верстке веб-страниц. Несмотря на довольно лаконичное определение, список требуемых от него знаний и навыков гораздо красноречивее. Верстальщик в 2020-м году должен владеть неплохим стеком технологий. Более того, мы привели лишь общий список инструментов. В реальности он может немного отличаться согласно направлению деятельности компании/веб-студии. Если к перечисленному добавить углубленные познания JavaScript и хорошее владение одним из фреймворков (Angular, Vue.js, React) + парочка смежных технологий, получится полноценный FrontEnd разработчик.
Отдельно отметим портфолио верстальщика. Оно должно быть в наличии у данного специалиста в обязательном порядке, иначе шансы получить job-оффер ничтожно малы (не забывайте и о конкуренции). В портфолио вам необходимо продемонстрировать все свои навыки и умения. Это может быть десяток проектов с использованием по крупице различных технологий в каждом, либо пара-тройка, но с концентрированием всех ваших умений и познаний в верстке. В этом случае пригодятся специальные ресурсы с опубликованными бесплатными макетами, которые можно брать и верстать, набивая руку и набираясь опыта.
Также, если вы заинтересованы в изучении ремесла верстальщика, ITVDN имеет для вас хорошие новости. На нашем образовательном ресурсе вы сможете освоить данную специальность за 4 месяца.
Учебная программа каждой специальности, в том числе и верстальщика, содержит:
тщательно подобранный пакет видео курсов;
план обучения с нуля до уровня специалиста, который вы можете адаптировать под свой уровень;
Интерактивный Тренажер навыков для формирования навыков написания кода;
учебные материалы, исходники программного кода, опорный конспект, презентации к урокам;
доступ к Форуму, где каждый учащийся может общаться с другими студентами, тренерами и единомышленниками;
возможность персональной консультации с тренером согласно выбранному пакету подписки;
возможность проходить тестирование для подтверждения знаний, полученных в результате прохождения видео курса;
электронный сертификат об окончании курса после успешного завершения тестирования.
Все видео курсы записываются опытными разработчиками, которые проходят соответствующую сертификацию, чем подтверждают свое мастерство владения той или иной технологией. Наши преподаватели работают в IT и в курсе всех современных тенденций в своей сфере разработки.
Знакомство со специальностью мы рекомендуем начать с просмотра бесплатных вебинаров по специальности верстальщик, в частности, с вебинара Елены Хижняк “Как стать верстальщиком?”, в котором отражены все самые актуальные тренды и требования.
Возможно, нас читают практикующие верстальщики? С удовольствием прочтем вашу точку зрения на позиции, изложенные в данной статье. Также, будем рады любым вопросам и замечаниям от всех читателей!
Ну а тем, кто решил выбрать профессию верстальщик мы желаем быть упрямыми, оптимистичными и с неугасаемым огоньком жажды знаний в глазах.Успехов и вдохновения на вашем пути!
Чи потрібна програмісту вища освіта?
Автор: Влад Сверчков
Статистика DOU та Stack Overflow
Що відбувається у технічних ВНЗ на “айтішних” напрямках?
Вага диплому
Чому навчають у вишах?
Чи потрібна математика в програмуванні?
Рейтинг українських ВНЗ
Вартість навчання у ВНЗ
Підсумки
Вітаємо вас, дорогі читачі блогу ITVDN!
Сьогодні ми розглянемо дуже важливу тему, яка має багато гострих кутів. Стосуватиметься вона вищої освіти, а саме – її необхідності для програмістів. Відразу зазначимо – тема наповнена багатьма нюансами. Ми намагатимемося охопити всі важливі моменти, які допоможуть скласти максимально цілісну картину та дати розгорнуту відповідь на головне питання цієї статті.
Давайте не зволікатимемо з ліричним відступом і відразу приступимо до пошуку інформації, а також до розстановки всіх точок над “i” в обговореннях “чи потрібна програмісту вища освіта?” і що потрібно для програміста у виші взагалі.
Статистика DOU та Stack Overflow
Насамперед дізнаємося, як справи з вищою освітою у тих, хто зараз займається розробкою. Для цього звернемося до опитування Stack Overflow Developer Survey 2022, яке цього року зібрало 70 000 анкет.
Якщо вірити цьому джерелу, 80% респондентів мають певну форму вищої освіти. Виходить, 4 з 5 розробників мають диплом. Що цікаво, 38% з тих людей, що тільки навчаються програмуванню і ще не мали досвід комерційної розробки, мають диплом. Це свідчить про те, що навчатися ніколи не пізно – навіть якщо у вас є наукова ступінь не за ІТ-фахом і ви тільки зараз почали вивчати кодинг.
Відповідно до опитування Stack Overflow Developer Survey 2020 (65 000 анкет), майже 85% опитаних з числа професійних розробників вважають, що формальна освіта хоча б більш-менш є важливою. Проте майже 16% вірять, що вища освіта і зовсім зайва.
Тепер звернемося до портрета IT-фахівця за підсумками 2020 року від DOU. Вся інфографіка складена на підставі 12419 анкет. Аналізуючи розділ “Освіта та саморозвиток”, можна сказати таке: хто б що не говорив про вищу освіту, але більшість IT-фахівців мають повну вищу освіту, а деякі — навіть дві. Дві вишки переважно у Senior PM, а максимальна кількість кандидатів наук у фахівців Data Science, яким потрібна сильна математична база для виконання посадових обов'язків (її вони й отримують у ВНЗ). Найменша кількість тих, хто закінчив вищий навчальний заклад, припадає на Junior розробників ПЗ. Це й не дивно — більшість отримують свою першу посаду в IT ще на студентській лаві.
Таким чином, як вітчизняна, так і зарубіжна статистики показують, що переважна кількість професійних розробників таки має диплом. Це зовсім не означає, що на роботу в галузі IT вони потрапили виключно завдяки знанням, отриманим у ВНЗ. Те ж опитування від Stack Overflow, тільки за 2019 рік (90 000 респондентів), показало, що понад 86% опитаних самостійно вивчали необхідну їм мову, фреймворк або інший інструмент розробки.
Хоча в опитуванні 2022 року не було такого ж пункту, ми впевнені, що статистика самоучок на поточний рік не сильно змінилася і плюс-мінус той же відсоток зберігся до сьогодні. Виходить цікава колізія: якщо переважна більшість закінчувала (або закінчує в даний момент) вузи, то чому ці студенти/випускники самостійно вивчають те, що їм треба в роботі? Чому навчають в університетах у такому разі? Давайте розбиратися.
Що відбувається у технічних ВНЗ на “айтішних” напрямках?
Сучасні вищі навчальні заклади несуть мало радості тим, хто має намір стати програмістом. Безумовно, студентська романтика та пригоди чекають на вас у будь-якому місці здобуття вищої освіти. Проте ми ведемо мову саме про цільове призначення цих закладів.
Відповідаємо на запитання цього розділу: в університетах досить неоднозначний стан речей. Усі суперечливі моменти ми представимо у вигляді списку:
З одного боку, у ВНЗ справді вивчається програмування, алгоритми, структури даних, дискретна математика та інші важливі для програмістів речі. З іншого боку, багато предметів є зайвими, або такими, які студентам не до душі.
Ми не порушуватимемо тему, які дисципліни справді важливі для програмістів, а які мають сумнівну цінність, проте факт залишається фактом: дуже часто студенти обурені наявністю філологічних предметів, таких, як історія, філософія, менеджмент, правознавство, історія культури та інші. Подібні ситуації виникають і з технічними напрямками. Припустимо, студент очікував вивчення програмування на C# та інших високорівневих мовах; насправді ж на "шарпи" припадає 3 семестри, а на наступних курсах доводиться працювати з низькорівневим Асемблером і писати програми під логічні контролери за допомогою ST, FBD і SFC, які часто використовуються для автоматизації виробничих процесів. Кожен університет має свої навчальні програми, але подібні розбіжності очікувань та реальності зустрічаються скрізь.
Окрему увагу варто приділити якості освіти. Вище ми говорили, що в університетах все ж таки викладають те, що необхідно програмісту, хоч і частково. Але і тут є кілька проблем.
Перше, що варто мати на увазі: у жодному вітчизняному ВНЗ із вас не зроблять, наприклад, сучасного .NET розробника, або DevOps інженера. Окрім того, що самі програми навчання застарілі років на 10 (у кращому випадку), їх іноді ведуть сивочолі старожили кафедр, які зачитують матеріал із книг епохи Горбачова. І вони не мають наміру оновлювати навчальну програму, оскільки вникати в нові технології для них не комільфо.
Також іноді буває, що такий викладач не проти повчити вас життя, або просто нівелювати вас як особистість. Чули історії про те, як студенти до ночі захищали свої лабораторні / розрахункові роботи? А про те, як деяким просто неможливо здати предмет, який навіть близько не потрібний програмістам?
Безумовно, зустрічаються і цілком лояльні, добрі та приємні викладачі, але на кожній кафедрі ви знайдете таку людину, від якої вас хапатиме Кіндратій. Чи хотіли б ви кілька семестрів (а то й весь термін навчання) провести в компанії такої людини і вимотати свої нерви?
Відносно молоді програмісти-викладачі, які займаються розробкою на комерційній основі, звичайно, зустрічаються, і з кожним роком їх все більше і більше, проте і серед них знайти тямущих лекторів — ще те завдання. Найчастіше такі викладачі просто сідають за ноут, включають проєктор, пишуть код (проєктуючи все на дошку) і щось коментують, поки інші сидять і півтори години дивляться. Так, це краще, ніж ті ж викладачі похилого віку з крейдою в руках. Але просто кодингу недостатньо. Студенти також люди; їм потрібна жвава подача матеріалу від цікавого лектора, який вміє приковувати до себе та свого коду увагу. Крутий програміст, який уміє кодити, але не вміє зрозуміло доносити до решти те, що він робить, далеко не найкращий варіант.
Якщо нас читають лектори-програмісти більш-менш відомих ВНЗ, які при цьому не користуються популярністю у своїх студентів, закликаємо їх замислитись над своїми методами подачі матеріалу. Гарний програміст – не те саме, що гарний викладач. Якщо людина вміє грамотно подавати матеріал, у неї буде менше проблем із відвідуваністю та дисципліною, а також більше позитивного фідбеку від студентів. Викладання (від слів “викладати”, “викласти”) – це навичка донесення інформації, і її необхідно розвивати, над нею треба працювати.
Обираючи навчання в університеті, варто враховувати, що він орієнтований на самостійну роботу самих студентів. Вважається, що 80% навчального часу студенти повинні приділяти самостійному вивченню предмета, а решта 20% покладаються на лекції викладачів.
Ті абітурієнти, котрі вважають, що в універі їх вивчать на програмістів, помиляються. Ніхто нікого вчити не збирається, адже це не школа. І студент повинен це усвідомлювати. Також часто буває так, що на лекціях вам розповідають одне, а на лабораторних ви робите зовсім інше.
Тонни лабораторних та розрахунково-графічних робіт — постійні супутники кожного студента-технаря, зокрема й студента-програміста.
Головні рушійні сили технічного університету – "корочка", яка необхідна для роботи, очікування та надії членів сім'ї, а також уникнення армії.
Щире бажання отримати професію, якою ти “палаєш”, є далеко не у всіх, оскільки у 17 років дуже складно визначити майбутній фах всього свого життя. А у щасливчиків таке щире бажання швидко згасає, коли вони зіштовхуються з реаліями і розуміють, що просто виконуючи навчальний план протягом 4-6 років в університеті особливо нічого не досягнеш на поприщі ІТ.
Хтось скаже, що така ситуація у ВНЗ — чудова школа життя. З одного боку, це справді так. Але якщо подивитися на систему навчання вітчизняних ВНЗ з точки зору "як має бути" і "як є насправді", ви помітите, що досвід та знання, з якими студенти закінчують навчання, отримуються не завдяки, а всупереч цим самим вишам. На жаль.
Вага диплому
Чи потрібна вища освіта у сфері IT для успішного працевлаштування? В українських IT-компаніях часто вимагають хоча б диплом незакінченої вищої освіти або щоб кандидат був на шляху до його отримання. Однак це не означає, що без диплому вас не приймуть до лав розробників – просто у кожної компанії своя політика, а чим більша компанія, тим солідніші запити щодо претендентів. Більше того, диплом на співбесіді – це формальність, галочка. Насправді ж ви будете проходити тестові завдання та відповідати на технічні запитання, тож навіть червона “корочка” фактично нічого не вирішує.
Якщо говорити про розвинені країни, то там все серйозніше. Навчання у вищих навчальних закладах важче і диплом справді відіграє більш значиму, ніж у нас, роль. На тих, хто закінчив виш, роботодавець і дивиться по-іншому – з повагою та визнанням. Досить часто іноземні компанії, незалежно від навичок та досвіду, вимагають наявність диплома бакалавра або, як мінімум, щоб ви на момент розгляду резюме перебували на старших курсах ВНЗ. Більше того, диплом спрощує процес отримання робочої візи, без якої ви не зможете вирушити працювати програмістом, наприклад, у європейські країни або США.
А ось на які посади вас із максимальною вірогідністю не візьмуть без диплому як у рідній країні, так і за кордоном — це керуючі позиції в ІТ. Їх займати має право лише людина з повною вищою освітою.
Маємо дві сторони медалі. Якщо глянути на аверс — диплом для “галочки”, який при цьому вистражданий потом, кров'ю та вашим часом. Але реверс говорить нам про зарубіжжя та керівні посади, а також про незабутню школу життя, зрештою.
Чому навчають у вишах?
У кожному вищому навчальному закладі є своя навчальна програма. Однак якщо підсумувати, то можна виділити такі дисципліни:
Алгоритми та структури даних
Алгоритмічне програмування
Програмування популярними мовами (C/C++, C#, Java, Python)
Вебпрограмування
Комп'ютерна графіка
Дискретна математика
Вища математика
Комп'ютерні мережі
Бази даних
Теорія інформації та кодування
Криптографія
Операційні системи
інші дисципліни
Крім цього, у вузах студентам також читають предмети, які напряму не пов'язані з програмуванням та інформаційними технологіями: економіка, правознавство, історія, психологія, охорона праці, філософія та інші. На стику філологічного та технічного розташуємо англійську мову, оскільки вона надважлива для успішної взаємодії із зарубіжними навчальними матеріалами, статтями, відеороликами, професійними книгами. Також вона знадобиться для вільного спілкування з іноземними колегами та роботодавцями. Інгліш знадобиться і для написання грамотного коду (без спотворених, “кривих” назв).
При всьому багатстві вибірки дисциплін, у вітчизняному виші ви можете розраховувати лише на ази будь-якої айтішної спеціальності. Вам дадуть все поверхнево – цих знань вистачить для розуміння того, що відбувається в тій чи іншій сфері. Все інше ви повинні будете доучувати, самостійно практикуватися, відвідувати відповідні курси, проходити інтернатуру в IT-компанії і таким чином добирати знання, яких вам бракує.
Звичайно, на Заході існують такі виші, де ви зможете пройти гарне профільне навчання. Наприклад, факультет Informatics, Games Engineering in Technical University Of Munich (Німеччина). За кордоном усвідомлюють важливість IT-індустрії та намагаються відповідати новим тенденціям, а не просто пхати у вас “вічну класику”. Тому факультет розробки комп'ютерних ігор – норма для розвинених країн.
Однак у таких державах і ставлення до вищої освіти зовсім інше. Наприклад, у Чехії випускників ВНЗ дійсно цінують роботодавці, оскільки і навчання складніше, і саме викладання на голову вище за вітчизняні аналоги. Іноземна освіта враховує технологічний прогрес і намагається йти нога в ногу з ним. Чого не скажеш без грудки у горлі про навчання у більшості вишів пострадянського простору.
Є один бонус від ВНЗ, про який ми мало не забули. Багато вітчизняних університетів мають програми співпраці із закордонними університетами. Таким чином, навчаючись на батьківщині, у вас є можливість стати учасником такої програми та перебратися за кордон заради здобуття європейської освіти. Круто, чи не так? =)
Чи потрібна математика в програмуванні та в якому обсязі?
Одна з головних переваг будь-якого технічного вишу — математична база. Зазвичай, лише у вищому навчальному закладі можна отримати гарні знання з вищої математики. Тут ми порушимо ще одне популярне питання, яке часто задається тими, хто хоче йти в IT: кому потрібна математика і чи потрібна вона взагалі для програміста?
Відповідь – потрібна. Однак є один приємний момент: кожному розробнику математика потрібна по-різному. Якщо ви хочете працювати у якості FrontEnd розробника (створення клієнтської сторони вебдодатків), то математика вам буде потрібна меншою мірою, ніж для C# / .NET розробника, який, наприклад, зайнятий розробкою корпоративних рішень. Вузівський матан незамінний для тих, хто збирається пов'язати свою професійну діяльність з наукою, шифруванням, Data Science, машинним навчанням, штучним інтелектом та всім, що пов'язано з великими обсягами даних.
Для криптографічних завдань вам знадобиться загальна та лінійна алгебра. У 3D-моделюванні не обійтися без геометрії та механіки. Для роботи з великими масивами даних необхідні статистика, теорія ймовірностей, лінійна алгебра. Біоінформатика потребує знань у галузі дискретної математики та статистики. Так можна перераховувати безліч IT-напрямків.
Однак переважна більшість людей бере не той орієнтир. У програмуванні важлива не стільки математика, скільки саме математичне мислення.
Найчастіше IT не вимагає глибоких знань, і необхідний мат. апарат обмежується початковими курсами університету (теорія множин, графів, автоматів, алгоритми, базова логіка) + стандартна шкільна програма (куди ж без неї?).
Василь Кобзар, викладач GeekBrains, який спеціалізується на адмініструванні Linux, має чудову відповідь на запитання "Наскільки програмісту потрібне знання математики в роботі?" (джерело):
“Якщо математика буде являтися предметною областю, то знати її потрібно настільки добре, наскільки це потрібно для вирішення завдання. Однак питання, мабуть, поставлене для загального випадку і пов'язане з існуючою думкою. Програмістові добре було б розібратися з логікою та абстрактною алгеброю, які не викладаються ні в школі, ні у більшості вишів. Також не завадять матстат і дискретка. Матан здебільшого марний, так само як і, скажімо, тригонометрія. Загалом, корисна та частина математики, що «розум у порядок приводить», а знання будь-яких формул напам'ять тільки забиває голову”.
Підводячи підсумки цього розділу, скажемо наступне. Математика в програмуванні – це насамперед про математичне та аналітичне мислення, які допомагають критично мислити, абстрагуватися та розв'язувати задачі, вміло використовуючи логіку. Саме раціональний підхід до вирішення завдань, що забезпечується мат. мисленням – головний інструмент програміста. З його розвитком вам допоможуть спеціалізовані книги, а також практичні вправи – написання коду, вирішення математичних завдань та інші вправи, які можна знайти на вебресурсах.
Рейтинг українських ВНЗ
Розглянемо рейтинг за 2019 рік від dou.ua. Чому саме за 2019? Бо рейтинг того року був максимально “народним” – окрім традиційної статистики він містив додаткові відповіді респондентів, які вже мають вищу освіту, на деякі і донині актуальні запитання: в якому виші краще вчитися (український/зарубіжний), чи корисним було навчання, чи радили б ви отримувати вищу освіту і т. д. У наступні роки ні dou.ua, ні інші українські інформаційні ресурси не робили подібного опитування, тому будемо вдовольнятися даним.
Отже, до першої десятки топових технічних освітніх закладів, в яких є IT-спеціальності, у 2019-му році потрапили:
Національний університет "Києво-Могилянська академія" (НаУКМА).
Український католицький університет.
Чорноморський національний університет імені П. Могили (ЧНУ ім. Петра Могили).
Харківський національний економічний університет імені С. Кузнеця (ХНЕУ ім. Кузнеця).
Донецький національний університет імені В. Стуса (ДонНУ ім. В. Стуса).
Харківський національний університет радіоелектроніки (ХНУРЕ).
Сумський державний університет (СумДУ).
Київський національний університет імені Т. Шевченка (КНУ ім. Шевченка).
Чернівецький національний університет імені Ю. Федьковича (ЧНУ ім. Федьковича).
Львівський національний університет імені І. Франка (ЛНУ ім. Франка).
В опитуванні взяло участь 3038 студентів та випускників українських вишів. Рейтинг був складений на основі різних аспектів навчання в університеті.
Відповідно до даної публікації, 69.2% опитаних все ж таки радять здобути вищу освіту в українському виші. З них майже 16% рекомендували б відучитися в іншому вітчизняному закладі, відмінному від того, де респонденти самі отримують/отримували вишку, а 12% воліли б обрати іншу спеціальність/факультет. При цьому майже кожен четвертий (24%) вважає, що отримувати диплом треба лише за кордоном. На думку цих респондентів, за межами країни якість освіти краща. Також їх приваблює досвід життя та роботи в іншій країні. При цьому 5.6% опитаних були категоричними і виступили проти здобуття вищої освіти в принципі.
Які предмети потрібно здавати на програміста у ВНЗ – в кожному закладі можуть бути свої критерії, проте зазвичай обов'язковими є рідна мова, математика, англійська, а іноді й фізика.
Вартість навчання у ВНЗ
Для з'ясування цього питання пройдемося найпрестижнішими українськими закладами, а потім вишами, які займають другорядні позиції.
Спочатку візьмемо вартість контрактного навчання в КПІ на IT-напрямках. Найдешевшими за ціною є спеціальності “Комп'ютерні науки”, “Системний аналіз” та “Кібербезпека” — 35 000 грн за рік очного навчання на бакалавраті. 42 000 грн коштує навчання за спеціальностями “Інформаційні системи та технології” і “Комп’ютерна інженерія”, а 45 000 доведеться віддати за “Інженерію програмного забезпечення”.
Візьмемо на розгляд НаУКМА. "Комп'ютерні науки" та "Інженерія програмного забезпечення" коштують по 55 000 грн за рік навчання на бакалавраті.
У КНУ ім. Шевченка ситуація така: ті самі спеціальності, що були перераховані вище, оцінюються у 38 000 грн за рік очного навчання на бакалавраті.
Перейдемо до вузів, які досягли менших висот, ніж розглянуті попередники. На черзі маємо НАУ. "Комп'ютерні науки", "Кібербезпека", “Інформаційні системи та технології” – 26 000 грн, "Інженерія програмного забезпечення" – 29 000 грн, "Комп'ютерна інженерія" – 28 000 грн.
Національний транспортний університет. За "Інженерію програмного забезпечення" та "Комп'ютерні науки" доведеться віддати 25 750 грн. Рік навчання на очному відділенні, звісно.
У СумДУ за "Кібербезпеку" та "Комп'ютерні науки" за перший рік навчання з вас візьмуть 13 440 грн. Наступні курси навчання коштуватимуть 15 365 грн, 20 370 грн та 23 660 грн відповідно.
Цінова вилка досить непогана — приблизно від 13 до 55 тисяч. Причому це не обов'язково граничні значення. Ми розглянули лише декілька університетів, адже їх сотні й у кожного свої особливості. Але навіть із цього списку можна робити відповідні висновки.
Якщо порівнювати вартість навчання у ВНЗ із курсами програмування, то виходить, що курси набагато вигідніші. На курсах ви витратите приблизно 15-25 тисяч на опанування IT-спеціальності, зате через півроку зможете працювати на посаді Junior розробника і з легкістю відіб'єте всю ту суму, яка була витрачена на навчання. В університеті ж ви витратите щонайменше 4 роки і на виході отримаєте такий набір знань, який недостатній для роботодавця. Все одно доведеться звертатися до сторонніх ресурсів (книги, курси, онлайн-ресурси тощо) і займатися самоосвітою, щоб дотягнутися до вимог тієї чи іншої компанії.
Підсумки
Отже, під час пошуків відповіді на питання “Чи потрібна програмісту вища освіта?” нам вдалося багато чого з'ясувати. Розіб'ємо головні тези на “за” та “проти”.
“За” навчання у ВНЗ:
більшість професійних програмістів мають вищу освіту, а також рекомендують іншим отримати диплом;
деякі компанії вимагають наявність диплома у кандидатів на обов'язковій основі; це ж стосується деяких видів IT-професій (біоінженерні розробки і т. д.);
ВНЗ з айтішних напрямів навчають основам майже всього, що пов'язано з IT;
вища математика у ВНЗ дуже важлива для тих, хто збирається пов'язати свою професійну діяльність з наукою, шифруванням, Data Science, Big Data, машинним навчанням, штучним інтелектом та всім, що пов'язано з великими обсягами даних;
диплом допомагає в отриманні візи та керівних посад в IT;
навчаючись у вітчизняному виші, можна стати учасником програми обміну студентами та виїхати на навчання до іншої країни;
навчання на курсах не можна назвати дешевим
відстрочка від армії
ВНЗ - непоганий вибір, якщо ви хочете йти в науку
наявність ярмарок вакансій, де ви можете познайомитися з різними роботодавцями – навіть з інших країн
мережа корисних знайомств у ІТ, яка сприятиме працевлаштуванню і зануренню в айті
"Проти" навчання у ВНЗ:
диплом швидше потрібен для “галочки”, все одно вас тестуватимуть на співбесіді та перевірятимуть ваші вміння та навички
головні рушійні сили технічного університету – не навички та знання, а необхідна для роботи "корочка", очікування та надії членів сім'ї, а також армія
багато навчальних програм в освітніх установах на IT-напрямках є застарілими
ВНЗ з айтішних напрямів навчають лише основам
за рік очного навчання у більш-менш пристойному виші треба буде заплатити не менше 25 тисяч
щоб влаштуватися програмістом в IT-компанію, вам необхідно доучуватися після університетської освіти
Нейтральне, але не менш корисне висловлювання: математичне та аналітичне мислення важливіше, ніж знання формул, проте варто враховувати, що знати математику потрібно настільки добре, наскільки це потрібно для вирішення робочих завдань.
Якщо заплющити очі на безліч суперечливих моментів, університет — це справді своєрідна школа життя. Найважливіше, що можна собі винести з вишу — це зв'язки, досвід від універу та досвід, отриманий під час проживання в гуртожитку. Ви можете отримати гарні знайомства і дізнатися дуже корисні поради щодо перспектив в IT з перших вуст. Через знайомих можна навіть рекомендацію на посаду в IT-компанії отримати.
Тож чи варто отримувати вищу освіту програмісту? На жаль, як засіб вивчення конкретного IT-ремесла університет не можна розглядати, зате все побічне, що пов'язано з ним, зроблено на пристойному рівні. Студентська романтика, незабутнє життя в гуртожитку, ярмарки вакансій, програми співпраці універів із престижними IT-компаніями (курси та інтернатури), програми співпраці з іноземними вузами, знайомства тощо. Саме ці плоди ви повинні збирати під час навчання у ВНЗ.
Якщо ви наважилися здобути вищу освіту, вам не завадить наступна порада. Більшість колишніх студентів рекомендують відучитися перші рік-два, а потім шукати роботу (проходити курси, влаштовуватися до інтернатури). Як підсумок — після закінчення бакалаврату ви маєте і університетську базу, і диплом, і досвід роботи. Час даремно не втратили і при цьому університетське життя скуштували.
Але якщо ви не готові витрачати стільки часу заради сумнівних привілеїв, робіть вибір у сторону курсів. Там вас не навчатимуть нічому зайвому і ви в максимально короткі терміни зможете опанувати бажану спеціальність, а потім отримати свою першу роботу на посаді програміста.
Якщо у вас виникли зауваження або побажання до статті, сміливо залишайте їх у коментарях.
Залишайтеся з ITVDN!
7 найкращих ігор, написаних на Unity
Автор: Влад Сверчков
Добридень, дорогі читачі блогу ITVDN!
Тема комп'ютерних ігор часто опиняється в епіцентрі багатьох обговорень. На сьогоднішній день ігри є свого роду видом мистецтва, який має гіллясту класифікацію та різні горизонтальні і вертикальні поглиблення, подібно до інших видів творчої діяльності.
Як живопис, скульптура, фотомистецтво – ігри також мають свій жанр, котрий викликає у нас різні емоції та відчуття. Одні підносять сюжети, які захоплюють дух, інші змушують вирішувати головоломки, треті спрямовані на те, щоб полоскотати нерви. Кожна людина незалежно від віку та особистих переваг може знайти собі відповідний ігровий екземпляр.
Для того, щоб реалізувати свої ідеї та концепції у відеогрі, розробники використовують безліч інструментів: мови програмування, знання математики, фізики та англійської мови, системи контролю версій, а також ігровий рушій – фундамент будь-якої гри. Саме на останньому ми робимо акцент в даній статті.
Більш детально тему розробки ігор було розкрито в статті “Як стати розробником ігор”. Якщо вам цікаво дізнатися, в чому специфіка роботи гейм девелоперів, як вони сходять на ігровий Олімп і яким набором технологій при цьому озброєні, переходьте за посиланням вище – ви отримаєте відповіді на свої запитання.
Отже, ігровий рушій – це водночас інструментарій для створення гри та її базове програмне забезпечення; кілька підсистем, які мають працювати разом, щоб на виході отримати гру. У ці підсистеми входять рушії рендерингу, анімації, фізики, звуку, система скриптів, штучний інтелект, мережевий код та багато інших складових. Одним із найпопулярніших рушіїв є Unity (читається як "юніті") – кросплатформний продукт компанії Unity Technologies, що дозволяє створювати додатки більш ніж на 25 різних платформах. Цей перелік включає персональні комп'ютери (Windows, macOS, Linux), мобільні пристрої (Android, iOS), консолі (PlayStation, Xbox, Switch тощо), VR (Virtual Reality) та інші пристрої.
Unity можна назвати найбільш щедрим ігровим рушієм. І не лише тому, що на ньому випущено справді багато ігор різних жанрів під безліч платформ, а й за його безкоштовну базову версію. Unity значно зменшує трудові та грошові витрати розробників. Рушій порівняно простий у використанні для будь-якого девелопера-початківця, але при цьому не відстає від технологій поточного часу. Ця якість принесла Unity велику популярність серед інді-розробників. Однак і у колі великих студій його також використовують.
Давайте розглянемо ТОП-7 найкращих ігор на Unity, щоб переконатися в силі та здібностях даного рушія.
Hearthstone: Heroes of Warcraft
Карткова онлайн-гра за мотивами всесвіту Warcraft. Її суть полягає у віртуальних битвах один з одним за допомогою колод карт з покроковою системою передачі ходів між опонентами протягом матчу.
До виходу Hearthstone поняття “карткова гра” у цифровому середовищі сприймалося досить холодно. Багатосторінковий перелік правил, маса перевантажених механік, загальна недружелюбність до гравця – це спадщина попередніх екземплярів жанру, стикатися з яким середньостатистичному користувачеві не дуже й хотілося. Саме тому реліз альфа-версії Hearthstone сколихнув ігрову спільноту, викликавши велику увагу до гейм-продукту. Його відносна простота та захоплюючий ігровий процес не лише повернули надію гравцям-ветеранам, а й привели нову аудиторію. Можна сказати, що в жанрі карткових ігор відкрилося друге дихання.
Hearthstone: Heroes of Warcraft неодноразово нагороджувалася преміями в різних номінаціях, у тому числі: “найкраща мобільна гра”, “найкраща стратегічна гра”, “найкраща багатокористувацька онлайн-гра”. Більше того, вона стала однією з провідних кіберспортивних дисциплін у своєму жанрі.
Cities Skylines
Містобудівний симулятор, який спрямований на забудову та розвиток власного міста. Гра примітна тим, що крім архітектури необхідно займатися оподаткуванням, організовувати роботу міських служб та громадського транспорту, підтримувати рівень бюджету міста, населення, здоров'я, щастя, зайнятості, стежити за забрудненням довкілля, автотрафіком та іншими елементами гри. Підтримати розповсюдження парків, заборонити куріння, ввести закон про економію електроенергії — вам доступна безліч важелів управління вашим містом.
Також у гру вбудований API для створення модифікацій мовою програмування C#, що дозволяє гравцям додавати нові моделі будівель та транспорту, вносити свої корективи у процес гри. Наприклад, можна збільшити допустиму ігрову зону, змінити ігрову перспективу на перспективу від першої особи, автоматизувати деякі елементи гри.
Cuphead
Комп'ютерна гра, яка поєднує в собі жанри run and gun та shoot 'em up. Її головною особливістю є візуальна складова. Працюючи над стилістикою Cuphead, канадські інді-розробники надихалися роботами аніматорів 1930-х років, внаслідок чого графічно гра дуже відрізняється від будь-яких інших.
Cuphead анімована повністю на папері як справжній мультфільм тих часів. Комп'ютер був використаний лише для розмальовки ескізів, в той час як саме життя намальованим героям дали руки аніматора, які за допомогою олівця змалювали велику кількість аркушів паперу.
Однак Cuphead сподобалася гравцям не лише завдяки мальованій анімації. За мультяшною естетикою ховається шалений хардкор — платформер просто створений для того, щоб перетворювати голови геймерів на киплячий чайник. Невелика кількість життів та різноманітність випробувань/босів розставлять усі крапки над “i”. Навіть запросивши у гру свого друга, не сподівайтеся на поступки з боку гри.
Pillars of Eternity
Ізометрична партійна рольова гра, яка сповідує принципи "старої школи" і є духовною спадкоємицею гучних рольових ігор минулого: Baldur's Gate, Planescape: Torment та Icewind Dale. Pillars of Eternity не тільки нічим не поступається своїм попередникам із двохтисячних, а й привносить зручну сучасну механіку. Розроблена компанією Obsidian Entertainment, на рахунку якої такі відомі проєкти, як: Fallout: New Vegas, Neverwinter Nights 2, Star Wars: Knights of the Old Republic II, The Outer Worlds та інші. Всі необхідні грошові витрати на створення гри були покриті за допомогою краудфандингової платформи Kickstarter — в концепцію гри повірили вірні шанувальники творчості Обсидіан та фанати рольових ігор.
За допомогою Unity розробникам вдалося створити деталізований та пропрацьований світ, який високо оцінили як критики, так і геймери. Рушій дозволив дбайливо перенести старі механіки на нову платформу, при цьому відшліфувавши всі гострі кути, які були присутні в іграх-побратимах кінця дев'яностих та початку нульових. Звичайно, Pillars of Eternity не ідеальна, проте вона довела, що класні рольові ігри зі старим духом і водночас сучасною оболонкою можуть існувати та бути гарним прикладом для наступних екземплярів цього жанру.
Pokemon Go
Мобільна гра, яка у 2016 році прогриміла на весь світ. Їй присвячувалися репортажі новин у багатьох країнах, включаючи США, Росію, Україну тощо. Платформа Unity забезпечила вихід Pokemon Go як під Андроїд, так і під iOS. Грі вистачило лише одного тижня, щоб стати всесвітньо відомою.
Pokemon Go – це рольова багатокористувацька гра для мобільних пристроїв, що використовує технологію доповненої реальності, яка "викликає" віртуальних покемонів на певні ділянки реальної місцевості. Щоб побачити дане створіння і спіймати його, необхідно зайти в гру і направити камеру свого смартфона/планшета на місце присутності істоти. Самі покемони переміщуються ігровою картою в той час, як ви рухаєтеся у реальному світі. Таким чином, гра не тільки демонструє досягнення сучасних технологій доповненої реальності, а й мотивує своїх гравців на підтримку фізичної активності.
Subnautica
Гра на рушії Unity, розроблена інді-студією Unknown Worlds Entertainment у жанрі пригодницької гри та симулятора виживання з відкритим світом. Дуже тепло прийнята як критиками, так і гравцями. На Metacritic – популярному сервісі, який збирає рецензії до різних музичних альбомів, ігор, фільмів, ТВ-шоу, DVD-дисків та мобільних ігор – середня оцінка ПК-версії від критиків – 87 із 100 (39 видань висловили свою думку), а від користувачів – 8.5 із 10 (806 гравців висловили свою думку).
Геймплей гри побудований навколо виживання на барвистій океанічній планеті серед безлічі недружніх істот, куди герой потрапив у результаті аварії космічного корабля. Для різноманітності контенту та надання йому більшої кількості механік, в гру було введено зручну систему крафту. Не забули розробники і про сюжетну складову, яка здатна якщо не здивувати, то утримувати гравця в інтризі до самої розв'язки. Проте головною особливістю Subnautica було саме дослідження підводного світу, сповненого таємниць та небезпек. Перегляньте огляди на неї і ви дізнаєтеся, наскільки комплексну, багатогранну і при цьому красиву гру можна створити з використанням Unity.
Kerbal Space Program
Цікавий проєкт на Unity, котрий являє собою космічний симулятор. Жанр гри – пісочниця, в якій вам слід спорудити свій космодром, побудувати ракету і запустити її в космос. Обираєте цілі, збираєте літаючий апарат необхідної конфігурації, злітаєте, вирушаєте в якусь цікаву точку космосу, здійснюєте свої дослідження – і назад додому.
Звісно, не все так просто. Щоб здійснити задумане, вам потрібні хоча б поверхневі знання в області фізики, інакше ваша конструкція навіть на сантиметр не підніметься. Також не обійтися і без кмітливості. Конструювання ракети, вирішення питань паливного постачання, акумуляція електроенергії в космічному просторі та інше — іграшка для тих, хто не боїться експериментувати та кидати собі виклики. Створюючи її, розробники хотіли зробити не лише головоломку для аерокосмічних любителів, а й популяризувати наукову та інженерну діяльність у широкого загалу. Чудовий вибір для тих, хто бажає підвищити свою ерудованість.
Підсумки
Як ви помітили, ігровий рушій Unity демонструє чудові показники у створенні абсолютно різнополярних гейм-продуктів. Містобудівні симулятори, доповнена реальність на вашому смартфоні/планшеті, хардкорні ігри в стилі ретро-мультиків, підводні пригодницькі пісочниці, симулятори з великим акцентом на фізику та кмітливість, карткові ігри та ізометричні рольові стратегії... Це далеко не повний перелік жанрів, в яких Unity себе чудово зарекомендував. Щоб створювати захоплюючі і затягуючі ігри, необов'язково мати знання С/С++.
Якщо вас цікавить гейм індустрія і ви хочете пов'язати свою професійну діяльність з розробкою ігор, пропонуємо вам опанувати спеціальність Unity/Game Developer, яка доступна на ITVDN у форматі записаних відео уроків. Обов'язкова програма навчання включає наступні відео курси:
Unity Starter
Unity Essential
Unity Advanced
Основи використання Git
Unity User Interface
Крім цього, програма містить прикладні відео курси, в яких автор демонструє створення ігор, аналогічних таким загальновідомим, як: Need For Speed, Pokemon Go, Counter Strike, Agar.io тощо. Також в курсі приділяється увага створенню ігор VR (віртуальна реальність) та модифікації вже існуючих (як, наприклад, GTA V).
Для того, щоб створювати унікальні відеоігри з добре пропрацьованим геймплеєм, необхідно вивчити мову програмування C#. Безумовно, розробляти ігри можна, знаючи лише Unity, проте щоб внести щось своє до гри, потрібна C#. Ця мова є однією з найлегших та найзручніших у вивченні для новачків. ITVDN має невеликий “чит” для тих, хто хоче її опанувати – відео курси від Олександра Шевчука, експерта у галузі побудови архітектури інформаційних систем, бізнес-аналізу та управління IT-проєктами. Цей автор є одним із найулюбленіших серед наших студентів. Його манері викладання складно знайти рівних, як і рівню зрозумілості записаних ним уроків.
Нещодавно Олександр Шевчук випустив новий відео курс "Процедурне програмування мовою C#", який є оновленням курсу "С# Стартовий". Обираючи навчання у даного автора, ви досягнете дзену C# у максимально зрозумілій та мотивуючій формі, котру складно відшукати в інтернет-просторі. Поєднайте отримані знання з відео курсами спеціальності Unity/Game Developer та отримайте солідний інструментарій розробки відеоігор, з яким зможете підкорювати будь-які вершини ігробудівництва.
Якщо у вас виникли зауваження або побажання до статті, сміливо залишайте їх у коментарях.
Бажаємо успіхів та невичерпної мотивації на шляху до ваших цілей!
Залишайтеся з ITVDN!
Яку IT-спеціальність обрати у 2021 році?
Автор: Влад Сверчков
Добрый день! Сегодня мы попробуем разобраться с тем, какие IT-специальности сейчас в тренде и какие прогнозы можно строить на 2021 год.
IT-отрасль привлекательна со всех сторон - и для тех, кто выбирает профессию, и для бизнесменов, это один из самых динамично развивающихся секторов экономики. Такая ситуация не удивительна, ведь IT — достаточно молодая и перспективная сфера, чьи плоды существенно упрощают нашу жизнь.
При всем этом, информационная сфера снижает порог вхождения и с каждым годом становится искушением для всё бо́льшего количества людей. Каждый, кто интересуется IT — будь то новичок, желающий освоить IT-специальность, либо опытный разработчик, следящий за тенденциями — хочет знать, какие направления и профессии будут востребованы в следующем году. Но даже внутри столь многогранной отрасли есть как те профессии, которые теряют актуальность, так и те, которые возникают на ровном месте. Поэтому мы изучили респектабельные аналитические ресурсы и готовы рассказать вам, какие направления и специальности с наибольшей вероятностью будут популярны в ближайшем будущем. Начинаем!
Особенности 2020 года и их влияние на IT отрасль
Наибольшим сотрясением 2020-го года для мировой экономики стала эпидемия коронавируса, из-за которой множество стран ввели жесткие карантинные ограничения, чем и был нанесен ощутимый удар по всем отраслям. Это явление не обошло стороной и IT-сферу.
Если говорить об Украине, то помимо массовых сокращений на рабочих местах мы получили заметное проседание по количеству вакансий. Как пример, информационный ресурс для украинских разработчиков DOU с апреля 2020-го года начал проводить кризисную аналитику и показал, как менялась кривая количества опубликованных вакансий на данном ресурсе в Украине.
На графике бросается в глаза существенное проседание по вакансиям в апреле. Два месяца спустя кривая не смогла достичь ни одного из минимальных показателей как минимум с марта 2019-го года. Только в июле удалось получить предкризисное количество вакансий. Потеря предложений была вызвана не только карантинными ограничениями внутри страны, но и тем, что украинский IT-рынок в подавляющем большинстве ориентирован на аутсорс (заказчики в основном с Запада), а не на производство собственного ПО. Следовательно, наши разработчики сильно зависят от иностранного бизнеса, который также вынужден был остановиться вследствии введенных ограничений. А нет заказчиков — нет и работы.
Однако, не все так плохо. Аутсорс означает зависимость от иностранных компаний. А поскольку большинство клиентов из развитых стран, где бизнес быстро восстанавливается, проседание украинского IT-сектора не такое и страшное.
Более того, карантинные ограничения постепенно смягчаются, люди начинают привыкать и адаптироваться под новые условия работы. Дистанционный режим работы хоть и не самый продуктивный, однако он максимально подходит большинству IT-работников, чего нельзя сказать о тех, кто занят в других секторах экономики.
Также, текущие осложнения экономической ситуации в мире отличаются от тех, которые были прежде — в 2001 и 2008 годах. Сейчас отсутствует разочарование инвесторов — все готовы вернуться не прежнюю колею, как только уйдут карантинные ограничения. Поэтому, последствия эпидемии не должны сыграть решающую роль в определении ориентиров IT-сферы в 2021 году.
О чем говорят аналитические обзоры
Давайте воспользуемся ежегодным опросом от Stack Overflow и взглянем на то, какие профессии были наиболее популярны в 2019 году и каких изменений они претерпели к августу 2020 года. Будем руководствоваться данными из Stack Overflow Developer Survey 2020 и Stack Overflow Developer Survey 2019.
Небольшая ремарка для тех, кто не знаком с данным сервисом. Stack Overflow (произносится как “стэк оверфлоу”) — специальный интернет-ресурс для IT-специалистов различных направлений, где каждый может задать свой вопрос и получить профессиональный ответ от других участников сервиса. Другими словами, это интернациональная система вопросов-ответов для айтишников.
Итак, взглянем на статистику, собранную Stack Overflow за 2019 год, в которой указано, с какой должностью себя ассоциируют участники данного сервиса. В опросе приняло участие около 90 000 разработчиков. В среднем, каждый респондент идентифицировал себя с тремя должностями сразу, что и отразилось на необычном процентном соотношении на картинке ниже:
Вот та же статистика, только уже за февраль 2020 года (65 000 опрошенных):
Как можно видеть, лидирующие специальности за последние годы принадлежат Full Stack и BackEnd направлениям. За ними прочно закрепились FrontEnd девелоперы, энтерпрайз разработчики (создают ПО для бизнес-заказчиков) и разработчики мобильных приложений. Также, на несколько позиций вверх пробился и DevOps специалист, который синхронизирует все этапы разработки программного продукта — от написания кода до тестирования и релиза.
В целом, резкие и непредсказуемые перемены в профессиональной деятельности разработчиков не наблюдаются. Из этого можно сделать вывод, что примерно та же тенденция в профессиях сохранится и на следующий год.
Также, посмотрим на популярность используемых языков и технологий. Из опроса 2019-го года и 2020-го, соответственно:
На первом месте обоих рейтингов от Stack Overflow язык программирования JavaScript, который находит широкое применение в веб-разработке (как BackEnd, так и FrontEnd). За ним следуют языки верстки — HTML & CSS, без которых немыслим уже упомянутый фронтенд. Далее идет уклон в сторону баз данных. Если мы говорим о реляционных БД, то без языка запросов SQL не обойтись. Их используют различные IT-специалисты — от разработчиков ПО до тестировщиков и системных администраторов.
Python, Java, C# — универсальные языки программирования, которые используются во множестве сфер разработки. Последние годы они не покидают ни один ТОП-10 языков, и у них достаточно серьезные аргументы, чтобы гарантировать себе пик славы на многие годы вперед.
Инструменты Bash/Shell/PowerShell применяются зачастую системными администраторами и DevOps инженерами, поскольку позволяют автоматизировать большинство рутинных процессов, благодаря чему они и оказались на высоких местах в опросе от Stack Overflow.
Также рассмотрим рейтинг языков согласно индексу TIOBE, который оценивает популярность языков программирования каждый месяц и является респектабельным показателем — на него ссылается множество аналитиков в ходе своих исследований:
Рейтинг индекса TIOBE отличается от аналогичных на Stack Overflow. Это связано с тем, что TIOBE-рейтинги основаны на количестве квалифицированных инженеров по всему миру, а также количестве курсов и сторонних поставщиков. Популярные поисковые движки, такие как Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube и Baidu, используются для расчета рейтингов. Важно отметить, что индекс TIOBE — не о лучшем языке или языке, на котором было написано наибольшее количество строчек. Он может быть использован, чтобы узнать, соответствуют ли ваши навыки современным запросам, либо, чтобы принять стратегическое решение касательно того, какой язык должен быть использован в разработке новой программной системы. Подробнее с методами определения индекса вы можете ознакомиться по ссылке.
Итак, в данном рейтинге появились языки программирования C/C++, которые известны даже большей универсальностью, чем Java, Python, C# и JavaScript вместе взяты, поскольку помимо прочего они могут работать с памятью, что очень важно в ресурсоемких задачах — играх, тяжеловесных ПО, микроконтроллерах и т. д. Также, C/C++ часто изучаются во многих технических ВУЗах.
PHP до сих пор остается классическим языком серверной разработки и не собирается покидать эту нишу, что и обеспечивает ему 9-е место в рейтинге.
Рассмотрим список популярных веб-технологий согласно Developer Survey за 2019-й и 2020-й годы соответственно:
Как видно из диаграмм, главные позиции принадлежат FrontEnd-библиотекам и фреймворкам — jQuery, React.js, Angular, а также технологиям .NET платформы — ASP.NET и ASP.NET Core. Наряду с ними библиотека Express, которая используется в бекенде на Node.js (JavaScript). Только после них идут фреймворки Spring (Java) и Django (Python).
Список других фреймворков, библиотек и инструментов разработки:
Максимальный процентный отрыв у платформы Node.js (веб-разработка), за ней идут .NET и .NET Core. Технологии компании Майкрософт удерживают хорошие позиции. Далее идут библиотеки Python: Panda (анализ данных) и TensorFlow (платформа для машинного и глубокого обучения). За ними — React Native (фреймворк для кроссплатформенной разработки под iOS и Android) и движок Unity 3D (разработка игр под различные устройства и платформы).
Полученные сведения уже дают достаточное представление о том, что сейчас происходит на рынке IT-услуг и позволяют делать определенные прогнозы касательно востребованности IT-профессий.
Какие IT-специальности будут востребованы?
FrontEnd Developer
Как мы выяснили в ходе анализа Stack Overflow Developer Survey и индекса TIOBE, фронтенд-триада HTML, CSS и JavaScript по сей день востребована и используется множеством разработчиков. Эти языки находят широкое применение в разработке клиентской стороны веб-приложений (визуальная часть + пользовательская логика).
Также, ресурсы по поиску работы имеют множество вакансий FrontEnd Developer. Как пример, на украинском ресурсе для IT-разработчиков DOU на момент написания статьи было опубликовано 564 вакансии по данному направлению, в то время, как на Java, Python и .NET специальностям припадало 266, 179 и 268 предложений соответственно.
Фронтенд разработчики востребованы, и у нас нет никаких сомнений, что данная тенденция сохранится в 2021-м году.
BackEnd Developer
Разработчик серверной стороны веб-приложений. В своем арсенале имеет один из популярных языков программирования — C# / PHP / Python / Java / JavaScript / Ruby / Perl либо иной. Также, бекенд-разработчик знает множество серверных технологий и техник разработки.
Данные специалисты ответственные за все, что происходит по ту сторону любого приложения в вебе. Если сравнить FrontEnd и BackEnd направления с айсбергом, то FrontEnd — его верхушка, которая выглядывает над поверхностью, а BackEnd — все то, что скрыто от наших глаз под водой.
Mobile Developer (Android / iOS)
Мобильная разработка как таковая появилась буквально два десятка лет назад. За это время она прошла серьезную трансформацию и сегодня занимает одну из доминирующих позиций в IT-сфере. При этом, наработками специалистов из этой отрасли пользуется чуть ли не каждый человек — это не только смартфоны и планшеты, но и фитнес-браслеты, наручные часы, электронные книги, компоненты “интернета вещей” и другие гаджеты. Наиболее популярные языки мобильной разработки: Java / Kotlin под Android разработку и Objective-C / Swift под iOS.
DevOps Engineer
DevOps — это методология, которая совмещает в себе разработку (Development) и системное администрирование (Operations) с целью увеличения частоты выпуска релизов. Данные специалисты также должны обладать навыками использования облачных технологий и автоматизации инфраструктуры.
DevOps инженеры в качестве основного языка программирования выбирают Python за его простоту, мощность, надежность, многозадачность, поддержку большого количества специальных пакетов, которые повышают эффективность данного языка программирования и за другие преимущества. Python используют, в основном, вместе с командной оболочкой Bash для упрощения процессов развертывания ПО и автоматизации различных задач системного администрирования (написание скриптов).
Можно сказать, что DevOps инженеры — это смесь программиста и системного администратора. Бизнес очень любит универсальных игроков, так что данная профессия очень актуальная и престижная.
CyberSecurity
IT индустрия растет, а значит, растет и спрос на тех, кто должен ее оберегать. Этим и занимается специалист по кибербезопасности. На самом деле, данное направление также имеет несколько ответвлений и вы можете как защищать программные системы от проникновения (направление “защиты”), так и быть пентестером — специалистом по выявлению уязвимостей в подобных системах (направление “атаки”).
Можете уйти в анализ и риски (должность Security Analyst и Risk Compliance Specialist, соответственно), заниматься поиском компьютерных вирусов и выстраиванием линии защиты от них (Malware Researcher), а также испытать себя во многих других CyberSecurity-специальностях — сфера кибербезопасности дает большие возможности для самореализации.
Database Administrator (DBA)
Нормальное функционирование современного мира невозможно без баз данных и тех, кто умеет их грамотно обслуживать. С каждым годом спрос на таких специалистов растет пропорционально разрастанию IT-инфраструктуры. Помимо обслуживания в обязанности DBA входит выработка требований к базам данных, их проектирование, реализация, эффективное использование и поддержание целостности БД, включая управление учетными записями пользователей БД и защиту от несанкционированного доступа.
Тут не обойтись без знаний языка запросов SQL, одной из СУБД (PostgreSQL, например), а также различных технологий и приемов системного администрирования.
PM (Project Manager)
В мире IT ощущается сильный дефицит хороших проектных менеджеров — управленцев, которые руководят IT-проектом в целом. В большинстве случаев это бывшие программисты или тестировщики. Однако, чтобы стать PM-ом необязательно иметь за плечами кодерское прошлое.
Ключевыми обязанностями этих специалистов являются: проектирование и расстановка приоритетов, планирование выполнения задач, контроль, коммуникации, а также оперативное решение проблем внутри проекта. Ну а самая главная задача — сделать так, чтоб идея заказчика была реализована в срок в условиях ограниченности ресурсов.
Конечно, это очень обобщенный список обязанностей PM-а. На самом деле данные специалисты часто работают сверх нормы и их рабочее состояние можно описать как “белка в колесе”. Однако послевкусию успешно выполненного проекта тяжело что-либо противопоставить.
Загвоздка этой профессии в том, что должность PM-а предусматривает большую конкуренцию. Согласно данным, в июле 2020-го года на сайте DOU на одну вакансию проджект менеджера откликнулось почти 30 кандидатов (всего 183 вакансии). Поэтому, чтобы заполучить желаемую позицию, необходимо обладать не только необходимым опытом и знаниями, но и хорошими организаторскими способностями, а также другими важными для этой профессии личностными качествами.
QA Engineer (Quality Assurance)
Специалист по обеспечению качества, он же — тестировщик. Призван выявлять неисправности в ПО, которые допустили разработчики. Востребованность данных специалистов тяжело оспорить, ведь каждый программный продукт перед выходом в свет может пройти не одну итерацию тестирования, где выявляется приличное количество багов. Выходит, без QA мы бы имели очень недоработанное ПО, а производитель — провал продукта на рынке и падение репутации.
Тестировщиков делят на два вида — Manual QA Engineer и Automation QA Engineer. Первый выполняет всю работу вручную, а второй использует инструменты автоматизации, в том числе и языки программирования (Java, Python) что влияет на заработную плату и ценность такого сотрудника. Конкуренция за место тестировщика довольно высока, а потому получить первую должность может быть не таким простым заданием.
Data Scientist
Ученый-эксперт, главные задачи которого — извлечение из большого массива данных полезной информации, которая потом может использоваться в различных сферах; в основном, это бизнес и наука.
Данный специалист должен иметь прекрасное аналитическое мышление, владеть математическим аппаратом (включая мат. статистику и мат. моделирование), знать программирование (Python, R) и базы данных (как SQL, так и NoSQL). С начала 2010-х годов профессия Data Scientist считается одной из самых привлекательных, высокооплачиваемых и перспективных в IT.
Data Analyst
В то время, как Data Scientist ориентируется на предиктивную аналитику, Data Analyst работает с информацией постфактум. У данного профессионала менее техническая роль — он работает с уже готовыми данными, а именно: проводит дескриптивный анализ, интерпретирует и визуализирует результаты, а также презентует отчет своим заказчикам.
Заключение
В данной статье мы постарались дать ответ на вопрос “Какую IT-специальность стоит выбрать в 2021 году?”. Такие ресурсы, как Stack Overflow, DOU и TIOBE помогли нам проанализировать текущую ситуацию в IT и проследить взаимосвязь с прошлым, 2019 годом. В целом, уклон на веб, энтерпрайз и мобильную разработку сохранился и каких-то кардинальных изменений не ожидается. Также, никуда не исчезла востребованность тестировщиков и специалистов, которые работают с данными.
Естественно, карантинные ограничения из-за распространения коронавирусной инфекции отразились и на IT-секторе (снижение ЗП, увольнения, переход на дистанционную форму работы), но мировое население привыкает и адаптируется под новые условия — все постепенно приходит в норму, а сами инвесторы готовы ринуться в бой, как только все ограничения будут сняты.
Зачем ждать подходящего момента? Берите момент и делайте его подходящим! ITVDN - это образовательная платформа для онлайн обучения программированию и информационным технологиям.
Наш портал насчитывает более 190 видео курсов и имеет собственные программы обучения по 12 самым популярным IT-профессиям, среди которых:
Верстальщик сайтов
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
iOS Developer
Unity / Game Developer
Database Developer
и другие
Формат обучения - записанные видео курсы, по которым можно обучаться в любое удобное время. Таким образом, вы сможете освоить IT-профессию не выходя из дома. Со всеми специальностями можно подробно ознакомиться, перейдя на страницу специальностей ITVDN.
Помимо записанных видео курсов, наша образовательная платформа предоставляет обучение в новом формате - Live Online. Он предусматривает регулярные онлайн занятия с ментором в небольших группах из 6-15 человек, на которых объясняется новый материал, обсуждаются нюансы выполнения практических заданий, есть проверка ДЗ и чат для общения с одногруппниками, а также доступ к видео курсам ITVDN. В процессе обучения учащиеся также разрабатывают собственный курсовой проект, который в конце защищают и добавляют в свое портфолио.
На данный момент Live Online обучение проводится по четырем самым популярным IT-специальностям:
C#/.NET Developer
Frontend Developer
Java Developer
Python Developer
Если вас заинтересовал формат Live Online, переходите по ссылкам и ознакомьтесь с подробностями предложений по каждой из четырех специальностей.
Надеемся, что наша статья была полезной для вас. С радостью примем любые пожелания и замечания. Выбирайте IT-профессию вашей мечты и пускай ничто не останавливает вас на пути к ней!
Изучайте программирование на ITVDN
Як стати Android розробником
Автор: Влад Сверчков
Операционная система Android
Языки программирования Java и Kotlin. Принципы ООП
Среда Android Studio и набор инструментов Android SDK
Формат обмена данными JSON
Архитектура REST API
Реактивное программирование
Библиотека Retrofit 2
Фреймворк Dagger 2
Данные и СУБД SQLite
UI/UX дизайн
Шаблоны проектирования
Алгоритмы и структуры данных
Unit тестирование
Архитектурные шаблоны
Git & GitHub
Google Play
Английский язык
Как стать Android разработчиком?
Итоги
Всем привет!
С каждым годом смартфоны, планшеты и другие гаджеты приобретают все большую популярность. Нам уже трудно представить хотя бы один день без них. Каким образом мы так сильно приявязались к ним? Все дело в программном обеспечении, которое находит ключ к каждому из нас: общение (телефонная связь, видеозвонки, социальные сети), просмотр мультимедийного контента, прослушивание музыки, фото- и видеосъемка, игры на любой вкус и цвет, обучающие приложения и т. д. За всем этим стоят девелоперы, разрабатывающие программы, от которых тяжело оторваться.
Каждое мобильное устройство работает с использованием одной из мобильных операционных систем. Cамыми популярными из них являются Android и iOS. В контексте данной статьи нас интересует именно первая ОС. Мы расскажем вам, какие инструменты используют разработчики в создании таких увлекательных приложений на Android и как стать специалистом в этой сфере.
Но прежде хотим познакомить вас поближе с данной операционной системой. Уверены, что практически каждый ее использовал (а может, и сейчас ею пользуется), однако сейчас вы узнаете некоторые интересные факты об Android:
Изначально Android разрабатывалась как ОС для фотоаппаратов.
ОС Android основана на ядре Linux.
Компания Samsung имела возможность приобрести стартап-компанию Android Inc. в 2004-м году, однако корейцы поставили под сомнение выгодность этого предложения. Через год корпорация Google купила Android Inc. не менее чем за $50 миллионов и смогла направить полученный потенциал в нужное русло.
Число активированных устройств, использующих Android, более 2 миллиардов.
Первая версия Android, как и первый пакет разработчика (SDK 1.0), вышла осенью 2008 года. Тогда эту ОС многие критиковали и не верили в успешность проекта.
Google Карты вычисляют дорожные пробки на основе концентрации и скорости перемещения Android устройств.
Android используется не только в смартфонах и планшетах, но также и в электронных книгах, наручных часах, фитнес-браслетах, игровых приставках, ноутбуках, нетбуках, смартбуках, очках Google Glass, телевизорах, бытовых роботах, научных аппаратах, компонентах исследовательских систем на базе гаджетов, компонентах IoT (Internet of Things — “интернет вещей”) и других устройствах.
Теперь перейдем ближе к сути.
Андроид разработчик — это IT-специалист, который создает, поддерживает и совершенствует программное обеспечение для мобильных устройств, использующих популярную ОС Android. Вместе с этим он задействован в процессах поддержки, улучшения и обновления разрабатываемых продуктов. Если посмотреть на количество устройств, которые используют данную ОС, можно прийти к выводу, что разработчик под платформу Андроид — очень востребован в IT, а также имеет высокие доходы. Какие технологии использует в своей работе этот специалист?
Какие языки программирования и технологии используют Android разработчики
Android
Каждый Android девелопер обязан знать операционную систему, под которую разрабатывает софт, а также понимать назначение и жизненный цикл Android-компонентов. Чтобы создавать эффективные мобильные приложения, вы должны понимать все аспекты устройства и работы данной ОС.
Java + ООП
Java — это объектно-ориентированный язык программирования со строгой типизацией. Безусловно, в создании приложений под Андроид можно использовать другие языки (C#, C/C++, Python и прочие), однако, именно Java считается флагманским в Android разработке. Поэтому в данной статье мы будем делать уклон в Java-стек.
Что являет собою этот язык? Не будем углубляться в его устройство, а скажем лишь, что все Java-приложения транслируются в специальный байт-код, выполняемый виртуальной машиной JVM (Java Virtual Machine), которая может быть установлена практически на любое устройство. Это делает программы, разработанные на Java, кроссплатформенными.
Какими знаниями необходимо обладать? Прежде всего необходимо знать Java и владеть методологией объектно-ориентированного программирования (ООП). Если конкретизировать:
Машинная математика, переменные и типы данных, условные конструкции, логические операции, циклические конструкции, методы, рекурсия, массивы, списки, обработка исключений, суперкласс Object, обобщения (Generics, дженерики), работа с памятью.
Понимание и применение пакетов (Packages) в Java;
ООП, понятия объектов и классов;
Механизмы наследования, умение работать с интерфейсами;
Коллекции и работа с ними;
Параллелизм.
Помимо теоретических знаний, новичок должен сформировать необходимые навыки написания кода. Для этого мы советуем вам как можно чаще практиковаться и решать прикладные задачки из интернета либо составленные самолично.
Также, советуем использовать онлайн-тренажеры, например, интерактивный тренажер от ITVDN. С его помощью вы сможете потренироваться в кодинге на Java и проверить свои знания.
Kotlin
Молодой и перспективный язык программирования, который поддерживает как объектно-ориентированное, так и процедурное программирование. Отличается своей простотой, гибкостью, лаконичностью, и являет собой следующий этап развития Java. Kotlin-приложения компилируются в уже упомянутый JVM байт-код, что делает этот язык полностью совместимым с Java.
На конференции для разработчиков I/O 2017 компания Google расставила акценты в Android разработке, заявив, что язык программирования Kotlin отныне позиционируется как приоритетный язык для разработчиков приложений под ОС Android. Подкреплено это было тем, что теперь новые API и библиотеки будут выпускаться сперва под Котлин.
Несмотря на возрастающую популярность данного языка и поддержку со стороны Google, Java не собирается уходить из мобильной разработки, удерживая там уверенные позиции и по сей день. Так что знание обоих языков будет предпочтительным для всех, кто собирается заниматься Андроид разработкой. В любом случае, зная Java, вы безпроблемно освоите и Kotlin. Все-таки классику надо знать и уважать.
Среда Android Studio и набор инструментов Android SDK
Android Studio — это интегрированная среда разработки (IDE) приложений под Android. В ней вы будете создавать проекты и работать над ними. В свою очередь, студия вам предоставит всевозможные удобности для облегчения разработки софта.
Android Software Development Kit — кроссплатформенный комплект средств Android разработки, включающий в себя: отладчик, набор библиотек, телефонный эмулятор, набор документации по работе в данной среде и примеры приложений. Особенно интересен в этом перечне эмулятор — программа, которая создает виртуальный мобильный девайс, где можно тестировать написанные приложения и смотреть, как они будут выглядеть на том или ином Андроид-устройстве.
JSON
JSON (JavaScript Object Notation) — это общий формат обмена данными. Позволяет совершать обмен информацией между программными продуктами, написанными на разных языках. Таким образом, клиент, использующий Java, может легко передавать данные на сервер, который реализован с помощью Ruby/Java/PHP.
REST API
REST — популярный архитектурный стиль, содержащий определенные принципы организации взаимодействия приложения либо сайта с сервером через протокол HTTP. API — это прикладной программный интерфейс. С его помощью происходит определение, каким образом следует обращаться к программе и какие ответы она обязана предоставлять пользователям.
К примеру, оплачиваете футболку в интернет-магазине или покупаете билет в кино — как только вы нажимаете соответствующую кнопку, подтверждающую ваши намерения на оплату, сайт соединяет вас с платежной системой с использованием API этой системы. Но даже если система не имеет никакой интеграции с другими, API все равно используется — для общения внутри системы.
RxJava
Библиотека, которая позволяет реализовать принципы реактивного программирования для JVM. Используется для оперирования событиями и потоками данных, комбинируя лучшие идеи шаблонов проектирования Observer (Наблюдатель), Iterator (Итератор) и функционального программирования.
В реальной жизни влияние реактивного подхода мы ощущаем, когда на нашем смартфоне высвечивается сообщение о новом посте человека, которого мы фолловим в социальных сетях или когда нам приходит уведомление о новом сообщении из мессенджера. То есть, вместо того, чтобы каждые 10 секунд лично перезагружать страничку объекта фолловинга или свой мессенджер, мы просто ожидаем уведомления о новом посте, занимаясь своими делами. Это очень полезная опция, позволяющая не только экономить наше время, но и упрощающая нагрузку на сервер. Куда без RxJava в мобильную разработку на Java?
Retrofit 2
Популярная библиотека для сетевого взаимодействия — типобезопасный HTTP-клиент для Android и Java. Позволяет легко получить и загрузить JSON (либо иные структурированные данные) через веб-сервис на основе REST. Для работы с HTTP-запросами в Retrofit используется библиотека OkHTTP.
Dagger 2
Фреймворк для работы с зависимостями в Java и Android. Позволяет уменьшить количество шаблонного кода, структурировать зависимости, упрощает работу при большом количестве зависимостей, а также позволяет делать код более читабельным.
SQLite
Structured Query Language (SQL) — декларативный язык структурированных запросов, разработанный для взаимодействия с базами данных. Особенностью SQL является то, что он лишь описывает необходимые компоненты и желаемые результаты, не указывая, как именно эти результаты должны быть получены.
Любое ПО подразумевает работу с данными, будь то обыкновенная процедура приема данных от сервера (например, скачивание файлов) либо внесение в БД информации о новом пользователе, который только зарегистрировался — умение работать с данными одинаково важно во всех сферах разработки. Исключением является только FrontEnd.
Также, изучите одну из систем управления базами данных (СУБД). В Андроид разработке по умолчанию используется SQLite. Благодаря своей компактности, легкости и надежности, эта СУБД идеально подходит для разработки в электронных устройствах и программах, где стратегическое значение имеет оперативная память.
XML
Extensible Markup Language - расширяемый язык разметки, с помощью которого можно структурировать и хранить данные для удобства их дальнейшей обработки. XML хорошо масштабируем, сочетает в себе простой и удобный синтаксис, а также базируется на кодировках Юникод для представления содержания документов. Также, в Андроид разработке XML используется для создания интерфейса посредством объявления элементов пользовательского интерфейса и задания их расположения.
UI/UX дизайн
UI/UX (User Interface — “интерфейс пользователя”, User eXperience — “опыт пользователя”) дизайн — это проектирование различных пользовательских интерфейсов, в которых удобство использования (UX) настолько же важно, как и внешний вид (UI). Android девелопер в ходе создания приложений также занимается и разработкой внешнего вида приложения, а потому, должен знать, как реализовывать интерфейс, который принесет юзеру максимальный комфорт во всех аспектах использования.
Обычно в UI/UX разработке под Андроид используют Material Design — стиль графического дизайна интерфейсов программного обеспечения и приложений, разработанный компанией Google, делающий уклон на естественность графической составляющей. Для работы необходимо использовать инструменты Material Components for Android.
Шаблоны проектирования
Паттерны (они же шаблоны) являют собой архитектурные конструкции, описывающие общепринятые способы решения задач, которые часто возникают в ходе проектирования программного обеспечения. Всего существует более двух десятков шаблонов, однако разработчику нет необходимости владеть ими всеми. Достаточно изучить самые популярные.
Алгоритмы и структуры данных
Понимание алгоритмов и структур данных — обязательное требование, которому должен соответствовать каждый программист. Это необходимый фундамент, который учит разработчика писать хороший исходный код через подбор оптимальных формы представления информации и последовательности действий.
Изучив структуры данных, вы будете уметь управлять уровнем сложности своих программ, делая их более доступными для понимания, а также разрабатывать приложения с высокой производительностью, которые будут рациональнее взаимодействовать с памятью.
Знание алгоритмов позволит вам создавать сложные конструкции для эффективного решения широкого спектра задач на Java и Kotlin.
Unit тестирование
Вид тестирования, который берет на себя программист, а не тестировщик. Его основная идея заключена в написании тестов под каждую нетривиальную функцию либо метод. Цель Unit (модульного) тестирования — изоляция отдельных частей программы, чтобы продемонстрировать, что по отдельности они являются работоспособными. Таким образом происходит проверка кода на регрессию, а вместе с этим — соответствующее обнаружение ошибок.
Архитектурные шаблоны
В зависимости от предпочтений работодателя, от вас могут потребовать знание одного или нескольких архитектурных паттернов. Это шаблоны наивысшего уровня, которые определяют архитектуру всей программной системы. Самыми популярными являются MVC (Model-View-Controller), MVVM (Model-View-ViewModel), MVP (Model-View-Presenter), Clean Architecture.
Git & GitHub
Git — это популярная система контроля версий, позволяющая вести историю разработки проекта с возможностью доступа к каждой сохраненной версии. Одним из самых известных антагонистов Git является SVN — централизованная система, в отличие от децентрализованной Git.
Также, в работе вам пригодится и сервис онлайн-хостинга проектов, использующий систему контроля версий. В данном случае это GitHub. В паре с Git он позволяет разработчикам сохранять свой код онлайн, а затем взаимодействовать с другими разработчиками в разных проектах.
Данные системы позволяют команде программистов работать над одним проектом одновременно, сохраняя внесенные изменения, а также отслеживать выполнение задач каждым членом группы.
Google Play
Магазин приложений, в котором можно размещать и скачивать приложения под Андроид. Умение его использовать — обязательно. Google Play имеет очень строгий набор политик, которым должно соответствовать ваше приложение. К слову, за аккаунт Android разработчика необходимо один раз раскошелиться на $25. Зато это дешевле, чем за аккаунт iOS девелопера — там с вас будут брать дань каждый год денежную сумму в размере $99.
Английский язык
Наверное, единственный язык, которым обязаны владеть все разработчики без исключения. Его вы будете использовать во время поиска ответов как во время учебы, так и во время работы, ведь большинство новых сведений о технологиях, курсы, учебные и справочные материалы появляются в первую очередь на английском.
Для работы в команде разработчиков обычно знаний языка на уровне чтения технической документации и комментирования кода вполне достаточно, однако если вы планируете вести переговоры и переписку с иностранным заказчиком, ваш уровень должен быть выше.
Как стать Android разработчиком
Как вы заметили, Android девелоперы должны знать множество различных технологий. Сейчас очень много разработчиков данного направления, но действительно хороших очень мало. Поэтому и требования к кандидатам высоки. Если вы пройдетесь по ресурсам поиска работы, то наверняка отметите, что вакансий Android Developer уровня Junior не так много, как хотелось бы, а потому за место под солнцем придется побороться. Давайте перейдем к советам касательно того, как сделать старт в Андроид разработке и начать “набирать массу”.
В университетах никто не обучит вас искусству разработки на Android, поэтому вы можете:
Учиться самостоятельно — по книгам или видео курсам.
Записаться на соответствующие курсы для максимально эффективного обучения специальности.
Второй вариант является лучшим, поскольку предусматривает более высокий уровень дисциплинированности на всем пути обучения, а также структурированную подачу необходимой информации, которой удобно пользоваться и которая отвечает современным требованиям рынка.
Если вы выбираете обучение по видео курсам, то прежде всего определите подходящую для вас образовательную онлайн-платформу.
Мы рекомендуем сделать выбор в пользу ITVDN. Почему именно эта платформа? Давайте мы познакомим вас с преимуществами обучения на ITVDN.
ITVDN — образовательная онлайн-платформа, содержащая полноценные программы обучения по 12 самым популярным специальностям. В каталоге ITVDN свыше 180 видео курсов по различным языкам программирования и информационным технологиям.
Учебная программа каждой специальности содержит:
тщательно подобранный пакет видео курсов;
план обучения с нуля до уровня специалиста, который вы можете адаптировать под свой уровень;
Интерактивный Тренажер навыков для формирования навыков написания кода;
учебные материалы, исходники программного кода, опорный конспект, презентации к урокам;
доступ к Форуму, где каждый учащийся может общаться с другими студентами, тренерами и единомышленниками;
возможность персональной консультации с тренером согласно выбранному пакету подписки;
возможность проходить тестирование для подтверждения знаний, полученных в результате прохождения видео курса;
электронный сертификат об окончании курса после успешного завершения тестирования.
Все видео курсы записываются опытными разработчиками, которые проходят соответствующую сертификацию, чем подтверждают свое мастерство владения той или иной технологией. Наши преподаватели работают в IT и в курсе всех современных тенденций в своей сфере разработки.
Знакомство со специальностью мы рекомендуем начать с просмотра бесплатных вебинаров по специальности Android Developer, в частности, с одноименного вебинара Евгения Мыцы Как стать Android разработчиком, в котором отражены все самые актуальные тренды и требования.
Если вы заинтересованы в изучении специальности Android Developer на ITVDN, у нас есть отличное предложение для вас. Наш образовательный портал содержит полноценную программу обучения Android разработке. Переходите по ссылке и делайте шаг навстречу желаемой профессии!
Какой бы способ обучения вы не выбрали — вначале нужно изучить язык программирования Java и довести владение им до высокого уровня.
После каждой пройденной темы нужно решать практические задачи, чтобы закрепить полученные знания. В этом вам может помочь интерактивный тренажер от ITVDN, с помощью которого вы сможете проверить ваше владение навыками написания кода на Java.
Продолжайте обучение и изучайте те технологии, которые мы перечислили в данной статье. Очень желательно, чтобы у вас был наставник, который мог бы следить за вашим прогрессом, отвечать на возникающие вопросы, давать полезные советы. Это может быть как преподаватель на ITVDN, так и один из ваших знакомых, который занимается Андроид разработкой и готов взять под свое крыло юного протеже.
Знание английского на уровне не ниже Intermediate обязательно. Оно вам понадобится для комфортного поиска информации по Java, Kotlin и другим технологиям в интернете. Если ваши знания английского недостаточны как минимум для чтения технической литературы — обязательно подтяните их при помощи различных курсов либо интернет-материалов свободного пользования.
Изучите Git, начните делать свой небольшой проект и опубликуйте его на GitHub — это даст вам ценный опыт работы с распределенной системой управления версиями и позволит проверить свои навыки в решении реальной задачи. Несколько хороших проектов, и полноценное портфолио готово. Не забывайте о Google Play, ведь именно сюда Android разработчики выкладывают готовый к использованию продукт.
Актуальную информацию касательно языков и технологий, которыми необходимо владеть Android разработчику, вы можете узнать из нашего вебинара “Как стать Android разработчиком”, перейдя по ссылке.
Резюмируя
Android разработчик — специалист, который занимается созданием ПО под различные устройства — смартфоны, планшеты, ноутбуки, нетбуки и прочие девайсы, в основе которых лежит ОС Android. Востребованность этого разработчика очень высока, а на настоящих профессионалов то и дело ведут охоту HR-ы и рекрутеры. Изучайте все необходимые языки и технологии, практикуйтесь, а также всегда подпитывайте интерес к вашей будущей профессиональной деятельности.
Не забывайте следить за новостями в мире Android. Просматривайте в YouTube видео, посвященные данной сфере разработки и впитывайте новую информацию. Для дополнительных очков мотивации подпишитесь на известных Андроид девелоперов. Пробуйте посещать различные мероприятия, посвященные разработке под Андроид, находите единомышленников и поддерживайте активность в их среде. Главное — быть целеустремленным и иметь желание развиваться в IT-сфере. Не останавливайтесь ни перед чем и тогда вас обязательно настигнет успех!
Желаем вам побед в обучении! Обогащайтесь новыми знаниями и скиллами на ITVDN!
Хто такий 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!