Comments 196
Спасибо, давно так не рыдал
Обычно, если менеджер принимает неверное решение, это значит, что программист не смог донести всю тяжесть последствий. Обычно программисты имеют низкий социальные навыки, так что нужен специальный человек, для донесения до начальства мыслей о технической составляющей проекта.
Таких людей часто выделяют всякие оутсорсерские и облачные конторы. Они приезжают к начальству и рассказывают душераздирающие истории о том, что может пойти не так, с графикам и таблицами, как положено, и убеждают менеджеров больше тратить на IT.
Обычно, если менеджер принимает неверное решение, это значит, что программист не смог донести всю тяжесть последствий.
— Аааа, у нас на проекте все очень плохо, почему ты не предупредил что так может быть?
— Но я же говорил что будет плохо если не сделать то и то…
— Да, но ты не говорил что будет ОЧЕНЬ плохо. Ты не старался до меня донести! Ты во всем виноват!
Он небось и считать умеет только до десяти, и математику последний раз видел в 9ом классе.Тогда почему он считает что он может решать, что нужно делать, а не я? И почему он вообще принимает какие-либо решения, если я должен до него «доносить» какие от них могут быть последствия?
Потому что даже когда хорошие друзья хотят вместе выбраться на пикник, должен найтись хотя бы один человек, который будет всех непрерывно пинать и напоминать об их желаниях, координировать планы.
Ты наверное М3 из рассказа.
поддерживать ценность себя как программиста после перехода в менеджмент это нерациональное использование ресурсов.
поддерживать ценность себя как программиста после перехода в менеджмент это нерациональное использование ресурсов.
Как показывает хотя бы этот топик, менеджер с актуальными навыками программирования и всего вокруг него более востребован программистами как начальник (product owner в SCRUM). Субъективно, у такого менеджера доля успешных проектов и удачных спринтов будет выше.
более востребован программистами как начальник
ну тут наверное важнее востребованность у бизнеса, а не у программистов, поскольку это бизнес платит в конце то концов.
да и актуальность навыков изчезнет за полгода-год.
но да, программистам наверное будет приятнее, мол «свой человек когда-то был».
хотя может и наоборот «вроде свой человек, должен понимать, а он!!»
(SCRUM product owner — это не менеджер все же)
в любом случае, переход раработчик-менеджер это не развитие карьеры разрботчика, это фундаментальное изменение, и жаль когда разработчики в попытках развить карьеру этого не понимают.
(Как не менеджер, если принимает бизнес-решения по распределению ограниченных ресурсов?)
Тут зависит от того, что считать разработкой. Например, вот начал я работать один над проектом (веб-приложение в интранет), начал зарываться со временем — с одной стороны обычный поток задач, связанных с развитием бизнеса, с изменением законодательства и т. п., с другой — хотелки стейкхолдеров, которые наконец-то получили человека, который успешно их реализует. Анализ ситуации показал, что много времени уходит на рутинные задачи по фронтенду, взяли мне в помощь фронтендера. Я ставлю ему чёткие задачи с указанием необходимого мне пути решения, вплоть до ссылок на библиотеки, которые надо использовать, он их выполняет. Можно ли сказать, что я перестал заниматься разработкой фронтенда? Код писать перестал почти, а вот разработкой, по-моему, не перестал заниматься. С другой стороны, можно ли сказать, что я стал менеджером? Как по мне, то стал. Я делегирую ему решение своих подзадач, ставлю приоритеты, контролирую прогресс и качество, отвечаю по сути за результат его работы. Чем не менеджер?
Только это называется дуалкласс ;-)
И, кстати, требования к дуалклассу заметно выше, чем к каждому классу по отдельности. Грубо говоря, файтеру, дуалящемуся в мага, нужно не только иметь достаточную силу, но и заметно бОльший, чем обычному магу, интеллект.
Смею полагать, что дуалклассу "разработчик->менеджер" тоже нужны повышенные требования и к интеллекту, и к харизме.
Потому что он умеет и не боится взаимодействовать с неидеальным внешним миром и ориентироваться на результат.
Это такая идеальная отмазка, чтобы скрыть некомпетентность руководства?
Если у тебя есть все необходимые компетенции, то почему ты сам не пошёл в руководство?
Не нравится.
Или в нашей удивительной стране кухарки могут управлять не только государством, но и высокотехнологичным производственным процессом?
PS: У меня нет необходимых компетенций, чтобы быть в руководстве, у меня есть компетенция в области разработки ПО. Потому и не иду.
Нет. Так зачем же требовать от менеджеров всезнания? Помогайте ему по мере ваших сил, у вас один проект и одна цель!
Я же не требую всезнания от менеджеров, я требую компетенции в заявленной области. Думаете, я не видел программистов, которые заявляли больше, чем умели?
Точно так же как выпускнику прогерского ВУЗа не известно, какой ему придётся JS движок использовать в работе. Научится по дороге.
Они же не знают, где ещё будут применяться их знания, основной их навык — это «программирование» людей. А на какую задачу их нужно будет программировать, наперёд не известно.
Ну вот, собственно, этим всё сказано. Приходит такой менеджер на производство и начинает наносить непоправимую пользу. Если команда хорошая — он не сильно много пользы нанесёт, если не такая хорошая, то у конторы сразу проблемы.
Всё из-за подхода — я программирую людей, зачем мне знания в области, в которой я руковожу.
От менеджера не требуется всезнание — от него требуется коммуникация не только с начальством, но и с подчинёнными. Только в этом случае это один проект и одна цель. А то, что описано в пьесе, больше похоже на «я начальник, ты дурак». Это не один проект и одна цель, это — спущенная сверху разнарядка, от реальности очень сильно оторванная.
Ты можешь не знать всего — и это нормально — но если проект для тебя значит больше, чем собственные амбиции, ты будешь слушать своих подчинённых и опираться на них, а не приказы начальства. Если же впереди амбиции, то получается ровно то, что описано в пьесе. И цена такому менеджеру — нуль. Вне зависимости от его знаний и опыта. Не надо искать оправданий очевидной некомпетентности.
Ну вот потому такого менеджера и не следовало бы брать в ИТ.
Программистам не нравится работать менеджерами, применять необходимые для этого навыки.
Полагаю у вас однобокая статистика. Все менеджеры кроме одного с которыми я работал, будучи разработчиком, были либо бывшими либо действовавшими программистами. И проект знали или на уровне разработчика или на уровне администратора. И это опыт по трём компаниям и полудюжине менеджеров.
Речь идёт об «эффективных манагерах», которые, по сути применяют один и тот же алгоритм:
1. Корову меньше кормить и чаще доить.
2. Получить бонус на «эффективность».
3. Вовремя свалить (в идеале — на повышение).
Для этого, в сущности, знаний не нужно — достаточно звериного чутья. Потому что пунк #3 — ключевой.
Он небось и считать умеет только до десяти, и математику последний раз видел в 9ом классе.
Менеджер. В айтишной конторе. Сириусли?
Что он в ней делает?
Пускай идёт вагоны разгружать, бестолочь.
Это такая дилемма миддл менеджера: единственный способ быть замеченым и получить повышение — это когда проект удаётся и привлекает внимание высшего начальства (т.е. в сжатые сроки, приоритетное направление, и т.д.), а неудачи не приводят к плохим последствиям, т.к. можно размазать ответственность и вообще иногда неудачи — это даже хорошо, т.к. можно попросить больше денег и привлечь внимание к себе.
Такое состояние приводит к тому, что возникает конфликт интересов и им субъективно выгодно принимать рисковые решения.
Неа. На самом деле все еще хуже. Вот совершенно реальный разговор из жизни:
П: можно сделать вот так, и тогда мы релизимся через неделю, или вот так — и тогда релиза не будет через три месяца.
М: хорошо, делаем по варианту два, три месяца это вы пессимист, сделаем за два.
Проходит три месяца. Релиза нет, и непонятно когда будет.
Менеджеру не нужен успех проекта. Менеджеру не нужен качественный код. Ему нужно выбить деньги на проект, и потом их потратить, а в случае проблем — свалить вину на кого-то другого, и выбить денег на исправление проблем. Я не хочу сказать, что это всегда так — но увы, это достаточно типично.
P.S. Пока писал, появился комментарий выше. И я с ним согласен — конфликт интересов что-то слишком типичен.
Притча "Менеджер и программист"
Человек, летящий на воздушном шаре, обнаружил, что потерялся. Он спустился немного ниже и заметил на земле женщину. Спустившись ещё чуть ниже, он обратился к ней:
— Простите, не могли бы вы помочь? Я договорился с другом встретиться час назад, но не знаю, где сейчас нахожусь.
— Вы находитесь на воздушном шаре в 30 футах от поверхности Земли, между 40 и 41 градусом северной широты и между 59 и 60 градусом западной долготы ответила женщина.
— Вы, должно быть, программист?
— Да, а как вы догадались?
— Вы мне дали абсолютно точный ответ, но я совершено не представляю, что делать с этой информацией, и я всё ещё потерян. Откровенно
говоря, вы мне совершенно ничем не помогли.
— А вы, наверное, менеджер?
— Да. А вы как догадались?
— Вы не знаете, где находитесь и куда направляетесь. Поднялись вы туда, благодаря воздуху. Вы дали обещание, которое не представляете, как выполнять, и ожидаете, что люди, которые находятся ниже вас, решат ваши проблемы. И, наконец, сейчас вы в том же самом положении, в котором находились до встречи со мной, но почему-то теперь в этом оказалась виновата я.
Просто почему-то вспомнилось...
Через 20 лет я узнал, что у анекдота есть продолжение ("— А вы, наверное, менеджер?")
В английском оргинале «you got where you are thanks to a lot of hot air» — тут идиома, на русский в целом переводится как «вы оказались на своей высоте [(должности)] благодаря тому, что много заговаривали зубы/пудрили мозги», но в переводе на русский игра слов с «горячим воздухом» пропадает :(
будто они совсем не заинтересованы в успехе проекта
А то, что они этого результата собственно и достигают — это не считается?
Брукс и Гласс, например, сходятся в оценке того, что «выпустить продукт» требует примерно в 6 (шесть, Карл!) раз больших трудозатрат, чем «написать код». Поэтому логично, что и ответственность лежит на команде, а не на менеджере.
Конечно, в случае факапа, голова должна лететь в первую очередь с плеч менеджера, потому что его основные функции — планирование сроков и бюджета и управление рисками. Поэтому «правильный» менеджер видит, что кто-то из членов команды «факапит» не перед дедлайном, а своевременно. И в этом случае он не ответственность на себя будет брать и публичные заявления анонсировать, а люлей раздавать, а в случае необходимости и менять конфигурацию команды так, чтобы сроки и бюджет «сошлись».
Тут комменты посмотришь: разработчики все сплошь на галерах гребут, напрягаются во благо компании, а менеджеры смузи только пьют.
P.S. мне эти менеджеры казались виртуальными. я их не видел. может просто чтобы освоить бюджет проекта.
Потому что определение подходящего срока — это ответственность менеджера. Программист — он код фигачит и о сроках имеет весьма приблизительное представление. А менеджер как раз должен заниматься планированием производства, предугадывать косяки и усложнения по ходу дела, трезво оценивать потенциал вверенных ему программистов. Постоянно с ними общаться и убеждаться, что они не утратили видения того результата, который надо получить, и не закопались во второстепенные таски.
Программист, конечно, тоже может быть виновен в срыве сроков — если он вместо кода фигачил в танки. Но в большинстве случаев провал сроков — это провал планирования и ошибка менеджера.
Менеджер подключен к космическому знанию, предвидит будущее и так планирует сроки? Если нет, то на основании каких данных производится планирование?
Программист может оценить задачу, потому что у него есть опыт реализации аналогичных задач (если мы говорим про профессионала). Я оцениваю типовые задачи с точностью до минут. Не типовых задач в энтерпайзе на самом деле не так много, как принято считать.
Точное повторение старых действий (при условии неизменности окружения) — это залог идеального планирования.
А что если повторения нет, если задача отличается от той, что ты решал до этого? Нужна другая архитектура, другие библиотеки, у каждой — непредсказуемые временные затраты на внедрение. Как быть в этом случае? Программист может прикинуть лишь примерно, а затраты времени могут расти как фрактал.
Вот для этого нужен менеджер, он будет принимать решения в условиях недостатка информации. При этом он, конечно, должен извлечь в диалоге максимум информации из программиста, даже если программист стесняется говорить и пытается обойти некоторые моменты.
Потом менеджер должен решить, насколько важен проект, нужно ли закладывать больший запас ресурсов или провал сроков не критичен, и перезакладываться не нужно. Если менеджеру всё ещё слишком не понятно, сколько времени будет уходить на задачи, он может отловить программиста и вместо программирования посадить его за дизайн. Расписать вместе возможное разложение задачи на подзадачи, найти те, которые уже раньше делались и хорошо предсказываются, изолировать те, что предсказываются плохо — с ними продумать отдельно. Но это уже будет решение менеджера, ещё до начала проекта, потратить время программиста вместо программирования на анализ. Программист сам такого решения принять не может.
Мы говорили, не про оценку всего проекта, а про то что нужно укладываться в оценки по своим задачам. Планировать весь проект разработчика ни один грамотный руководитель не попросит.
Правда, эта вся фигня с диаграммами Ганта выглядит красиво в ПМБуке, в Прожекте каком-нибудь, а вот в реальном проекте вдруг выясняется, что заказчик хотел не этого, а вот того. Это должно быть не так, а вот этак. Ну и все первоначальные оценки или идут в корзину, или идет торг на уровне «мы сделаем это, но выкинем вот это», или идет раздувание сроков-бюджетов. Там куча всяких интересных вариантов. Опять же будет своя специфика с внутренней разработкой, продуктовой, заказной. Не зря же пытаются всякие итеративные, инкрементальные способы разработки внедрять. Как раз из этих соображений, что самая адекватная оценка, это оценка полученная в процессе работы. Да и чем дольше идет проект, тем лучше предсказание рисков и все такое.
А что если повторения нет, если задача отличается от той, что ты решал до этого? Нужна другая архитектура, другие библиотеки, у каждой — непредсказуемые временные затраты на внедрение. Как быть в этом случае? Программист может прикинуть лишь примерно, а затраты времени могут расти как фрактал.
Я имел в виду, что разработчик отвечает за свои оценки. Остальное, видимо, все поняли по-своему
Ну я же отвечаю, за свои оценки, поэтому я, прикинув, что задача на 2 часа, но придет менеджер Петя и попросит подсказать как сделано А, потом забежит аналитик Света и попросит посмотреть нормальное ли требование Б, потом может быть недоступен тестовый стенд, дам оценку в 10 часов.
Что скажет на это менеджер?
Я как разработчик должен договориться с отделом эксплуатации чтобы мне развернули нужный тестовый стенд или это ваша работа как менеджера?
Чтобы не было недоразумений, я уже лет 7 как менеджер, а первые подчиненные у меня появились лет 15 назад.
Мы живем в мире с высокой неопределенностью. Разработчик дал вам оценку в 16 часов. А потом у него подскочила температура и он ушел в больницу. Вы его не отпустите? Или это он виноват, что не решил задачу за 16 часов?
И я про 3 часа которые в ворк-логах, а не календарные.
> С чего вдруг менеджер должен публично брать на себя косяки программиста, не уложившегося в срок?
Если менеджер не может организовать работу программиста чтобы он укладывался в срок. Обратите внимание, не программист должен это обеспечить, а менеджер. Если менеджер не может вовремя уволить человека который не укладывается в сроки (когда то что мешает программисту устраняется, а программист все равно халявит) и заменить его другим. Если менеджер не заложил буферы на то, что время от времени задачи даже выполняемые повторно будут занимать больше времени по объективным причинам.
То? При чем здесь программист?
Вы не подумайте, у меня в подчинении очень хорошие программисты, которые эффективно делают свою работу. Но если один из проектов, за которые я несу ответственность не будет соответствовать заявленным требованиям (функциональным, нефункциональным, по срокам реализации, по бюджету), то ответственность перед заказчиками несу в первую очередь я. передо мной несут ответственность руководители проектов. А если мне руководитель проекта придет и скажет, что проект сфейлился, потому что Вася уже три месяца не делает вовремя порученные ему задачи. То надо уволить этого менеджера, т.к. он не решил проблему за 3 месяца, ну и следом меня, т.к. о том что на проекте 3 месяца идет отставание по срокам я узнал в день релиза.
Мне кажется, что разработчики часто не отвечают за свои прогнозы.
Но иногда отвечают и таких разработчиков ставят сеньорами и тимлидами.
Они должны отвечать за код!
Точнее за качество кода.
Чтобы при добавлении новой фичи
1) Количество ошибок на фичу не увеличивалось
2) Время на добавление фичи не росло в экспоненциально.
Потому что «выигранное» X времени сейчас, выльются в e^X потом.
Кроме того — если программисты не отвечают за сроки, то откуда вообще их брать?
В предыдущих комментариях, да и в тексте поста есть определенное недовольство тем, что менеджеры высасывают сроки из пальца. По вашему получается, что это нормальная ситуация.
Потому что определение подходящего срока — это ответственность менеджера. Программист — он код фигачит и о сроках имеет весьма приблизительное представление.
Надеюсь вы не имеете в виду, что сроки выполнения задач должны определять менеджеры вместо программистов?
Разработчик обещает менеджеру, менеджер обещает начальству.
Разработчик виноват перед менеджером, менеджер перед начальством.
Если разработчик начальству ничего не обещает, то он перед ней и не виноват.
Думаю мыслю поняли.
Разработчик виноват в неверной оценке.
Руководство — в том, что доверилось прогнозу(оценке).
Оправдания никому не нужны. Ситуация в которой менеджер «оправдывает» себя, тем что ему обещали подчиненные — яйца выйденного не стоит. Он просто не хочет признать свою вину.
Начальство должно наказать менеджера, менеджер — подчиненного.
Будет печально если все шишки посыпятся только на разработчика.
Ну, или отложить релиз фичи. В таком случае об этом надо доносить, тому кому эта фича была «обещана».
В случае же когда разговаривают менеджер и разработчик проблема не в менеджере и не в разработчике а в человеке, который поставил их разговаривать друг с другом.
Тимлид — человек вышедший из разработки, как правило половину времени уделяет распределению задач, написанию ТЗ, донесением до менеджеров и руководства всей сути технической работы)
Так что да, в компаниях где нет тимлида самое разумное действие разработчика — писать ПСЖ. А еще лучше даже не пытаться устраиваться в такую компанию.
P.S. После этого наняли тимлида и переписали и старый и новый проекты с Явы на C++. Потому что новый тимлид не знал Яву) И это все равно было лучше, чем без тимлида.
хороший считает (и не в глубине души, а публично заявляет), что это его ошибка, что он оценку разработчиков выдал за свое обязательство.
Правило Вестгеймера Чтобы определить, сколько времени потребует работа, возьмите время которое, по-вашему на нее необходимо, множьте на 2 и замените единицы измерения на единицы более высокого порядка. Так, мы выделяем два дня на одночасовую работу.
Обычно программисты имеют низкий социальные навыки
Сморозили чушь, наделали ошибок, да еще и полхабра оскорбили. Nice work!
Простите меня за мой французский, но я безмерно возмущен!
— не прислушивается к своим разработчикам (грубо говоря, не доверяет).
— боится, что правильный подход будет слишком сложным для начинающего чайника, который заменит разработчика (если тот уйдёт).
— пытается применить к новому проекту свой совершенно нерелевантный опыт из старого проекта, который был сделан из совершенно другого конструктора.
и ещё тысяча других причин.
Или это как пример технического же долга?
Реальный случай с совещания, когда топ-менеджмент предлагал разрабу, чтобы старый 16-битный код запустить в 32-битном окружении, просто забить нулями вторую половину каждого 32-битного слова. И это, замечу, было техническое руководство, которое увидело способ быстро интегрировать старый, совсем доисторический, код с более новым, просто доисторическим.
Разраб, когда после совещания отошел немного, пошел и написал «по собственному».
Так и не смог разгадать ребус и вычислить название реальной системы(
Поделитесь? )
Так оно и задумывается на борде, ваще та. А готового выгореть разраба можно и нового найти.
Идеальный управленец вообще не должен иметь конфликт интересов со своими разработчиками. Наоборот, он должен быть арбитром между конечным заказчиком/пользователем и своей командой. Но это в идеале. А так то, что довольно часто проект становится жертвой субъективизма менеджмента, тут вы правы, ничего не поделаешь…
Неспроста ж случается, что з/п у П бывает повыше чем у его М.
Вообще говоря, пьесы не так пишутся. В пьесе у персонажей есть имена и фамилии, а их роли и характеры раскрываются в результате взаимодействия и диалогов в различных ситуациях. Читатель не должен сразу знать, кто есть кто, а должен сам распознать это по ходу пьесы. В этом вся соль. Без этого пьеса — не пьеса...
У меня немного другая история была, как-то 1.5 года оттимлидил на проекте где 3 ПМа сменилось, причем не с повышением, а с увольнением ПСЖ. Ситуацию они особо не контролировали, но служили неплохим буфером между заказчиком и командой разработки. Когда случались факапы (а случались они постоянно :)), они самоотверженно получали люлей, потому наверное и не выдерживали подолгу… Ну а в целом проект закончился успешно, стал хорошим пунктом в моем CV, и я благодарен этим ребятам за то что спасали мою нервную систему.
В компании есть деньги, менеджер, СЕО и випы заинтересованы чтобы проект был принят. Этого достаточно чтобы где-то сделать по-своему, где-то сорвать сроки, где-то скорректировать требования, кого-то мягко проигнорировать, но сделать что-то работающее, что будет принято и будет развиваться дальше и может и будет кривое, но работающее и даже приносящее прибыль компании. Получить соответственно повышение зп и бонус.
Просто надо быть хитрее.
а) писать очень «правильный» софт с грамотными: ТЗ, архитектурой, выбранными технологиями, процессами разработки и деплоя, покрытиями тестами и современными стандартами по написанию самого кода.
б) долго работать программистом в крупной компании с повышениями и ростом ЗП.
Действия в статье описаны для человека, который хочет исключительно пункт А.
Можно для себя выбрать Б, а из «а» брать по возможности.
«А потом «это» десяток лет развивать и поддерживать» — ответил ниже.
Не реализовать в системе часть функциональности, поставив имитатор.
А когда к клиенту нагрянет регулятор и натянет его по всей строгости (а то и посадит кого из его работников) — сделать честный вид и сказать «но ведь вы нам акты подписали», да.
Или для скорости наворотить неописанных костылей, а когда костылестроитель покинет компанию — задуматься, а как все это безобразие поддерживать. И кем.
Neikist: «А потом «это» десяток лет развивать и поддерживать, плюс под каждый проект чуть ли не с нуля переписывать» зачастую это может быть и неплохо.
Надо смотреть что это за система, если это управление аппаратом по лазерной коррекции зрения- там я бы так делать не стал.
А если скажем… какой-нить документооборот в крупной компании- именно так как вы описали оно и делается в 90% не-айтишных компаний, например в строительной или нефтедобывающей. Эти все велосипеды на костылях потом надо поддерживать и дописывать- штат сотрудников увеличивается, а это означает повышение, рост зарплат.
Например, произойдет утечка данных с меткой этого человека, хотя по факту он будет непричастен.
Повышение и рост зарплат это означает в тучные годы.
А когда основной клиент-кормилец начинает вместо договоров предлагать держаться и желать всего доброго, хорошего настроения и здоровья — вот тут и начинаются основные проблемы с поддержкой как остальных пользователей этого продукта, так и пожелавшего сэкономить на поддержке основного.
И наиболее толковые сотрудники начинают искать счастья на стороне. Что еще больше усугубляет непонимание, как оно работает.
Попробую еще другими словами дополнить свою мысль.
Разработчик — это не тот, кто отвечает за проект. Описанный в статье разработчик переживает насчет вещей, которые вообще не находятся в его компетенции. Он не знает, на каких исходных данных принимались решения выше, может это политические игры руководства и через 2 года этот продукт вообще не будет нужен. А может нужен, но они ошиблись в решениях. Но ошиблись то — они, а не разработчик.
Это как сборщик айфонов в Китае будет переживать — а как же таким телефоном будут пользоваться люди, неудобно ведь и неоправданно дорого! А через год все их повыкидывают и будут покупать новые! А старые станут такими медленными на новой оси. И уволится из-за этого, хотя предлагали нормальную зп.
Я понял ваш первый комментарий как «менеджер сказал запилить фичу в нереальные сроки, сделаю ему имитацию чтобы приемочные прошло, а там — не моя проблема».
Да, я имел ввиду «менеджер сказал запилить фичу в нереальные сроки, сделаю что-то работающее, но не все. А как он объяснит начальству что успели сделать не все — не моя проблема».
Еще дополню свою мысль :)
М: смог вытащить этот проект за такой малый срок. Так что меня повысили
М2: Какие мы молодцы… я вместе с Гуру перевожусь в другой отдел
«и решают сделать новую систему» — под руководством М3, видимо.
Т.е. М, М2, М3 и Гуру- в шоколаде (4 чел).
А разработчик: в какашках (1 чел)
И это все по результатам работы над одним и тем же проектом! Ну и кто из этих 5ти людей некомпетентный дуралей? :)
«Так и сказали, что я мастер управлением персоналом, что смог вытащить этот проект за такой малый срок. Так что меня повысили». Вот на этом моменте разрабу надо было ультимативно получать повышение, либо уходить с повышением зп. А когда дошло бы до «решают сделать новую систему» — получить еще 2 разраба и еще одно повышение.
Был на всех трёх местах ;D отлично, отлично..
М: мне бы тут отчет сделать небольшой, пару SQL-запросов в Excel выкинуть…
Р: ну это на неделю работы… и премию надо… и ТЗ точное… а еще надо библиотеку изучить для формирования Excel-файла…
М: Мне завтра надо. И вообще это — однократная работа. Выгрузи уж как нибудь вот эти и вот эти столбцы.
Р: ну мне некогда ерундой заниматься и пишет служебку на 3 страницы, почему это сделать нельзя
М с боем выбивает доступ на чтение к СУБД у админов, остается вечерком, ваяет запросы и копипастит их в Excel…
Задача выполнена.
По мотивам реальных событий, рассказанных одним экономистом (собственно он и был М) в одной большой компании.
Собственно, если бы экономист не вытягивал, то компания теряла бы неслабые деньги.
Странно что у программиста в этом случае нашлось время на написание служебки на 3 страницы )
p.s. что в истории совпадает, так это то, что премию дали экономисту )
Разработчику поставлена задача, которая не является задачей для разработчика.
Ну вот у бизнеса возникла задача — отдать клиенту в экселе какие-то данные. Сделать надо завтра. Кому, кроме разработчика, можно поручить такую задачу?
По хорошему разработчика не должны к данным вообще подпускать.
У бизнеса все определено. Схему данных понимает только разработчик, поэтому запрос будет писать он. Выполнять запрос будет не он, а тот, кто имеет право на доступ к данным.
Постановка задачи — сделать пару sql запросов для отчёта.
Тот факт, что менеджер понимает схему свидетельствует о том, что разработчику попался технически грамотный менеджер, а не о том, что менеджер обязан понимать схему данных. Для этого есть разработчики.
Тот факт, что менеджер смог получить данные — чудо. В нормальной ситуации отказ разработчика делать запрос означает, что клиент не получит того, что ему было нужно.
Тот факт, что менеджер смог получить данные — чудо.Почему же чудо? Обычное раздолбайство.
В мелких компаниях такое часто случается, но если бы подобная история про Amazon или Google попала бы в прессу — то иск на много миллионов был бы неизбежен.
но если бы подобная история про Amazon или Google попала бы в прессу — то иск на много миллионов был бы неизбежен.
Что Вас заставляет так думать?
А там даже не доступ какого-то левого менеджера к пользовательстким данным, а просто — сбор «сырах» данных, к которым особо-то и доступа ни у кого не было.
Так что то, что «экономист из одной большой компании» это провернул и не попался — это круто. А вот только рассказывать про нарушение трудовой дисциплины и, тем более, выдавать это за доблесть — не стоит.
Но направление мысли я понял, спасибо.
Думаю оный экономист имел все права на данные к тому же.Я вот — ни разу не уверен. Более того, уверен на 99%, что он этих прав не имел.
То есть понятно, что ему нужны были агрегированные данные, по которым можно было бы построить какие-то тренды. Но судя по описанию — доступ-то он получил к «сырым» данным. То есть, например, мог узнать кто, когда и чего купил в этой фирме. А дальше мы налетаем прямиком на разнообразные законы о персональных данных и получаем повестку в суд.
После чего «ТЗ точное» и «неделя работы» вдруг оказываются вовсе не таким уж непостижимо ужасным требованием…
Разработчику поставлена задача, которая не является задачей для разработчика.
Собирать требования не задача разработчика, писать ТЗ не задача разработчика, писать SQL-запросы не задача разработчика, тестировать не задача разработчика, сдавать систему не задача разработчика…
Через сколько итераций перебора задач мы поймем, что на IT-проекте в нет задач для разработчика?
Чисто в теории, программист, после разработки запросов, если у него есть права для выполнения этого запроса на боевой базе, если у него есть Excel, если он знает как результат запроса можно получить в Excel (я вот не знаю, последний раз с Excel работал в прошлом тысячелетии и то проверял как он открывает CSV файлы, которое выгружало моё приложение — тогда плохо открывал) может приложить результат запроса по текущим данным как образец результатов запросов, но это будет:
а) жестом доброй воли
б) риском получить «уточнение требований» типа «отрицательные значения выделить жирным красным, посчитать общие итоги и подитоги по месяцам, причём ячейка „месяц“ должна должен быть объединением для всех строк месяца, а не повторяться каждый раз, а подитог быть первой строкой»
в) риском постоянно получать подобные задачи, причём не только от данного конкретного менеджера, не смотря на обещания менеджера «первый и последний раз и никому не скажу»
г) уменьшением времени на исполнение своих прямых должностных обязанностей, что приведёт к увеличению календарных сроков окончания нормальных задач по разработке и, возможно, срыву дедлайнов. В лучшем случае — к неуменьшению технического долга, если открытых задач нет и обычно в свободное время что-то рефакторится. В самом лучшем случае — к замедлению профессионального роста: вместо того, чтобы новый фреймворк как инструмент решения прикладных задач пользователей софта изучать, программист будет Windows и Excel изучать как инструмент для решения своих прикладных задач
Еще возникает мифический человек, у которого есть права и возможность запускать запросы, но их не умеет писать. Может его научить, а разработчика уволить? Сознательно не произношу слово «деплой».
Какой-то вырожденный случай разделения труда, потерялось промежуточное звено без котороо задача не может быть выполнена.
Не понимаю, чего все привязались к Excel, Excel умеет и CSV открывать и запросы запускать к БД, нет большой проблемы, если данных меньше миллиона строк (или сколько там сейчас).
нет большой проблемы, если данных меньше миллиона строк (или сколько там сейчас).Проблема таки есть: выгрузка данных «в сыром виде» в Excel скорее всего — прямое нарушение закона, а для какой-то осмысленной их обработки требуется ТЗ и прочее.
У нас вот полотдела аналитики такие мифические, мы им пишем запросы, они их сами запускают, SQL немного знают, чтобы что-то поправить типа условий, но если пишут сами что-то с семиэтажными джойнами и подзапросами, то вполне могут базу положить.
Задача может быть выполнена:
1) аналитик формирует требования (допустим SQL не знает, как и всякие ODBC)
2) программист пишет запрос, возможно деплоит его в качестве view на сервер
3) техподдержка/админы обеспечивают аналитику возможность запустить запрос в привычной ему среде (Excel тот же), либо экспортировать в неё. Как вариант сами запускают запрос, экспортируют его в нужный формат и передаёт аналитику.
Просто в этой ситуации аналитик забыл про существование поддержки, тех, кто ему комп настраивает, ексель устанавливает. И поставил задачу программисту не проведя аналитическую работу.
Я не знаю, что умеет Excel. Мне его даже запустить негде, если вдруг фирма мне его купит — это ещё винду нужно покупать, для задач которые возникают реально раз в год. Ставят мне задачу выгрузки из софта в Excel данных — я буду искать библиотеку работы с Excel, чтобы сделать в софте модуль выгрузки. Ставят мне задачу выгрузки в CSV — сделаю модуль выгрузки в CSV, если стандартной библиотеки не хватит. Чисто в теории я могу сделать выгрузку результатов SQL-запроса в Excel, вместо разработки модуля выгрузки, но это не входит в мои обязанности как разработчика, и не входит в круг моих профессиональных знаний — мне нужно будет проводить исследование того, как обычно это делается. Возможно устанавливать какие-то дополнительные инструменты, возможно запрашивать приобретение лицензий на Windows и Microsoft Office, возможно запрашивать создание учётки на сервере с СУБД (MySQL, например, поддерживает нативно экспорт в CSV, но естественно файлы пишет на ФС сервера, на который штатно доступа у меня нет, только к СУБД как таковой), а возможно лишь Ctrl+A и Ctrl+C в IDE, которой я пользуюсь для отладки запросов, Alt+Tab на текстовый редактор, Ctrl+V и Ctrl+S и всё. Для меня по сути задачи «выгрузка в Excel», «выгрузка в 1С», «выгрузка в IBM Notes» равнозначны, разве что я откуда-то знаю, что Excel — это файлы формата xsl, о котором я знаю только то, что это формат электронных таблиц от Microsoft. Кажется бинарный и закрытый.
Также в процессе произошла подмена понятий разработчик -> программист (в вашей интерпретации чуть ли не кодер).
В принципе ваша точка зрения понятна, вы четко обозначили свою роль и все риски переложили на других людей.
В целом выходит ситуация из анекдота «Сколько программистов нужно, чтобы вкрутить лампочку», когда, чтобы достать данные из БД в человеко-читаемый формат нужно минимум 4 человека.
Сейчас там вроде xlsx. Кажется небинарный и открытый.
Почитайте спеку на досуге. Он формально набор xml'ей в zip архиве, но реально довольно похож на старые OLE2'шные бинарные форматы. Или, если хотите нормально спать, не читайте.
И его открытость, к сожалению, только на бумаге. На деле часто выясняется, что реальные форматы word/excel отличаются от спеки.
Если говорить не о чтении, а о записи данных (формировании xlsx-файла с нуля), то реализации Apache POI (там их две, кстати) обычно хватает за глаза… Это что касается java, для других языков — не интересовался, подсказать не могу...
PS сорри за некропост :)
Там, что в HSSF, что в XSSF проблем выше крыши. Посмотрите в их багзиллу и dev@poi.a.o, если интересно.
Вообще, на простом экспорте (когда можно обойтись csv или его чуток не хватает), вы проблем, скорее всего, не встретите. А при использовании формул, разных хитрообъединенных ячеек и, например, условного форматирования нарваться на corner case проще простого. И это при том, что Apache POI, пожалуй, самая зрелая и полная из библиотек для работы с форматами MSO.
Ставят мне задачу выгрузки в CSV — сделаю модуль выгрузки в CSV, если стандартной библиотеки не хватит. Чисто в теории я могу сделать выгрузку результатов SQL-запроса в Excel, вместо разработки модуля выгрузки, но это не входит в мои обязанности как разработчика, и не входит в круг моих профессиональных знаний — мне нужно будет проводить исследование того, как обычно это делается.
Задачу вам ставят — написать sql запрос, результаты которого можно будет потом скинуть в эксель. Если у вас какой-то опыт работы вообще есть в отрасли, вы знаете, что результат запроса можно будет средствами клиента СУБД скинуть в csv, а csv эксель умеет читать. Об этом вы и расскажете менеджеру. Менеджер договорится с админом, чтобы он сделал из вашего запроса csv, а потом сделает из него нужный эксель. Конечно, если менеджер с опытом, он всё это уже знает и рассказывать ему ничего не придётся. Но запрос всё равно надо будет написать, да.
Хм… и куда экономист должен воткнуть эти SQL-запросы?
Господа гусары, МОЛЧАТЬ!!!
М: Мне завтра надо. И вообще это — однократная работа. Выгрузи уж как нибудь вот эти и вот эти столбцы.
Вот такая однократная работа очень часто превращается в – «а помнишь ты мне выгрузку делал, надо повторить. Только …».
Уважаемый автор, а есть ли перевод сего великолепного произведения на английский язык? Хотелось бы поделиться.
“Направить в отдел стратегического планирования для подготовки ТЗ — Иегова”
Генеральному директору Иегове
от начальника отдела стратегического планирования Михаила
В целях снижения себестоимости системы предлагаю запитать оба светила от одного источника энергии, а кислород заменить азотом.
“Хотя бы 50% кислорода надо оставить, а то пользователь задохнется — нач. отд. тестирования и техподдержки Рафаил”
“Хватит и 25% — Иегова”
Генеральному директору Иегове
от начальника отдела системотехники Люцифера
В ходе работ по проекту Genesis (стадия “Да будет свет”) выявлены следующие трудности: у нас отсутствует компактный источник бесперебойного свечения с распределителем на два светила. Предлагаю воспользоваться стандартным источником типа “красный карлик”, а в качестве ночного светила применить зеркало.
Напомнило бессмертное — «Сотворение мира»
http://mif33.spybb.ru/viewtopic.php?id=302
Эка как у вас наболело, однако)
Пьеса «Технический долг»