Помимо знания 100500 технологий и подходов, которые конечно же тоже важны, есть еще один пункт, который прям необходим, и про который почему-то редко говорят.
Это способность построить в голове модель того, что происходит в создаваемом софте. И помнить ее долго хотя бы в общих чертах.
Вам может быть наплевать на выгоды бизнеса (привет, fillpackart ), или вы наоборот живете только работой. Вы можете знать или не знать детали реализации gc в jvm и вертеть красно-черные деревья.
Это все неважно, если вы не можете натренировать свою серую нейросеть так, чтобы более менее держать в голове систему в целом. То, что относится к той части софта, за которую вы отвечаете, и еще чуть-чуть рядом.
Вы можете сами преобразовывать бессмысленное бормотание заказчика в четкую модель или же натравить на это бизнес-аналитика или пиэма, который выдаст документацию.
Но все равно, пока в голове не "щелкнет", не уляжется понимание происходящего в целом, вы будете делать тупейшие ошибки и недоработки. Молча допиливать явную чушь из тз, потому что не поймете, что это чушь. Будете неправильно выделять сущности и абстракции в коде, потому что код — это и есть модель бизнес-процессов, записанная странноватым компьютерным языком.
Различные подходы типа DDD помогают, но лишь отчасти, потому что без понимания системы, без заданных вовремя вопросов, точно также будут ошибочно выделены bounded contexts и сущности. Потом это придется переделывать, и в системе при этом останется дофига лишних зависимостей и странноватых названий.
Крутые шахматисты могут держать в голове десяток партий на сеансе одновременной игры.
Крутые синьорные программисты отсекут бредовую фичу еще на этапе предварительного обсуждения, задав пару правильных вопросов.
Способных держать модель в голове чаще делают тимлидами, даже если они хуже перформят в строчках кода в секунду.
P.S. Еще неплохо бы уметь объяснять происходящее другим: объясняя, лучше запоминаешь и выкристаллизовываешь суть.
Этот пост — отцензуренная версия поста с telegram-канала Cross Join
propell-ant
Я различаю их по уровню абстракции выполняемых задач:
Джуну нужно ставить задачу предельно конкретно и желательно помельче — сделай форму с кнопкой и пусть сложить A и B.
Мидлу можно более абстрактно — возьми задачу из очереди, уточни если не понял, и сделай.
Сеньору можно ставить совсем абстрактные задачи — у нас тут криво, а надо чтобы было прямо, разберись, прикинь сколько народу понадобится и сколько времени уйдет.
Главное не перепутать, а то бывает что должности не соответствуют уровню. Причем как вниз так и вверх.
MonkAlex