senior java developer что это
Вершина, но не предел, или как стать 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. Дерзайте!
Кто такой 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 Java Developer — как проходят собеседования
Я прошел за свою деятельность больше 100 собеседований на позиции Senior Java Developer, и скажу я вам, накопилось много интересных моментов, которыми и хочется поделиться.
К слову, я не махровый кодер, в разработке около 5 лет, на позиции Senior всего 2,5 года. Понятие о Senior у всех разное, но в моей конторе, я именно Senior и в предыдущей тоже таковым обзывался. Но это не исключает того, что я могу быть неопытным мидл разработчиком с ЧСВ от архитектора, который накидал однобокий и токсичный текст 😊
Прежде всего, цель статьи выплеснуть накопившиеся эмоции. Да вот так просто.
Ну и конечно, будет собеседующимся ощущение, что не только у них так бывает. Для интервьюеров, которые прочтут эту статью, она может дать возможность призадуматься, а то и скорректировать свои вопросы и подход к собеседованию.
Давайте ближе к делу.
Хотел бы разбить по категориям наших любимых интервьюеров (сортировка от отстоя к классным).
1. Ленивец
2. Теоретик
Этот класс особо любим, но встречается редко. Здесь во главе угла чистейшая теория по Java Core, причем до каких то извращенных деталей, которые, по моему мнению, ну совсем не нужны в моей памяти.
В целом практически любой вопрос у них упирается в то, что нужно помнить все цифры, все названия, как на экзамене у узколобого препода, когда зазубрить лучше, чем понять.
Здесь тоже плюсов особо нет, они ушли не далеко от ленивцев.
3. Мистер алгоритм
Ну из названия почти все понятно. Некоторые насмотрелись бест оф зе бест практис и решили перенять их 😊
Сюда же отнесу, да простит меня Java сообщество, «зануд» или «ярых программеров». Это люди увлеченные функциями, алгоритмами, формулами, в целом математикой, и прочими университетскими штучками. Такие люди готовы искать лучшее решение задачек в свое свободное время, вместо развлечения или отдыха.
Плюсов сильно много не вижу у таких собеседований, кроме как, если реально потребуется писать кучу своих реализаций с алгоритмами, вместо уже имеющихся джавовых, ибо они слишком медленные и вообще посредственны, ну не то что вы пишите. чистый идеал 😊
4. Лайв кодер
Здесь часто могут попросить написать тот или иной код в блокнотике расшаренном. Например: давай напиши синглетон, напиши какой-нибудь класс с функцией такой то и такой, напиши апи без логики, именно контракт и прочие.
Вроде бы все ничего, но куда же без подводных камушков. Перво-наперво, кто-то может нервничать или торопиться, но это опускаю, т.к. все по разному реагируют на сжатые сроки и дыхание в спину.
Что же касается интервьюеров, то у них могут быть разные заскоки, которые не вяжутся с адекватностью.
Кто-то будет докапываться до реализации, мол подразумевалась доп. логика, на что ты аргументированно ставишь человека на место, он соглашается, но осадок остался о тебе как о неприятной личности (тоже провал).
5. Крутые ребята
Начинают с основ, быстро проходят за 5 мин, понимают, что не джун.
Далее GC, память JVM. Потом вопросики поинтереснее про Spring и его работу, паттерны, SOLID. Потом БД. Понимают что точняк мидл, авось и более.
Далее про проектирование систем, какие проблемы бывают в разных подходах, чем лечить. Потом интереснее, реальные кейсы как построить систему, которая выполняла бы определенную бизнес логику с ограничениями.
Тут прямо сам прокачиваешь от таких вопросов. Начинаешь рассуждать, думать, в общем превращаться в архитектора. Это топовый класс интервьюеров, с которыми приятно проходить собеседования. И при рассуждениях и беседе понимаешь, что с той стороны, действительно, бывалый разработчик с хорошими знаниями и набитыми шишками.
Итого для собеседующихся
Итого для интервьюеров
Посмотрите немного со стороны на ситуацию, вспомните свои собеседования, где вы были собеседующимися.
Определите для себя, что критически важно именно для ваших задач:
усиленное знание БД
знание инфраструктуры и девопсерство
жестокая многопоточка, которая у вас используется на каждом шагу
понимание архитектуры как приложения, взаимодействия между системами
Можете об этом сразу сказать собеседнику при начале собеседования, что именно вот это у вас критически важно.
Не запаривайтесь за мелочевку, особенно если при дополнительном вопросе человек вам ответил как надо. Вы же не робота собеседуете, каждый может опечататься, забыть что-то, просто растеряться.
Если человек не подошел по цене, так и скажите честно: «Все норм, но за эти деньги мы хотели больше опыта». Возможно предложить чуть поменьше, т.к. собеседующемуся может понравился ваш проект или команда.
Пишите интересные истории из своих собеседований в комментариях.
Требования к Senior Developer: как стать старшим разработчиком и что нужно знать
Опыт — обязательное требование для каждой вакансии старшего разработчика, но его не достаточно, чтобы получить повышение. Так в чем же секрет? Вероятно, на такой сложный вопрос однозначного ответа нет.
Часто молодые разработчики считают, что подходят на должность Senior Developer, но им не хватает профессиональных качеств. На собеседовании некоторые программисты, недавно окончившие университет, утверждают, что уже работали старшими разработчиками. Возможно, такие молодые кандидаты очень хороши в одиночном программировании, но зачастую они не владеют другими атрибутами профессионализма для должности старшего разработчика.
Сразу же следует задать вопрос: как вы определяете старшего и младшего разработчика? Когда младший разработчик становится старшим?
Содержание:
Нет тонкой грани между Middle и Senior разработчиком
Нельзя сказать, что однажды, одним определенным утром, разработчик проснётся уже Senior, хотя засыпал в должности Middle Developer.
При опросе нескольких разработчиков, работающих в отрасли более 10 лет, ответы каждого из них существенно различались. Это правильно: неужели обязательно должен быть только один верный ответ?
У разных компаний требования к старшим программистам разные, как и оклад. Некоторые из них считают, что после пяти лет работы программист претендует на должность Senior Developer. Другие уверены, что для этого потребуется кандидат с шестью-восемью годами опыта работы. Невозможно точно назвать срок, в течение которого каждый младший разработчик автоматически приобретает нужные для должности Senior навыки.
Правда, существует несколько общих принципов, позволяющих утверждать о способности занять должность Senior Developer. Давайте поговорим о них.
Отличия Senior Developer от Middle и Junior Developer
Большинство старших разработчиков в чем-то похожи друг на друга. Но не стоит воспринимать это слишком серьезно. Это не значит, что при нехватке одного из атрибутов вы не входите в лигу. Но обладать следующими навыками весьма полезно для карьерного развития программиста.
1. Не зацикливаться на коде
Нужен опыт, чтобы научиться предсказывать различные повороты в развитии проекта. В самом начале карьеры с такой задачей не справится никто. Senior Developer заранее знает детали разработки типичного проекта: на любой стадии развития идеи он способен как оценить сложность задумки в целом, так и подобрать оптимальный технологический стек.
В некотором смысле, благодаря длительному опыту работы с конкретными технологиями старшие программисты “видят будущее” и принимают необходимые меры еще до возникновения проблем и багов.
2. Важные решения
Принятие важных решений в начале или середине цикла развития проекта — ответственность старшего программиста.
Senior Developer согласовывает технические решения с потребностями бизнеса. Senior получает зарплату не только за написание кода! Старшие программисты знают бизнес и помогают работодателям развивать его.
3. Опыт работы, конечно
Почему Senior Developer обязательно нужен опыт?
Например, при выборе бэкенд-системы для стартапа Junior Developer сначала выберет Firebase, но на следующем этапе разработки поймет, что Firebase совсем не подходит для проекта.
Вот в этом разница между старшим и младшим программистом: Senior Developer знает, какие технологические стеки подходят для тех или иных проектов.
Некоторые качества и свойства приходят только с опытом, достаточным для должности старшего разработчика. Не только опыт делает вас старшим программистом, но он необходим.
4. Soft skills и навыки общения
Когда Middle Developer наставляет и направляет младших программистов, то начинает становиться старшим разработчиком.
Коммуникативные навыки необходимы для Senior Developer: разработка программного обеспечения — это коллективная работа. Старшим разработчикам удается привести всех к единой цели самым коротким и рациональным путем, и иногда при этом приходится идти на компромиссы.
Старшие программисты знают политику офиса и умеют действовать в соответствии с ней.
5. Senior Developer знает, чего он не знает
Младшие программисты много чего не знают, и даже старшие разработчики не знают все на свете. Однако младшие не знают, чего они не знают — это большая разница между Junior и Senior разработчиками.
Старшие программисты осознают свои пробелы в знаниях, но при этом понимают, как выполнить задачу, а вот Junior не знают своих слабых мест. Именно эта способность делает старшего программиста эффективным программистом-одиночкой.
Знание против глубокого знания
Знания — первое необходимое качество старшего в любой области. Но сами по себе они не сделают вас Senior Developer. Изучение пяти новых языков программирования — это не качество разработчика.
Скорее, ключевой момент — глубокое знание технологии, узкая специализация. Вы можете легко понять причину данного утверждения с помощью одной простой техники: попробуйте научить технологии кого-то другого. Тогда вы сможете определить разрыв между теми знаниями, которые у вас есть, и теми, которыми вы должны обладать.
Еще один замечательный совет от Майка Льюиса, одного из многих разработчиков и экспертов в области программирования, принявших участие в написании книги Кевлина Хенни “97 вещей, которые должен знать каждый программист” (97 Things Every Programmer Should Know):
Идея сломать что-то сперва кажется непрактичной — ни один профессионал на свете не захочет ухудшить итоги своей работы, не говоря уже о программисте. Но если вы готовы ломать, то в итоге получите более качественный код и глубже изучите материал.
Поэтому, если вы хотите быстрее стать старшим разработчиком, то вы должны научиться потреблять и усваивать знания лучше и быстрее других людей.
Выводы
Когда вас уважают и достойно оплачивают ваш труд, титулы становятся просто словами. Часто компании указывают разные титулы без необходимости, чтобы угодить сотрудникам. Но это мешает им в долгосрочной перспективе, зачастую создавая ненужные ожидания.
Иногда разработчики не хотят работать в компании только потому, что им не присвоят звание старшего разработчика, как и на прошлой работе. Но иногда руководству просто нельзя так поступить, иначе произойдет несправедливость с преуменьшением навыков сотрудников, уже работающих в компании на должности Senior Developer.
Станете ли вы старшим разработчиком или нет, горите ли вы желанием получить это престижное звание или нет, качества старшего разработчика пригодятся любому программисту.