четверг, 8 декабря 2011 г.

[work] Быть начальником? Самомасштабирование

Около года назад я начал серию заметок под общим подзаголовком “Быть начальником?” (вот начало, а вот на этом я остановился). Первые заметки из серии вышли “из под пера” довольно быстро, предпоследняя вынашивалась подольше. Но все равно оставалось чувство, что тема еще далеко не закрыта. Не удавалось нащупать нужную тему и нужные слова. Поэтому очередная заметка в цикле появилась только сейчас, когда в результате различных житейских и рабочих перипетий удалось осознать еще одно важное отличие простого разработчика от руководителя.

Различие это определяется масштабом дел, которыми хочет заниматься человек.

Например, что может хотеть сделать программист? Если верить старому афоризму, каждый настоящий программист должен написать собственный текстовый редактор, компилятор собственного языка программирования и собственную операционную систему :)

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

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

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

А что нужно, чтобы достичь успеха в каком-либо начинании?

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

Так вот, способность вырасти из разработчика в начальника проявляется в том, насколько разработчик готов расти в серьезности взятых на себя задач. Хочет ли он перерасти уровень “свой текстовый редактор, свой компилятор…” и выйти на уровень “свой текстовый процессор, своя IDE…”? При том, что “свой” будет означать не “сделанный своими руками”, а “сделанное чужими руками, но под моим надзором”. Настолько перерасти, что в управляемом им продукте может вообще не быть его собственных технических идей.

Этому переходу я дал в заголовке название “самомасштабирование”. Хотя кто-то может обозвать то же самое “уровнем амбиций”. Но, в моем понимании, чтобы говорит об амбициях, они должны доминировать изначально. Т.е. человек начиная работать программистом уверен, что он поработает чуток, наберется опыта, затем станет менеджером проекта, затем еще поднаберется опыта и продвинется дальше и т.д.

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

Во втором сценарии у человека возникают вопросы, вроде “Интересно ли это мне?”, “Сможет ли это захватить меня с головой?”, “Справлюсь ли я с этой ответственность?” и т.д. Ответы на которые не так просты. Чтобы ответить “Да” нужно суметь отказаться от того, что тебя занимало ранее и найти себе новые интересы, новую специализацию.

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

И непонятно, нафик это вообще нужно.

13 комментариев:

Анонимный комментирует...

Женя, я вот что не пойму. Ты вроде решил, что не хочешь быть начальником, но упорно обдумываешь и публикуешь статьи о том, что такое начальник, каково им быть, чем он отличается от подчиненного (только упорно избегаешь темы как стать начальником :). Приведу метафору: меня не интересуют крокодилы, совсем, но я напишу кучу статей, обсуждая их анатомию, физиологию, ареол обитания, как на них охотиться, что из них можно приготовить, для чего используется их кожа, можно ли крокодилов разводить в домашних условиях... Меня это наталкивает на мысль, что либо "когда коту нечего делать...", но на кота ты не похож :). Поэтому, мне кажется, что ты не до конца искренен в своем "я не хочу быть начальником". В смысле недостаточно точно формулируешь свою мысль (или я че не так понял).

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

Это ДЕНЬГИ и возможно почти НИЧЕГО не не делать. Прикол прост: начальник получает больше подчиненного (деньги), при этом он может делегировать то, что сам не хочет делать (почти все, распределение зарплаты, например, не делегируешь). Уверен, что многие руководители оказались на своем месте по этой причине. Разумеется такой начальник бестолково выполняет свои обязанности, про таких говорят, что он "дурак", но на самом деле, грамотное руководство просто не является первостепенной задачей такого начальника. Главное - бабло, получаемое на этой должности, дополнительные льготы и бонусы и возможность сплавить рутину на подчиненных (кстати, у такого начальника нет причины уменьшать количество рутины, избавляться от трудоемких ненужных, невыгодных операций и если его попросят (начальник соседнего отдела, например) сделать нафиг не нужную вещь, он не станет отказывать, а делегирует подчиненному). Бабло-должностной рост основная движущая сила такого начальника. Единственная причина, которая может заставить такого человека шевелиться - это угроза лишиться должности. Потому такой начальник будет строить "дружеские" отношения с руководителями других компаний, чтобы иметь больше шансов получить теплое место в случае неприятностей в текущей компании (и неважно будет это компания-конкурент или совсем другая область деятельности). Собственное руководство такой руководитель тоже будет всячески ублажать - от них зависит карьерный рост.

