код джуна и сеньора

/dev/energy

Сайт о том, как стать программистом и как с этим жить потом

Почему Senior-ы пишут тупой код и как разглядеть Джуна за милю

В одном из Slack-каналов моих разработчиков я заметил небольшую, но важную статью на Hackernoon. Она посвящена стремлению к простоте и лаконичности. Как сторонник тех же стремлений, я спешу поделиться с Вами её переводом.

Одной из моих любимых цитат являются слова Брайна Гётца, умного парня из мира Java, среди прочего, являющегося соавтором книги «Многопоточность в Java на практике». Фраза появилась в интервью, которое Oracle опубликовал под названием «Пишите тупой код». Гётца спросили о том, как писать хороший производительный код. Вот, что он ответил:

«Зачастую способ написания быстродействующего кода приложений на Java состоит в создании простого (тупого) кода — кода прямолинейного, понятного, чистого и следующего наиболее очевидным принципам объектно-ориентированного программирования».

Оставшаяся тысяча слов посвящена объяснению того, почему попытка оптимизировать код и казаться умнее, является распространенной ошибкой программиста — ошибкой новичка, если можно так выразиться.

код джуна и сеньора

Код Ведущего разработчика

Если Вы, как и я, когда-то были джуном, то наверняка помните свой опыт чтения кода Ведущего разработчика с мыслями вроде: «Я тоже могу так написать. Почему я не Senior?»

Тем не менее, тогда я долго пытался написать такой же код, но не смог. Для меня было загадкой то, что я понимаю код, но ведь он максимально прост! Должно быть что-то ещё.

«Где всё остальное?» — думал я. «Как вот ЭТО делает всю работу?»

С тех пор я выучил все принципы и качества кода, которые делали его простым: YAGNI, Принцип единственной ответственности (SRP), DRY, Принцип единого уровня абстракций (SLAP), слабое зацепление (low coupling), и т.д. И я стал «Ведущим разработчиком». (Вообще, я ненавижу словосочетание «Ведущий программист» («Senior Dev») и называю себя просто «разработчиком» («software engineer»), но это совсем другая история).

Самый важный урок, который я вынес, состоит в том, что написание простого кода — это по-настоящему сложно, но это приносит в разы большую пользу в будущем.

Как опознать Джуна за милю?

«Любой идиот может написать код, который поймёт компьютер. Хорошие программисты пишут код, который могут понимать люди»

Вы всегда опознаете джуна, когда будете читать код, полный замудрёных однострочных выражений, неявных абстракций с уймой применений всех возможностей языка. Я бы сказал, что последнее встречается чаще всего. Это код, который кричит: «Посмотрите на меня! Мой создатель реально шарит в языке! Я использую стандартные интерфейсы синхронизированных ThreadLocal JavaBean-копий с кастомными обобщёнными исключениями и JAXB Lombok для генерации кода!»

Да, я написал ерунду, потому что ерунда — это то, во что может превратиться код, попади он в руки того, кто думает только об аспектах программирования, а не о людях.

Код участвует в общении с другими людьми, а также даёт указания компьютерам. И сейчас первого гораздо больше, чем последнего. Компилятор позаботится о том, как перевести написанное программистами в машинный язык. И часто существует несколько уровней этого перевода, например, когда Java компилируется в байт-код, который считывается виртуальной машиной Java во время выполнения, где он в конечном итоге преобразуется только в нули и единицы. Но код — это человеческий язык. Он должен сообщать кому, что, когда, где, как и почему делается указанное действие, а также обучать ему компьютер. Он должен иметь смысл и через пять лет после того, как компания была перепродана, а новая команда, которая никогда не видела этот код раньше, должна понять его и доработать или исправить ошибку.

Очевидно, написание простого кода — это сложно. Я чувствую, как со временем все больше и больше овладеваю этим навыком. Я чувствую удовлетворение, когда получаю комментарии типа «Чистый код!» в ревью. Я знаю, что лучшее, что я могу сделать для своей команды и будущих разработчиков кода — это писать тупой код.

Рецензия от меня

