Кто такой сеньор и что он делает (он же senior)
Программист, который умеет всё.
Послушать аудиоверсию этой статьи (6 минут):
Мы тут потихоньку рассказываем об уровнях программистов: был рассказ о джуниоре, потом о мидле, наконец — о сеньоре.
Чем senior-разработчик отличается от всех остальных
Сеньор — это программист, который может всё. Он в силах написать нужный код и решить задачу оптимальным способом. Но это не самое важное. Важнее всего то, что он полностью понимает устройство проекта, все его связи, тонкости и нюансы.
Ключевое качество сеньора — умение работать полностью автономно. Это значит, что задача, которая ему поручена, будет сделана, даже если никто пока не представляет, как именно. Для этого сеньор:
Как им стать
Обычно говорят про 5–10 лет работы мидлом, но это ерунда. Настоящими сеньорами становятся не по выслуге лет (хотя иногда бывает и такое), а по способности решать сложные задачи и брать на себя ответственность за ход проекта.
Если говорить о требованиях, которые обычно предъявляют к сеньорам, то вот они:
А ещё он знает про технический долг и про то, что с ним делать. Про этот философский аспект работы программистом мы расскажем отдельно.
Зачем нужны senior-разработчики
Вести проекты. Если компания берёт много заказов на разработку, то как минимум один сеньор должен вести этот проект от начала и до конца. Он планирует загрузку всей команды, разрабатывает архитектуру и следит за тем, чтобы код был понятен не только компьютеру, но и человеку.
Помогать другим программистам. Когда у джуниоров возникают вопросы, они идут к мидлам. Когда вопросы у мидлов — они идут к сеньорам.
Думать на шаг вперёд. Джуниоры делают техническую работу, мидлы пишут основной код, но именно сеньоры понимают, зачем это нужно и что будет на следующем этапе. Благодаря такому подходу новые возможности программы не противоречат старому коду.
Сколько платят senior-разработчикам
Мы посмотрели зарплаты сеньоров разных направлений на Хабр Карьере за второе полугодие 2019 года:
Это в полтора раза выше, чем у мидлов.
Что дальше
Может показаться, что сеньор — последняя ступень в развитии программиста. Но на самом деле из них получаются отличные тимлиды, архитекторы или технические эксперты. Всё дело в специализации, которую выберет сеньор, когда захочет профессионального роста.
Об этом — в новых статьях.






