👩💻 Программирование — это путь, полный вызовов и возможностей для роста. Я начал этот путь в 2010 году как Junior-разработчик и на данный момент достиг позиции Tech Lead, продолжая развиваться в профессии. Накопленный опыт позволяет мне с уверенностью говорить о тех шагах и подходах, которые я опишу в этой статье.
За все время разработки мне довелоcь работать с различными языками программирования, такими как Delphi, JavaScript, PHP и Go. И с разными доменами Cassino, CMS, Billing, Gambling, Marketplace
В этой статье я хочу поделиться своим опытом, который может оказаться полезным новичкам, которые хотят войти в IT но не знают с чего начать. Надеюсь, что мои советы помогут вам быстрее адаптироваться в мире программирования и избежать некоторых ошибок, с которыми я сталкивался на своем пути.
📚 Образования
Наличие образования в сфере IT не гарантирует, что вы станете программистом. Говорю это с уверенностью, опираясь на опыт своей группы в университете, только 20% выпускников действительно стали работать по професии. Поэтому, если вы решите поступать на IT-специальность, это, конечно, облегчит ваш путь, у вас будет 5 лет, чтобы пройти через 5 стадий принятия неизбежного 😉
Если у вас нет IT-образования — это хорошо, ведь для вас существуют IT-курсы. За 3-6 месяцев вам обещают, что вы станете программистом. Однако, имея опыт работы преподавателем в одной из таких IT школ, могу уверенно сказать, что процент тех, кто действительно становится программистом после таких курсов, ещё ниже — всего около 5% (по моим индевидуальным подсчетам).
Почему так происходит? Время на обучение ограничено, домашние задания делать некогда, уже есть основная рабата и большинство студентов просто не успевают пройти через все пять стадий принятия. 50% остаются на стадии отрицания, осознав, что программирование — это не для них, 20% застревают на стадии гнева. На стадии торга — всего 10%, еще 10% — на стадии депрессии, и только 10% доходят до стадии принятия.
✨ Типы разработки
Выбор направления разработки часто зависит от ваших интересов и целей, будь то создание веб-приложений, мобильных приложений или игр. Разсмотрим что у нас есть.
Web разработка
-
Frontend разработка — это создание того, что видит и с чем взаимодействует пользователь. Она включает работу с HTML, CSS, JavaScript.
-
Backend разработка — это создание серверной логики, управление базами данных и взаимодействие с API.
-
Fullstack разработка — это сочетание навыков frontend и backend, то есть разработка как пользовательского интерфейса, так и серверной части.
Мобильная разработка — программирование приложений для телефонов
Game разработчики — программирование игор
Application разработчики — программирование програм для ОС
Embedded разработчики — программирование микроконтроллеров и встроенных систем
👅 Выбор языка
В зависимости от направления, которое вас интересует, существуют языки, которые наиболее подходят для решения конкретных задач и разработки приложений. Давайте рассмотрим, какие языки программирования лучше всего подходят для различных типов разработки, чтобы помочь вам сделать осознанный выбор.
☁️ Web-разработка
-
Frontend разработка:
-
JavaScript — основной язык для создания интерактивных интерфейсов.
-
HTML и CSS — для разметки и стилизации веб-страниц.
-
-
Backend разработка:
-
PHP — популярен для веб-приложений и работы с CMS.
-
Python — часто используется с фреймворками, такими как Django и Flask.
-
Node.js — JavaScript на серверной стороне.
-
Java — для крупных и надежных приложений.
-
Ruby — используется с Ruby on Rails.
-
📱 Мобильная разработка
-
iOS разработка:
-
Swift — основной язык для разработки приложений на iOS.
-
Objective-C — старый язык, который всё ещё используется в некоторых проектах.
-
-
Android разработка:
-
Kotlin — предпочтительный язык для Android-приложений.
-
Java — также широко используется в Android-разработке.
-
-
Кроссплатформенные приложения:
-
JavaScript (с React Native), Dart (с Flutter) и C# (с Xamarin).
-
🎮 Game разработка
-
C# — используется с Unity.
-
C++ — широко применяется в разработке игр, особенно с Unreal Engine.
💻 Робототехника
-
Python — часто используется в робототехнике благодаря своей простоте и большому количеству библиотек для работы с аппаратным обеспечением, машинным обучением и обработкой данных.
-
C/C++ — популярны для программирования микроконтроллеров и встраиваемых систем, поскольку они обеспечивают высокую производительность и прямой доступ к аппаратным компонентам.
-
ROS (Robot Operating System) — это набор библиотек и инструментов, разработанных для облегчения создание робототехнических приложений, поддерживающий множество языков, включая Python и C++.
📼 Разработка приложений (Application разработка)
-
C# — для разработки приложений на Windows (с .NET).
-
Java — для кроссплатформенных приложений и Android.
-
Python — для создания настольных приложений и сценариев.
-
Delphi — используется для разработки приложений под разные платформы, включая Windows, macOS, iOS и Android, что делает его подходящим не только для настольных, но и для мобильных и веб-приложений
⚙️ Embedded разработка
-
C и C++ — основополагающие языки для разработки встроенных систем.
-
Python — используется для прототипирования и разработки простых решений.
Также важно не забывать про уровень сложности и порог входа в язык. Некоторые языки проще для начинающих, в то время как другие требуют более глубокого понимания концепций программирования и разработки. Работа в сфере разработки игр — может звучать заманчиво, но нужно понимать что С++ освоить будет сложнее чем PHP.
Вот таблица языков программирования, отсортированных от простых к более сложным:
Уровень сложности |
Язык |
Простой |
HTML, CSS, JavaScript, Python, Ruby |
Средний |
PHP, Java, C#, Swift, C, Kotlin |
Сложный |
C++, Rust, Delphi, Haskell |
👦 Junior. Начало пути
Для примера мы возьмем среднестатистического человека, который увлекается веб-разработкой, но еще не определился с выбором специализации. Он решает стать fullstack-разработчиком, чтобы освоить два направления одновременно и повысить свои шансы на рынке труда. Перечислим шаги которые нам нужно пройти чтобы стать успешным разработчиком
📚 Обучения
Выбор IT школы
Помочь заложить фундамент может посещения IT школы, чтобы выбор был успешным и полезным для вас стоит учитывать несколько ключевых факторов:
-
Репутация школы и отзывы студентов
-
Преподаватели с опытом в IT
-
Насыщеная программа обучения
-
Большей процент практического обучение
-
Менторинг и обратная связь от преподавателей
-
Трудоустройство или хотябы стажировка в IT компании
-
Стоимость и длительность обучуния.
Самообучения
Самообучение — это один из самых эффективных способов освоить программирование, особенно если у вас нет возможности или желания проходить формальные курсы. Вот несколько ключевых советов чтобы освоить профессию:
-
Четкое планирование и постановка целей
-
Подписка на уважаемых людей в вашей сфере (Robert C. Martin, Martin Fowler,…)
-
Изучение кода других разработчиков (GitHub)
-
Чтение документации и технических блогов (Stack Overflow, Medium, Reddit,Habr)
-
Практика, практика, практика
🌐 Сообщество и Networking
-
Участие в сообществах: вступай в онлайн-сообщества (Telegram, Slack, Discord) и участвуй в обсуждениях.
-
Местные встречи: если возможно, участвуй в местных IT-мероприятиях или хакатонах.
🔨 Инструменты
Для Junior PHP разработчика важно освоить ключевые инструменты, которые помогут эффективно писать, тестировать и развёртывать приложения. Вот список основных инструментов, которые стоит изучить:
-
Системы управления проектами (JIRA)
-
Средства для отслеживания производительности (New Relic, Kibana, Grafana, Blackfire)
-
Системы контроля версий (Git)
-
Среды разработки (IDE)
-
Инструменты работы с БД (phpMyAdmin)
Этот список даст вам хорошую базу для того, чтобы стать успешным Junior PHP разработчиком. Начните с основ, таких как PHP, Git и базы данных, и постепенно углубляйтесь в более сложные инструменты.
🦾 Хард скилы
Хард скиллы — это технические знания и умения, которые необходимы Junior PHP разработчику для успешной работы в команде и выполнения поставленных задач. Эти навыки охватывают широкий спектр технологий и инструментов, начиная с основ программирования на PHP и заканчивая знанием фреймворков, баз данных и инструментов разработки. Вот список основных инструментов, которые стоит изучить:
-
Понимание основ фронтенд-технологий (CSS, HTML, JS (на базовом уровне))
-
Основы PHP (Знание синтаксиса и базовых конструкций языка)
-
Основы работы с популярными фреймворками, Laravel, Symfony или CodeIgniter.
-
Работа с базами данных: MySQL/PostgreSQL
-
Тестирование: PHPUnit
-
Отладка: Xdebug
-
Основы веб-технологий (RESTful API)
-
Основы безопасности (SQL-инъекции, XSS, CSRF)
👬 Софт скилы
Софт скиллы — это навыки, связанные с межличностным общением и личной эффективностью, которые играют ключевую роль в успешной карьере разработчика. В отличие от хард скиллов, которые сосредоточены на технических знаниях, софт скиллы помогают разработчику эффективно работать в команде, общаться с коллегами и клиентами, а также адаптироваться к изменяющимся условиям. Вот список основных, которые стоит освоить:
-
Коммуникационные навыки
-
Работа в команде
-
Готовность к обучению и изменениям
-
Умение справляться с неопределенностью
-
Эффективное планирование и оценка задач
-
Умение подходить к задачам с разных сторон
-
Способность понимать и управлять своими эмоциями
-
Настойчивость и мотивация
-
Организационные навыки
-
Навыки разрешения конфликтов
-
Гибкость и адаптивность
💼 Практика
Практика — это ключевой элемент в обучении и становлении разработчика. Теоретические знания, хотя и необходимы, не могут полностью подготовить вас к реальным вызовам, с которыми вы столкнетесь в процессе работы. Вот список мест где ее можно прокачать
-
Участие в Open Source проектах (GitHub)
-
Участия в хакатонах (Devpost, HackerEarth, Hackathon)
-
Решения задач на разных платформах (HackerRank, Codewars, LeetCode)
-
Создания сайта (блог) себе и своим друзям
-
Выполнения заказов на фрилансе (Upwork, Freelancer, Fiverr, Guru)
👔 Создание портфолио
Портфолио должно демонстрировать ваши навыки, опыт и подход к разработке, а также помогает выделиться на фоне других кандидатов. Вот что важно учесть при создании портфолио:
-
Контактная информация и фото: укажите актуальные контакты и добавьте профессиональное фото.
-
Выполненные задания: включите проекты, выполненные в IT-школе или на хакатонах.
-
Личный сайт или блог: создайте платформу для демонстрации своих навыков и мыслей.
-
Страница на GitHub: убедитесь, что ваш код хорошо структурирован и оформлен.
-
Стажировка: укажите роль и обязанности, которые вы выполняли.
-
Курсы, которые вы прошли: перечислите курсы, связанные с вашей профессиональной деятельностью.
-
Полученные сертификаты: добавьте информацию о сертификатах, подтверждающих ваши навыки.
-
Отзыв или рекомендация: наличие положительного отзыва будет плюсом.
🎯 Поиск работы
Поиск работы может быть сложным процессом, особенно для Junior PHP разработчика, но не стоит огорчаться. Нужно быть готовым к отказам и готовность к прохождению 100+ интервю. Существуют различные стратегии и платформы, которые могут помочь вам в этом:
-
Платформы для фриланса (Upwork, Freelancer, Fiverr)
-
Конференции и митапы
-
Хакатоны
-
Обращение в компании напрямую
-
Стажировки и практики:
-
Поиск ментора
-
Социальные сети
-
Профессиональные сообщества и форумы:
-
Агентства по трудоустройству:
-
Обновление резюме и портфолио:
☎️ Подготовка к собеседованию
Правильная подготовка поможет вам уверенно представить свои навыки и опыт, а также продемонстрировать, что вы подходите для выбранной позиции. Вот несколько советов, как подготовиться к собеседованию:
-
Изучение компании:
-
Узнайте о миссии, ценностях и культуре компании
-
Ознакомьтесь с последними новостями и проектами компании
-
-
Изучение требований и обязанностей:
-
Внимательно изучите описание вакансии и ключевые обязанности
-
Обратите внимание на необходимые навыки и квалификации
-
-
Подготовка примеров из своего опыта:
-
Подумайте о конкретных примерах из вашего прошлого опыта, которые демонстрируют ваши достижения и навыки
-
-
Изучение стандартных вопросов:
-
Подготовьтесь к часто задаваемым вопросам на собеседовании, таким как «Расскажите о себе» или «Как вы справляетесь с трудностями?»
-
-
Подготовка теории:
-
Освежите знания по технологиям и методологиям, которые могут быть актуальны для интервью
-
Изучите новые тренды и разработки в вашей области
-
-
Подготовьте краткий рассказ о себе и своем опыте:
-
Создайте четкий и лаконичный рассказ о себе, который включает ключевые моменты вашего опыта и достижений
-
-
Подготовьте вопросы, которые вы хотели бы задать:
-
Сформулируйте вопросы о команде, проектах и перспективах развития в компании
-
-
Практика собеседований (с друзьями или в группе):
-
Проводите симуляции собеседований с друзьями или коллегами, чтобы почувствовать себя более уверенно
-
-
Обратите внимание на невербальную коммуникацию:
-
Практикуйте уверенную осанку, зрительный контакт и открытые жесты
-
-
Подготовьте все необходимые документы:
-
Убедитесь, что у вас есть копии резюме, портфолио и других важных документов
-
-
Узнайте о формате собеседования:
-
Проверьте, будет ли это техническое интервью, собеседование с HR или панельное интервью, чтобы подготовиться соответствующим образом
-
💰Получение оффера
Поздравляю! Вы прошли все этапы собеседования и произвели хорошее впечатление на работодателя. Что делать дальше?
-
Проверьте компанию:
-
Исследуйте репутацию компании (отзывы сотрудников, новости и успехи)
-
Обратите внимание на корпоративную культуру и ценности
-
-
Внимательно изучите оффер:
-
Ознакомьтесь с условиями работы, включая зарплату, бонусы и льготы
-
Убедитесь, что все важные аспекты (график работы, удалёнка, отпуска) четко прописаны
-
-
Сравните с другими предложениями:
-
Проанализируйте другие офферы, если они есть, и оцените преимущества и недостатки каждого
-
-
Подготовка к новой роли:
-
Исследуйте технологии, инструменты и методологии, которые используются в компании
-
Начните изучать документы, если они доступны, и общие требования к роли
-
-
Планирование переходного периода:
-
Определите, как будете уходить с текущей работы, уведомите своего руководителя и команду
-
Подготовьте свои проекты к передаче, чтобы минимизировать последствия своего ухода
-
-
Обсудите дату начала работы и предварительные задачи:
-
Уточните дату начала работы и обсудите, какие задачи нужно будет решить в первые дни
-
Если возможно, уточните, кто будет вашим наставником или куратором на новом месте
-
-
Обсудите возможности карьерного роста:
-
Уточните, какие возможности для развития и продвижения доступны в компании
-
-
Проверьте условия контракта:
-
Убедитесь, что все условия, касающиеся увольнения, конфиденциальности и несоперничества, ясны и приемлемы
-
Выводы
Каждый шаг на пути к становлению разработчиком требует времени и усилий. От выбора учебных материалов и самообучения до участия в хакатонах и подготовки к собеседованиям — все эти этапы имеют свою продолжительность и значимость. Важно понимать, что процесс обучения и поиска работы — это не гонка, а скорее путь, который требует внимательного планирования и последовательного выполнения задач.
Сколько времени может уйти на каждый из них, зависит от ваших личных обстоятельств, уровня мотивации и доступных ресурсов. У кого-то этот путь может занять год, а у кого-то — несколько лет. Но конечный результат, безусловно, стоит всех затраченных усилий!
👨 Middle/Middle+. Развитие
Прошло 2-3 года и мы получили свой первый опыт в програмировании на позиции Junior. Однако, чтобы перейти на следующий уровень и стать Middle разработчиком, необходимо не только укрепить свои знания, но и развивать навыки, которые сделают вас ценным членом команды.
Давайте забежим на перед и обсудим позицию Middle+.
К сожалению, в современных реалиях некоторые компании вместо найма Senior разработчиков предпочитают занижать оценки, классифицируя опытных специалистов как Middle+. Это приводит к искажению понимания карьерного роста и может снизить мотивацию профессионалов.
Поэту Если вы в себе действительно чутвуете силы чтобы перейти на следующий уровень и стать Senior, вам нужно достаточно углубить свои технические навыки.
Сейчас мы поойдем еще один курс и все будет хорошо. Курсов для Junior разработчиков гораздо больше, чем для Middle. Нужно ставить цель на на практический опыт. Много информации и ресурсов доступно в виде книг, статей, видеоуроков они помогут углубить свои знания в специфических областях. Также некоторые компании предлагают индивидуальные или специализированные тренинги для команд. Вот список того как можно развивать свои навыки самостоятельно:
-
Изучить новый язык программирования и понять его особенности
-
Освоить новый фреймворк и интегрировать его в свои проекты
-
Постоянно обучаться новым технологиям и подходам в разработке
-
Писать тесты (Unit, Functional, Integration) и учиться тестировать свой код на разных уровнях
-
Продолжать развивать свой GitHub аккаунт, пополняя его новыми проектами и улучшая существующие
-
Участвовать в open-source проектах для опыта работы с реальным кодом и сообществом
-
Улучшать навыки коммуникации на работе, участвуя в обсуждениях и предоставляя обратную связь
-
Попробовать себя в роли ментора для Junior разработчиков, передавая свой опыт
-
Получить дополнительные сертификаты для подтверждения навыков
-
Участвовать в конференциях и митапах, заводить новые знакомства и получать свежие знания
-
Изучать принципы архитектуры и паттерны проектирования, применять их в своих проектах
-
Работать над soft skills (управление временем, эмоциональный интеллект, работа в команде)
-
Постепенно осваивать DevOps практики, такие как автоматизация, CI/CD и контейнеризация
-
Попробовать себя в роли спикера на конференциях, выступая с докладами
-
Чтение технической литературы, блогов и участие в онлайн-курсах для расширения знаний
Следуя этим шагам и постоянно развивая свои навыки, вы сможете успешно перейти на уровень Middle разработчика.
👴 Senior. Экспертность
Прошло 5+ лет как мы в IT. Но переход от Middle разработчика к Senior может оказаться более сложным, чем переход с уровня Junior на Middle. Основная причина заключается в том, что на уровне Senior от специалистов требуется не только глубокое знание технологий, но и широкий спектр других навыков и качест.
Таким образом, переход с позиции Middle на Senior — это не просто шаг в карьерной лестнице, а значительный рост как профессиональных, так и личных навыков. Этот путь требует времени, терпения и постоянного саморазвития, что делает его настоящим вызовом для многих разработчиков.
Не менее важным аспектом является восприятие Senior-ролей в самой компании. Если коллеги и руководство привыкли видеть вас в роли Middle-разработчика, может возникнуть стереотип, который затруднит ваш переход. В таких ситуациях лучше сменить работу, так как в новой компании вам будет проще начать с чистого листа и зарекомендовать себя как Senior-разработчика.
Также стоит отметить, что в некоторых компаниях карьерный рост на уровне Senior может быть ограничен. Нехватка вакансий, высокая конкуренция и неопределенность в отношении ожиданий от Senior-разработчиков могут добавить сложности в этот процесс.
Так кто же он такой этот Senir? Это безусловно человек который обладает такими пунктами как
Soft skills
-
Постоянное самообучение и стремление к профессиональному развитию
-
Адаптивность к изменениям и гибкость мышления
-
Критическое мышление и аналитический подход
-
Самостоятельность и самодисциплина
-
Способность создавать и поддерживать качественную документацию
-
Умение эффективно работать в команде
-
Решение проблем и поиск оптимальных решений
-
Менторство, лидерство и управление командой
-
Коммуникативные навыки и умение передавать знания
-
Эмоциональный интеллект и управление конфликтами
-
Способность брать на себя ответственность за решения и их последствия
Hard skills
-
Глубокое понимание языка программирования и владение его тонкостями
-
Опыт работы с популярными фреймворками (например, Symfony, Laravel)
-
Написание и тестирование собственного кода
-
Разработка Unit, Functional и Integration тестов
-
Знание SQL и опыт работы с реляционными базами данных (например, MySQL, PostgreSQL)
-
Опыт работы с NoSQL базами данных (например, MongoDB, Redis)
-
Большие языковые модели (LLM)
-
Умение проектировать и реализовывать RESTful и GraphQL API
-
Понимание архитектуры и основных паттернов проектирования
-
Философия DDD (Domain-Driven Design) и её применение
-
Понимание принципов «чистого кода» и «чистой архитектуры»
-
Владение лучшими практиками кодирования (SOLID, DRY, KISS и т.д.)
-
Знание основных принципов безопасности приложений (OWASP, шифрование, аутентификация)
-
Умение анализировать и оптимизировать производительность приложений
-
Вклад в open-source и участие в профессиональном сообществе
-
Понимание DevOps практик (CI/CD, контейнеризация, оркестрация)
-
Опыт работы с облачными платформами (AWS, Google Cloud, Azure)
Следуя этим шагам и постоянно развивая свои навыки, вы сможете успешно перейти на уровень Senior разработчика.
👀 Уровневая градации
Наконец, хочу сказать несколько слов о уровне градации. Различия между уровнями Junior, Middle и Senior в разработке программного обеспечения обычно отражают опыт разработчика, набор навыков и ожидаемые обязанности в их ролях. Важно помнить, что уровень специализации очень субъективен и зависит от масштаба и культуры компании, в которой вы работаете. Например, если вы занимаете позицию Senior в компании X, это не означает, что вас будут воспринимать так же в компании Y, где могут применяться другие стандарты и требования. Это нормально, и важно понимать, что каждая организация имеет свои собственные критерии для оценки навыков и опыта.
Заключение
На пути к мастерству как разработчик важно помнить, что успех — это не только набор технических навыков, но и постоянное стремление к развитию, умение работать в команде и адаптироваться к изменениям. Стремитесь к обучению, пробуйте новые подходы и не бойтесь выходить за пределы своей зоны комфорта.
Не забывайте, что мастерство — это процесс, а не конечная точка. Каждый новый проект, каждая ошибка и каждая победа — это шаг к вашему совершенству. Верьте в себя, и ваш путь к мастерству приведет вас к успеху!
ссылка на оригинал статьи https://habr.com/ru/articles/854772/
Добавить комментарий