Как стать программистом

Сфера IT быстро развивается. По последним исследованиям карьерного портала Зарплата.Ру, количество IT-вакансий в России в июле 2022 года увеличилось на 31% по сравнению с июнем того же года. Только в банковском секторе не хватает 5100 айтишников, в то время как в прошлом году не заняты оказались 2 300 мест, сообщает портал Cnews. Спрос на айтишников будет только расти. Освоив профессию программиста, можно работать из любой точки мира и в любом бизнесе. Разработчики рассказали, как определиться с выбором IT-роли, что учить на старте и можно ли самостоятельно освоить профессию.

Что нужно знать, чтобы стать программистом

Работа программиста — это не только код. В зависимости от роли разработчик решает много других задач. Например, придумывает алгоритм работы программ, анализирует данные для создания IT-продукта или презентует проект заказчику. Поэтому будущему айтишнику важно развивать как хард, так и софт скилы. На старте будет достаточно знания одного языка программирования, вроде Python или С#, и стремления сделать свой код максимально чистым и понятным.

Многое зависит от возраста, в котором человек хочет освоить профессию, — говорит ведущий инженер-программист Контура Женя Редько. — Python подойдет в качестве первого языка для школьников и тех, кто раньше никогда не имел дела с разработкой. У него простой синтаксис и на нём легко освоить азы программирования. Плюс Python хорошо развивает алгоритмическое мышление. А вообще любой язык — это инструмент со своей логикой. Научившись понимать эту логику, можно легко переходить с одного языка на другой.

Освоить язык программирования с нуля можно в среднем за полгода. Этого времени хватит, чтобы написать, например, несложного чат-бота на Python. А вот с развитием софт скиллс всё может оказаться сложнее, потому что их польза для будущего айтишника не так очевидна, как знание «компьютерных» терминов.

На начальном этапе софт скилы не кажутся чем-то важным, новички не всегда обращают на них внимание. Но на любом собеседовании работодатель будет проверять, какими навыками, кроме умения программировать, обладает кандидат, — рассказывает Женя. — Например, разработка крупных проектов всегда ведётся в команде. Нередко программисты проводят код-ревью работы друг друга. Если человек не умеет спокойно принимать критику, договариваться о том, что и как лучше сделать, вряд ли он сможет работать в этой команде. А ещё в программировании всегда есть место творчеству. Количество функций и методов, к сожалению, ограничено, но каждый раз мы можем комбинировать их по-новому, и каждый раз будем получать новый результат.

Кроме стремления к творческим экспериментам, программисту пригодятся эмоциональный интеллект, навыки командной работы и умение управлять своим временем. Правильный тайм-менеджмент помогает соблюдать баланс между работой и отдыхом, не зарываться в рутинных задачах и оставаться продуктивным даже в периоды высокой загруженности.

Командная работа — обязательный этап в жизни каждого айтишника, ведь создать масштабный проект силами одного программиста невероятно сложно. Поэтому способность находить общий язык с разными людьми — один из самых важных софт скилов разработчика.

А вот эмоциональный интеллект, под которым обычно понимается способность управлять своими чувствами и верно трактовать эмоции собеседника, позволяет адекватно относится к критике и не бояться презентовать свои решения перед любой аудиторией.

Что выбрать на старте

Если решение стать программистом осознанное, следующий шаг — определиться со специализацией.

Согласование и утверждение технического задания, продумывание архитектуры, написание и оптимизация кода, тестирование, презентация готового продукта — всё это этапы разработки, и каждым из них занимаются разные специалисты. Кроме того, многое зависит от области, в которой проходит реализация проекта. Например, чтобы создавать 1С-продукты, не нужно разбираться в синтаксисе Python или Java. Зато знание самой платформы 1С на начальном этапе и понимание основ работы с базами данных и языка SQL на более высоких грейдах обязательно пригодится, если специалист хочет со временем работать в больших проектах. Но, если четкого понимания, к какой IT-области лежит душа, пока нет, стоит изучить, чем занимаются разные разработчики и какие инструменты применяют в своей работе.

