Senior android developer что это
Как стать Senior разработчиком: определение, навыки, материалы
Авторизуйтесь
Как стать Senior разработчиком: определение, навыки, материалы
Сфер в IT много, но путь становления Senior-разработчика плюс-минус одинаков. В этой статье мы поговорим о том, кто такой старший разработчик, какие к нему предъявляются требования и как дорасти до столь солидной должности.
Кто такой Senior программист?
Если не вдаваться в дебри специализаций, это одна из ступеней развития разработчика в цепочке Junior → Middle → Senior. Перед джуном также может указываться стажёр, а после сеньора — тимлид, но мы рассмотрим именно трёхэтапную схему.
Junior разработчик
Сразу оговоримся, что чётких научных измерений в этой системе нет. Для каких-то компаний джун — это вчерашний студент с минимальными знаниями и нулевым опытом, а кто-то ищет младших разработчиков с опытом работы от 2-х лет.
Но практически все сходятся в том, что это наименее ответственное звено, в развитие которого нужно вкладываться, отслеживать и координировать его действия. Скажем, это человек, который, работая, продолжает учиться.
Middle разработчик
По сути, это «подросший» Junior, который освоил необходимый стек технологий, уверенно обращается с Git, командной строкой, самостоятельно и в срок решает поставленные задачи.
Кроме того, Middle — это командный игрок, который может и чужой код прочесть, и дельное замечание по нему сделать, если требуется.
3 декабря в 10:40, Онлайн, Беcплатно
Где-то между джуном и мидлом есть ещё так называемые «уверенные джуны», но это, скорее, не промежуточный этап, а просто попытка компаний оставить уже обросшего опытом специалиста на позиции и зарплате 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 разработчиком:
Кто такой 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 разработчик
Senior (старший) Developer — разработчик-профессионал с опытом коммерческой разработки от 5 лет. При этом стаж работы не ключевой фактор для сеньора. Главным критерием является участие в крупных проектах и прокаченные навыки, опыт.
Помимо разработки он связан с другими важными задачами и продолжает обучаться. Последний пункт особенно важен. Старший разработчик должен знакомиться с новыми ИТ-технологиями, сравнивать их между собой и осваивать инструменты.
Это необходимо не только для прокачивания профессионализма, но и для передачи опыта.
Что должен знать Senior
Объективная оценка программиста складывается из комплекса знаний и навыков. Ключевые компетенции:
Важным моментом является и теоретическая подготовка. Если у разработчика нет знаний о процессе разработки, то как он может быть экспертом и эффективно работать над проектом?
Кроме hardskills для сеньора важны коммуникативные навыки и широкий кругозор. Помимо решения своих задач, он может быть руководителем или наставником для менее опытных ребят. Важно отстаивать свою точку зрения и конструктивно решать разногласия как внутри команды, так и с руководителем. Технические решения сеньора не всегда совпадают со взглядом заказчика — здесь на первый план выходят навыки переговоров.
Как оценить сеньора на собеседовании
Хороших сеньоров на рынке не так много, поэтому важно не растягивать этапы и ограничиться 1-2 встречами.
Первую удобнее провести в онлайн-формате. Цель — познакомиться и выяснить насколько вы друг другу интересны. Здесь стоит сразу подключать руководителя или тимлида. Задача HR — выяснить мотивацию кандидата и softskills. Вопросы могут быть такими:
Второй этап — техническое собеседование с руководителем. На нем основная цель — выявить навыки и реальный опыт разработчика. Интервью должно быть расширенным, после которого принимается решение.
Что не стоит делать на собеседовании с сеньором
Проводить массовое собеседование
Когда собеседование проводит половина команды — такое понравится не всем.
Кандидат не может расслабиться, а куча вопросов только путают. Поэтому 3 человека — оптимально для принятия решения.
Логические задачи, тесты на IQ
Этим можно проверить способность к анализу информации, но не каждый кандидат это оценит. Представьте, что в середине собеседования вы вдруг спрашиваете: “Где вы будете плыть быстрее — в воде или сиропе?” Как минимум, странно. Кстати, этот вопрос задавали программистам на собеседовании в Google.
Логические задачи допустимы, но используйте их правильно. Предложите профильные или математические задачки. Например такие:
Превращать собеседование в допрос
HR может помочь руководителю с планом собеседования. Например, разделите вопросы на технические, мотивационные и общие.
Главная проблема при подборе сеньора в том, что руководитель не всегда делает акцент на пользе такого специалиста для компании. То есть задают вопросы об этапах разработки, обсуждают код, но не затрагивают конкретные кейсы. И знания есть и опыт классный, но применим ли он в вашей компании? Важно выявить его сильные стороны, с чем он работал и какие применял технологии, поэтому делайте акцент на кейсах. Даже если сеньор не знаком с вашей спецификой, он должен понимать возможные концепции. У Senior разработчика не возникнет трудностей с изучением нового инструмента.
Отличие сеньора от миддла
Разработка собственного проекта
Сеньору не составит труда с нуля создать архитектуру проекта и определиться со стеком. Важное отличие от мидла — сеньор умеет и доводит цели проекты до конца.
Уверенный профессионал
Сеньору можно доверить новое направление. Это партнер компании, который знает для каких целей разрабатывается продукт. Он четко осознает свою роль и выстраивает направление проекта.
Специализация
Старший разработчик — это эксперт, у которого есть свой профессиональный взгляд на решение задачи. Он может его обосновать и использует весь свой опыт для достижения цели.
Коммуникация
Сеньор умеет задавать правильные вопросы и сразу реализовывать идеи. Он готов помочь младшим коллегам и быть наставником.
Пишут простой код
Сеньор думает не о том, как блеснуть кодом, а как он решит задачу. Простота для него не низкий профессионализм, а понятное и удобное решение для других.
Зарплата сеньора
Сравним уровень дохода сеньоров и мидлов в зависимости от языка.
В среднем зарплата Senior разработчиков находится в пределах 150 (PHP, 1C) — 213 000 руб. (Kotlin).
Среди мидлов самый высокооплачиваемый язык Golang — 156 000 руб, а самая маленькая зарплата у разработчиков 1С — 85 000 руб.
Для того чтобы убедиться, что перед вами Senior — недостаточно задать несколько экспертных вопрос. Это комплексный подход, в котором должны участвовать руководитель и HR.
Кто такой разработчик-сеньор и как им стать
Перевод статьи «What Is a Senior Developer and How Can I Become One?».
На каком-то этапе карьеры многие из нас задумываются о том, каково это — быть сеньором, и что нужно, чтобы им стать. Давайте разберемся, что же делает сеньора сеньором.
Но для начала давайте озвучим, что точно не является определяющим фактором
Вопреки тому, что вы видите в 95% объявлений о вакансиях, тайтл Senior Developer не имеет жесткой привязки к стажу работы.
Как правило, чем дольше человек работает, тем больше у него опыта. Во многих компаниях при определении уровня специалиста ориентируются на стаж. Но количество отработанных лет это не единственное, что определяет сеньора. (Здесь вспоминается поговорка-анекдот: «Мудрость не всегда приходит с возрастом: иногда возраст приходит один» — прим. ред.).
Вообще проблема связи опыта со стажем довольно распространена в сфере разработки и часто приводит к несоответствию между завышенными ожиданиями и низкими результатами. Также она может приводить к конфликтам внутри команды, например, когда ваш новый сеньор с 15 годами опыта отказывается работать с остальными разработчиками.
Что же делает разработчика сеньором?
Я проанализировал отличительные черты разработчиков-сеньоров, с которыми сталкивался за свою карьеру, которых уважал и которыми восхищался. Могу сказать, что в конечном итоге все сводится к четырем основным характеристикам:
Конечно, все люди разные, и какие-то черты у отдельно взятого разработчика могут проявляться в большей мере, чем другие. Но все вместе они определяют, насколько эффективно этот разработчик может помочь команде расти.
Давайте рассмотрим каждый пункт подробнее.
Опыт работы обычно исчисляется в годах стажа, но это не слишком точный метод.
Опыт разработчиков так же уникален, как и они сами. Один разработчик мог провести пять лет на позиции, где ему приходилось интенсивно работать и ежедневно решать сложные технические задачи. А другой мог все пять лет валять дурака в небольшой компании, где его единственной обязанностью было обновлять сайт раз в неделю.
И ведь последний вариант совершенно не плох! В конце концов, все мы выбираем собственный путь и подходящий для нас баланс работы и личной жизни. Но нельзя говорить, что пять лет стажа в первом и втором случае равнозначны.
Как же определять опыт?
Распознавание шаблонов на основе опыта
У вас, как и любого разработчика, наверняка был случай, когда вы столкнулись с какой-то странной ошибкой. Она могла быть связана с JavaScript, webpack или даже операционной системой — это не важно, главное, что она была совершенно непонятная.
Но затем с помощью коллег или Google вам удалось решить возникшую проблему. А три месяца спустя вы занимались уже другим проектом, и вдруг столкнулись с точно такой же ошибкой. И вам уже не пришлось гуглить, чтобы разобраться с ней (как вариант — вы уже точно знали, что именно нужно гуглить). Вы просто уже были знакомы с этой задачей, поэтому быстро ее решили и двинулись дальше.
Вот такого рода опыт и отличает разработчиков-сеньоров. Способность распознавать шаблоны ошибок или успеха очень сильно помогает нам в профессиональном плане. Именно этот опыт способствует продвижению одних команд, в то время как у других дело застопоривается.
Распознавание незнакомых вещей
Не менее важно уметь вовремя понять, что вы чего-то не знаете. Я думаю, что синдром самозванца частично связан тем фактом, что чем больше знаешь, тем лучше осознаешь, как мало у тебя знаний.
Но это не должно пугать. Напротив, это должно вдохновлять, ведь в вашей сфере деятельности столько всяких крутых штук, которые можно (и нужно) изучить!
Однако при этом важно понимать, как ваше знание или незнание чего-либо влияет на вашу работу и работу всей команды. Возьмем пример. Разработчик ведет себя так, будто все знает и понимает. Вместе с командой он проделывает большой объем работы. Но на самом деле он разбирался в вопросе не так уж хорошо, и из-за этого были приняты и реализованы неверные решения. Результатом будут разозленные коллеги и клиенты.
Независимо от стадии, на которой вы находитесь, не бойтесь попросить о помощи. Признайтесь в своем непонимании, даже если в команде нет никого опытнее вас. То, что вы единственный сеньор, еще не означает, что вы ничему не сможете научиться у джуниора.
Старайтесь объективно оценивать свое положение и свои знания: это принесет много пользы.
Лидерство
У старших разработчиков склонность к лидерству появляется природным образом. Это не значит, что вы должны непременно быть техлидом или именно за вами будет последнее слово при принятии решений. Просто вы должны быть способны (хотя бы на базовом уровне) толкать проект вперед.
Понимание всей картины
Если вам приходилось работать над проектами в команде, вы знаете, что каждый проект или отдельный функционал обычно имеют целый список историй (stories), которые нужно обработать, чтобы завершить этот проект. И каждая такая история — отдельный шажок на пути к большой цели.
Но если никто в команде не понимает, каким образом все эти отдельные маленькие шажки ведут к большой цели, у команды появляются проблемы. Разработчик-сеньор должен уметь видеть, каково место каждого кусочка в общей картине. Он должен понимать, почему каждая отдельная история написана с определенными критериями приемки. И даже если сеньор этого не знает, он должен знать, как найти ответ и как донести его до команды.
Если вы не уверены в направлении, попробуйте отступить на шаг назад. Постарайтесь увидеть, где в этой головоломке место для вашего кусочка. Таким образом вы поможете команде продвинуться к конечной цели.
Прямая помощь менее опытным членам команды
Когда вы способны помочь начинающим или просто менее опытным членам команды, такой шаг будет совершенно естественным. Разработчикам свойственно терять из виду крупный план картины. Но, как уже отмечалось, сеньор должен уметь постоянно представлять себе проект в целом и понимать, какое место в этом проекте занимают разные истории.
Помогайте коллегам, направляйте их в верном направлении. И это касается не только видения крупного плана картины; порой помощь с отдельными задачами будет тоже уместна.
Старайтесь научиться понимать, когда у коллег возникают сложности с чем-либо. Поощряйте их задавать вам вопросы и помогайте нащупать верный путь (например, когда делаете ревью их кода).
Наставничество
Зачастую для разработчика удобнее просто заниматься своим делом, не отвлекаясь на то, чем занимаются другие. Но принесет ли такой подход пользу команде?
Способствуйте развитию товарищей по команде
Вы можете быть 10-кратным разработчиком, но если вы все делаете сами и не помогаете другим расти, это лишь замедляет продвижение команды. Люди часто тратят много времени, пытаясь найти ошибку или придумать решение самостоятельно, в то время как им существенно помогло бы, если бы кто-то из коллег тоже взглянул на их код.
Эгоизм плохо сказывается и на моральном духе команды. Никому не нравится чувствовать себя одиноко, а для джуниоров это тем более тягостно. Сфера разработки это огромный пугающий мир. Если вы будете хоть немного направлять коллег, это поможет им работать куда более продуктивно. Кроме того, таким образом вы сделаете свой вклад в становление более счастливого и менее стрессового окружения.
Следует учитывать, что мы очень легко забываем о том, что когда-то сами были джуниорами. Вы можете считать какие-то вещи очевидными, но для других членов команды те же вещи могут быть совершенно непонятными концепциями.
Помните, что команда это целостный организм. Празднуйте вместе большие и маленькие победы. А если кому-то трудно, старайтесь помочь.
Распространение знаний
Во многих командах возникают сложности с обменом знаниями между коллегами. Все мы надеемся, что каким-то образом эту проблему можно решить, но по факту она часто остается нерешенной. Что же делать?
Возьмите за правило (личное) делиться тем, что знаете. Вы только что переделали бизнес-логику? Уделите 30 минут на то, чтобы провести всех по новому коду. Если кому-то сложно в нем разобраться, поработайте с этим человеком в паре, расшарьте свой экран.
К таким действиям следует поощрять и всех остальных. Представляя коллегам свою работу, вы естественным образом улучшаете и собственные знания. А это полезно и сеньорам, и тем, кто впервые открыл редактор кода.
Технические знания и умения
Я намеренно оставил этот пункт напоследок. Я сделал это потому, что хотя технические знания важны, в становлении разработчика-сеньора есть много вещей поважнее, чем быть очень хорошим специалистом по какой-то технологии.
Способность быстро продвигаться вперед
Будучи разработчиком-сеньором, я ожидаю от другого сеньора, что он быстрее начнет эффективно работать с чем-либо, чем джуниор. Если это эксперт по JavaScript, я ожидаю, что он разбирается в основных принципах и шаблонах этого языка.
Но если вспомнить о том, как важно уметь распознавать неизвестные тебе вещи, не слишком разумно ожидать, что каждый сеньор непременно разбирается во всем. То есть, я не сочту эксперта по Ruby меньше достойным тайтла сеньора, если он не знает JavaScript. Но я все же буду ожидать, что он умеет применять свои знания для изучения другого языка и написания кода на другом языке.
Продвижение шаблонов
Зачастую шаблон кода, который вы только что придумали, уже не нов. И это нормально! При написании хороших программ не ставится цель писать уникальный код для каждого решения.
Благодаря этому мы можем проанализировать свои прежние работы и увидеть, какие решения были удачными, а какие — не очень. В результате мы можем найти рабочие шаблоны для себя и своей команды.
Шаблоны вроде MVC (Model View Controller) стали популярными не без причины. Разработчики постоянно учатся на обобщенном опыте прошлого и на опыте коллег, которым случалось решать сложные задачи. Полученные знания они могут применять в собственной работе. Ведь задача не в том, чтобы каждый раз заново изобретать велосипед, а в том, чтобы решить возникшие проблемы и создать хороший продукт.
У нас у всех свой путь
Кто бы что ни говорил, а у каждого свой путь. Цель этой статьи — вдохновить вас, побудить стать лучшим разработчиком и понять, как ваша работа влияет на коллег.
Вы определенно можете преуспеть, даже если не будете учитывать все то, о чем мы говорили выше. Но при этом вы можете упустить из виду вещи, благодаря которым другим людям хочется работать с сеньорами (с чисто человеческой точки зрения).
Поэтому, каким бы ни был ваш путь, старайтесь не забывать делиться опытом и помогать коллегам.