Как в Микрософте сделали свой язык программирования. И зачем.
Поднимайте сайт, закачивайте файлы и программируйте, что вам нужно. Это бесплатно.
Это не так сложно, как звучит.
5 способов, от простых до сложных.
Знакомство с Trie: это дерево, которое помогает работать со словарями.
И что можно на нём напечатать.
актобарзар яантарбо еокат отЧ
Как сложить и перемножить векторы (и зачем).
Инструкция новичкам от разработчика из Яндекс.Практикума.
Как стать Senior разработчиком: определение, навыки, материалы
Авторизуйтесь
Как стать Senior разработчиком: определение, навыки, материалы
Сфер в IT много, но путь становления Senior-разработчика плюс-минус одинаков. В этой статье мы поговорим о том, кто такой старший разработчик, какие к нему предъявляются требования и как дорасти до столь солидной должности.
Кто такой Senior программист?
Если не вдаваться в дебри специализаций, это одна из ступеней развития разработчика в цепочке Junior → Middle → Senior. Перед джуном также может указываться стажёр, а после сеньора — тимлид, но мы рассмотрим именно трёхэтапную схему.
Junior разработчик
Сразу оговоримся, что чётких научных измерений в этой системе нет. Для каких-то компаний джун — это вчерашний студент с минимальными знаниями и нулевым опытом, а кто-то ищет младших разработчиков с опытом работы от 2-х лет.
Но практически все сходятся в том, что это наименее ответственное звено, в развитие которого нужно вкладываться, отслеживать и координировать его действия. Скажем, это человек, который, работая, продолжает учиться.
Middle разработчик
По сути, это «подросший» Junior, который освоил необходимый стек технологий, уверенно обращается с Git, командной строкой, самостоятельно и в срок решает поставленные задачи.
Кроме того, Middle — это командный игрок, который может и чужой код прочесть, и дельное замечание по нему сделать, если требуется.
25–26 ноября, Москва и онлайн, От 24 000 до 52 000 ₽
Где-то между джуном и мидлом есть ещё так называемые «уверенные джуны», но это, скорее, не промежуточный этап, а просто попытка компаний оставить уже обросшего опытом специалиста на позиции и зарплате Junior-разработчика. Как только почувствовали, что знаете и можете гораздо больше, чем джун, сразу же обсудите это с руководством.
Senior разработчик
Вот он, гвоздь программы, способный взять на себя проект и даже руководить отдельным подразделением. Senior Developer обладает обширным багажом знаний, способен стать ментором для Trainee или Junior разработчика, а также улучшать эффективность команды за счёт реализации своих идей.
Грубо говоря, если вы не нуждаетесь в сторонней помощи и, напротив, сами можете предоставить такую помощь, в числе первых берёте на абордаж новые технологии и не боитесь использовать их на практике, вы Senior программист.
Что должен знать и уметь сеньор разработчик?
Так как же стать Senior разработчиком? Не стойте на месте: осваивайте новые языки и технологии, записывайтесь на вебинары, бросайтесь в принципиально новые подходы, дабы не пасти задних, и развивайтесь всесторонне.
Довольно обобщённые советы, не правда ли? Что ж, попытаемся их структурировать и раскрыть подробнее.
1. Технические навыки
Во-первых, это понимание алгоритмов и умение писать чистый код. Во-вторых, для одной задачи существует множество решений, но именно Senior Developer способен определить, какое из них оптимально в конкретном случае.
Перед началом работы всегда спрашивайте себя:
Если для решения проблемы нужно освоить новую СУБД, фреймворк или сторонний сервис, вы осваиваете это.
Но что реально отличает сеньора от остальных, так это опыт поддержки проектов, даже если речь идёт о всеми забытом и припорошенном пылью легаси коде.
Кроме того, чтобы думать, как Senior, нужно расширять способы обработки информации. В этом поможет книга Иана Макдермотта и Джозефа О`Коннора «Искусство системного мышления». Также есть краткая выжимка основных мыслей в формате аудиокниги:
2. Коммуникативные навыки
Не будем распыляться о том, что старший разработчик должен хорошо знать английский язык. В любом случае держите бесплатные материалы по английскому для айтишников.
Как вы уже поняли, сеньоры часто ведут проекты самостоятельно, поэтому очень важно уметь обрабатывать ТЗ заказчика, задавать правильные вопросы, которые выльются в исчерпывающие ответы, устанавливать сроки выполнения и выстраивать план работ. Разумеется, проджект-менеджеров никто не отменял, но в идеале старший разработчик может справляться и без их помощи.
А ещё программирование — это почти всегда работа в команде, поэтому нужно уметь организовать процесс, отталкиваясь от навыков и запросов других сотрудников. Вы должны быть на «ты» с гибкими методологиями разработки, и такие термины, как Agile, Scrum и Kanban, не должны вас пугать.
3. Навыки ментора и интервьюера
Подбор персонала и обучение новичков — задачи, которые нередко ложатся на плечи сеньоров. Как человек, прошедший обучение, становление и набивший достаточное количество шишек, Senior-программист прекрасно знает, какие вопросы задавать, чтобы выделить сильные и слабые стороны кандидата, а также как организовать рабочий процесс для тех, кто уже прошёл собеседование.
4. Навыки профессионального роста
Если вы думаете, что дослужитесь до звания Senior Developer и закончите на этом свой учебный путь, вы ошибаетесь. Старшие разработчики как никто знают, сколь важно постоянно развиваться, осваивая всё новые и новые горизонты. Они никогда не ограничиваются одним набором инструментов, ведь в погоне за оптимизацией рабочего процесса так или иначе приходится обращаться к чему-то новому.
Если у вас есть боязнь применения новых знаний на практике, также известная как синдром вечного студента, вам нужно её преодолеть, чтобы стать Senior разработчиком.
Принципиальная разница между джуном и сеньором в том, что первый, как правило, воспринимает обучение как обязаловку, в то время как второй видит в этом ценную необходимость, ключ от закрытых дверей.
От сеньора редко можно услышать что-то вроде «Ненавижу этот инструмент», поскольку он уже изучил его, выделил все плюсы и минусы, знает, когда его стоит применять, а когда это бесполезная трата времени и ресурсов.
5. Навыки работы с сообществом
Мало того что старшие программисты хорошо выполняют свою работу, так они ещё и «подтягивают» айтишное комьюнити. Часто выступают с докладами, организовывают митапы, пишут документации и полезные статьи, которые помогают развиваться другим.
Иными словами, Senior разработчик не закрывается в своём рабочем пространстве, втихую накапливая знания и скрывая их от остальных. Скорее, это те самые гуру, раздающие дельные советы на Stack Overflow. Они любят делиться своим опытом, так как это:
Вместо эпилога
Всё сказанное уже сказано, поэтому просто держите несколько дополнительных материалов, чтобы лучше понять, как стать Senior разработчиком:
Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
Уровень разработчика не обязательно определяется многолетним опытом программирования: «джун» вполне может быть старше «сеньора», — всё сводится к профессиональным навыкам. Это не означает, что старший разработчик должен быть специалистом во всём, но можно с уверенностью сказать, что навыки у него гораздо более развиты, чем у разработчиков младшего и среднего уровня.
Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?
Знания
Очевидно, что старший разработчик обладает гораздо более обширными знаниями. Для младшего разработчика изучить шаблоны проектирования, архитектуру, автоматизацию тестирования, методы повышения производительности и обеспечения безопасности и т. д. — отличный способ сократить этот разрыв в знаниях.
Важно знать, как должно создаваться программное обеспечение. Но просто знать всё это — не значит быть разработчиком более высокого уровня. Знания — это не ключевое отличие, а лишь один из факторов.

Фото — Clem Onojeghuo, площадка Unsplash
Программирование
Несмотря на мнение большинства обычных людей, программирование — это не общение с компьютером. Программировать — значит общаться с людьми и отдавать указания компьютерам. Ведь код в итоге компилируется и превращается в нули и единицы.
Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».
Разработчиков среднего уровня в этом сравнении я учитывать не буду, поскольку в отношении навыков программирования они представляют собой своего рода переходную область — скорее ближе к уровню старшего разработчика. В основном «промежуточное» положение определяется опытом, поскольку обычно «мидл» успевает пройти весь цикл разработки хотя бы раз, а также совершить множество простейших ошибок и извлечь из них уроки.
Как вычислить «джуна»
Младшие разработчики неопытны: иногда это выпускники, которые только начинают работать на полную ставку. В их голове основная задача — заставить код работать. Если приложение работает — значит, оно хорошее.
Писать простой код — это сложная задача. И младшие разработчики этого делать не умеют: обычно код у них довольно своеобразный. Узнать их можно по причудливым однострочникам и чрезмерно сложным абстракциям — так «джуны» стремятся показать себя и пытаются дать понять другим, насколько хорошо они умеют программировать. Но это неверный подход.
Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».
Как пишут код «сеньоры»
Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»
Поэтому у старшего разработчика совершенно другой подход к написанию кода: он учитывает удобство дальнейшей поддержки и масштабируемость. Это совершенно не похоже на мышление младшего разработчика: «сеньор» думает о тех, кто будет работать с кодом, а «джуну» важно в первую очередь заставить код работать.
Не программированием единым
Помимо навыков программирования, есть и другие факторы, которые могут подсказать, что за разработчик перед вами.
Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.
Это не значит, что у старшего разработчика по ходу дела не возникает вопросов: у любого из нас каждый день появляется множество вопросов, и «сеньоры» тут не исключение.
Разница в том, что последние знают, как задавать правильные вопросы и что делать с полученными ответами. Менее опытные разработчики могут задавать правильные вопросы, если речь идет о привычных им задачах, но в более сложных случаях им приходится обращаться за помощью.
Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.
Разработчик среднего уровня также должен уметь задавать правильные вопросы, если только это не очень сложные задачи, требующие глубокого уровня знаний.
А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.
Переход на следующий уровень
Мы все хотим совершенствоваться, в том числе профессионально. Но какие шаги можно предпринять, чтобы перейти на следующий уровень?
От «джуна» — к «мидлу»
Начинающие разработчики не обладают богатым опытом, поэтому важно хотя бы пару раз пройти весь цикл разработки — таким образом вы сможете встретить на своем пути множество ловушек и научитесь их избегать.
Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.
Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.
От «мидла» — к «сеньору»
Разработчикам среднего уровня подняться выше может быть довольно сложно: некоторые остаются на этом уровне всю свою карьеру.
Старший разработчик знает, в каких случаях можно пойти на компромисс, и когда этого делать ни в коем случае нельзя — потому что он успел проверить это на собственном горьком опыте.
Чтобы перейти на уровень «сеньора», нужно быть готовым к выполнению задач, за которые никто понятия не имеет, как браться. Нужно знать и уметь больше, чем просто делать свою работу.
Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.
В свете этого неудивительно, что «сеньоры» полностью владеют своим техническим стеком. Нужно не просто уметь программировать, а знать все инструменты и приложения, которые используются в нанявшей вас компании.
Заключение
Разница между «джуном», «мидлом» и «сеньором» заключается не только в многолетнем опыте. Да, можно с уверенностью сказать, что у последнего навыки гораздо более развиты, чем у разработчиков младшего и среднего уровня. Но знание — не самый важный фактор.
Опытные разработчики пишут более простой код и подходят к этому иначе. Но кроме того, чтобы уметь программировать, очень важно также знать, какие вопросы задавать и что делать с полученными ответами. Именно старший разработчик — тот человек, чей богатый опыт позволяет не растеряться и в любой ситуации найти решение.
«Джуну», чтобы расти дальше, нужно постараться научиться писать простой код и пройти через несколько полных циклов разработки. Чтобы подняться выше среднего уровня, нужно сосредоточиться на изучении чего-то большего, чем просто рутинные задачи по исправлению ошибок. Вы должны быть готовы брать на себя самые сложные задачи и полностью овладеть своим техническим стеком. Еще одна обязанность старшего разработчика — выручать менее опытных.
Напоследок процитирую Мартина Фаулера:
«Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку»
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Признаки настоящих программистов-сеньоров и методы их выслеживания в дикой природе
Существует большой разброс в уровнях квалификации разработчиков. И то, что называют «сеньорностью», часто ничего не говорит о реальных возможностях программиста. Что делает некоторых разработчиков объективно лучше других? Что выделяет их из серой толпы?
Если у программиста есть пять, десять или даже пятнадцать лет «практического опыта» — это не обязательно гарантирует то, что он является эффективным и продуктивным сеньором. На самом деле — это даже не значит, что он вообще может так называться.
Конечно, существуют и такие несчастные, из-за которых за успешными сеньорами, которые обычно немолоды, закрепилась плохая репутация. Но и молодым сеньорам тоже не легче. Однако существуют определённые черты и знания, общие для разных программистов-сеньоров.
Нельзя сказать, что реальным сеньорам известны какие-то секреты профессионального мастерства. Они, скорее, отличаются особой структурой знаний, особым мышлением. И то и другое поддаётся развитию.
Автор материала, перевод которого мы сегодня публикуем, говорит, что хочет рассказать о некоторых признаках, которые помогают отличить настоящего программиста-сеньора от программиста с «сеньорностью».
Парадигмы программирования
Принципы SOLID, объектно-ориентированное и функциональное программирование — это три парадигмы программирования, три методологии написания чистого кода, которые составляют значительную часть концептуальных подходов, стоящих за созданием программ.
Многие программисты-джуниоры в ходе работы упускают одну важную вещь, которая заключается в том, что программирование — это язык. Это означает, что программирование — это нечто большее, чем набор неких грамматических правил. Это — средство общения, явление, которое может быть структурировано множеством способов. Парадигмы программирования помогают сформировать определённую позицию относительно того, как код воспринимается, и того, как он передаёт информацию.
Писать код может кто угодно — точно так же, как кто угодно может написать сообщение в мессенджере или короткий обзор книги на Amazon. Но подобные тексты нельзя поставить на один уровень с романами Стивена Кинга. Парадигмы программирования действуют как направляющая сила, стоящая за кодом, который пишут сеньоры. Это делает парадигмы похожими на сюжетные структуры, которым следуют авторы художественных произведений. Все языки пронизаны формулами. Разработчики-сеньоры понимают их на глубоком уровне, до которого джунам и мидлам ещё только предстоит дойти.
Способность создавать
Сеньоры, однако, идут дальше копирования. Они могут создавать что-то новое и без особенной помощи всемогущего Google. Они знают о том, что делают, они понимают то, как их решения воздействуют на результаты их работы. Они могут видеть, или, по крайней мере, предвидеть нештатные ситуации. Они понимают проблемы своего кода и знают о том, как с ними бороться.
Если им что-то неизвестно — они восполняют пробелы в знаниях, серьёзно разбираясь в неясных вопросах, не ограничиваясь лишь их поверхностным изучением. Они глубоко понимают все те инструменты, которыми пользуются. Мир кода выглядит в глазах сеньоров не так, как в глазах джунов или мидлов.
Объективная критика
Все отдают предпочтение тому, что они знают. Джуниоры и мидлы демонстрируют сильную тенденцию к тому, чтобы делать акцент на их собственном опыте, а не на том, что относится к анализируемому ими коду. Если они высказывают некое предложение, или если они оценивают что-либо — основой всего этого являются их личные предпочтения. Это — стиль написания кода, способы именования сущностей, методы мышления.
В этом нет ничего плохого. Всё это — часть процесса профессионального роста. Для того чтобы достичь настоящей объективности суждений, программисту нужно побывать во множестве ситуаций и самому увидеть, как нечто, неприемлемое в одном случае, в другом может оказаться наилучшим решением некоей проблемы. Это развивает у разработчика нейтральный взгляд на вещи. Нет единственно правильного способа писать код. Есть лишь способы, которые эффективны в определённой ситуации и при определённом сценарии развития событий. Программисты-сеньоры это понимают. Они готовы принять то, что их код может и не быть неким «самым лучшим» кодом, и то, что он может быть подвергнуть улучшению.
Сеньоры часто становятся продуктивными контролёрами качества кода, указывая на беспорядок, который устраивают в программах их коллеги и отмечая слабые места архитектуры приложений. Они способны увидеть общую картину проекта, оценить возможность возникновения совершенно неожиданных проблем. При этом они не привязаны к какому-то стилю написания кода или к какой-то парадигме программирования. В центре их внимания находятся не инструменты, а результат.
Разница между хорошей программой и работающей программой
Разработчики создают код, главная задача которого — запуститься. Некоторые из них останавливаются на этом, и считают, что работающий код — это всё, что им нужно. Другие идут немного дальше и стремятся к тому, чтобы код был бы не только работающим, но и качественно написанным. Лучшие разработчики — это те профессионалы, которые в процессе работы редактируют и переписывают наш код. Они могут и согласиться с применением какой-нибудь неудачной конструкции, но как только у них возникнет возможность её исправить — они это сделают. Такие разработчики понимают разницу между хорошей и работающей программой.
Большинство руководителей интересует только работоспособность программы. Но хорошие разработчики-сеньоры видят ситуацию глубже. Они понимают скрытую стоимость технического долга и способны распознать код, который указывает на наличие в системе глубинных проблем. Они знают о том, как совместить потребность бизнеса в работающих программах с качеством кода. Это позволяет им находить баланс между сдачей проектов в срок и включением в них дополнительных возможностей, о которых заказчики проектов вспоминают далеко не в самом начале работы.
Широта их знаний, понимание фреймворков и языков программирования, делают их экспертами в вопросе нахождения разницы между программами работающими и программами качественными. Они умеют создавать и то и другое. Это даёт настоящим сеньорам возможность находить креативные решения проблем в самых разных ситуациях.
Способность учить
Посредственный учитель излагает. Хороший учитель объясняет. Выдающийся учитель показывает. Великий учитель вдохновляет.
Уильям Артур Уорд
У настоящих разработчиков-сеньоров есть страсть к технологиям, которая вдохновляет их менее опытных товарищей, помогая начинающим становиться профессионалами высочайшего класса.
Программирование, само по себе, это набор неких идей. У сеньоров есть способность сжато и понятно излагать эти идеи. Способность сеньоров переносить код между разными интерфейсами и средами демонстрирует истинное понимание выбранного ими языка программирования.
Для того чтобы кого-либо чему-либо учить, необходим определённый уровень владения предметом. То, что называют «опытом работы», может выглядеть в резюме программиста как перечень выполненных им проектов, или как время, которое он трудился в разных компаниях. Но возможность учить других — это навык, который доступен лишь тому, кто по-настоящему владеет своим ремеслом.
Итоги
Настоящий разработчик-сеньор — это многогранное существо, которое иногда, если речь идёт об областях, находящихся вне сферы его основной деятельности, может выглядеть как джун или мидл. Но сеньор обладает мощной базой в области философии программирования.
Однако вышеприведённые особенности сеньоров — это то, что присутствует в их личностях и в их профессиональных знаниях. Это позволяет им осваивать новые технологии быстрее, чем некоему «усреднённому» программисту. Часто сеньоры — это люди, которые способны охватить одним взглядом общую картину происходящего. Они способны смотреть на код без предрассудков и суеверий.
Настоящий сеньор будет вести своих товарищей по работе к привычкам создания чистого кода. При этом он не будет представлять собой разрушительную силу, которая пытается втиснуть всё, с чем сталкивается, в прокрустово ложе собственного опыта. Этот человек спокойно воспринимает ошибки сослуживцев, да и свои тоже. Он стремится учиться и учить на ошибках, а не унижать менее опытных коллег.
Разработчик-сеньор может быть человеком любого возраста, он может прийти из любой отрасли информационных технологий, его «практический опыт» может исчисляться любым количеством лет. Главная особенность таких людей заключается в том, что они по-настоящему умеют решать проблемы, и в том, что они способны мыслить в долгосрочной перспективе.
Уважаемые читатели! Если вы занимаетесь подбором кадров в сфере информационных технологий — просим рассказать нам о том, как вы «выслеживаете» сеньоров.