На нашем ютуб-канале есть плейлист с короткими роликами про профессии в IT. В них разработчики Контура рассказывают про свои рабочие обязанности и делятся советами, как попасть в профессию.

Как стать разработчиком игр

GameDev привлекает многих. Во-первых, это — возможность воплотить свои идеи в реальном проекте, который, возможно, станет мировым бестселлером. А во-вторых, разработка игр относительно новое направление, поэтому попробовать свои силы в ней может даже новичок.

«Видеоигры — это определенный этап развития культуры. Когда-то люди придумали театр, затем кино, — рассказывает преподавателя курса «Разработка игр» и менеджер проектов Контура Павел Скрипниченко. — А видеоигры стали следующим шагом, культурным феноменом, который обеспечивает эффект погружения в искусственно созданную среду и интерактивность. При этом индустрия игр не перешагнула и середины пути в своём развитии. С каждым годом появляется всё больше новых проектов, новых компаний и, следовательно, спрос на разработчиков будет только увеличиваться. Поэтому GameDev — одна из самых открытых областей с точки зрения погружения новичков».

В разработке игр, как и в любом другом IT-проекте, есть специалисты, которые отвечают за интерфейс продукта и за его внутреннюю техническую составляющую. Например, геймдизайнер создает концепцию игры, придумывает правила и механики. А вот реализацией его идей занимается уже левел-дизайнер — он проектирует архитектуру игры, пишет код и вставляет новые фичи в уже существующий проект.

В GameDev есть ребята, которые отвечают за базы данных, за бэкенд, за фронт, — поясняет Павел. — Но как в любой IT-области здесь есть своя специфика. Например, даже левел-дизайнер, по сути — программист, должен иметь хороший наигрыш и насмотренность, интересоваться новыми играми, изучать удачные проекты. Нельзя делать игры, если ты сам в них не играешь. Поэтому разработка игр — довольно уникальная вещь. Она скорее про искусство, чем про сухие технические навыки.

Несмотря на творческую составляющую таких продуктов, чтобы стать разработчиком игр понадобится определенный багаж знаний. Их точный список зависит от проекта, в котором хочет работать программист, ведь простую браузерную игру можно написать на PHP и Java. А вот более крупные проекты создают обычно на движках, вроде Unity. Для него уже потребуется знание C#.

Выбор инструментов зависит от ниши, в которую хочет войти новичок, — говорит Павел. — Например, можно проанализировать топ-10 самых удачных проектов в любимом жанре, посмотреть какие компании их делают, какой стек используют, и изучать именно его.

К сожалению, вузов, которые готовят разработчиков игр, в России не так много. Большинство специалистов, занятых в GameDev, — это выпускники математических вузов или люди, закончившие онлайн-курсы.

Как стать бэкенд-разработчиком

Бэкенд-разработчик — это специалист, который работает с серверной стороной сайта или приложения. Он отвечает за работоспособность, логику и функциональность внутренних систем IT-продукта.

Бэкенд — это довольно обширная область в IT. Такой специалист может развиваться в нескольких направлениях, — говорит ведущий инженер-программист Контура Женя Редько. — Можно идти в сторону низкоуровневого программирования и заниматься разработкой кода для процессоров или, например, писать инфраструктуру для крупных бизнес-приложений.

В зависимости от роли и проекта, в котором работает бэкендер, может меняться и набор необходимых знаний. Для новичка будет достаточно базового набора хард скилов. Это понимание принципов работы серверов, основы работы с базами данных и знание одного или нескольких популярных языков, например, Python или C#. Эти знания можно получить практически на каждом математическом или программистском факультете или изучить их самостоятельно, читая профессиональную литературу.

А еще будущему бэкендеру пригодится стрессоустойчивость. При работе с высоконагруженными или расширяемыми приложениями всегда есть риск, что что-то может пойти не так, особенно при плановых обновлениях системы.