Разумеется, в названии своей статьи Скот Шип использует словосочетание «тупой код» для привлечения внимания. Тем не менее, он прав — в современных решениях мы часто встречаем стремление разработчиков получить не максимально лаконичное решение, а решение максимально крутое. И это идёт в ущерб функциональности. Этакий iPhone в кредит, не находите?

Я полностью разделяю мнение автора на тему стремления к простоте. И оно касается не только кода. Во всём — в архитектуре, в повседневной деятельности, в жизни — нужно понимать функциональное назначение того или иного элемента. И если Вам удастся побороть этот зоопарк из технологий/конструкций/вещей, Вы сэкономите энергию, время и деньги!

В завершение я бы хотел поделиться цитатой Леонардо да Винчи.

«Простота — это то, что труднее всего на свете; это крайний предел опытности и последнее усилие гения.»

Источник

Джун, мидл, сеньор. В чём разница?

код джуна и сеньора

«Я ещё джун или уже не джун?» — вот в чём вопрос. Отвечает Наталья Ёркина из Ostrovok.ru.

код джуна и сеньора

Опыт и знания программистов увеличиваются во время работы — и джуны не исключение. Обычное дело — прийти на работу, узнать что-то, порешать задачи и через пару месяцев подумать «Ну вот я уже, наверное, и стал мидлом, надо просить зарплату в два раза выше».

А чаще всего не пора, и вот почему.

Дисклеймер: нет простого способа определить, джун перед вами или уже мидл. Умение находить множественные решения задач — только один из способов.

Джуны (младшие разработчики)

Джуны — программисты, которые иногда не знают, что именно они знают (и никто из коллег тоже не знает). Это тот случай, когда не совсем понятно, что человек умеет, и совсем не ясно как он это применяет на практике.

Тест на джуна: придумайте больше двух способов сделать слайдер на сайте

Вы джун, если придумали одно или два решения без особого обоснования, а дальше пошли смотреть в Гугл.

Джуны обычно не могут объяснить вещи, которые нужно сначала потрогать на практике.

Например, event loop в JavaScript. Про него всё написано, но до тех пор, пока программист с ним не поработал, он не поймёт, как там всё организовано. Когда я проходила собеседование на джуна, я вообще не знала половину этих слов. Я не могла ответить на вопрос, потому что просто не понимала, о чём меня спрашивают.

Джун, который немного поработал в настоящей компании, может решать задачи разных уровней. Вопрос только в том, как он это делает. Чаще всего, решение будет одно, максимум два, потому что у джуна нет опыта решения подобной задачи через множественные подходы. Он может нагуглить, может сам решить, но это условные 1-2 варианта, а всё остальное будет казаться сложным, непонятным и нереализуемым.

Ещё один признак джуна — попросить помощь на типовых задачах. В этом нет ничего плохого, но если разработчик на типовых задачах запрашивает помощь, то он почти всегда джун (или зануда-мидл, который просто любит всех отвлекать).

Стереотип о джунах

Есть стереотип, что джун — это человек, который ничего не умеет, и пришёл устраиваться вообще без навыков и знаний. Так думают многие, и с этим стереотипом сложно бороться.

Джуны умеют делать многое, просто у них нет опыта преодоления сложностей, так как нет опыта работы. Он знает, как сделать и раскрасить попап, сверстать слайдер и много чего ещё.

Джун — не приговор. Просто учитесь решать задачи.

Хороший джун знает или хотя бы слышал, как устроена разработка в современных компаниях — он умеет пользоваться системами контроля версий, понимает, что за чем идёт, и владеет базовым набором инструментов. HTML Academy готовит джунов так, чтобы они выпускались с нормальным набором знаний, а мы доучиваем их под свои реалии.

Не прошли тест на джуна?

Ничего страшного. Пройдите курс «HTML и CSS. Профессиональная вёрстка сайтов», и тогда точно всё получится.

Мидлы (просто разработчики)