> Руководитель должен хотеть сделать продукт.

Я тоже так думал. На самом деле, это хороший исполнитель стремиться создать хороший продукт и думает, что у начальника такие же цели. И у хорошего начальника это, наверняка, будет приоритетной целью, но таких мало. Среди исполнителей есть 2 категории: те кто роет землю, повышая квалификацию и создавая хороший продукт (про них говорят "Везут на том, кто везет", поэтому, если нужно что-то сделать, на такого подчиненного и сбросят задачу). Другая категория - "мне двадцаточки на жизнь хватает, я на столько и буду работать". Такие работают до обеда, потом еще чуть чуть, а после 17.00 ни о чем, кроме ухода домой не думают. Других почти не бывает - исполнителю платят мало и работать заставляют. Халявщику проще начальником стать, чем постоянно напрягаться.

Анонимный комментирует...

> Но, в моем понимании, чтобы говорит об амбициях, они должны доминировать изначально.

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

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

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

Для тех кого это не убеждает, могу предложить погуглить по фразе "Сестры Полгар". История начинается так, один преподаватель решил, что для достижения выдающихся результатов талат не нужен, а нужно желание, упорный труд и преподаватель, который поможет найти наиболее короткий путь к успеху. Не долго думая, и, даже не зная пол будущего ребенка и имени своей будущей жены, он решил, что обучать своих детей будет шахматам. Он опубликовал статью, в которой описал, что собирается воспитать своих детей гениями и что ему нужна жена, которая разделяет его интересы. Жена и дети вскоре появились... Заканчивается история тем, что сестры Полгар стали у себя на родине героями типа Наполеона во Франции (женская сборная по шахматам порвала влегкую даже сборную СССР). Наибольших результатов добилась младшая сестра (методика преподавания была к тому времени наиболее отточенной), наименьших средняя (ей шахматами заниматься не очень то и хотелось).

Я это все к тому, что если чем-то не хочется заниматься можно просто сказать себе, "Я не буду это делать". Оправдания нафиг не нужны. Если же хочется чего-то добиться, то нужно решить, а действительно ли мне самому этого хочется (не впарили ли мне эту хотелку)? Что для этого мне нужно будет сделать? Сколько времени потребуется? Смогу ли я физически? Если все устраивает - нужно просто действовать (причем очень интенсивно).

Евгений Охотников комментирует...

@3d-spline.ru:

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

Евгений Охотников комментирует...

>Ты вроде решил, что не хочешь быть начальником

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

Эти обстоятельства сделали меня "типо начальником" (с де-факто точки зрения, поскольку де-юре для меня ничего не изменилось). И именно потому, что де-юре должность начальника мне никто еще не предложил, я и делюсь впечатлениями в слух о том, чем же это дело отличается от простой разработки.

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

Евгений Охотников комментирует...

На счет возможности получать больше денег ничего не делая. Не могу судить. Я вижу лишь то, что вижу. Менеджеры, которые вкладывают силы и нервы в выполнение проектов, вкалывают больше, чем программисты (пусть даже время в офисе проводят меньше, но нервов тратят точно больше, чем разработчики). Есть, конечно, и халявщики. Но, насколько я могу видеть, их быстро распознают и от них избавляются.

Вообще, по ощущениям: если есть дееспособный филиал в провинции (не в Москве), то менеджеров лучше выращивать из филиала. Они больше заинтересованы, более настроены на результат, больше в теме, чем "варяги" из столицы. Тем более, что толковые столичные спецы (в том числе и хорошие менеджеры) стоят намного больших денег. Но это ИМХО, конечно же.

имя комментирует...

@3d-spline.ru:

не все так просто с начальниками, как ты рассказал

да, в рашке имеются такие, вплоть до президента, по той причине, что много народа считает "царь^W президент имеет права, но не имеет обязанностей", и увидев по ТВ, как президент ругает министров за недостатки, умильно думает "ой какой хороший президент", хотя именно *он* виноват за назначение плохих министров

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

имя комментирует...

че-то во второй раз блогстоп глотает мой коммент

ладно, попробую позднее запостить

имя комментирует...

блогстоп заглотал целый пост... ладно, повторю

@3d-spline.ru