Написание кода — это не всё, чем занимается бэкенд-разработчик. Важно уметь правильно продумывать свою работу, — поясняет Женя. — Бывают продукты, число пользователей которых растет очень быстро, и программист должен заранее спланировать, как он будет масштабировать свой проект. А если что-то идёт не по плану — не паниковать и быстро исправить ситуацию.

Как стать дата сайентистом

Дата сайентист (Data Scientist) — это программист, который работает с данными, и на их основе создает алгоритмы для автоматизации различных бизнес-процессов. Результат работы такого специалиста — модель для решения сложных задач.

Например, это может быть чат-бот, который отвечает на вопросы пользователей, или IT-система оценки платежеспособности заемщика.

Дата сайентист работает с информацией. Это может быть любая информация: аналитические данные, ответы пользователей, картинки, тексты, — рассказывает разработчик машинного обучения Контура Руслан Ермагамбетов. — Чтобы не анализировать большие объемы данных вручную, дата сайентист создает программу, которая сама делает выводы и дает готовые ответы. Это здорово экономит время и бюджет компании.

Дата сайентисты работают во всех бизнес-областях, где есть большие объемы информации и решения принимаются на основе данных: ритейл, банки, научные организации, IT-компании и тому подобное. Поэтому такие разработчики очень востребованы.

Я часто сравниваю свою профессию с работой детектива, — говорит Руслан. — У меня есть ряд гипотез, которые я проверяю, исходя из имеющихся данных. Я как будто сравниваю улики, чтобы найти верное решение. Копаю все глубже и глубже, пока не найду нужный алгоритм.

Основной язык Data Science — это Python. Большая часть разработчиков пишет именно на нем. Этот язык востребован и прост в изучении. При желании его можно освоить за несколько месяцев. Не менее важен и SQL (язык запросов), ведь данные нужно сначала достать, обработать и только потом на их основе составить модель. Кроме программирования будущий дата сайентист должен хорошо знать математику: линейную алгебру, статистику, математический анализ и теорию вероятности. Например, для построения алгоритмов машинного обучения часто используют метод умножения матриц, а теория вероятности и статистика помогают проверять гипотезы и делать обоснованные прогнозы.

Работа дата сайентиста невозможна без любознательности и желания разобраться в сути задачи, — комментирует Руслан. — В этой профессии нельзя действовать по одному и тому же алгоритму, нужно постоянно искать новые решения даже для, казалось  бы, несложных проектов. Например, пришла задача построить чат-бота.

Изучить основные хард скилы в дата сайнс можно на специализированных курсах или в вузе. Лучшее направление образования — прикладная математика. Также подойдут различные программистские и экономические факультеты. На первых можно лучше познакомиться с языками и технологиями, а вторые помогут разобраться в сути бизнес-процессов. Для дата сайентиста этот навык не менее важен, чем программирование.

Как стать разработчиком на Андроид

По данным портала Business of Apps за 2022 год, устройствами на базе Андроид пользуются 2,8 миллиарда человек. Если считать в процентах, то получится 75% от всего мирового рынка гаджетов. Поэтому современный мир IT невозможно представить без андроид-разработчиков. Они создают и поддерживают приложения для всевозможных мобильных гаджетов.

Как андроид-разработчик Контура я пишу с нуля приложения для продуктов компании, — рассказывает инженер-программист Контура Саша Романов. — После релиза я продолжаю работу с проектом: отслеживаю баги, ввожу новый функционал, общаюсь с аналитиками, чтобы понять, что и как можно улучшить.

Писать приложения под Андроид можно на многих языках, но на старте лучше выбрать Java или Kotlin. Это традиционные языки андроид-приложений, к тому же на них очень удобно писать в специальной среде разработки — Android Studio. Правда, у них есть и недостатки. Например, Kotlin сравнительно молод, а значит у него неполная документация, ему недостает готовых решений. А вот у Java есть множество библиотек и модулей. Если разработчик не может решить какую-то проблему самостоятельно, он всегда может обратиться за помощью к большому международному Java-сообществу. В тоже время код на Kotlin гораздо лаконичнее, а сам язык в 2019 году компания Google объявила приоритетным в андроид-разработке.