Мидл хорошо пишет код, генерирует много вариантов и умеет выбирать из них оптимальный. Понимает базовые концепции, хорошо знает язык, на котором пишет. Мидл легко своими словами расскажет, как работает браузер, какие в нём инструменты и как ими пользоваться, как работает асинхронность и другие вещи из языка.

Мидл сразу понимает, о чём написано в технических статьях, потому что ему уже знакома вся терминология.

Если джун может придумать всего одно или два решения для задачи, то мидл эту задачу видел несколько раз, получал по ней фидбэк, решал её по-разному из-за стека, рабочего окружения и прочих обстоятельств в виде необходимости поддерживать IE11. Поэтому его решение скорее всего будет оптимальнее. К тому же, он может выбирать решения, а джун решает так, чтобы что-то просто работало.

Когда человек из головы может объяснять абстрактные вещи типа замыкания и контекстов, а также без труда видит возможные варианты решения задач, или знает где их взять и как применить, тогда он, по-моему, может считаться мидлом.

Тест на мидла: вас попросили решить нетипичную для вас задачу

Вы мидл, если сказали «Ух ты ж блин, как интересно», немного подумали и решили.

Программисты часто переходят между командами ради повышения уровня сложности и смены задач. Однажды мы взяли джуна в аналитический отдел. Он хорошо работал и за год стал мидлом. Перешёл в команду, которая делает внутренний продукт, и сейчас прекрасно себя там чувствует. То есть он год делал какие-то простенькие джуновые задачи — месяца три что-то совсем простое, потом мы ему стали давать задачи уровня мидла. Он их успешно выполнял, и его перевели в другой отдел на другой уровень сложности.

Сеньоры (старшие разработчики)

С работой в одной команде связан интересный эффект. Пока программист работает в одной и той же компании и занимается каждый день одним и тем же, ему может показаться, что всё получается хорошо. Чтобы понять, пора ли просить зарплату сеньора, попроситесь в другой отдел и поделайте их задачи. Если не получается делать хорошо, быстро и с первой попытки, значит ещё рано.

Сеньор — программист, который может перейти в другой отдел с принципиально другими задачами в рамках одной компании, ничего там не сломать и не затормозить работу.

Тест на сеньора: вас попросили решить нетипичную для вас задачу

Вы сеньор, если сказали «Ух ты ж блин, какая интересная задача, надо бы её делегировать, пусть и остальные учатся».

Если человек может в одном отделе немножечко пилить аналитику, а в другом отделе поделать чуть-чуть фронтовый бэкенд на Node.js, а потом ещё уйти в совсем другую вещь и написать код на Vue.js, хотя на нём до этого не очень и писал (ну просто так сел и разобрался), то, скорее всего, он уже сеньор.

Ostrovok.ru — наш давний партнёр-работодатель, который регулярно нанимает наших выпускников. Статья — часть разговора с тимлидом Островка, Натальей Ёркиной, о том, как строится разработка в компании, опыте найма выпускников Академии, и о том, что должен знать начинающий фронтенд-разработчик, чтобы быть востребованным.

Источник

Знакомьтесь: Джун, Миддл и Сеньор. А кто это вообще?

Так называемые «Junior», «Middle» и «Senior» — это профессиональные жаргоны, разделение уровня разработчиков в IT индустрии. В привычном понимании — это младший разработчик, разработчик среднего уровня или просто разработчик и старший разработчик.

Различаются между собой уровнем компетенций, soft / hard скиллов и навыков в своей специализации.

Давайте рассмотрим каждого из них на примере Frontend-разработчика: какие навыки и знание необходимы каждому из них.

Данные собраны с таких ресурсов как hh.ru и habr.карьера.

JUNIOR

В переводе с английского junior означает «младший/молодой/начинающий». Это начинающие разработчики.

Они ничего не решают и ответственности как таковой за решения не несут. По началу Junior реализует простые задачи. Хороший джун — тот, кто может самостоятельно работать над своими техническими задачами и находить решение практически любых встающих перед ним проблем.

код джуна и сеньора

Оплата:
Это самые популярные требования к Джунам на рынке труда на сегодняшний день. В среднем заработная плата колеблется 28 000-35 000 рублей.

Не стоит думать, что джуны это молодые ребята 20-25 лет. Это заблуждение. Начинающим разработчиком реально стать в любом возрасте.

MIDDLE

Джун, который набрался опыта, набил шишек и улучшил компетенции, претендует на следующую позицию — Middle. В переводе с английского middle означает «середина/средний».

код джуна и сеньора

Оплата:
Зарплата может сильно колебаться от региона и задач. Но в среднем это 60 000-130 000 рублей.

Специалисты этого уровня уже способны осознавать масштабы проектов в которых работают. Middle уже способен самостоятельно решать сложные задачи в проекте.

Вакансий для мидлов, как правило, гораздо больше, так как гораздо более востребованы, чем джуны.

SENIOR

Специалисты такого уровня могут самостоятельно разработать большой проект сервиса или приложения с нуля. Наличие этого разработчика в компании залог стабильности и уверенности, что разрабатываемый проект не пойдет ко дну.

код джуна и сеньора

Оплата:
Разработчики уровня senior могут получать от 150 000 рублей и выше, в зависимости от количества и сложности проектов.

Труднодоступная ступень эволюции разработчика. Middle может остаться на средней ступени на протяжении оставшейся карьеры и не дойти до уровня senior.

Теперь мы знаем кто такие Junior, Middle и Senior разработчики и, чем они отличаются.

Разница между тремя стадиями развития специалиста, в целом, состоит в отношении к разработке, к самому процессу, его пониманию и осознанию.

Источник

История успеха: из джуна в сеньора за 2 года

Мы знаем, как много вокруг курсов, мастер-классов и книжек о том, как построить карьеру в IT. И как мало реальных кейсов из жизни.

В нашей новой рубрике «История успеха» мы расскажем об интересных примерах карьерного пути (вверх, вниз, в сторону) в e-Legion. Первым героем стал наш тимлид iOS-разработки на проекте — Виктор Волков. Виктор пришёл в e-Legion джуном два года назад после магистратуры университета и месяц назад получил апгрейд сеньора. В этой статье вы узнаете, как войти в профессию без опыта, и чем обусловлен такой впечатляющий карьерный рост Виктора. Просто на ночь нужно втирать порошок из…

Breaking news: 13 октября на международной мобильной конференции MBLT+ Виктор Волков выступит модератором iOS-секции, где о последних тенденциях в мире разработки расскажут спикеры из Amazon, Skyeng, Epam Systems, Авито, ВТБ и др. На этой конференции можно будет пообщаться не только с Виктором и другими нашими коллегами, но и обменяться контактами с топовыми представителями сообщества мобильных разработчиков.

код джуна и сеньораPhoto by Glenn Carstens-Peters

Привет, меня зовут Виктор Волков, я — тимлид iOS-разработки на проекте в e-Legion. До e-Legion моя профессиональная деятельность не была связана с iOS-разработкой. Около 3,5 лет я работал инженером в родном университете ГУАП, где мы занимались разработкой инструментов визуального программирования. С помощью специализированных операторов и связей между ними можно было «нарисовать» программу и получить желаемый результат. Я работал над генератором низкоуровневого кода для распределенных вычислительных систем и инструментом построения графической модели сети аэрокосмического назначения с возможностью настройки сети: ее топология, параметры узлов и каналов связи. Преимущественно писал на C# и C.

В университете первые два курса учился кое-как, меня это не устраивало, и я решил взяться за ум. Сразу заинтересовался мобильной разработкой: мы живем в такое время, когда смартфон является неотъемлемым атрибутом современного человека, без которого сейчас тяжело представить нашу жизнь. У меня были Macbook и iPhone, поэтому выбор пал на программирование под MacOS и iOS.

Практиковаться в мобильной разработке начал на лабораторных работах, благо в университете их было очень много, и они идеально подходили для обучения. Различные алгоритмы обработки информации, аудио- и видеопотоков позволяли практиковаться как в реализации бизнес-логики, так и в визуализации полученного результата — идеальное сочетание. На первых этапах приходилось буквально сутками сидеть и во всем разбираться. Некоторые лабораторные можно было сделать за вечер, вооружившись ручкой и бумагой, однако я мог потратить неделю или больше, потому что ставил себе задачу: написать приложение с полноценной UI частью. Мне было не жалко времени, моей целью было получить навыки и научиться программировать.

В университете давали C, C++ на базовом уровне, поэтому начинать было сложно. К середине третьего курса позвали работать на кафедру инженером, где надо было писать на C#. Я довольно быстро освоил новый язык программирования, так как уже знал Objective-C.

Курсы по разработке не покупал, обучался с помощью книг по Objective-C, информации в интернете и видеоурокам Алексея Скутаренко на Youtube. Отдельную благодарность хочу выразить Алексею за отличный и, кажется, первый русскоязычный курс по Objective-C, который вышел в 2013 году. Есть ощущение, что многие iOS-разработчики начинали учиться именно по его урокам.

У коллег на кафедре был интересный проект по разработке навигации внутри зданий университета. Аудиторий и корпусов много, очень легко потеряться, а с помощью навигации можно было проложить маршрут из точки А в точку Б, что упрощало поиск необходимой аудитории. Коллеги узнали, что я увлекаюсь в свободное время iOS-разработкой, и предложили написать приложение для студентов. При поддержке университета мы разработали за лето официальное мобильное приложение университета со всем необходимым для студента: новостная лента, расписание занятий, навигация по корпусу и справочная информация. Первую версию выпустили в сентябре 2017 года, когда я поступил в магистратуру. В магистратуре продолжал развивать и поддерживать приложение. Оно до сих пор работает.

Swift начал учить за полгода до того, как устроился в e-Legion. Долгое время относился к нему скептически, но понимал, что в скором будущем большинство приложений будут написаны на нем.

Карьерный путь

На 2 курсе магистратуры я понимал, что после учебы хочу заняться iOS-разработкой. Открыл резюме на hh и решил посмотреть, будет ли фидбек. Отклики были, прошел много собеседований. Если сравнивать все собеседования, то e-Legion оставил самое лучшее впечатление. Не было давления, как в некоторых компаниях, можно было пообщаться на какие-то отвлеченные темы и что-то спросить. И, наверное, e-Legion — это единственная компания, которая предложила водички.

Меня взяли на проект, где я был единственным iOS-разработчиком. Сначала мне помогали, присматривали. Первую фичу мы делали совместно с лидом отдела, потом я начал чувствовать себя все более уверенно на проекте. Было ощущение, что мне доверились.

Поначалу было очень непривычно. От работы в университете всё отличалось кардинально: другая сфера, процессы, задачи и формат работы. Я приходил домой и сразу отрубался. Не скажу, что адаптация была сложной, просто огромный поток непривычной информации.

При этом я шел на работу с большим удовольствием и энтузиазмом. Мне было интересно узнать все: от написания качественного и хорошего кода до настройки CI/CD.

Тяжело оценивать себя объективно, но, думаю, быстрому росту способствовало дикое желание развиваться и не менее дикое удовольствие от того, что я делал.

Сейчас я лид на проекте, мне нравится. Работа лидом подразумевает большую вовлеченность в процессы продукта и коммуникации с командами, поэтому на программирование остается мало времени. Дни без большого числа митингов довольно редки, поэтому если удается весь день спокойно писать код — невольно начинаешь посматривать в календарь с мыслью «а точно нет митингов»? Лидить проект понравится далеко не каждому. Не все захотят много коммуницировать с другими командами и выстраивать рабочие процессы, но это именно то, чем я хочу заниматься.

Самое главное, что отличает джуна от сеньора, помимо высокого уровня технического бэкграунда и способности быстро разобраться в той или иной технологии — это умение любому объяснить любое. В течение дня приходится взаимодействовать с огромным количеством людей, каждый из которых общается «на своем языке». Важно уметь донести свою мысль до кого угодно, будь это iOS-коллега или дизайнер.

Зачастую бывает, что разработчик объясняет вещи техническим языком, может получиться так, что Product Manager или Product Owner его не поймет. Важно объяснить сложное простым языком, чтобы это было понятно даже ребенку. И это вовсе не потому, что коллега не компетентен, он может быть не погружен в технический контекст.

код джуна и сеньораPhoto by Luca Bravo

Джунам

Сейчас я сам провожу много собеседований. Во время общения с кандидатом акцентирую внимание больше на практических вопросах, с которыми встречаешься на работе. Так мне проще понять, с какими задачами сталкивался кандидат и как их решал. Обязательно смотрю на то, как кандидат отвечает, рассуждает и оценивает свои знания. Были моменты, когда собеседуемый не знал ответ и начинал придумывать что-то очень далекое от истины.

Попытка ответить наугад сильно бросается в глаза и оставляет неоднозначное впечатление. В незнании нет ничего страшного, страшнее не понимать этого. И теперь я знаю, что чувствовали преподаватели, когда я ходил сдавать списанную у одногруппника лабораторную работу.

Помимо практических знаний мне важно увидеть в кандидате заинтересованность в диалоге. Само собеседование стараюсь проводить в дружественной обстановке, чтобы собеседник чувствовал себя комфортно, будто просто общается о разработке.

код джуна и сеньора

Вспоминая себя, посоветовал бы элементарно больше думать. Бывает, что у тебя что-то не работает, и вместо того, чтобы вникнуть в суть ошибки, прочитать каждую строчку кода, подумать и понять, что же там не так, ты начинаешь быстро на ходу что-то менять с мыслью, что вдруг сейчас заработает. Или, например, программа не запускается, я запущу ее еще раз и еще раз, вдруг в этот раз запустится. Нет, чудес не бывает, от бесконечных попыток компиляции ошибка не исчезнет. Гораздо эффективнее выдохнуть, собраться с мыслями, прочитать логи, внимательно посмотреть еще раз на код и найти ошибку.

В iOS-разработке основным языком является Swift. Большинство проектов написаны на нем, тем не менее все еще можно встретить Objective-C код. Стоит начинать учить Swift, однако знание Objective-C может пригодиться, да и для общего развития будет полезно погрузиться в его runtime.

Работа в e-Legion

Для меня e-Legion — это семья! Хоть это и банально звучит, но это действительно классное место, в котором работают не менее классные ребята.

И, наверное, это место, которому я очень благодарен, потому что здесь я встал на ноги, многое узнал. В e-Legion тебя всегда услышат, помогут реализовать задуманное.

Когда я пришел в компанию, для меня было большое удивление, что здесь нет огромной бюрократии. Во время работы на кафедре для оформления отпуска приходилось через весь корпус идти в кабинет, который работает только по вторникам нечетного месяца три часа. В e-Legion больше фокуса на выполнение своих рабочих обязанностей, это клево.

Войти в IT

Сейчас многие курсы пестрят заголовками в духе «стань миддлом за 3 месяца», «оффер от топ компаний после обучения» и так далее. На деле же все обстоит немного сложнее.

У меня есть знакомые и друзья, которые хотели стать разработчиками, но у них не вышло. К примеру, они говорили, что сложно не только написать самое простое приложение типа калькулятора, но и просто выполнить сложение простых чисел и вывести в консоль. Это во-первых.

Во-вторых, недостаточно научиться программировать. Необходимо еще уметь бороться с ошибками, с которыми придется встречаться довольно часто. На первых этапах это будет довольно сложно, и только с опытом получится эффективно с ними справляться.

В-третьих, для работы разработчиком нужен определенный уровень стрессоустойчивости и адаптивности. Сфера очень быстро развивается: появляются новые инструменты, технологии, фреймворки, ты должен поспевать за этими изменениями и адаптироваться к ним, поэтому важно понимать, что если ты выбрал эту сферу — тебе всегда придется учиться.

В общем, работа не скучая! Если ты готов к вызовам, не боишься трудностей и любишь кодить, приходи к нам на хакатон, который пройдет 1-3 октября.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *