Ответы:
Это будет меняться, но я вижу это в достаточно большом месте, чтобы различать типы программистов.
Я бы сказал, начальный уровень и младший это одно и то же. Они только что закончили школу и имеют опыт работы менее двух лет. Им поручены наименее сложные задачи, и надзор за ними должен осуществляться довольно внимательно. Обычно они знают около 10% того, что, по их мнению, они знают. Обычно они не прошли весь цикл разработки и поэтому часто делают очень наивный выбор, если им предоставляется возможность сделать выбор. К сожалению, многим из них на самом деле все равно, какое требование, они хотят строить вещи по-своему. Они часто имеют плохие навыки отладки.
Средний уровень - это место, куда попадают многие программисты. Они имеют опыт работы более двух лет и, как правило, менее десяти лет, хотя некоторые могут оставаться на этом уровне всю свою карьеру. Они могут создавать рабочий код с меньшим контролем, если они назначены для относительно рутинных задач. Как правило, им не поручено проектирование на высоком уровне или сложные задачи, требующие глубокого знания. Тем не менее, им может быть поручено разработать часть приложения, тем более что они находятся в зоне, чтобы стать старшим разработчиком. Они хорошо справляются с задачами обслуживания или задачами, в которых они могут сосредоточиться только на своей части головоломки, но обычно от них не требуется рассматривать приложение в целом, если только они не работают со старшими разработчиками или не готовы для повышения до старших. Обычно они могут выполнять приличную работу по поиску и устранению неисправностей и отладке, но они должны действительно пройтись, чтобы получить сложные. У них еще нет достаточного опыта, чтобы увидеть закономерности в проблемах, которые указывают на вероятное место, где они происходят. Но они приобретают эти навыки и редко нуждаются в помощи отладки. Вероятно, они хотя бы раз прошли весь цикл разработки и увидели результаты проблем проектирования и учатся избегать их в будущем. Обычно они, как правило, с большей вероятностью принимают требование по номинальной стоимости, а не отбрасывают его назад, когда оно имеет явные проблемы или пробелы. Они научились достаточно, чтобы знать, чего не знают, и начинают получать эти знания. Они рабочие лошадки мира программирования,
Никому, кто является руководителем высшего звена, даже не нужно задавать этот вопрос. Они являются экспертами в выбранных ими технологиях. Им ставят сложные задачи (те, которые никто не знает, как их решить) и часто получают ответственность за дизайн. Они часто работают независимо, потому что у них есть проверенный опыт доставки товаров. Ожидается, что они будут наставниками младших и промежуточных разработчиков. Часто они удивительные специалисты по устранению неполадок. Они сталкивались с теми же проблемами раньше и очень хорошо представляют, где искать в первую очередь. Пожилые люди часто наставляют и за пределами рабочего места. Как правило, они имеют опыт работы не менее десяти лет и почти всегда проходят хотя бы один марш смерти и точно знают, почему следует избегать некоторых вещей. Они знают, как доставить работающий продукт и уложиться в срок. Они знают, какие углы можно обрезать и какие углы никогда не следует обрезать. Они знают по крайней мере один и часто несколько языков на уровне экспертов. Они видели, как много «горячих новых технологий» попадают на рабочее место и исчезают, поэтому они склонны быть немного более консервативными в том, чтобы запрыгнуть на побеждающую сторону на выборах в новом захватывающем новом инструменте разработки (но не совсем устойчивом к изменениям - это будет старшие разработчики среднего уровня, которые никогда не совершают прыжок к старшему). Они понимают, что их задача - поставлять работающее программное обеспечение, которое выполняет то, что хотят пользователи, а не играть с забавными инструментами. Они часто разборчивы в том, где они будут работать, потому что они могут быть, и потому что они видели из первых рук, насколько плохими могут быть некоторые места. Они ищут места, которые имеют самые интересные задачи. Часто они знают больше о продуктах своей компании, чем кто-либо еще, даже если они были там всего несколько месяцев. Они знают, что им нужно нечто большее, чем просто знания в области программирования, и они хорошо знают, что они поддерживают. Они часто осведомлены о проблемах, которые юниоры никогда не рассматривают, а посредники часто не задумываются о таких вопросах, как нормативные и правовые вопросы в сфере бизнеса, которую они поддерживают. Они могут и будут отклонять требование, потому что они знают, какие у него будут проблемы, и могут объяснить то же самое неспециалистам.
Начальный уровень - должен давать им четкие инструкции, проверять все, что они делают, небольшую или нулевую ответственность за проектирование, отсутствие ответственности за анализ
Младший - менее четкие инструкции, меньше проверки, небольшая ответственность за разработку и анализ; помогает людям начального уровня найти компилятор и использовать репозиторий
Старший - ответственный за разработку и анализ, как ожидается, самостоятельно исправит упущения, мало / без проверки, мало / без инструкций; помогает людям младшего уровня учиться / совершенствовать навыки анализа и проектирования
На самом деле, я думаю, что все сводится к тому, как долго вы были на работе. Если у вас есть 10-летний опыт работы, вы старший разработчик, если вы выпускник, то вы, вероятно, начальный уровень. Я видел много «старших» разработчиков, которые с трудом могли кодировать и не знали, что они делают, и много юных разработчиков, которые были фантастическими.
Я думаю, что слоты учеников, подмастерьев и мастеров старой школы хорошо вписываются в эти слоты для начального уровня, младшего (или просто без префикса) и старшего.
Кто-то начального уровня получает относительно простые задачи, которые не имеют глубоких последствий, и его работа проверяется младшим или старшим. Со временем они получают больше ответственности и получают более сложные задачи, изучая веревки на своем пути.
На младшем (или просто исключив «начальный уровень» / «младший» из названия / описания) вы завершили свое ученичество и охватили основные области развития вашей компании, углубившись в каждую основную область, чтобы вы были знаком с каждым из них. Теперь вы помогаете обеспечить руководство и вклад в эквивалент ученика, но ваша собственная работа все еще проверяется мастером / старшим, хотя, возможно, не так, как когда вы были младшим.
Со временем и сдачей успешных проектов вы со временем станете старше. На старшем уровне вы освоили все, что покрывается в вашей области, охватывая весь процесс разработки и все инструменты и технологии, которые задействованы. Вы уполномочены принимать важные технические решения, и ожидается, что вы предоставите руководству понимание процесса разработки программного обеспечения.
Итак, учитывая эти рекомендации, вы должны иметь возможность посмотреть на человека или позицию и определить, в какой из трех корзин они попадают.
Это будет сводиться к ожиданиям компании программиста.
Если я нанимаю компанию и нанимаю программиста начального уровня, я знаю, что этот человек почти ничего не знает, и мы собираемся предположить, что он / она должен изучить все. Если я найму старшего сотрудника, теоретически, он будет самодостаточным с технической точки зрения.
Это строго зависит от компании. Но слова довольно очевидны: начальный уровень - это кто-то, кто только выходит на поле, младший - это тот, кто находится за пределами начального уровня и хорошо знает технологии на нескольких языках. Наконец, старшие - те, кто больше отвечает за проект и сидит на более высоком уровне. Обычно они могут делегировать столько, сколько они кодируют.
Как многие уже говорили, это варьируется от компании к компании и от работы к работе.
Например, однажды я работал в компании, которая считала любого, кто работал там более 5 лет, «старшим инженером-программистом». С другой стороны, в другом месте, где я работал, были очень строгие определения (и связанные с ними шкалы заработной платы).
В некоторых местах «начальный уровень» и «младший» могут означать одно и то же.
Он может варьироваться в зависимости от многолетнего опыта, общих знаний, конкретных знаний (т. Е. Знания особенностей определенного языка), опыта управления и / или лидерства, всех их комбинаций и, конечно, гораздо большего.
Я собираюсь пойти с очень простым ответом: старшие разработчики (в целом) - это люди, которые могут видеть лес за деревьями. Они думают не только о непосредственной проблеме перед своими лицами и понимают, какие архитектурные изменения могут или должны произойти в результате решения проблемы, с которой они сталкиваются.
У большинства софтверных компаний, которые я видел, есть люди начального уровня, занимающиеся повседневным программированием, в то время как старшие разработчики наблюдают за тем, что делают новые люди, и решают действительно ужасные, острые проблемы.
Очевидно, это только мое мнение, а не жесткое правило. YMMV.
Проще говоря и из личных наблюдений, найденных на сайтах размещения вакансий и только в отношении уровней опыта.
Вступление = Ваша новая, вероятно, ваша первая работа.
Юниор = Вы хорошо, но не должны быть лучшими, у вас также обычно меньше 5 лет и более 2 лет опыта.
Старший = Вы должны быть лучшими и иметь опыт работы более 5 лет.