В список обязательных хард скилов будущего разработчика на Андроид также входят знание основ объектно-ориентированного программирования (ООП), понимание базовых принципов дизайна интерфейсов и умение работать в Android Studio. Это мобильная среда разработки, в которой программируют логику и настраивают интерфейс приложения. Не обойтись и без софт скилов.

Софт скилы андроид-разработчика — такие же, как и у других айтишников. Базовые — это принятие обратной связи, умение слышать и слушать других специалистов, вроде аналитиков, дизайнеров и других разработчиков, — говорит Саша. — Отдельно я  бы выделил насмотренность. Важно следить за приложениями из разных сфер: видеть и анализировать, как выполнен интерфейс, какой использован UX и так далее. Этот опыт можно масштабировать на свои проекты, чтобы понять, как сделать приложение не только красивым, но и удобным для пользователей.

Освоить разработку под Андроид можно самостоятельно. В интернете есть множество книг, мануалов, форумов, обучающих сайтов и видеоуроков. Например, проект StartAndroid, на котором выложены как бесплатные уроки по андроид-разработке, так и платные курсы, а еще можно задать вопрос автору через форму обратной связи. Или сайт Александра Климова, где можно найти подневный план обучения, полезные советы, статьи, ссылки на профессиональную литературу и даже готовый код для различных задач. Какой бы способ обучения не выбрал будущий андроид-разработчик, важный этап входа в профессию — это практика.

Новичкам надо обязательно писать много кода. То есть всё, что изучается, должно быть закреплено кодом, — поясняет Саша. — Отличный кейс — написать небольшое приложение и выложить его в открытый доступ на GitHub, специальный веб-сервис для размещения IT-продуктов и совместной работы над ними. Так можно получить обратную связь по своему проекту и наработать пусть и небольшое, но портфолио, которое в будущем поможет получить место на стажировке в компании.

Как стать Python-разработчиком

Python — один из самых востребованных языков в разработке. На нём создают бэкенд различных приложений, ПО, а ещё его активно используют в машинном обучении. Поэтому Python-разработчики задействованы во всех сферах бизнеса, где нужно работать с данными.

Python-разработчики могут работать абсолютно над любым проектом, — рассказывает замруководителя направления программной инженерии Контура Даниил Мясников. — Всё зависит от технического задания или требований конкретной компании. Например, в Контуре они занимаются, в основном, разработкой веб-сервисов и бэкендом для мобильных приложений.

Python дружелюбен к новичкам. У языка несложный синтаксис: в отличие от, например, Java и С#, он не заставляет разработчика делать множество вложенных форм или сложные элементы абстракции. Поэтому создать первый работающий продукт, вроде простого телеграм-бота, можно уже через одну-две недели изучения Python.

Python — это язык, в который очень легко вкатиться, но сложно освоить полностью. Например, проект веб-сайта на фреймворке Django можно собрать за две недели изучения. Но если разработчику нужно построить сложную подсистему для микропроцессора, уже начинается «магия» Python, — говорит Даниил. — Сделать это бывает сложно даже людям, которые не первый год занимаются разработкой. Python можно определить как сложный язык программирования с легким входом, поэтому в нем проще всего подняться с нуля до мидла.

Чтобы стать Python-разработчиком нужно освоить хард и софт скилы. На старте достаточно знать основные правила написания команд, обозначения типов данных, условий, циклов и операций с числами, понимать, как устроена распределенная архитектура и что такое нагруженность веб-сервисов. А ещё надо уметь работать с базами данных и разбираться во фреймворках — программных «каркасах» с кодом и четкой структурой, в которых можно быстро собрать простой проект. Все эти знания можно получить тремя способами: читая обучающую литературу и тематические форумы, посещая офлайн- или онлайн-курсы или обучаясь в вузе, учебная программа которого соответствует выбранным хард скилам. Идеальный вариант — объединить несколько подходов.

