Мы продолжаем цикл об айтишных профессиях. Большая цель — составить карту профессий и направлений, чтобы вы могли найти здесь своё место.
В предыдущих выпусках:
- В целом работа в большой ИТ-компании
- Карьера менеджера
- Карьера дизайнера
- Карьера аналитика
- Карьера писателя
- Карьера в сфере данных
- Карьера разработчика ← вы здесь
- Труд в бэк-офисе
- Участь предпринимателя
Рекламное. Этот цикл спонсирует Яндекс Практикум: это центр ИТ-профессий разного профиля. Сюда приходят, чтобы выбрать и освоить новые востребованные профессии, защититься от вытеснения нейросетями и в каком-то смысле даже изменить жизнь. Почти все курсы Практикума можно попробовать бесплатно, а сначала можно пройти профориентацию, чтобы выбрать себе подходящую специальность.
Вот основные вопросы:
- Большие важные проекты
- В чем проблема писать программы?
- Нужно ли иметь техническое образование?
- Нужно ли знать английский?
- Можно ли освоить программирование с нуля, если я гуманитарий?
- Одно дело — научиться. А могу ли я работать программистом, если я гуманитарий?
- Какие навыки разработчиков больше всего ценят работодатели? Какие языки и технологии?
- Какая карьера у разработчика? Где работать? Сколько платят?
- Если мне это не подойдет?
- Как там вообще?
Чем занимаются разработчики
Разработчик — это по-простому «программист», то есть человек, который создает программы для всяких вычислительных машин. Еще этих людей называют «инженер программного обеспечения». Вот примеры из обычной бытовой жизни, где нужны программы от разработчиков:
- Будильник — контроллер в электронном устройстве или приложение в телефоне
- Компьютер автомобиля — включить музыку, построить маршрут, сигнализация
- Касса в супермаркете и киоск самообслуживания — там внутри написанный кем-то софт
- Учет товаров на складе — чтобы вовремя закупать недостающее и заполнять полки
- Системы диспетчеризации курьеров и таксистов — чтобы приезжала ближайшая машина, и цена поездки была известна заранее
- Приложения и сайты маркетплейсов — чтобы вам показывали нужные товары, вы видели их остатки, вам считались скидки, вы могли выбрать ближайший пункт выдачи
- Платежные технологии — оплата картой, QR-кодами, через мобильные банки
- Контроллеры в кофемашинах, вендинговых аппаратах
- Программы, в которых мы работаем — текстовые редакторы, почтовые клиенты, мессенджеры, стриминги
- Программы, на которых работает промышленность: контроль станков, контроль производственных линий, автоматические системы контроля качества
- Программы, благодаря которым мы отдыхаем — кинотеатры, игры, соцсети
- Программы в самолетах, поездах и другом транспорте; автопилоты и системы безопасности
Проще сказать, что всё, кроме выращивания гусей на ферме, использует какие-то программы. И ни одна программа не появляется сама собой — кто-то ее должен написать. Вот этим и занимаются разработчики.
В чем проблема писать программы?
Да нет прямо проблем. Есть некоторые трудности:
Алгоритмы. Программисту ставят задачу, которую можно решить разными способами. Нужно найти тот способ, который не будет давать ошибок, будет работать быстро и который будет понятен другим разработчикам.
Технологии. Есть много языков программирования, библиотек и надстроек под разные задачи. У каждой свои нюансы и ограничения. Выбрать нужную технологию и решить с ее помощью задачу — это время.
Большой объем. Программы должны уметь множество вещей одновременно, и чтобы всё между собой хорошо стыковалось. Нужно придумывать много инструкций, писать много алгоритмов, прилаживать друг к другу много библиотек.
Баги и непредсказуемость. Технологии уже довольно многослойные, и иногда в них что-то работает коряво. Нужно тратить время, чтобы починить.
Клиенты и их требования. Сегодня у клиента одни приоритеты, завтра другие. Менеджер просит ускориться и добавить в текущий объем работы еще какую-то функцию. Вчера обсуждали, что программа должна работать так, а сегодня уже нужно по-другому.
Невнимательность. Забыл где-нибудь скобочку закрыть, и тупой компьютер не понял твоей задумки. А когда у тебя 40 тысяч строк кода, найти скобочку не так-то и легко.
Нужно ли иметь техническое образование?
У разработчиков дело не столько в образовании, сколько в интересе. Чтобы быть разработчиком, вы должны интересоваться машинами, механизмами, логикой, инструментами и техническими деталями. Обычно люди с такими интересами идут учиться на технические специальности, и в итоге жизнь их приводит к программированию или инженерному делу. Но это не значит, что программистами могут работать только технари.
В интернете уже есть решение большинства их задач — либо в виде готового кода, либо в виде библиотек. Поэтому в огромной степени задача современного разработчика — подобрать и правильно состыковать уже готовые библиотеки. Для этого не нужно техническое образование.
Вот что действительно надо понимать:
- Общее устройство компьютеров, логику их работы и ограничения;
- Возможности разных языков программирования и библиотек — чтобы выбрать правильный инструмент для задачи;
- Основы используемых технологий и языков, чтобы всё грамотно стыковать и читать чужой код;
- Методики разработки — чтобы работать в команде над большими проектами, соблюдать нужные команде процедуры, правильно передавать программы коллегам и документировать возможности
Есть специфические задачи, которые требуют специальных научных и технических знаний — например, сложная математика для разработки нейросетей; понимание архитектуры процессоров для создания высокопроизводительных и низкоуровневых программ. Но это узкие специализированные задачи.
Нужно ли знать английский?
Знать английский полезно, потому что тогда ты можешь подключиться к опыту и наработкам всех программистов мира; изучить любые технологии; пройти любые дополнительные курсы и решить любые проблемы с кодом.
В крайнем случае можно пользоваться автоматическим переводчиком, но это не всегда работает корректно.
Можно ли освоить программирование с нуля, если я гуманитарий?
Да, можно, именно для этого существуют курсы программирования «Практикума» с нуля. Они рассчитаны на людей, которые работали менеджерами или дизайнерами, учились на гуманитарных специальностях или только закончили школу; у кого вообще нет программистского опыта.
Вот основные курсы:
- Python с нуля — это самый модный сейчас универсальный язык программирования
- Веб-разработчик с нуля — специализируется на программах, которые работают через интернет и выполняются в браузере
- Разработчик C++ — специализируется на программах, которые исполняются локально на компьютере; также может писать игры
- Java-разработчик — специализируется на бизнес-приложениях, которые делаются на платформе Java (ее очень любят крупные компании)
- iOS-разработчик и Android-разработчик — пишут приложения для смартфонов на родных для этих смартфонов языках
Если хотите что-то выбрать, но не знаете что, можно сначала пройти профориентацию.
Важно понимать, что вход в программирование с нуля — это не вопрос недели или месяца. Чтобы реально погрузиться в тему с нуля, потребуется не менее полугода. Это не много в масштабах получения высшего технического образования, но это и не «Посмотреть цикл лекций на Ютубе».
Одно дело — научиться. А могу ли я работать программистом, если я гуманитарий?
Есть направления и компании, где требуются строго люди с высшим техническим образованием. Например, на оборонных предприятиях или в сфере шифрования данных; при создании инфраструктуры для банковских приложений; если вы будете писать что-то сложное и критическое.
В остальном гуманитарий может работать программистом. Особенно если эта работа в основном состоит из сборки приложений из готовых библиотек и поддержания существующих.
Какие навыки разработчиков больше всего ценят работодатели? Какие языки и технологии?
Про языки сложно сказать — спрос есть на всё, и от квартала к кварталу появляются разные вакансии. Но секрет в том, что человек со знанием одного языка программирования может очень быстро освоить любой другой, а значит проблема выбора языка стоит не слишком остро.
А вот о чем работодатели сами говорят:
- Надежность. Нужны ответственные и исполнительные люди, на которых можно положиться. Не безумные гении, а именно ровные спокойные люди, которые могут работать предсказуемо. Пообещал — сделал. Запланировал — исполнил.
- Общение. Необязательно быть веселым экстравертом. Но нужно уметь выслушать задачу, уточнить ее, задать вопросы, адекватно среагировать на обратную связь, поговорить с менеджером и заказчиком. Разработчик — это уже давно не угрюмый злой гений в растянутом свитере. Нужно общаться с людьми и участвовать в созвонах.
- Интерес. Из-за хорошего пиара в ИТ пришло немало людей, которых интересует только зарплата. Человек выучился на веб-разработчика и сразу требует триста тысяч, вынь да положь. С такими людьми не очень интересно работать. Лучше с теми, кто любит технологии, машины, процессы и автоматизацию. Обычно такие люди хорошо растут в профессии и им есть за что платить триста тысяч.
Какая карьера у разработчика? Где работать? Сколько платят?
Карьера разработчика выглядит так (в терминах самих разработчиков):
- Junior — младший разработчик, пишет вспомогательные части программ, помогает остальным.
- Middle — основной разработчик.
- Team Lead — наполовину разработчик, наполовину менеджер. Управляет командой разработчиков, понимает специфику их работы, но больше управляет, чем пишет код.
- Senior — старший, занимается архитектурой и «большой картинкой» приложения.
- Тут могут быть какие-то уровни управления, в зависимости от компании.
- CTO, Chief Technical Officer — технический директор предприятия. Обычно сюда доходят конкретные технари.
Можно развиваться именно как разработчик, становясь всё более компетентным в алгоритмах, технологиях и машинах. Можно развивать навыки управления, тогда вы станете менеджером с навыками разработчика.
По зарплатам ситуация такая. Джуниорам платят от 50-80 тысяч; средним — 150—250. Дальше зарплаты могут улетать в космос, но для этого и навыки должны быть ого-го.
Работодателей условно две категории: есть те, кто делает программы сам для себя, и вы там будете годами совершенствовать один и тот же продукт; и есть агентства, которые делают софт для других — и вы там будете быстро и бодро делать много разных проектов за короткое время.
Если мне это не подойдет?
Из разработки есть несколько параллельных выходов в другие специальности:
- Нейросети, аналитика и биг дата — там программирование нужно, чтобы обрабатывать данные и автоматизировать процессы.
- Менеджмент — стать менеджером продукта или проекта, чтобы компетентно управлять другими разработчиками.
- Дизайн — там программирование помогает вам понимать ограничения систем.
- Рекрутинг — кто-то должен нанимать новых разработчиков. Об этом скоро расскажем.
Как там вообще?
Слушайте, это нормальная работа для тех, кому такое интересно.
Вот вы пробовали программировать что-то? Вам понравилось? Если вас вдохновляет, что вы можете написать 10 строк кода, а потом машина будет полчаса потеть и решать вашу задачку — это для вас. Если вам нравится приводить в движение сложный механизм — для вас. Если вам приятнее с четкими машинами, чем с нечеткими людьми — это для вас.
Если вы просто хотите зарплату 300 тысяч, не важно, за что — такого в ИТ-сфере нет. 300 тысяч платят за навыки и знания, которые можно приобрести только благодаря личному интересу.
Из нудного — созвоны, планерки, общение с заказчиком и менеджментом. Но это зависит скорее от компетентности менеджера.
Понятно, что это работа за компьютером, а от этого бывают проблемы со здоровьем. Но разработчики знают об этих проблемах и занимаются спортом.
Финальный аккорд
Пройдемте по ссылочке: