Отличия Junior от Senior: 6 главных признаков мудрого разработчика
Автор рассказывает, на чём стоит сосредоточиться во время обучения и какие софт скиллы отличают senior от junior.
8К открытий8К показов
В этой статье я попробую доказать, что качество кода не зависит от того, сколько лет опыта у его создателя. Для этого я расскажу в чём отличия Junior и Senior-разработчиков. Надеюсь, это поможет вам стать лучше.
Фокус на реализации vs Фокус на решении
Junior-разработчики, как правило, более сосредоточены на реализации определённой функции. Естественная склонность применять знания программирования для решения поставленной задачи заставляет их думать, что главное — написать код, который решает проблему. Поэтому Junior-разработчики не видят общей картины. Реализация — это способ решения проблемы, а не само решение.
Senior-разработчики, в свою очередь, сфокусированы на общей архитектуре системы. Они видят не просто функцию, а её влияние на всю систему, в том числе те изменения, которые потребуются в целом, и их сложность.
Дело в том, что обычно есть несколько вариантов реализации, которые приведут вас и вашу команду к желаемому решению.
Совет
Предложение новой функции всегда должно учитывать её влияние на бизнес, сроки, приоритеты и т. д.
Строить догадки vs добиваться понимания
Junior-разработчики в неясных ситуациях склонны ориентироваться на свои предположения и часто упускают возможность глубже разобраться в проблеме. Этому может быть множество причин, например, неуверенность, незнание кому задать вопросы или просто нежелание показаться глупыми. Иногда какой-то незначительный крайний случай (которого точно не должно быть в реальности) может стать большой проблемой в долгосрочной перспективе, когда количество кода в проекте сильно вырастет. Это очень осложнит отладку.
Единственная огромная трудность в общении — это иллюзия того, что оно имело место быть. Бернард Шоу
Senior-разработчики в этом смысле более спокойны и уверены. У них есть одно практическое правило — в случае сомнений, задавать вопросы. Им важно хорошо понять проблему. Senior`ы хорошо общаются с другими членами команды и, при необходимости, с другими командами и продолжают работу только после того, как выяснят, что именно требуется.
Совет
Когда сомневаешься, худшее что можно сделать — это строить догадки. Большая откровенность и дотошность помогут вам с самого начала справляться с мелкими багами и трудностями.
Привязка к стеку vs привязка к основам
Junior-разработчики — неопытны. Некоторые из них впервые получили работу на полный день. В мозгу джуна есть установка — учиться как можно быстрее. Часто они сразу начинают изучать инструменты и кодовую базу. Они могут научиться делать сервис на Spring MVC, не зная как сделать его без Spring.
Синьоры уже прошли этот этап и знают, что фреймворки полезны, но имеют свой срок жизни. Рано или поздно появится новый, которым все начнут пользоваться.
Поэтому они сначала думают о том, что требуется для системы, будущей архитектуре и уже потом решают какие инструменты и фреймворки подойдут лучше всего.
Совет
Технологии и фреймворки часто меняются. Их количество на рынке ошеломляет. Но их объединяют основные концепции. Понимание этих концепций позволяет без усилий менять фреймворки, языки и инструменты. Например, реляционные базы данных. Их множество, но если вам понятны принципы их работы: требования ACID, индексы, управление транзакциями, и многопоточность — вас не напугает никакая новая БД.
Раздельное vs совместное программирование
Многие разработчики любят работать в одиночестве в наушниках, потому что это помогает лучше сосредоточиться. Им гораздо проще общаться с компьютером, чем с людьми. Программирование – это коммуникация между людьми и компьютерами. Код должен быть понятен другим разработчикам, которым придётся с ним работать. В этом отличие senior от junior.
Синьоры умеют взаимодействовать. Они знают, когда нужно сосредоточиться на коде, а когда на общении с коллегами. Например на обучении джунов, помощи им, объяснении лучших практик, ревью и т. д. Кроме этого, синьоры обсуждают с менеджерами планы работ, думают о техническом долге и приоритете задач.
Совет
Будьте открытыми. Вам будет полезен чужой опыт и вы сможете перенять чужие мудрость и знания. Люди, которыми мы себя окружаем, оказывают сильнейшее влияние на наше поведение, привычки и достижения. Этот факт стоит учитывать при смене работы.
Делать задачи быстро vs получать знания
В начале своего пути разработчика я сам был в числе тех, кто сосредоточен на быстром решении задач. Я всегда искал решение, которое поможет мне двигаться вперёд, и считал, что быстрое выполнение задач позволит мне быстрее вырасти как разработчику.
Но это не так.
Мне посчастливилось быстро это понять и переключиться на получение знаний. Это оказалось круто! Я наслаждаюсь своей работой. Я способен принимать лучшие решения о выборе различных инструментов и фреймворков. Я приобрёл фундаментальные знания по программированию, базам данных, микросервисам и вопросам масштабируемости. Я могу изучать новые языки программирования, не слишком погружаясь в туториалы. Я не хочу хвастаться, но я знаю Java, Kotlin, Python, и немного Golang и Scala.
И я верю, что в этом разница между джуниором и синьором.
Совет
Сосредоточьтесь на обучении и не торопитесь. Не бойтесь не выполнить конкретную задачу в срок. Используйте все возможности. Постарайтесь посвящать своё время пониманию внутренностей библиотек и фреймворков, которыми пользуетесь.
Скорость vs качество
Джуны часто уделяют больше внимания скорости работы, а не качеству. Они считают, что это не нужно и замедляет процесс разработки.
Работа инженера состоит в том, чтобы писать код, который кроме выполнения своей основной задачи будет легко читаться и поддерживаться. Синьоры хороши в этом. Они хорошо умеют писать высококачественный код, следуют шаблонам проектирования, пишут тесты, вводят контрактное тестирование, составляют планы сквозных тестов, пишут документацию и т. д. Для них закончить задачу, значит продумать множество аспектов. Когда вы делаете это регулярно, скорость работы растёт сама по себе без ущерба для качества.
Совет
Принимая решения, думайте в первую очередь о качестве. Сначала будет сложно, потому что это потребует больше времени и усилий. Но в итоге вы привыкнете.
Я не великий программист, просто у меня отличные привычки. Кент Бек
Вывод
Senior отличается от junior не годами опыта. Есть другие вещи, на которые нужно обращать внимание. Совершенствование в них поможет вам развиваться и подниматься по карьерной лестнице.
8К открытий8К показов