Senior java developer что это
Путь программиста
Почему программисты постоянно ходят такие счастливые? Ответ на этот вопрос простой и обескураживающий: потому что они работают на любимой работе и у них дофига денег.
Добро пожаловать в мир программистов.
Зарплата программиста
Хочется рассказать о зарплатах программистов. Как, собственно, обстоят дела с зарплатой, куда лучше идти работать, а куда — нет. Если вы не программист и попытаетесь самостоятельно разобраться в этой теме, то можете получить набор очень противоречивых данных.
Все дело в том, что главным фактором, влияющим на зарплату программиста, является не его квалификация, а место работы. Иногда, при одинаковой квалификации разница между хорошим и плохим местом может достигать 2-10 раз(!)
В каждый конкретный момент времени ваша квалификация постоянна. Вы не можете за месяц стать опытнее в два раза и получать в два раза больше. А вот сменить за месяц работу и получать в два раза больше очень даже можете. Давайте же выясним, где лучше всего работать.
Вот три фактора, которые очень сильно влияют на уровень зарплат в компаниях:
1) Является ли разработка ПО основным бизнесом компании.
2) Ориентирована ли компания на международный рынок или на внутренний.
3) Собственником фирмы является западная компания или отечественная.
Обратите внимание, что город, в котором вы живете, не играет решающей роли. Т.е. если вы получаете в 10 раз меньше, живя в Дрездене, чем ваш знакомый в Нью-Йорке, значит, в дело вступили перечисленные выше факторы.
Конкретные цифры
Сложно привести какие-то конкретные цифры для всего мира. Опишем ситуацию в Восточной Европе, которая в целом справедлива для всех стран, где более-менее развит IT-outsource/outstaff.
Вот сколько может зарабатывать Java Senior Developer с пятью годами опыта работы, в зависимости от уровня компании в которой работает:
Что самое странное в сложившийся ситуации?
Половина всех программистов работает в фирмах уровня 1 и 2.
Хотите узнать, в чем подвох?
Есть сотни открытых вакансий программистов в фирмах уровня 3 и 4. Эти компании готовы предложить более высокие зарплаты и обычно — гораздо лучшие условия труда.
Чего можно добиться, если не тупить
Если вы будете постоянно заниматься саморазвитием в области программирования, ваша зарплата, начиная с сегодняшнего дня, будет меняться примерно так (+/- несколько сотен долларов в зависимости от города, в котором вы работаете):
0-3 месяца (Ученик)
Вы знаете о программировании очень мало. Может, учили в школе и/или университете, но очень поверхностно.
Ваша задача — учиться программированию и изучать Java.
Ваша цель — устроиться на работу Java Junior’ом в компанию не ниже 3-го уровня.
Первые три месяца на плане вы не получаете ничего, т.к. просто изучаете программирование. В будущем, когда у вас будет семья и куча кредитов, сменить специализацию будет гораздо сложнее. Чтобы исправить ошибку, вам понадобится отложить деньги на год нормальной жизни. Не делайте глупых ошибок.
3-15 месяцев (Java Junior Developer)
Вы уже работаете программистом, и ваш опыт растет с каждым днём. Не прохлаждайтесь. Вам ещё многое предстоит сделать, чтобы можно было почивать на лаврах.
Ваша задача — изучать технологии, которые понадобятся вам, как Middle разработчику. Какие именно технологии? Мир меняется. Сейчас насоветуем, а жизнь все поменяет. Найдите в интернете несколько вакансий и посмотрите, что для них требуется. Обязательно прочитайте книгу Брюса Эккеля «Философия Java».
Ваша цель в первый год работы Java Junior’ом — дорасти до уровня Java Middle. Никто не говорит что это очень легко, но вполне возможно для целеустремленного человека. Это сразу даст скачок ЗП до полутора тысяч.
2-й год работы программистом (Java Middle Developer, level 1)
Вы хорошо потрудились в прошлый год, и теперь вы — Java Middle Developer. С зарплатой в полторы тысячи можно нормально жить. На работе вам дают серьезные задания, и ваш опыт растет, как на дрожжах. Вы дорастете до Java Senior Developer за два-три года. Нет смысла ускорять этот процесс. Сильного роста в зарплате вы все равно не получите.
Ваша задача — изучить паттерны проектирования, прочитать «Совершенный код» МакКоннела. Улучшайте качество своего кода и навыки работы в команде. Можно взять за правило каждую неделю читать одну книгу по ИТ. Тогда через год вы будете на 50 книг умнее остальных. Не стоит откладывать это на потом: свободного времени у вас больше не станет. Вполне вероятно, что у вас появится семья, или пополнится, если уже есть.
Ваша цель — выбрать несколько технологий, в которых вы будете специализироваться как Senior-разработчик. Всего вам все равно не изучить. А быть гуру в небольшой области — это хорошее решение.
3-й год работы программистом (Java Middle Developer, level 2)
Вы уже опытный Middle разработчик и подумываете стать Senior Developer. Это приятно и престижно. Ваша зарплата превышает 2 тысячи долларов (данные для Киева). С этого момента спрос на таких профессионалов как вы превышает предложение. Вы всегда сможете устроиться на работу за пару дней, и вряд ли будете получать меньше, чем сейчас. Если, конечно, не выкинете какую-нибудь глупость.
Ваша задача — продолжить изучение выбранных технологий. Работайте лучше. Не ради работодателя, ради вас самих. Проситесь в проекты с перспективными технологиями (такими как Big Data, на момент написания этой статьи). Вы все равно будете проводить в офисе 8 часов в день, так почему бы не получить за это немного больше денег и, что гораздо важнее, ценнейший опыт, который вам ещё понадобится.
Ваша цель — сменить работу. Хороший коллектив есть везде. Вы столкнетесь с новыми проектами и технологиями. Не стоит раньше времени прирастать к стулу. Если вы все еще работаете в компании третьего уровня: подумайте над переходом на четвертый уровень. Пятый уровень, хоть и очень привлекательный, пока недостижим.
4-й год работы программистом (Java Senior Developer, level 1)
Вы стали Senior разработчиком. Поздравляю. Возможно, стали им незаслуженно, и вы это чувствуете. Все равно поздравляю. Не важно, достойны ли вы сейчас вашей должности, главное чтобы вы стали достойны ее в будущем. Согласитесь, лучше сначала получить хорошую работу, а через год дорасти до нее, чем дорасти до хорошей позиции и ждать ее еще год.
Надеюсь, вы не забыли мой совет и читали по одной книге в неделю — теперь вашим возможностям позавидует любой студент. Вернее, он готов молиться на них. Подумайте: у вас серьезная зарплата, приближающаяся к трем тысячам долларов. Скорее всего, вы еще молоды. Весь мир у ваших ног.
Ваша задача — еще раз просмотреть выбранные вами технологии. Возможно, вам нужно сменить специализацию. Мир изменился, технологии изменились, да и знаний у вас за два последние года прибавилось. То, на чем вы сейчас остановитесь, станет вашим выбором на несколько ближайших лет. Самое время выбирать любимые технологии.
Ваша цель — выбрать направление, в котором вы могли бы развиваться дальше. Их очень много, всех вариантов никто не перечислит, но выбор нужно сделать прямо сейчас. Если сегодня вы немного измените свое настоящее, это приведет к большим изменениям в вашем будущем.
5-й год работы программистом (Java Senior Developer, level 2)
Вы определились с будущим и работаете над воплощением вашей мечты. Правильно выбранное направление в совокупности с желанием идти вперед — и результат не заставит себя ждать. Поздравляю. Мы рады, что еще одним счастливым человеком стало больше.
Есть одна мудрая истина. Люди часто переоценивают то, чего можно добиться за один год, и недооценивают, чего можно добиться за пять лет. Оглянитесь на пять лет назад. Так оно и есть.
Ваша задача — не принимать глупых решений и не идти на поводу у лени.
Ваша цель — выбрать направление и двигаться дальше. А вы думали это конец? Вспомните свой выпускной класс. Это не конец, это только начало.
Будущая специализация
Вы можете развиваться как технический специалист (верхняя ветка), как управленец (нижняя ветка) или как наемный профессионал/независимый консультант (средняя ветка). Все зависит от ваших предпочтений.
Карьера программиста
Профессия программиста отличается от других профессий. Здесь нет необходимости делать карьеру менеджера, чтобы хорошо зарабатывать. Нередки ситуации, когда старший программист получает больше, чем его начальник-менеджер. Чем больше вы набираетесь опыта, тем сильнее ваши отношения с начальством движутся от точки «начальник-рабочий» к отношениям вида «кинозвезда и ее менеджер». Зажравшиеся, знающие себе цену программисты перебирают и проектами и вакансиями. Порадуемся за своих.
Что же нужно, чтобы стать таким высококлассным и востребованным в мировом масштабе программистом? Вы должны иметь большой опыт в самых новых и востребованных технологиях. Как этого достичь? Ответ ниже.
После того, как вы первый раз устроились работать программистом, с вами начинают происходить две вещи, которые, как ни странно, не всегда бросаются в глаза.
1. Вы начинаете быстро набирать опыт работы в реальных проектах. Один год опыта работы программистом может дать вам больше знаний и навыков в вашей специальности, чем 5 лет университета. Опыт — это настолько значимый показатель, что в IT-вакансиях зачастую пишут «требуется Java-программист с тремя годами опыта работы».
2. Вы по 8 часов в день изучаете новые технологии, а вам за это ещё и щедро платят. Значимость этого фактора трудно переоценить. В некоторых случаях полученные навыки настолько важны, что ради их получения можно работать бесплатно, а то и доплачивать. Если вы грамотно выбираете проекты, на которых соглашаетесь работать, вас ждет головокружительная карьера программиста.
Вот только, что же выбрать?
Зачастую, если вы не знаете, какие технологии будут вам полезны, вы начинаете выбирать технологии по принципу «нравится, не нравится» или «модно, не модно». Тут уж как повезет. Так что лучше знать заранее, куда вы хотите попасть.
Путей развития программиста очень много, поэтому для простоты выделим несколько из них, и опишем свое видение полученной ситуации. Не стоит воспринимать эту схему как жесткую позицию, скорее как упрощённый взгляд на вещи с целью внести хоть какую-то ясность.
Двухсотлетний программист.
Если больше всего вам нравится программировать, то ваш путь — Senior Developer, затем Tech Lead Developer и архитектор. Также вы можете просто работать программистом лет 50. Зачастую зарплаты старших программистов и техлидов превышают зарплаты их менеджеров. Не прогадайте.
Менеджер. Тебе повезло, ты не такой как все.
Вы перешли на сторону врага. Шучу. Если у вас открылись недюжие организаторские способности, то ваш путь — Team Lead, а затем Project Manager. Это даст вам шанс стать директором и поможет при открытии своего дела. Вы ведь этого хотите, не так ведь?
Украсть трактор.
Если вы успели завести семью и детей, то возможно, вы хотите тихой и безбедной жизни в стране со стабильной экономикой. Задумываетесь над переездом/иммиграцией в Канаду, США, Швейцарию или даже Австралию. У вас есть отличные навыки и востребованная профессия. Вам не придется начинать с мойщика посуды. А, например, с Senior Java Developer. Да ещё и, вероятно, на большую зарплату. Не так уж и плохо.
Посмотреть весь мир, кроме Парижа, и не умирать.
Кто такой senior-developer?
Часто можно услышать следующий вопрос:
Как мне стать senior java dev? Какой есть наикратчайший путь?
Считаю, что вопрос задается некоректно. Синьоров в ваакуме не бывает. Синьор это титул, который присваивается в конкретной компании за решение конкретных задач. Поэтому человек являющийся им в одной фирме также легко может им не быть в другой. И вообще наверное не очень полезно для технического специалиста стремиться именно к титулам. Мне кажется более продуктивно стремиться к достижениям!
Существует много довольно разрозненной информации на эту тему в сети.
Представляешь, слушаю я кандидата на синьорную позицию, а он оне отвечает на вопрос A, B, C. Ну какой же он синьор?
Смотрите, Иванов чего написал. И это синьор?!
Смотрите какой же это синьор, он не справился с простейшим тестом на codility или hackerrank
Приведу несколько ссылок и обсуждений по теме:
Все они конечно имеют какую то базу под собой. Однако несмотря на то, что терминология по градации программистов по уровням lead, senior, middle, junior довольно устоявшаяся не существуют единого их определения. Или какого то сертификационного теста пройдя который можно было бы точно сказать определенно синьор вы или нет.
Более того, можно сказать, что в разных компаниях вам могут присвоить совершенно РАЗНЫЕ уровни/титулы.
Таким образом я подчеркиваю свое мнение:
Senior developer этот ТИТУЛ который дает КОНКРЕТНАЯ компания программисту. Но это совершенно не значит, что в другой компании он будет senior тоже. Не бывает синьоров в ваакуме. Поэтому стремиться стать синьором ВООБЩЕ это совсем неконкретная и непродуктивная цель. Нужно говорить, про технологическй стек, набор КОНКРЕТНЫХ задач решаемых с помощью технологий, про типаж фирмы.
Я согласен с тем, что можно сказать, что senior разработчик это тот К КОМУ ходят за советом, а не тот кто не может самостоятельно решить поставленную техническую или бизнес задачу в представленные сроки. За ним не нужно постоянно присматривать направлять и корректировать. Но это по моему и так очевидно.
Понятно, что лучше быть богатым и здоровым чем бедным и больным. Ясно что хороший работник в ваакуме должен представлять что он делает и укладываться в сроки.
Хочу заметить также, что нельзя путать senior developer с lead developer. Lead developer помимо технических знаний должен ВЕСТИ и направлять команду. Заниматься воспитанием и обучением молодых членов группы. Senior же может вполне нормально работать один при этом никого не вести за собой. Lead_programmer
В заключение:
И тогда можно будет задать вполне корректный вопрос на который больше шансов получить ответ:
Как мне найти работу в технологическом стеке X, решая такие то задачи Y в такой то фирме Z? При этом чтобы мне платили 100500 и меня окружали милые люди вокруг. Какой есть наикратчайший путь?
Если вам предложат вакансию которая вас полностью устроит, то какая вам разница, что написано у вас на визитке?!
Существуют также попытки как то формализовать уровень умения программистов и выделить какие то общие закономерности. Я думаю вам будет интересно взлянуть на эту популярную табличку и сравнить ваши знания: Programmer Competency Matrix. Хотел бы я посмотреть на статистику, чтобы увидеть сколько синьоров могут сказать, что они полностью соответствуют критериям представленным в вышеприведенной таблице. Что однако не отменяет ее пользы как наглядного материала для трезвой оценки своих умений.
Вершина, но не предел, или как стать Senior Developer
К концу статьи у вас будет список из лучших ресурсов и поэтапно расписанный путь к такой должности, как Senior Developer.
Разумеется, вы всегда можете выбрать свою дорогу. Описанный способ – не единственно верный, но рабочий. Он вобрал в себя опыт из многочисленных собеседований и реальной карьеры. Данная статья – не панацея, а лишь хорошее руководство по оптимизации вашего времени с помощью эффективных и полезных инструментов.
Чего мы хотим от должности Senior Developer?
Люди привыкли стремиться к профессиональному росту. У каждого свои цели, но большинство из нас обязательно сойдется в главных утверждениях:
Чтобы достичь вышеизложенных целей, нельзя просто почивать на лаврах, ожидая, что все само придет. Особенно в мире программирования, который постоянно совершенствуется, меняется, а объемы информации раздуваются с колоссальной скоростью. Поскольку все больше и больше разработчиков выходят из колледжей и буткампов, нам нужно регулярно оттачивать свои навыки.
Кто такой Senior Developer?
Нет, будучи полиглотом, который знает 10 разных языков программирования и создал свою собственную версию Jarvis, вы не станете старшим разработчиком. Дело в том, что Senior Developer – это тот, кто обладает приличным багажом знаний, оказывает положительное влияние на младших сотрудников и в целом улучшает показатели эффективности своей компании. Вы можете знать все о функциональном программировании, но если при этом нет навыков продуктивного общения с командой, или ваши знания не представляют фактической ценности для конечного потребителя, вы не старший разработчик.
Задайтесь вопросом: насколько большой вклад вы привносите в свою компанию / стартап / бизнес? Старший программист может навести порядок в команде, использовать свой опыт для получения реальной выгоды и успешного взаимодействия заинтересованных сторон.
Как стать старшим разработчиком?
Потратьте некоторое время на изучение основных тем и следуйте приведенным ниже ресурсам. Если вы в состоянии активно совершенствовать представленные навыки, то быстро займете лидирующие позиции в своей отрасли. Разумеется, всегда найдутся люди с большим опытом, чем ваш, но это не мешает продолжать работать над собой, накапливать знания и различные навыки, чтобы избавиться от конкуренции за рабочее место. С таким подходом вы обязательно получите должность Senior Developer.
Главное правило – не стоять на месте. Не нужно зацикливаться на чем-то одном: расширяйте спектр возможностей, изучайте языки, СУБД, IDE, фреймворки, знакомьтесь с принципиально новыми подходами в области программирования, ведь кто знает, чем будут заниматься те же специалисты по машинному обучению через 5 лет? Все меняется, и нужно осваивать умения, позволяющие быстро адаптироваться в новых условиях.
1. Технические навыки
Старшие разработчики используют очень много «Почему» в понимании технологий:
Как программист, вы должны обладать хорошим представлением обо всех инструментах и идеях, которые могут принести пользу жизненному циклу разработки, а также выбрать инструменты, имеющие наибольший вес в рамках конкретного проекта. Senior Developer всегда задается вопросом: «Что и как можно изменить, чтобы сделать продукт лучше?»
Они также понимают, как соединяются и взаимодействуют все элементы. Чтобы начать думать, как старший разработчик, необходимо освоить эффективную обработку информации, известную как mind mapping. Данный инструмент позволит быстро устанавливать связи между идеями и технологиями, а значит, перенесет обучение на новый уровень.
Хороший пример mind mapping для JavaScript-программистов:
Для тех, кто действительно пишет на языке JavaScript, будет полезен этот курс. Он представляет уже разложенную по полочкам информацию, что и является оптимальным способом освоить большой объем нового материала за короткий промежуток времени. Построив правильную интеллект-карту, вы сможете сосредоточить ресурсы компании на том, что имеет наибольшее значение. Охватывайте все аспекты, а не некоторые из них.
Если ваша специальность никак не связана с компьютерами, начните с изучения структур данных, алгоритмов и других основ. Зачем? Хоть технологии и меняются, базис остается прежним. Новичкам подойдет книга «Алгоритмы. Вводный курс». Хорошим вариантом для тех, кто знает основы, станет книга «Алгоритмические трюки для программистов», а вот профессионалы обязательно оценят «Алгоритмы. Построение и анализ».
Не обходите стороной и подкасты вроде Software Engineering Daily: они позволят вам оставаться в курсе текущих проблем и будущих перспектив всей отрасли.
2. Командные навыки
Данный аспект часто упускается из виду. Как вы работаете со своей командой? Относитесь ли вы к категории дерзких и упрямых, или же проявляете внимательность, охотно сотрудничаете и всячески поощряете членов команды? Senior Developer никому ничего не доказывает. Ему и не нужно: он сразу пишет чистый упрощенный код, а не такой, который будет выглядеть демонстративным, но совершенно нечитабельным в глазах других программистов. Старший разработчик готов помогать другим и отвечать на все вопросы.
Социальная психология – важный инструмент, и книга «Как завоевывать друзей и оказывать влияние на людей» определенно должна занять вашу книжную полку.
Если вы из тех, под чьим руководством сотрудники чувствуют себя нужными и услышанными, являются важными элементами цельной работающей системы, то вы уже далеко впереди своих конкурентов.
3. Навыки клиента/пользователя
Могут ли клиенты или пользователи быть вами услышаны? Когда они что-то предлагают, вы понимаете, с какими проблемами они сталкиваются? Старший разработчик – это также внимательный слушатель, который может предложить дельные советы по решению проблем. Senior Developer отлично справляется с формированием отношений. Он понимает, что обе стороны, – и клиент, и разработчик, – выигрывают от продуктивного взаимодействия. Прочитайте «Психологию влияния» для улучшения этого навыка.
Наконец, вы должны уметь объяснить сложные концепции программирования даже далекому от сферы IT человеку. Развивайте этот навык, наблюдая, как известные инструкторы разбирают сложные темы.
4. Навыки роста
Старшие разработчики ежедневно изучают что-то новое. Это не значит, что они проводят 14 часов в день, сидя перед компьютером, читая статьи. Они более эффективны. Они всегда стараются поговорить с другими программистами, задать вопросы или изучить новые темы. Они не сосредотачиваются только на одном наборе знаний. Вы можете быть лучшим в чем-то одном, но если вы не знаете весь спектр или не понимаете, с какой проблемой столкнулись, вы уже не лучший.
Senior Developer не скажет «О, я ненавижу эту библиотеку!». Большинство людей говорят это лишь потому, что не понимают чего-то до конца. Например, не говорите: «Я ненавижу jQuery. Только плохие разработчики все еще используют jQuery». Старший разработчик скажет, что «jQuery сыграл важную роль в развитии Интернета и популярности JavaScript», и он будет прав, ведь действительно разобрался в данном вопросе.
5. Навыки собеседований
Старшие программисты на то и старшие, что могут общаться и продавать свои услуги другим. Вы можете видеть потребности своего работодателя и внушить уверенность в том, что являетесь тем, кто ему нужен. Senior Developer должен уметь принять на себя роль ведущего в проекте, а потому подача на собеседовании решает все. У американского эксперта Рамита Сетхи есть отличная статья, которая даст хороший старт. Помогут и другие полезные материалы по трудоустройству.
6. Навыки сообщества
Старшие разработчики вносят огромный вклад в сообщество программистов. Это могут быть и технические переговоры, и выступления, и написание статей. Senior Developer активно обменивается информацией с представителями отрасли. Такие люди не закрываются в ящике только своего рабочего пространства: они выходят и общаются с людьми в других кругах, что позволяет им расширять горизонты. Это похоже на путешествие: чем больше культур вы встречаете, тем больше сходств и различий между людьми вы видите и просто начинаете ценить эту непохожесть.
В заключение
Развивайте эти навыки, но помните: вам должно нравиться то, что вы делаете. Если вы не находите интересным каждый день изучать информатику и разработку программного обеспечения, вы никогда не станете старшим разработчиком, потому что у вас не будет искреннего стремления совершенствоваться. Если вы когда-либо читали книгу «Хватит мечтать, займись делом!», то понимаете, что страсть к работе должна быть чрезмерной.
Но порой настоящая страсть приходит лишь после того, как вы овладели навыком, а для этого много работали, стремясь стать опытным специалистом в своей отрасли. Поэтому обязательно начните, и, возможно, выбранный вами путь приведет к такой заветной и почитаемой должности, как Senior Developer. Дерзайте!