если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
можно абстрактно, можно конкретнее.
например, сеньёр должен уметь делать, в зависимости от области, в которой он работает:
— тюнинг и оптимизация программ и sql запросов
— разбираться в реверс-инжиниринге
— понимать ассемблер
умение руководить другими, общаться и т.п. — не рассматриваем. только тех. навыки.
upd1:
тогда вопрос — какими конкретно тех. навыками обычно обладают только сеньёры? какие тех навыки рассматриваются как высший пилотах?
не срывать сроки, понимать, прикидывать, общаться, руководить, просчитывать.... — вопрос не про это
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра? M>можно абстрактно, можно конкретнее.
решать задачи самостоятельно с хорошим качеством и в разумные сроки.
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра? M>можно абстрактно, можно конкретнее. ... M>умение руководить другими, общаться и т.п. — не рассматриваем. только тех. навыки.
Уметь проектировать, а не только конструировать.
Например, если используется ООП, тогда SOLID, Design Patterns — рисовать в UML'е таковые и внятно аргументировать каковы их недостатки в сравнении с высокой связностью и хрупкостью архитектуры, если их не применять должным образом.
Если работа связана с разработкой распределённых систем, то быть знакомым с классическими паттернами и недостатками в этой сфере: service-oriented architecture (SOA), enterprise service bus(ESB), микросервисы, пляски вокруг брокеров сообщений и т.д.
В плане навыков командной работы.
При конфликте мнений по техническим вопросам стремиться не к компромиссу, а синтезу — т.н. консенсусу. Чётко и внятно осознавая зачем и почему надо уходить от компромисса в эту сторону.
Никогда не давить авторитетом высказывая своё ценное мнение, а вначале давать высказаться всем остальным и только после этого излагать собственную позицию в чётко и однозначно аргументированном виде.
Короче, синьёр — это просто зрелый специалист, понимающий как применять системный анализ, близкий к архитектору и опора манагера в вопросах управления командной работой.
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
Умение работать самостоятельно. Чем сеньористей сеньор, тем больше полномочий он может на себя взять.
Программа минимум — умение закрыть тикет, при необходимости придумывая архитектуру, документируя, уточняя требования, общаясь с соседями/руководителями/клиентами, тестируя или плотно взаимодействуя с тестировщиком.
Программа максимум охватывает весь SDLC — умение получить от заказчика расплывчатые хотелки и выдать качественный продукт, при необходимости с поддержкой.
F>решать задачи самостоятельно
Часто под этим понимается "если смежники (аналитики, тестирование, поддержка) не выполнили свои функции, то пойти на их зону ответственности и сделать всё самому за них (и чтобы они при этом не жаловались, что ты им мешаешь), и не парить мозг начальству что оно не наладило процесс".
scf>Чем сеньористей сеньор, тем больше полномочий он может на себя взять.
Наоборот, заставить работать на свою задачу тех, полномочий командовать кем сеньор не имеет. Путём упрашивания, либо делая самому всё не сделанное другими службами.
Здравствуйте, Osaka, Вы писали:
scf>>Чем сеньористей сеньор, тем больше полномочий он может на себя взять. O>Наоборот, заставить работать на свою задачу тех, полномочий командовать кем сеньор не имеет. Путём упрашивания, либо делая самому всё не сделанное другими службами.
"моя хата с краю" mentality. Я понимаю, что в дурнопахнущих организациях иначе не выжить, но имхо лучше просто избегать компаний с плохим менеджментом.
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
прямо с этого форума, было хорошее определение — я для себя даже сохранил. Не благодарите:
* Синьор — опытный и ответственный человек, которому я могу дать достаточно большую и возможно не совсем четко сформулированную задачу. Он ее проанализирует, декомпозирует на подзадачи и сделает. В случае проблем эскалирует их лиду. Со стороны лида нужен минимальный надзор.
* Мидл — человек с опытом, но задачи которому нужно ставить по возможности четкие и сформулированные. Мидлу нужен более плотный контроль и возможно понадобиться помощь с начальным анализом/выработкой оптимального решения.
* Джуниор — человек без опыта или с минимальным опытом. За ним нужен надзор, обучение. Можно давать какие-то совсем простые задачи, к которым у остальных не доходят руки. Джуниора можна отдать в качества помощника синьору, который будет его менторить и давать задачи из своей зоны ответственности.
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
Нет таких "абстрактных знаний сеньора". Есть опыт, который возможно подходит какой-то компании.
M> — тюнинг и оптимизация программ и sql запросов
Не обязательно, просто пиши эффективный код.
M> — разбираться в реверс-инжиниринге
За каким якодзуном??
M> — понимать ассемблер
И формат 3.5" дискет. Тебя чё, разморозили что ли??
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
Младший -- не умеет решать проблемы.
Средний -- умеет решать проблемы (единственным способом, почерпнутым из книги "Also sprach %name%", все остальные подходы считаются богохульствомъ).
Старший -- умеет решать проблемы разными способами (знаком с понятиями "плюсы" и "минусы").
Старый -- умеет не создавать проблем (способен не только видеть конкретное задание, но и согласовывать его решение со всем проектом).
Здравствуйте, mizuchi, Вы писали:
M>умение руководить другими, общаться и т.п. — не рассматриваем. только тех. навыки.
Тех. навыки могут быть самыми разными, это зависит от конкретного места.
Но они должны позволять решить любую проблему в рамках проекта без необходимости контроля сверху.
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр
"Средний" это просто программер, без приставки "джуниор"? Тогда список не должен заканчиваться на синьоре. Выше синьора идут ещё "staff" и "principal".
Титул "Синьора" часто значит, что это просто хороший профессиональный программер, который может работать над сложными задачами, включая проектирование дизайна компонентов, при этом не дергает других по мелочам и умеет самостоятельно находить решение возникающих проблем. Джуниоры (совсем начинающие — стажеры, студенты) вообще толком работать еще не могут, а "средние" иногда косячат или нуждаются в помощи более опытных разработчиков.
Т.е. "синьор" это просто такой хороший девелопер, обычно — лет 5 опыта и выше. Для многих это вершина карьеры в CS, на следующие ступени переходить уже сложнее.
Здравствуйте, Osaka, Вы писали:
F>>решать задачи самостоятельно O>Часто под этим понимается "если смежники (аналитики, тестирование, поддержка) не выполнили свои функции, то пойти на их зону ответственности и сделать всё самому за них (и чтобы они при этом не жаловались, что ты им мешаешь), и не парить мозг начальству что оно не наладило процесс".
Здравствуйте, mizuchi, Вы писали:
M>если всех программёров условно побрить, помыть, выдать одинаковую форму поделить на 3 категории: джуниор, средний и синьёр, то какие знания и умения ожидаются от сеньёра?
Сениор — это просто опытный программист.