Кто такой джуниор и стоит ли идти им работать?
Джуниор-программист или джун — стартовая позиция в программировании. Это человек, который имеет небольшой опыт работы с каким-то языком и выполняет рутинную работу с перспективой роста.
Если вы умеете писать простые программы, понимаете их принцип работы и можете разобраться в чужом коде с комментариями — значит, вы можете быть джуниором.
Градации программистов и фулстек
Есть четыре градации в программировании: стажёр, джуниор, мидл и сеньор (Junior, Middle, Senior).
- Стажёр временно работает в компании, часто бесплатно. Ему редко дают писать боевой код, чаще он просто учится и набирается опыта. Чаще всего стажёры — это студенты старших курсов.
- Джуниор молотит код под присмотром старших и обращается к ним за помощью.
- Мидл пишет программы самостоятельно.
- Сеньор занимается архитектурой, взаимодействием систем и высокоуровневыми вещами.
Деление условное, всё зависит от требований компании. То, что одни компании требуют от джуниоров, другие хотят от мидлов.
Единых требований к рабочему процессу у джуниоров тоже нет. Кто-то ждёт, что человек на этой позиции будет делать только вспомогательную работу, но не допускают до основного кода. Максимум — им могут дать писать документацию. В других фирмах джунов сразу сажают на рабочие проекты и дают мидла в помощь.
За опытом
Если хотите быстро прокачаться в языке программирования, быть джуном — идеальный вариант. Есть компании, которые не готовы платить много новичкам, но готовы вкладываться в их развитие, чтобы вырастить себе сильного программиста. Они платят по 30–40 тысяч рублей, но помогают вам освоить язык: комментируют код, дают кураторов, обучают. При этом вы тоже будете делать что-то полезное для компании.
Требования к кандидатам простые: знание основ языка, желание развиваться, упорство и готовность работать за маленькую зарплату. Для многих начинающих это реальный способ за полгода прокачаться в профессии.
За деньгами
Второй вариант работы джуниором — сразу начать зарабатывать, но тут сложнее. Немногие компании готовы сразу платить нормальные деньги новичкам в надежде, что они сами всему научатся. Можно рассчитывать на зарплату всего на 10–15 тысяч больше, чем в первом варианте, но требования тут другие. От вас будут ждать, что вы сами способны выдать рабочий код. Поблажек на то, что вы только начинаете, не будет.
С другой стороны, если вы пишете на популярном и простом языке, то конкуренция будет выше, а зарплаты — ниже, потому что много желающих поработать. Тем, кто пишет на редких или перспективных языках типа Kotlin или Rust, платят больше.
Медианные зарплаты джунов
Мы посмотрели на статистику зарплат в калькуляторе «Моего круга». Данные на начало 2019 года:
Для сравнения: медианная зарплата фулстек-мидла — 80 тысяч.
Что в итоге
Джуниор — начинающий программист, который знает и понимает язык, но не решал реальных производственных задач.
Даже если вы только начали изучать программирование, можно найти работу, где вы получите мало денег и много опыта, или нормальные деньги и высокие требования.
Если не бросать развитие и программирование, можно вырасти в мидла с зарплатой и возможностями побольше, но о них — в другой раз.
Что должен знать junior С#? — Хабр Q&A
Джун должен точно знать что не все в работе программиста — это программирование. Если вы можете легко и связно изъяснятся, понимаете цикл разработки (описание-согласование,разработка, тестирование, интеграция) приложения и умеете читать(!! дада, многое что нужно действительно прочитать и сделать именно так), то у вас уже есть 50% успеха.По программированию, то что вы можете прям быстро-быстро освоить:
asp.net webforms + EF5+jquery
WebForms -действительно очень старая технология на данный момент, все просто фанатеют и бегают как угорелые за ASP.NET MVC. Но въехать сразу что куда там и как, джуну будет сложно (некоторые мидлы тяжко переваривают, хотя как по мне так все просто там, не зря ж модели основанные на MVC самые распространненные в мире : MVC, MVVM, MVP, MVT).
С EF особо не извращайтесь (например с полной моделью дб). Возьми(те?) EF6 + code first, например, «хау ту» из гугла, и пройдитесь по мануалу. Создав приложение например, которое создает-отображает-модифицирует-удаляет записи из бд, открывайте Management Studio и смотрите что у вас получилось в бд. Напишите запросы на выборку данных соединенных из двух таблиц
Если после проведенных действий вы уже можете написать запросы INSERT, SELECT, UPDATE, DELETE, то уже хорошо, никто не будет от вас ждать глубоких знаний SQL, но и теряться при виде хоть мало мальски сложно запроса нельзя. Плюс как сказал Станислав Макаров, нужно знать что такое транзакции и с чем их есть.
По самому .NET: один из самых популярных вопросов «что появилось в .net версии %version%?» Поэтому чтобы не потерятся при ответе на такой вопрос, гуглите примерно так
- Что появилось в .NET 2.0
- Что появилось в .NET 3.0
- Что появилось в .NET 4.0
- Что появилось в .NET 4.5
Еще очень популярная технология для шарпистов — это WCF. Если скилла написать простенький сервис не хватит, то хотя бы почитайте что это такое и с чем его едят.
Из книжек, которые можно посоветовать одна из моих любимых это Троелсен. Достаточно качественно объясняет и легко чтобы сразу взять и въехать.
Ну и плюс все что выше описали, достаточно хорошие советы. Походите по ссылкам, почитайте статьи, посмотрите курсы. И самое главное если вы еще не начали, то начинайте учить английский. Грамматика в первую очередь. Банально составлять предложения это ОЧЕНЬ ВАЖНО. Вас никто не поймет если вы будете писать по-русски английскими словами, а вы будете если не возьметесь за грамматику сразу, наравне с программированием.
Как стать «толковым джуниором». Личный опыт / Habr
На Хабре есть уже довольно много статей от джуниоров и для джуниоров. Некоторые поражают степенью зажратости юных специалистов, которые в самом начале своего карьерного пути, уже готовы давать советы корпорациям. Некоторые наоборот удивляют несколько щенячим энтузиазмом: «Ой, меня взяли на фирму настоящим программистом, теперь я готова работать хоть и бесплатно. А еще вчера на меня тимлид посмотрел — уверена, мое будущее устроено». Такие статьи в основном в корпоративных блогах. Ну, и вот я решил рассказать о своем опыте начала работы джуниором в Москве, потому что а чем я хуже? Бабушка мне говорила, что ничем. Как вы, наверное, заметили, я люблю длинные отступления и растекаться мыслью по древу, но есть же любители такого стиля — так что наливайте большую чашку чая — и поехали.Итак, несколько лет назад: я на 4 курсе политеха в своем тихом провинциальном облцентре. Я прохожу практику в полуразрушенном ( на физическом уровне ) НИИ. «Программирую» на XML’е. Моя работа очень важна для процесса импортозамещения в приборостроительной отрасли. Наверное, нет. Надеюсь, что нет. Надеюсь, что все XML-ки, которые я в полусонном состоянии на автомате набивал в этом НИИ пошли в корзину сразу после моего ухода. Но в основном, я читаю двачи и Хабр. Там пишут о сытой жизни программистов в столицах, которые сидят в удобных и светлых офисах, зарабатывают 300К/сек. и выбирают, какую модель Бентли купить на февральскую зарплату. «В Москву, в Москву» становится моим девизом, «Три сестры» — любимым произведением (окей, я имею в виду песню БГ, Чехова я не читал, конечно, он желчный какой-то). Пишу своему виртуальному знакомому московскому программисту:
— Слушай, программисты-джуниоры в Москве вообще нужны?
— Ну как, толковые нужны, бестолковые нафиг никому не нужны ( тут было другое слово, если что )
— А что такое «толковый» и что такое «бестолковый». И как мне понять, я вот — какой?
— Чуваааааак, блин, первое правило джуна — не быть душным. Толковый — это толковый, что тут непонятно.
Ну, что тут сказать — москвичи они слова в простоте не скажут. Но, по крайней мере я узнал первое правило джуниора.
Однако я уже очень хотел стать «толковым джуниором». И стал прицельно готовиться к переезду через год. Готовился я, естественно, на своей практике в НИИ в ущерб своей «работе», так что если проект импортозамещения провалится, то вы знаете кто виноват. Из минусов у меня было так себе образование — я потерял энтузиазм к обучению уже после первой тройки на экзамене ( то есть после первого экзамена первого семестра). Ну и еще… это… я не очень умный. Высоколобые ученые и программные архитекторы вызывают у меня немое восхищение. Но все-таки хочется же!
Итак, за время подготовки я:
- Подучил синтаксис своих основных языков программирования. Так, случилось, что у меня это C/C++, но если бы начать сначала, я выбрал бы другие. Страуструпа я не осилил, сорян сэр, но это выше моих сил, а вот Липпман — самое то. Керниган и Ритчи — напротив отличный туториал по языку — респект таким парням. В целом, по любому языку как правило есть несколько толстых книг, из которых джуниору достаточно прочитать одну
- Подучил алгоритмы. Кормана я не осилил, а вот Седжвик и курсы на курсере — самое оно. Просто, доступно и прозрачно. Также я тупо решал задачки на leetcode.com. Все easy-задачки я осилил, можно сказать прошел игру на изи-уровне сложности, хе-хе.
- Выдавил из себя пет-проект на github’е. Мне было сложно и скучно писать проект «просто так, для будущего», но я понимал, что надо, на собеседованиях это спрашивают. Это получился торрент-клиент. Когда я устроился уже на работу, я с огромным наслаждением удалил его с гитхаба. Спустя год после написания мне уже было стыдно смотреть на его код.
- Заучил гору идиотских логических задачек. Теперь я точно знаю как посчитать число включенных лампочек в зацикленном вагоне, узнать цвета шапок на гномиках и съест ли лиса утку. Но это настолько бесполезное знание… Зато теперь очень смешно, когда какой-нибудь тимлид выдает «У меня есть особая секретная задачка, которая определяет, может ли человек думать» и выдает одну из баянистых задачек, про которые знает весь интернет.
Итак, я закончил институт и начал осуществлять план переезда в Москву. Я разместил резюме на hh.ru, место пребывания, естественно указал Москву и откликнулся на все вакансии, хотя бы отдаленно напоминающие мой профиль. Желаемую зарплату я не указывал, потому что понятия не имел, сколько платят. Но принципиально — работать за еду я не хотел. Бабушка мне говорила, что деньги — это мерило уважения тебя работодателем, а работать с теми, кто тебя не уважает, нельзя.
Я приехал в Москву и кинул рюкзак на свое койкоместо. За следующий месяц у меня было огромное количество собеседований, зачастую по несколько в день. Если бы я не вел дневник, я бы все уж забыл, но я все записывал, так что вот несколько категорий компаний и собеседований в них с точки зрения джуниора:
- Российские IT-гиганты. Ну, вы все их знаете. Они могут прислать приглашение «побеседовать» даже если вы не выкладывали резюме, типа мы все равно следим за тобой и все уже и так знаем. На собеседовании — тонкости языка и алгоритмы. Видел как посветлело лицо одного там тимлида, когда я изящно повертел бинарным деревом на листочке. Так и хотелось сказать «изи, изи,
рилтоклиткод». По деньгам 50-60, предполагается, что за «большую честь» работать в компании с громким названием вы поскромничаете по зарплате. - Иностранные IT-гиганты. В Москве есть несколько офисов крупных иностранных фирм. Звучит очень круто, однако свой опыт собеседований туда могу описать только так: WTF?! В одной меня долго собеседовали психологическими загонами типа «А как вы думаете, зачем люди работают? А за какую минимальную сумму вы бы стали работать на работе мечты?». После того как градус идиотии достиг максимума мне предложили взять парочку интегралов. Интегрировать я умею только е в степени х, о чем и сообщил интервьюеру. Скорее всего, после расставания мы оба считали друг друга дурачками, но он-то дурачок старый и уже не поумнеет, хе-хе. В другой фирме сказали, что я очень клевый, послали вакансию на согласование в Америку и пропали. Возможно почтовый голубь через океан не долетел. В другой фирме предложили стажировку за 40. Нунезнаааааю.
- Российские госконторы. Госконторы любят выпускников крутых вузов (с чем у меня проблема). Госконторы любят академические знания (с чем у меня тоже проблема). Ну и плюс госконторы бывают очень разные. В одной дамочка, похожая на школьную учительницу с уверенностью в голосе предложила 15 тысяч. Я даже переспросил — реально 15. В других 60-70 без проблем.
- Геймдев. Тут как в анекдоте «все говорят фильм для дураков, а мне понравилось». Несмотря на плохую репутацию отрасли, по мне так нормально — интересные люди, 40-70 по деньгам, нуачо, норм.
- Всякий трэш. В натуральном подвале сидят и пованивают 5-10-15 разрабов и пилят блокчейн/мессенджер/доставку игрушек/малварь/браузер/свой фоллач. Собеседования разные — от пристального взгляда до теста по языку на 50 вопросов. Деньги тоже разные: 30 тыс, 50 тыс, «сначала 20, потом 70», $2100. Общее одно — темные перспективы и темная схема оформления. А мне бабушка говорила, что в Москве все так и норовят обмануть такого воробушка как я.
- Адекватные середняки. Есть такие конторы середнячки, у которых нет громкого бренда, но и нет каких-то загонов по поводу своей исключительности. Они очень жестко конкурируют за кадры, так что у них нет 5-тиэтапных собеседований и попыток намеренно задеть на собеседовании. Они прекрасно понимают, что кроме зарплаты и крутых проектов — остальные мотиваторы, они уже дополнительные. Собеседования адекватные — по языку, что есть/чего хочешь, какие есть пути развития. По деньгам 70-130. Я выбрал одну из таких контор и успешно работаю в ней по сей день.
Окей, если кто дочитал до этого места поздравляю вас — вы крутые. Вы заслужили еще одну порцию советов джуниорам:
- Знайте синтаксис своего языка хорошо. Бывают спрашивают всякие редкости.
- Не паникуйте, если собеседование прошло неудачно. У меня было собеседование на котором после почти каждой моей реплики интервьюеры начинали громко ржать и прикалываться над моим ответом. Когда я вышел из комнаты, мне реально хотелось плакать. Но потом я вспомнил, что у меня через два часа следующее собеседование, а этим #### желаю трудноуловимых багов в продакшне.
- Не быкуйте на собеседованиях с hr-ками. Скажите девочкам то, что они от вас хотят и идите дальше к техническим специалистам. Я на собеседованиях многократно заверял hr-ок в том, что просто мечтаю работать в телекоме/геймдеве/финансах, разрабатывать микроконтроллеры и рекламные сети. Деньги для меня конечно же не важны, только чистое познание. Да-да-да, я нормально отношусь к переработкам, готов слушаться начальника как маму, а свое свободное время посвящать дополнительному тестированию продукта. yeah-yeah, whatever.
- Пишите нормальное резюме. Внятно изложите какими технологиями владеете и чего хотите. Всякие «коммуникабельность и стрессоустойчивость» лишнее, особенно если вы категорически некоммуникабельны и нестрессоустойчивы как я.
Надо чем-то закончить статью, так удачи джунам, синьоры-помидоры не злитесь и не обижайте молодежь, всем пис!
от Junior до Senior / WAYUP
Мы видим, как стремительно день ото дня растёт количество IT-специалистов и тех, кто желает ими стать. В вузах, где обучают программированию стоит очередь из желающих обрести эту перспективную специальность. На курсе WAY UP «Веб-верстальщик: код фрилансера» только за прошлый год отучилось более 1000 человек.
А всё почему? Быть айтишником сейчас модно и перспективно. Специалисты этой области хорошо зарабатывают, они востребованы по всему миру. И за высококвалифицированными программистами охотятся не только работодатели, но зачастую и противоположный пол, ввиду популяризации гик-культуры.
Как войти в профессию программиста
Как войти в IT? И с чего начинается путь программиста? Вариантов развития событий существует несколько.
Первый вариант – самый сложный – самообразование. Найти в интернете сайты, книги и приложения для обучения программированию не составит особого труда. Здесь вопрос в качестве и правильности получаемой информации. Сложность же состоит в том, чтобы самостоятельно освоить колоссальный поток информации, разобраться в синтаксисе языка, да и, собственно, выбрать какой язык изучать. Этот процесс отнимет неоправданно большое количество ваших сил и времени.
Университет. Если вы только оканчиваете школу, то хорошим решением будет получить высшее образование в этой области. Фундаментальные знания, полученные там и вузовская «корочка» явно не навредят при дальнейшем устройстве на работу. Тем более на старших курсах чаще всего выдающихся ребят работодатели примечают еще на производственной практике и потом с радостью принимают к себе на работу.
Наставник. Это может быть ваш друг, сосед или ментор, которого можно найти на специальных ресурсах в интернете. В любом случае, этот человек должен обладать определенным опытом в программировании, чтобы направить вас, проверить код и дать полезные советы.
Специализированные курсы. Преимущество курсов по сравнению с учебой в университете состоит в том, что преподаватели почти всегда являются практиками. А значит, они не только дадут теоретические знания, но и научат практическим навыкам. Окончить курсы и бодро стартануть в карьере программиста – это не вымысел. И выпускники курса «Веб-верстальщик: код фрилансера» подтверждают это. Они начали свой путь верстальщика и не планируют останавливаться.
Уровни программистов: Junior-Middle-Senior
Какой бы из вариантов входа в профессию программиста вы не выбрали в начале карьеры вы получаете гордое звание джуниор (Junior). Дальше вам предстоит миновать звание мидла (Middle) и прийти к сеньору (Senior). Деление это весьма условное, но давайте разберемся, что примерно понимается под каждым из этих уровней.
Junior – это программист, который только вошёл в профессию. Он обладает небольшим практическим опытом, либо не обладает им вообще. У джуниора есть знания и начальный набор навыков, с помощью которых он справляется с простыми стандартными задачами самостоятельно. Также он может справиться с более сложными задачами, но при помощи и контроле более опытного наставника.
Middle однозначно уже обладает практическим опытом и может самостоятельно справиться с теми задачами, которые не подвластны Junior. Он может решать нестандартные задачи с минимальной помощью – ему необходима поддержка ментора, чтобы направить его и помочь определить более эффективные инструменты работы.
Senior – эксперт, который не только сам может справляться со сложными нестандартными задачами, но и руководит другими специалистами в работе над общим проектом, направляет их. Перед тем как приступить к решению той или иной задачи, сеньор анализирует возможные пути решения, выявляя плюсы и минусы.
Путь от Junior к Senior
Плох тот программист, который не мечтает стать IT-директором. Амбиции и стремление к постоянному развитию крайне важны для того, чтобы стать опытным востребованным специалистом в этой сфере. А как показывает практика, очень большое количество людей, вошедших в эту профессию, так и остаются на уровне джуниора. Они могут работать уже не первый год, но постоянно решать одни и те же типовые задачи. А при любом отклонении надолго «зависать», так и не найдя ответа.
Что же обязательно нужно и важно делать программисту, чтобы развиваться и превратиться из джуниора в сеньора?
- Действуйте. Обучение и наработка опыта происходит только через действие. И поэтому единственно возможный способ совершенствоваться заключается в постоянном программировании.
- Облегчайте себе задачу. Есть даже такая шутка: джуниор пытается все сложные вопросы решить сам, а сеньор знает, где взять ответы на эти вопросы. Поэтому обязательно гуглите, это совершенно нормально, так делает большинство программистов, особенно опытных. У нас была отдельная статья про то, где можно программисту найти ответы на все свои вопросы.
- Не копите проблемы. Это относится к работе в целом и конкретно к коду, который вы пишите. Старайтесь все проблемные места в коде исправлять сразу, не накапливая и не откладывая на потом.
- Не пытайтесь изучать всё сразу. Вам, конечно, могут быть интересны несколько языков программирования и несколько направлений. Но с помощью ментора расставьте приоритеты и начните с чего-то одного.
- Делайте ошибки. Да, пусть вам не кажется странным этот пункт. Делать ошибки –это и есть развитие.
- Не стесняйтесь чего-то не знать. Если вы пришли на собеседование на позицию джуниора, адекватный работодатель не будет требовать от вас невозможного. И вы, в свою очередь, не делайте вид, что знаете то, чего знать ещё не должны.
- Никогда не переставайте учиться. Самообразование всегда должно быть присуще вам, если вы хотите пройти этот путь от Junior к Senior.
- Будьте любопытными. Изучайте и разбирайтесь в новых технологиях; интересуйтесь новинками в области разработки и пробуйте их применять.
- Делитесь своими знаниями. Работая в команде даже в статусе Junior, у вас уже могут быть те знания и навыки, которых нет у других. Поэтому обязательно общайтесь с коллегами, перенимайте их опыт и делитесь своим.
- Принимайте активное участие в жизни различных IT-сообществ, посещайте IT-мероприятия.
Как происходит переход между уровнями
Эксперты отмечают, что основным критерием для перехода от уровня к уровню является способность самостоятельно работать над проектом, принимать решения и качество итогового кода.
Опыт не всегда определяет уровень программиста. Как мы уже отметили, бывают случаи, когда программиста с опытом работы 4 года можно отнести только к новичку. И наоборот. За 1,5-2 года человек может достичь такого уровня, что получит звание, как минимум, мидла.
Получается, что для перехода между уровнями обязательно стремление программиста к постоянному росту. У него должно быть желание из раза в раз решать задачи более сложные, чем предыдущие. И при этом он должен осознавать, что ему для этого нужно пополнять свои знания.
Кстати, постоянное обучение важно также для того, чтобы оставаться на своем уровне и шагать в ногу со временем. Любые знания в сфере IT, полученные сегодня, могут устареть через 3-5 лет. Поэтому нужно держать всегда руку на пульсе, чтобы от сеньора до мидла обратно не скатиться.
Если же процесс работы программиста сопровождается постоянным качественным ростом его знаний и навыков, то путь из Junior в Senior выглядит примерно так. Джуниор становится мидлом в среднем за два года работы. А по прошествии ещё двух-трех лет мидл уже может вырасти до сеньора.
Путь от Junior-программиста до программиста-Senior способен пройти практически каждый при должном интересе к своему делу. Интерес – это всегда основа развития. Специалист, которому действительно интересно то, что он делает, будет идти на несколько шагов впереди тех, кто просто решает поставленные перед ними задачи.
Нужно быть достаточно зрелой личностью и иметь немалую силу воли и смелость, чтобы достичь вершин профессионализма в IT-сфере.
Разница между «джуном», «мидлом» и «сеньором». И что делать, чтобы перейти на уровень выше
Уровень разработчика не обязательно определяется многолетним опытом программирования: «джун» вполне может быть старше «сеньора», — всё сводится к профессиональным навыкам. Это не означает, что старший разработчик должен быть специалистом во всём, но можно с уверенностью сказать, что навыки у него гораздо более развиты, чем у разработчиков младшего и среднего уровня.
Но разработчиков различных уровней отличает нечто большее, чем умение собственно программировать. Так в чем именно кроются различия?
Переведено в Alconost
Знания
Очевидно, что старший разработчик обладает гораздо более обширными знаниями. Для младшего разработчика изучить шаблоны проектирования, архитектуру, автоматизацию тестирования, методы повышения производительности и обеспечения безопасности и т. д. — отличный способ сократить этот разрыв в знаниях.
Важно знать, как должно создаваться программное обеспечение. Но просто знать всё это — не значит быть разработчиком более высокого уровня. Знания — это не ключевое отличие, а лишь один из факторов.
Фото — Clem Onojeghuo, площадка Unsplash
Программирование
Несмотря на мнение большинства обычных людей, программирование — это не общение с компьютером. Программировать — значит общаться с людьми и отдавать указания компьютерам. Ведь код в итоге компилируется и превращается в нули и единицы.
Код должен нести в себе смысл для тех, кто будет работать с ним в будущем. Команда, подхватившая за кем-то другим проект, должна иметь возможность открыть его исходный код и начать работать над новыми функциями или исправлением ошибок. И здесь кроется существенная разница между «джуном» и «сеньором».
Разработчиков среднего уровня в этом сравнении я учитывать не буду, поскольку в отношении навыков программирования они представляют собой своего рода переходную область — скорее ближе к уровню старшего разработчика. В основном «промежуточное» положение определяется опытом, поскольку обычно «мидл» успевает пройти весь цикл разработки хотя бы раз, а также совершить множество простейших ошибок и извлечь из них уроки.
Как вычислить «джуна»
Младшие разработчики неопытны: иногда это выпускники, которые только начинают работать на полную ставку. В их голове основная задача — заставить код работать. Если приложение работает — значит, оно хорошее.
Писать простой код — это сложная задача. И младшие разработчики этого делать не умеют: обычно код у них довольно своеобразный. Узнать их можно по причудливым однострочникам и чрезмерно сложным абстракциям — так «джуны» стремятся показать себя и пытаются дать понять другим, насколько хорошо они умеют программировать. Но это неверный подход.
Младшие разработчики сосредотачиваются на «компьютерной» части кода, упуская из виду «человеческую».
Как пишут код «сеньоры»
Глядя на код старшего разработчика, можно подумать: и это всё? А где остальное? Достаточно опытный разработчик пишет простой, понятный и, возможно, местами даже чересчур прямолинейный код — и это одно из самых важных качеств, если говорить о программировании. «Сеньор» следует принципу KISS, гласящему, что код должен быть простым и понятным: «Keep it simple, stupid»
Поэтому у старшего разработчика совершенно другой подход к написанию кода: он учитывает удобство дальнейшей поддержки и масштабируемость. Это совершенно не похоже на мышление младшего разработчика: «сеньор» думает о тех, кто будет работать с кодом, а «джуну» важно в первую очередь заставить код работать.
Не программированием единым
Помимо навыков программирования, есть и другие факторы, которые могут подсказать, что за разработчик перед вами.
Младшие разработчики, как правило, выполняют самые простые и не самые важные задачи; они не занимаются разработкой архитектуры. Разработчики среднего уровня тоже не разрабатывают решения, а просто выполняют задачи, однако их меньше контролируют — если задание довольно типовое. А вот «сеньоры» могут разработать приложение совершенно самостоятельно.
Это не значит, что у старшего разработчика по ходу дела не возникает вопросов: у любого из нас каждый день появляется множество вопросов, и «сеньоры» тут не исключение.
Разница в том, что последние знают, как задавать правильные вопросы и что делать с полученными ответами. Менее опытные разработчики могут задавать правильные вопросы, если речь идет о привычных им задачах, но в более сложных случаях им приходится обращаться за помощью.
Старший разработчик никогда не теряется и знает, как правильно действовать, получив ответ на вопрос. Это не значит, что он не будет просить совета у других — иногда лучшим решением бывает именно обратиться за помощью к тем, кто имеет больше опыта в данной области.
Разработчик среднего уровня также должен уметь задавать правильные вопросы, если только это не очень сложные задачи, требующие глубокого уровня знаний.
А вот в случае «джунов» не следует ожидать, что они смогут задавать нужные вопросы: у них недостаточно практики, поэтому ими должны руководить более опытные коллеги. Младшего разработчика следует обеспечить необходимыми ресурсами или хорошенько подтолкнуть в правильном направлении.
Переход на следующий уровень
Мы все хотим совершенствоваться, в том числе профессионально. Но какие шаги можно предпринять, чтобы перейти на следующий уровень?
От «джуна» — к «мидлу»
Начинающие разработчики не обладают богатым опытом, поэтому важно хотя бы пару раз пройти весь цикл разработки — таким образом вы сможете встретить на своем пути множество ловушек и научитесь их избегать.
Что касается программирования — следует научиться писать простой код: представьте, что после вас над проектом будет работать другой человек. Кроме того, придется научиться заниматься отладкой — это углубит понимание того, что происходит во время работы программы.
Также необходимо ознакомиться с лучшими методиками и побольше узнать об архитектуре, производительности, безопасности и т. д. Закройте пробел в знаниях, отделяющий вас от среднего уровня.
От «мидла» — к «сеньору»
Разработчикам среднего уровня подняться выше может быть довольно сложно: некоторые остаются на этом уровне всю свою карьеру.
Старший разработчик знает, в каких случаях можно пойти на компромисс, и когда этого делать ни в коем случае нельзя — потому что он успел проверить это на собственном горьком опыте.
Чтобы перейти на уровень «сеньора», нужно быть готовым к выполнению задач, за которые никто понятия не имеет, как браться. Нужно знать и уметь больше, чем просто делать свою работу.
Кроме того, как старший разработчик вы должны помогать менее опытным: вы для остальных — спасательный круг, за который можно ухватиться, когда не знаешь, как что-то сделать.
В свете этого неудивительно, что «сеньоры» полностью владеют своим техническим стеком. Нужно не просто уметь программировать, а знать все инструменты и приложения, которые используются в нанявшей вас компании.
Заключение
Разница между «джуном», «мидлом» и «сеньором» заключается не только в многолетнем опыте. Да, можно с уверенностью сказать, что у последнего навыки гораздо более развиты, чем у разработчиков младшего и среднего уровня. Но знание — не самый важный фактор.
Опытные разработчики пишут более простой код и подходят к этому иначе. Но кроме того, чтобы уметь программировать, очень важно также знать, какие вопросы задавать и что делать с полученными ответами. Именно старший разработчик — тот человек, чей богатый опыт позволяет не растеряться и в любой ситуации найти решение.
«Джуну», чтобы расти дальше, нужно постараться научиться писать простой код и пройти через несколько полных циклов разработки. Чтобы подняться выше среднего уровня, нужно сосредоточиться на изучении чего-то большего, чем просто рутинные задачи по исправлению ошибок. Вы должны быть готовы брать на себя самые сложные задачи и полностью овладеть своим техническим стеком. Еще одна обязанность старшего разработчика — выручать менее опытных.
Напоследок процитирую Мартина Фаулера:
«Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку»
О переводчике
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
→ Подробнее
в чем разница между Junior, Middle и Senior?
В форме вопрос-ответ кратко обсуждаем ключевые особенности карьерного роста разработчика и отличия позиций Junior, Middle и Senior.
В нормативных документах существует разделение инженеров-программистов на квалификации третьей, второй и первой категорий. В этих документах даются формальные соответствия образования и стажа работы, положенное для каждой категории.
Эта классификация по понятным причинам удобнее для работы в международных компаниях. Также она более гибко отражает разделение в рамках требований каждой конкретной компании. Так что соответствующие границы субъективные, плавающие и зависят от места работы.
IT – это живой, развитый рынок, и наиболее простой тип оценки уровня – рыночный. Требования к уровню в конкретной области можно определить из вакансий и результатов собеседований.
Да. Такое грубое категориальное разделение никогда не отражает имеющийся опыт. Но чем более формализованы критерии разделения позиций в компании, тем прозрачнее карьерный рост. При этом распространена ситуация, что джуниор в одной компании зарабатывает больше, чем мидл в другом месте.
Зависит. Чем специфичнее область, тем медленнее рост. То есть, например, в вэбе в среднем становятся Senior быстрее, чем в геймдеве. Реальный уровень определяется разнообразием задач в практике программирования. Распространены случаи, когда специалисты делают в течение длительного времени однообразный код, и остаются по опыту на позиции Junior. Зачастую это вина не только самих разработчиков, но и компании.
Junior: студент старших курсов или выпускник, без существенного опыта работы, обычно 0.5-1.5 года реального опыта. Решает стандартные задачи с незначительными рисками. Джуниору нужно помогать и проверять результаты, не давать слишком сложные и длительные задания. После выполнения приходится регулярно делать code review. Владение предметной областью неполное. Нужно понимать, что часть задач требует дополнительного времени для освоения инструментария. Однако человек должен сам к этому стремиться.
Middle: Основной работник, умеющий самостоятельно выполнять поставленные перед ним задачи. Обычно 1-3 года опыта. Простые задачи можно не ревьюить. Разработчик может делать длительные таски на 1-2 недели и принимать архитектурные решения. Справляется с нестандартными задачами, а стандартные делает быстрее и с меньшим количеством багов, чем джуниор. Предметной областью владеет достаточно, чтобы обсуждать с коллегами, спорить и находить решения. То есть уверенно знает ключевые технологии.
Senior: работник, хорошо знающий предметную область. Опыт фултайма 4-7 лет. Проводит code review, мыслит проектом на уровне архитектуры и понимает долгосрочные последствия технических решений. Умеет предложить глобальные решения и (если это имеет смысл) альтернативные стеки технологий. Нередко совмещается с управляющими должностями.