про крокодилов -- причина еще и в том, что про крокодилов спросил я

@Евгений Охотников

да, совершенно верно, я задал тебе вопрос о "начальничестве" именно потому, что у меня имеются амбиции сделать то, что в одиночку, видимо, делать нерационально

насчет технических решений:

> Отказаться в пользу выбора подчиненного, которому эту задачу нужно поручить и контроля за ходом ее выполнения.

собственно и я с этим не согласен, но мне кажется это и не надо (в конце будет поправка на твой случай)

разберем по уровням сложности:

1. тривиальщина, те технические решения, которые уже просто надоело находить -- вот их пусть находят подчиненные

2. технические решения среднего уровня -- типа архитектура проекта; тут их по-моему не слишком много, чтобы делегировать

3. технические решения высокого уровня, например решение "что делать, делать ли вообще, и в какую очередь"

опять сразу видно, что ими надо заниматься самому

плюс к тому, 2 и 3 требуют серьезных обсуждений, хотя и в духе "мы посовещались, и я решил"

имя комментирует...

а по половинкам вроде проходит, вот вторая половина, С ДОПОЛНЕНИЕМ:

теперь у тебя: предполагаю, что:

* уровня 2 как бы и нет,
т.е. архитектура в общем-то заранее известна

* уровень 3 содержит задачи, для вникания в которые грубо говоря технической грамотности не надо

вывод: очень-очень скучно

с другой строны, я полагаю, выход может быть -- это сделать уровень 2 содержательным

для этого надо обкатывать, например, новый язык программирования, "совместимый" с с++, дающий больше надежности и удобства, возможно имеющий более содержательный рантайм (вплоть до сборки мусора для объектов определенного типа... кстати, насчет горячей замены функций и дебаггера -- есть древняя история о том, что мейлер еще в юниксе завис примерно как ты рассказывал, и кто-то, не желая терять очередь сообщений, подцепился дебагером, заменил байт в оперативе, очередь разгреблась, и потом они уже пересобрали мейлер)

в таком случае, архитектурные решения становятся уже нетривиальными, и уровень 2 может быть интересен

* как программировать быстрее и надежнее?

* где использовать старые подходы, а где новый?

* может стоит придумать (или утащить откуда-то) новый подход, который в рамках с++ был нереализуем?

Евгений Охотников комментирует...

@имя:

Главное отличие начальника от подчиненного заключается в том, что в ведении начальника находятся вопросы "Что делать? Зачем это делать? Когда это делать? Кто это будет делать?", тогда как подчиненные ищут ответы на вопрос "Как?"

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

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

Евгений Охотников комментирует...

@имя:

У меня ситуация сейчас такая, что я занимаюсь и пунктом первым (тривиальщина), и пунктом вторым (архитектура), и, отчасти, пунктом третьим.

Анонимный комментирует...

Женя, я нашел причину твоих метаний. Цитирую:

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

> 1. Я хотел действовать сам, а не направлять действия других.

> 2. Я хотел свободно принимать собственные решения, а не становиться «менеджером среднего звена», нередко вынужденным транслировать решения вышестоящих лиц.

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

> Второе обстоятельство может вам показаться странным. Как технический специалист может быть свободнее в принятии решений, чем его менеджер? Я знал из собственного опыта, что это правда, но было трудно
объяснить это окружающим. В итоге я написал целую книгу на эту тему
под названием «The Power of Peonage» (Преимущество подневольного труда, 1979). Главная мысль этой книги (составившая основу моих убеждений,
из-за которых я и остался инженером) заключается в том, что те специалисты, которые действительно хороши в том, что они делают, и в то же время
находятся на дне служебной иерархии, обладают возможностью, которой
не имеет никто другой в этой пирамиде. Их нельзя понизить в должности.
Как для чернорабочих, для них часто не существует более низкого ранга,
до которого их можно было бы понизить. Хорошему инженеру можно
пригрозить каким-нибудь наказанием, но понижение в должности ему не
грозит. В этой позиции скрыта большая сила, и за годы моей технической
карьеры я прибегал к ней неоднократно.

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

P.S. Уверен, что первоисточник нагуглить кому надо не составит труда.

Евгений Охотников комментирует...

@Лёша Сырников:

Спасибо за цитаты!

Забавно, что я начинал читать эту книгу, но почему-то именно этот момент у меня в памяти не отложился.