Обзор профессии программиста
В глазах многих айтишники – это какая-то закрытая секта богатых лентяев. Говорят на непонятном айтишном языке, получают много денег и работают по 4 часа из 8, при этом постоянно жалуясь на выгорание. А попросишь их починить тостер (ну ты же разбираешься во всех этих железных штуках, верно?) – впадают в ярость. На самом же деле айтишник – это в большинстве случаев такой же работник, как и слесарь на заводе, только задачи – интеллектуальные, и ответственности – намного больше. Ниже мы детально разберем тех айтишников, которые «в природе» встречаются чаще всего – программисты.
Программист – кто такой
Где учиться на программиста
Выбор направления
Требования к программистам
Обзор рынка труда – перспективы, востребованность, зарплаты
Обзор курсов на программиста
Карьерный путь
Плюсы и минусы профессии
Что почитать по теме
Подведем итоги
Программист – кто такой
Ответ на вопрос «Кто такой программист?» лежит прямо в названии профессии, программист – это человек, который создает программы для железа. В ранние годы, когда компьютеры были большими и шумными, программисты общались с железом на языке последнего – буквально делали дырки в нужных местах на перфокартах, чтобы компьютер понял, что нужно делать. В дальнейшем появились более удобные (высокоуровневые) языки программирования – сначала вместо дырок на перфокартах появились короткие команды (ассемблерные), затем команды стали более читабельными для людей (низкоуровневые языки программирования), сейчас же чаще всего используются языки, на которых можно описать в человеческих словах и предложениях действия, которые компьютер должен совершить (высокоуровневые языки программирования). Таким образом, определение можно расширить до «Программист – это человек, который с помощью одного из языков программирования описывает набор действий, которые нужно совершить компьютеру».
Но все, естественно, не так просто. «Программист» – такое же расплывчатое определение, как, например, «врач».
Системный администратор тоже пишет код (является программистом), хирург тоже лечит людей (является врачом). Но если вы назовете сисадмина программистом или хирурга врачом, то столкнетесь как минимум с удивлением. В сфере информационных технологий есть множество направлений, и просто делить специалистов по принципу «пишет код/не пишет код» нельзя, потому что специалист автоматического тестирования пишет код, но «программистом» в обычном понятии не является, а архитектор код не пишет, но является «программистом». Чтобы разобраться во всем этом, давайте введем 5 основных специальностей, участвующих в разработке:
- Системный инженер. Раньше их называли сисадминами, но теперь в моде DevOps, откуда и пошло новое название -–системные инженеры. Эти специалисты ответственны за инфраструктуру разработки: сервера, системы версионирования, пайплайны быстрого развертывания, отказоустойчивость, балансировщики нагрузки, инфраструктура как код и так далее. Основной навык – работа с UNIX-системами (Линукс).
- Архитектор. Человек, который умеет оценивать масштаб проекта и выбирать технологии, которыми проект можно реализовать наиболее удачно. Архитекторы обычно не пишут код, они – ближе к менеджерам. При этом архитектор – это опытный инженер, который «вырос» из разработчика.
- Тестировщик. Сотрудник, который ищет ошибки и неточности. Ручные тестировщики не пишут код, тестировщики автоматизации пишут код, который в автоматическим режиме тестирует другой код. Некоторые программисты снисходительно относятся к тестировщикам, но пусть это не вводит вас в заблуждение, без толковых тестировщиков любой проект развалится через месяц после старта.
- Менеджер. Человек, управляющий командой. Код не пишет, планирует процесс разработки и дает указания. Обычно получает самую большую зарплату в команде и несет больше всего ответственности за разработку.
- Разработчик. Тот самый «программист». Пишет код по техническому заданию архитектора и менеджера, с помощью пайплайнов, созданных системными инженерами, отправляет свой код на растерзание тестировщикам. Разработчиков обычно делят на фронт-энд и бэк-энд. Фронт-энд разработчики создают «лицо» (=интерфейс) программы, с которым будут взаимодействовать пользователи. Бэк-энд разработчики пишут внутреннюю логику – то, что происходит внутри программы, когда нужно по какой-то логике выдать какой-то результат. Бывают еще фулл-стэк разработчики – это те, которые умеют создавать и фронт-энд, и бэк-энд.
Таким образом, под «программистом» обычно понимают именно разработчиков, реализовывающих основной функционал программы.
Как сделать запись экрана на компьютере
Как понять, подходит ли такая профессия
Вам может казаться, что зарплата программиста перевешивает все трудности работы, и этим стоит заниматься даже в том случае, если вам откровенно не нравится учить языки, алгоритмизацию и другие базовые навыки программиста. Но не стоит ориентироваться исключительно на зарплату и исключительно на программиста – иначе вы рискуете столкнуться с чередой выгораний или бросить учебу на середине.
Возможно, программирование – не для вас, и вам стоит присмотреться к другим должностям в IT или вне его (в IT, например, можно попробовать себя в качестве тестировщика). Как это проверить? Проще всего – на практике. Возьмите какие-нибудь бесплатные курсы, например «Поколение Python» на stepik.org, и пройдите его. Если в процессе прохождения курса вы заметите, что вам интересно решать задачи, учить теорию и самостоятельно искать ответы на необычные вопросы – программирование вам точно зайдет.
Если же вы не чувствуете желания всем этим заниматься – возможно, вам стоит поискать себя в других направлениях.
Где учиться на программиста
Вариантов – очень много: самостоятельное обучение, бесплатные курсы, платные курсы, стажировка, колледжи и ВУЗы. Последние два варианта – наименее предпочтительные. Дело в том, что IT – это очень быстро развивающаяся сфера, и знания (не считая самых фундаментальных основ) очень быстро устаревают – то, что вы изучили год назад, теперь уже вполне может быть не актуально. Колледжи и ВУЗы, конечно, дают фундаментальные основы, но в большинстве своем они представляют безнадежно устаревшие программы обучения, и после получения диплома вы вдруг осознаете, что половину потраченного на обучение времени уже можно выбросить в корзину. Поэтому на программиста лучше учиться самостоятельно, на курсах или (если повезет) на стажировке.
Первый вариант – самостоятельное обучение. Самый дешевый и нестабильный вариант.
Организовывается очень просто:
- Определяетесь с языком программирования (основные варианты: Java, JavaScript, Python).
- Открываете hh.ru, ищете вакансии на junior-программистов выбранного языка, смотрите набор требований.
- Учите то, что требуется.
Учить можно по книгам, курсам, статьям, телеграм-каналам – в общем, брать информацию из всех доступных источников. У этого варианта есть три существенных минуса. Первый: нет учителя или ментора, вы не всегда будете знать, что совершаете ошибки. Второй: сложно подтвердить свои знания перед потенциальным работодателем, вам будут часто отсеивать на стадии изучения резюме, если у вас не будет собственных толковых проектов на GitHub. Третий: у вас в какой-то момент может просто закончиться мотивация к дальнейшему обучению.
Второй вариант – курсы. Лучше – платные, потому что они обычно предлагают проверку домашек, помощь ментора и более-менее солидный сертификат. Еще один плюс – вам будут подавать материал структурированно, поэтому вы станете программистом быстрее. Из минусов – нужно платить деньги.
Наконец, третий вариант – стажировка. Иногда крупные компании набирают лаборатории, то есть открывают обучение для тех, кто хочет стать программистом. Чтобы попасть в лабу, вам нужно иметь какой-никакой айтишный бэкграунд (пройти пару курсов, написать парочку своих простеньких приложений) и владеть английским хотя бы на уровне А2. Если вас пригласят в лабу, то вы будете учиться так же, как в ВУЗе – с расписанием, преподавателями и экзаменами. Если вы успешно пройдете обучение, вас пригласят на работу в компанию, которая лабу и запустила.
Это – идеальный вариант, но попасть в лабу – очень непросто, потому что: а) они редко появляются; б) большая конкуренция.
Выбор направления
Делить направления можно по разным критериям (чаще всего делят по языкам), но мы остановимся на фронт- и бэк-энде, поскольку они наиболее сильно между собой различаются.
Front-end
Фронт-энд разработчик – это, как мы уже говорили, специалист, который создает интерфейс/внешний вид приложения или сайта. В этом направлении стоит смотреть тем, кому интересно работать с дизайном, цветами, удобством пользовательского интерфейса и прочими такими вот вещами. Основные языки: JavaScript, CSS, HTML, Python, иногда – Ruby. Желательно уметь пользоваться Фотошопом.
Back-end
Это – те самые технари-инженеры, которые разбираются в алгоритмах и создают закулисье сервиса. Здесь более ценятся математические и аналитические способности. Языков – множество: C++, Java, Python, Ruby, C#, … Практически обязателен SQL.
Full-stack
Те, кто умеют и в интерфейс, и во внутреннюю логику программы. Если вы только начинаете свой путь, на фул-стэк разработчика замахиваться не стоит, слишком много знаний нужно. Языки: Java, Python, C#.
Требования к программистам
Поскольку программисты бывают самыми разными, требования к ним тоже бывают самыми разными. Если мы откинем инициативность, стрессоустойчивость и остальные требования, копирующиеся из вакансии в вакансию, основным требованием будет знание общих принципов разработки плюс конкретного стэка (списка) технологий, необходимых для закрытия конкретной позиции в команде. Из общих принципов и технологий разработки стоит отметить ООП, Agile, Git и SQL. Из конкретных технологий – обычно один язык плюс необходимые фреймворки (Java + Spring, например).
Сейчас все чаще встречается требование по базовому пониманию UNIX и Docker.
Обзор рынка труда – перспективы, востребованность, зарплаты
Примеры вакансий
3 примера junior-разработчиков с hh.ru:
- Junior Java разработчик. Работодатель: Сбербанк. Требования: базовые знания ООП/алгоритмов/структур данных, основы Java-разработки, базовые знания в Spring. Английский: А1. Что предлагают: обучение, трудоустройство с первого дня обучения. Зарплата: по результатам собеседования.
- C# developer junior / middle (.net, full-stack / back-end). Работодатель: MindBox. Требования: опыт разработки с C# с использованием SQL (можно на своем пет-проекте), BCL / CLR, знание шаблонов архитектуры, typescript и react. Английский: не указано. Что предлагают: обучение при необходимости, оплачиваемая стажировка, удобный офис, рабочий ноутбук, помощь с релокацией. Зарплата: от 100 000 рублей до 200 000 рублей на руки.
- Junior — программист. Работодатель: SmartShop. Требования: SQL, JavaScript, PHP, CSS, HTML, Bootstrap, jQuery. Английский: «хорошее знание английского языка». Что предлагают: обучение, график 5/2, бесплатные обеды. Зарплата: 40 000 рублей – 60 000 рублей до вычета налогов.
Где работают программисты и как выглядит рабочий день программиста
Программисты работают везде, где есть что программировать. Основное место работы – компания, которая создает продукты для себя или для других заказчиков (аутсорс). Рабочий день условно разбит на 2 части: встречи и выполнение задач. Встречи – это когда вся команда или отдельные ее участники созваниваются/встречаются в каком-то месте и обсуждают происходящие в проекте события. Это помогает синхронизироваться, одна из основных проблем разработки – рассинхронизация (Максим делает ту же работу, что и Витя, в результате оказывается, что один и них зря тратил свое время).
Когда митапы (встречи) заканчиваются, программисты разбредаются по своим рабочим местам и выполняют задачи, которые на них повесил менеджер.
Обзор курсов на программиста
Платные
- Skillbox. Крупная школа со множеством курсов. Есть как программы получения специальности, так и обычные курсы. Получение специальности – это когда вас учат с нуля до junior-разработчика, длятся такие программы по году. На обычных курсах учат конкретным технологиям, курсы длятся около полугода. Обучение – довольно дорогое, за профессию java-разработчика берут 200 000 рублей (в рассрочку на 31 месяц).
- Нетология. Еще одна крупная школа, как и в предыдущем случае, есть и обычные курсы, и курсы получения профессии. После обучения помогают с трудоустройством, в самом обучении упор делается на практике. Обучение – более длительное, профессию вы получите через 13-20 месяцев. Стоимость такого обучения – более 100 000 рублей, тоже есть рассрочки и скидки.
- GeekBrains. Школа готовит реальных junior-разработчиков. Обучение – длительное, от 12 до 36 месяцев. Есть программы разной интенсивности – от обычно подготовки junior до подготовки middle+. Группы стартуют каждые 2 недели, цена вопроса – до 200 000 рублей, в зависимости от программы (рассрочка – по 5 000 рублей в месяц).
Бесплатные
- Хекслет. Множество бесплатных курсов от площадки. Полноценную профессию вы здесь не получите, но основы сможете усвоить. Есть курсы как по программированию (хорошие), так и по «вопросам железа» (среднего качества).
- Stepik. Русскоязычная платформа с большим количеством бесплатных курсов. Особого внимания заслуживает «Поколение Python», лучший русскоязычный курс в Рунете по этому языку. Платные курсы тоже есть, средняя стоимость – 3 000 рублей.
- Computer Science Center. IT-университет, на YouTube-канале которого можно найти десятки курсов по самым разным направлениям.
Самостоятельное обучение
Для самостоятельного обучения мы рекомендуем использовать бесплатные курсы, перечисленные выше, и вот этот прекрасный сайт.
Обучение в ВУЗах
Как мы уже говорили, обучение в ВУЗах – не лучшая идея. Но если вам все же очень хочется получить высшее образование для себя или ребенка, подойдут эти варианты:
- Московский Государственный Университет имени Ломоносова.
- Московский Физико-Технический Институт.
- ИТМО.
Посмотреть топ-20 университетов с ИТ-направлениями по версии рейтингового агентства RAEX можно тут.
Карьерный путь
Джун
Джун – это программист, который приносит компании убыток. Джунов не подпускают к реальным задачам – обычно им дают песочницу, в которой джуны нарабатывают опыт на своих ошибках. Мало того, что джун не делает ничего полезного, так к нему еще нужно приставить сеньора, который будет помогать джуну – а за время работы сеньора тоже нужно платить. Поэтому джунов берут с тем расчетом, что они останутся в компании, станут мидлами и начнут приносить бизнесу прибыль.
Миддл
Это – программист, который уже что-то умеет. На мидлов уже вешают задачи, которые требуют некоторой ответственности, надзора за мидлами намного меньше. Поскольку миддл – уже полезный программист, зарплата растет существенно, в 2 раза и больше.
Сеньор
Сеньор – это ответственный специалист, который может сделать что-то полезное и не сломать при этом все остальное. Сеньоры – основная рабочая сила проекта, именно они реализовывают тот функционал, который нужен заказчику. Сеньор уже может выставлять свои требования по зарплате, поскольку компания очень не хочет его потерять. Если джуны зарабатывают 500$, а миддлы – 1 000$, то сеньор вполне может требовать 2 000$+ в месяц.
Что дальше
А дальше – большая развилка. Сеньор может улучшать свои кодерские скилы и получать больше денег; он может уйти в менеджмент и управлять командой; ему открывается дорога в архитекторы.
В общем, сеньор может претендовать практически на любую позицию в команде.
Плюсы и минусы профессии
Плюсы:
- Большая зарплата.
- Разнообразная работа.
- В большинстве случаев – адекватный и умный коллектив.
Минусы:
- Сидячая работа.
- Много ответственности (по сравнению с линейной должностью на заводе).
- Иногда случаются выгорания.
Что почитать по теме
- Идеальная вакансия для разработчика. Как оценить?
- Тренды в IT. Что вообще происходит?
- 17 вопросов джуну: что должен знать Junior-разработчик.
FAQ
Что такое «пет-проект»?
Это ваш личный проект, который вы делаете для себя. Пет-проекты – отличная возможность отточить свои навыки и показать работодателю, что вы что-то умеете.
Сколько времени занимает обучение на разработчика?
Зависит от личных качеств, но на то, чтобы получить профессию с нуля, у вас уйдет от полугода.
Подведем итоги
- Программист – это человек, который пишет код. Этот код должен выполнять какие-то конкретные задачи.
- Программисты бывают разными, самый классический вариант – это разработчик.
- Для того, чтобы стать программистом, вам нужно освоить какой-либо язык, его фреймворки, основные методологии разработки и сопутствующие технологии (SQL, например).
- ВУЗы и колледжи – не лучший способ получения профессии, лучше использовать курсы и самообучение.
- Карьерный путь программиста начинается с джуна, затем – миддл с дальнейшим ростом в сеньора. Сеньоры же могут стать кем угодно.
Источник: www.sravni.ru
Кто занимается разработкой программного обеспечения
Программное обеспечение разрабатывают как энтузиасты-одиночки, так и сотрудники коммерческих фирм. Они создают программы и для персональных компьютеров, и для мобильных телефонов, и для других приборов, содержащих микропроцессоры.
Статьи по теме:
- Кто занимается разработкой программного обеспечения
- Как начать разработку программы
- Чем хакер отличается от программиста
Инструкция
Классическая модель разработки программного обеспечения выглядит следующим образом. Программа создается сотрудниками одной компании, при этом ее исходные коды не выходят за пределы организации. Результат компиляции продается пользователям. Приложение нередко сохраняет файлы в форматах, которые не поддерживаются конкурирующими программными продуктами. Если разработка приложения прекращается, пользователям приходится заботиться о пересохранении результатов своего труда в файлы других форматов.
Даже компании, занимающиеся разработкой закрытого программного обеспечения, нередко делают некоторые из своих продуктов бесплатными. Они могут получать при этом прибыль за счет показа рекламы, реализации других, платных программ, а также введения дополнительных платных услуг. Например, в приложении для IP-телефонии могут быть бесплатными звонки с компьютера на компьютер, а за звонок с компьютера на телефон придется заплатить. Разработчики браузеров могут спонсироваться за счет контекстной рекламы при пользовании поисковыми системами.
Программистами-одиночками обычно создаются небольшие приложения и утилиты. Они могут быть как с закрытым, так и с открытым исходным кодом, как платными, так и бесплатными (в любых сочетаниях). Имея небольшие размеры, такие программы и утилиты порой способны конкурировать с крупными пакетами, предназначенными для тех же целей.
Написать крупную программу одному энтузиасту не под силу, но он может создать проект на сайте Sourceforge, Google Code, Microsoft CodePlex или аналогичным. После этого работать над кодом сообща сможет неограниченное количество программистов-любителей. Большинство из них занимается программированием в качестве хобби в свободное от основной работы время.
Обнаружив качественный проект с открытым исходным кодом, руководство коммерческой фирмы может поддержать его. После этого программа по-прежнему будет оставаться открытой, но вносить в нее изменения будут не только энтузиасты, но и работающие в компании профессиональные программисты. Фирма, в свою очередь, может начать продажи аппаратных устройств, работающей под управлением этой программы, либо начать обучать пользователей работе с ней за плату.
Совет полезен?
Статьи по теме:
- Как стать разработчиком мобильных приложений
- Что такое программирование
- Куда пойти учиться программированию
Добавить комментарий к статье
Похожие советы
- Как заработать в сфере IT
- Куда можно поступить на программиста
- Для чего нужны языки программирования
- Где учат на программиста
- Как стать программистом
- Как сделать софт продаваемым
- В чем заключается работа техника-программиста
- Кто такой Стив Джобс
- Как поступить на программиста
- Как продавать программного обеспечения
- Как заработать программисту
- Что такое языки программирования
- Как продавать софт
- Что такое электрон
- Что такое мегаполис
- Для чего нужны утилиты
- Как быстро создать программу
- Как оценить работника
- Кто и как придумал компанию Apple
- Как стать проектировщиком
- Стандартизация и метрология: что за профессия?
- Структура администрации президента РФ
- Как записать фильм на флешку
- Что такое диаметр
Источник: www.kakprosto.ru