Курсы всему не научат, но дадут базу для дальнейшего погружения, — констатирует Даниил. — Например, есть неплохой курс от Яндекс Практикума. В нем ученика проводят через ряд вопросов, связанных с Python-разработкой. Это комплексный курс, в котором не только учат языку, а, например, в качестве фреймворка рассматривают Django и рассказывают о базах данных. В нем не хватает информации о высоконагруженных системах, но, для того чтобы войти в профессию, это знать и не обязательно. Это, скорее, следующий уровень скилов в разработке.

Ещё один полезный навык Python-разработчика — это умение давать и принимать обратную связь. Код-ревью — обязательный этап работы над проектом в любой компании. Если программист не привык обсуждать свои действия с другими членами команды и неадекватно относится к обоснованной критике, ему будет сложно развиваться в профессии. Этот софт скил особенно пригодится новичкам, потому что общение с более опытными коллегами поможет быстрее прокачаться в разработке и получить следующий грейд.

Как стать программистом 1С

Программист 1С занимается внедрением, поддержкой и совершенствованием систем автоматизированного учета пакета «1С Предприятие». Эти решения используют многие российские компании для упрощения бизнес-процессов. Например, с их помощью можно контролировать финансы организации: считать зарплаты сотрудников, проверять уплату налогов и расчеты с подрядчиками, управлять закупками материалов, формировать всевозможные отчеты и многое другое. Иногда бизнесу не хватает стандартной комплектации системы или изменившееся законодательство не позволяет вести работу по старой схеме, тогда на помощь приходят 1С-программисты. Они дорабатывают программы под новые требования.

У 1С-программистов своя среда разработки и свой язык. В отличие от других айтишников, они пишут код на русском языке. Поэтому, чтобы начать свой профессиональный путь, такому специалисту достаточно знать принципы работы платформы «1С:Предприятие» и разбираться в её настройках на минимальном уровне. Освоить синтаксис языка и базовые объекты можно самостоятельно по книгам-самоучителям или на курсах от компании 1С. Ещё один способ для тех, кто не боится трудностей, — устроиться в фирму-франчайзи. Это такие компании, в которые обращаются представители бизнеса, если у них возникают проблемы с настройкой, ведением или доработкой системы 1С. Фирмы-франчайзи берут на работу новичков без опыта и с минимальными знаниями для дальнейшего обучения.

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

Можно ли самостоятельно стать программистом

Стать программистом, не имея высшего образования, реально, если приложить усилия и не бояться трудностей. Сфера IT-обучения развивается, а работодатели готовы закрывать вакансии талантливыми самоучками и выпускниками курсов. Так, инженер-программист Дима Кабанов, выпускник педагогического вуза, самостоятельно освоил программирование с помощью самоучителей и онлайн-курсов, и строит успешную IT-карьеру в Контуре.

У меня нет высшего IT-образования. Я учился и продолжаю учиться самостоятельно, — рассказывает инженер-программист Контура Дима Кабанов. — И моя история не уникальна. Например, в Контуре много успешных разработчиков, которые самостоятельно учились программированию. Но это не значит, что надо игнорировать высшее образование. Учеба в хорошем вузе с сильными преподавателями отлично погружает в фундаментальные предметы, которые важны для разработчика. Например, математика, операционные системы, алгоритмы. Всё это можно выучить самому, но в вузе это сделать гораздо проще, а результат будет более эффективным.

Если нет возможности поступить в хороший программистский вуз, у будущего разработчика несколько путей: изучать теорию по самоучителям, записаться на курсы или осваивать выбранное IT-направление на обучающих платформах. Например, на онлайн-платформе ULearn начинающий айтишник может бесплатно пройти курсы по тестированию, алгоритмам и разным языкам программирования. Каждый курс состоит из видеолекций и практических заданий, которые помогают закрепить изученный материал.

Чтобы освоить программирование с нуля, придется усердно работать головой. Во время обучения мозг потребляет много питательных веществ, ведь для него это — сложный физический труд. Поэтому распределение нагрузки и тайм-менеджмент занятий — непустой звук в этот период. Не стоит также забывать о полноценном отдыхе и сбалансированном питании. А еще важно помнить, что первые трудности — это нормально.

Для меня самыми сложными в самостоятельном обучении были две вещи, — комментирует Дима. — Во-первых, сложно было решиться и поменять привычную сферу деятельности. На тот момент я работал в образовании, у меня было пять лет опыта, а тут — совершенно новая и пока неизвестная мне область. А второй момент — это погружение в IT. На первых порах мне было очень сложно. Я практически ничего не понимал, но не оставлял попыток во всем разобраться. Я освоил азы, начал выполнять задания, и понял, как всё это работает. А дальше я накапливал знания и совершенствовал свои навыки. Бывает, что сейчас я тоже сталкиваюсь с трудными задачами, но этим мне и интересна моя работа.

Проверить знания на практике или найти свои пробелы новичку поможет участие в опенсорс-проектах. Это IT-продукты с открытым исходным кодом, в разработке которых может участвовать любой желающий. Например, онлайн-школа программирования Хекслет предлагает разработчикам внести свой вклад в развитие ресурса Code Basics — бесплатной платформы для изучения основ программирования и верстки.

Участие в таком проекте — большой плюс для начинающего разработчика, — говорит Дима. — Редко можно встретить новичка с опытом в опенсорсе, а ведь его можно указать в резюме, и это значительно повысит шансы найти работу даже в крупной компании.

Как получить первую работу

Каждая компания сама решает, как и для чего она проводит стажировку, какой смысл вкладывает в это понятие, — рассуждает ведущий менеджер стажировки Контура Маша Дудниченко. — Например, стажировка в Контуре — это решение реальных рабочих задач под присмотром наставника, который помогает погрузиться в контекст, поддерживает и подсказывает. После стажировки ребята либо остаются в компании в роли джунов, либо уходят. А, например, стажировка в Яндексе — это образовательный проект, куда можно прийти на время, чтобы прокачаться.

Хотя стажировка похожа на обычную работу в компании, отличия все же есть.

  • Способ входа. Чтобы попасть на стажировку, надо выполнить тестовое задание. Задачи не индивидуальны, как при обычном техническом собеседовании, а одинаковые для всех. Плюс — кандидат получает обратную связь и может исправить мелкие недочеты, чтобы получить место.
  • Наставник. Стажер выполняет задачи под руководством ментора, который в случае необходимости подскажет, как можно упростить работу, подскажет решение и поможет исправить ошибки.
  • График работы. В отличие от постоянного сотрудника, стажер не может самостоятельно выбирать график работы и удобные часы. Он выходит на работу тогда, когда это удобно компании.
  • Выбор команды. Стажеры не выбирают команду и продукт, над которым им предстоит трудиться. Компания сама распределяет ребят и их рабочие задачи.

Обычно стажировка длится два-три месяца. По ее окончании команда дает стажеру обратную связь. Если отзывы будут положительными, новичку могут предложить остаться в компании в качестве постоянного сотрудника. Так, в прошлом году после летней стажировки в Контуре осталось 84 % стажеров, а после зимней стажировки этого года — 100 %.

Стажировка — это про опыт, а не про обязательства перед компанией, — резюмирует Маша. — Я бы советовала не останавливаться на одной стажировке, а попробовать себя в компаниях разных уровней и масштабов. Можно посмотреть тестовые, например, Яндекса, Google, Контура и других. А ещё не стоит игнорировать небольшие компании, ведь они могут предложить интересные задачи, в которых новичок найдет себя.

Подпишитесь на рассылку

Раз в месяц будем присылать письма с новостями про учебу и работу в IT
и с анонсами наших бесплатных мероприятий

Как с нами
связаться?

По всем вопросам можно писать на fiit@kontur.ru
или в телеграм-чат @fiit_urfu

© 2022 ФИИТ