Семен ([info]sim0nsays) wrote,
@ 2009-05-04 00:26:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:books, tech

Reflections on Peopleware - Part 1
Пока Windows7 неумолимо движется к завершению (FTW), на работе спадают страсти, свирепствует грипп, а погода меняется от замечательной к обычной, я сижу дома и читаю книжки. Я теперь почти везде читаю - аудиокнижки завоевывают жизнь в автомобиле и оттуда осаждают спорт и быт.

Вот, например, я несколько месяцев назад таки осилил классику софтверного project management - Peopleware ДеМарко и Листера.

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

Давайте я очень тезнисно эти мысли запишу и попробую прорефлексировать с точки зрения устройства вещей в MS. Если заодно и вы свои мысли выскажете, то значит совсем не зря книжку прочитал - азбучные вопросы обсуждать очень полезно.


Первая часть - про сравнение софтвера с традиционным производством.

Говорят очевидные вещи - что development очень отличается от production (у нас, слава богу, стоимость production нулевая), процессам вредит излишняя стандартизация - главная задача исполнителя думать, нельзя процессами компенсировать работу мозга.
Уточняют отличия - спокойнее относиться к ошибкам, так как все новое и многое не узнать, пока не попробуешь; не помогает людей пинать, потому что от пинков быстрее думать не начинаешь; заменять людей очень тяжело, медленно и дорого.

Что тут сказать... well, duh (но надо помнить, это книжка 1987 года).

Следующий набор мыслей про последствия давления на людей:
- овертайм _всегда_ приводит к такому же или большему undertime - т.е. люди как минимум такое же количество времени работают менее продуктивно. Это легко не заметить.
- у овертайма есть долговременные последствия - жизнь проходит мимо
- с трудоголиками нужно очень осторожно - если додавливать до предела, то рано или поздно сгорят с концами
- самое дорогое последствие овертайма - как влияет на текучку кадров. Пишут, никто не даже не пытается оценить этот фактор.
- People under time pressure don't work better, they just work faster.

В Windows (да и вообще в MS) в этом смысле все очень хорошо. У меня за два года кранчи случались всего пару раз и длились не больше недели, менеджеры не наседают и почти никогда не предлагают поработать по выходным. У меня был тиммейт, который именно поэтому пришел в MS из геймдева и даже не думал обратно.
С другой стороны, если ты сам хочешь въебывать - сколько угодно, и если у тебя получается продуктивно - это конечно окупается. То есть, прецеденты, когда отсутствие жизни очень помогает в карьере, я видел. Видел хорошие карьеры и без этого, впрочем. Что логично - если получается больше делать, это приемущество, но надо еще знать что.


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

Я прям не знаю. Я очень хорошо вижу, что в Windows (и, по рассказам, в Office) от размера проекта и очень высокого качества кода (да-да, очень высокого) все очень медленно. Багфиксинга - более 50% времени разработки, чинить один баг в день - хорошо, а два - подвиг. Тест-команда такого же размера и квалификации, что дев - ибо полностью покрывать Windows автоматическими тестами.
С другой стороны, быстрый билд, очень мощный отладчик, тулзы для code review и прочее-прочее. Может, если изначально туда бы не целились, и вообще бы не взлетело. Возможно, они хотят сказать, что нужно инвестировать в инфраструктуру дальше, чем на сейчас.
А у вас есть мнение?


Последний их тезис на сегодня - Parkinson's Law revisited.
Все знают, что такое закон Паркинсона - работа занимает все выделенное на нее время, вне зависимости от его количества.
Они считают, что к нам с вами он не применим, потому что мы в основном получаем удовлетворение от сделанной работы и понимаем, что жизнь коротка, и хочется многое успеть. Считают, что если в хорошей команде кто-то никак не может что-то закончить - это чаще не из-за лени. И даже когда из-за лени - то лучше если пинают товарищи по команде, чем менеджер.
(я уже говорил, что это светлая и добрая книжка?)
Приводят некие исследования, в которых измеряется продуктивность в зависимости от установления срока. Хуже всего, когда срок оценивает менеджер (и он получается самым маленьким), лучше - когда сам, еще лучше - когда без оценки.

Про слабую корреляцию агрессивного дедлайна/пинания жопы с производительностью - я согласный (что через вопросы "как там?", что через менеджерское дилдо). С возрастом я скорее более прямо говорю "нет, это займет вот столько" и "я тут проебал, надо больше времени" и на пинки реагирую все спокойнее. (Джоэль, кажется, об этом же пишет)
Важный момент, мне кажется - дело скорее не в распиздяйстве, а в размазывании фокуса, т.е. когда начинаешь много тратить времени на необязательные возникшие проблемы. Но опять же, это не вылечить наличием дедлайна - это опыт, это "узнавать о проблеме рано и поправлять расписание".
Одним словом, не верю я в мотивацию сроками, но верю, что помогает фокусу.


Crossposted to blog.gamedeff.com




(25 comments) - (Post a new comment)


[info]cd_riper
2009-05-04 07:40 am UTC (link)
"качество против времени" очень важный фактор.
хороший разработчик должен любить свой продукт, это главный источник мотивации.
а если все бегом и в кось, и криво -- никакого удовольствия от процесса, неудовлетворенность etc.

(Reply to this)


[info]alll
2009-05-04 08:41 am UTC (link)
> Я прям не знаю. Я очень хорошо вижу, что в Windows (и, по рассказам, в
> Office) от размера проекта и очень высокого качества кода (да-да, очень
> высокого) все очень медленно.

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

> Может, если изначально туда бы не целились, и вообще бы не взлетело.

Именно так.

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 09:34 am UTC (link)
Дьявол, скотина, в деталях. Хрен его знает, где эта точка, никто ничего не знает какие там функции и полиномы.

Истории остается рассказывать.

(Reply to this) (Parent)


[info]sozy
2009-05-04 09:25 am UTC (link)
Тут такой момент существует: есть "безбюджетные" разработки - это когда внутри компании можно ковырять проект и денежку свою получать, а есть с внешним финансированием - это когда издатель/инвестор этапы принимает или не принимает и денежку дает или не дает.

Кранчи полезны временами, т.к. расслабленность с людей снимают, но результат от кранча должен быть очевиден. Если результата нет – то демотивация будет.

Про качество, задаваемое индивидуумом, совершенно точно – зачастую выше, чем нужно.

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 09:34 am UTC (link)
А раскрой подробнее, чем отличаются безбюджетные разработки от, в смысле менеджмента? Т.е. по мне, все равно надо майлстоуны и отсечки назначать, иначе нихера не сделать.

Про кранчи как профилактику - у меня со словом кранч ассоциируется месяц без выходных по 10+ часов в день. Крутовато как-то, чтобы без необходимости.
У нас расслабленность снимается интеграцией при окончании майлстуона :)

(Reply to this) (Parent)(Thread)


[info]sozy
2009-05-05 04:57 pm UTC (link)
"безбюджетные" отличаются в подходе. В качестве (и так сойдет) и точности (примерно похоже на правду) планирования.

Месячный кранч это жестко. Я имел ввиду кран максимум на неделю, так сказать, рывок :) С выходными, но ударно и часов по 10 в день да.
Видимо, это то, что ты назвал интеграцией.

(Reply to this) (Parent)


[info]todace
2009-05-04 12:09 pm UTC (link)
death march читал?

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 04:38 pm UTC (link)
Ага. У меня, кстати, не отложилось что он там за "quality vs time" рассуждает.

(Reply to this) (Parent)(Thread)


[info]todace
2009-05-05 12:23 pm UTC (link)
я читал давно, по воспоминаниям - там о том как влияют кранчи, откуда берутся, какая от них польза и вред, и тд.
Что связано с твоим посто вроде.

(Reply to this) (Parent)


[info]streamfighter
2009-05-04 03:51 pm UTC (link)
как ПМ с 10-ним стажем, могу тебе разложить как и чего на сегодня, если тебе интересно. книги часто сосут, как и многие академические творения - практика мэйкс ол зе дифференс. хотя ПМ практики в МС немного другие чем где-либо, но уверен, что суть одна.

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 04:34 pm UTC (link)
Я думаю, мы с тобой про разные книги, но я бы с удовольствием послушал твое мнение.
Чтобы конкретнее и не пытаться объять необъятное - выскажись по тем вопросам, что жирным шрифтом?

(Reply to this) (Parent)(Thread)


[info]streamfighter
2009-05-05 01:45 am UTC (link)
не, можем перетереть за рюмкой кофе...на столько букв меня не хватит, аффтор :)

(Reply to this) (Parent)


[info]badcoder
2009-05-04 05:04 pm UTC (link)
"последствия давления на людей"
А я люблю когда на меня "давят" ) это не улучшает моего кода, не заставляет что-то делать быстрее (т.к. я и так стараюсь все делать наиболее быстро и качественно), но зато это дает, так для меня важное, ощущение Нужности...т.е. я начинаю чувствовать, что это действительно кому-то надо и это знание поддает доп. сил, остроты и хорошего кодерского куража....
Гораздо хуже, когда ты решаешь что-то по-настоящему сложное, тратишь кучу своих нервов и сил, но это никто не оценит и не поймет, отнесется как данность и забудет после митинга...

(Reply to this)


[info]maratyszcza
2009-05-04 05:45 pm UTC (link)
Быстрый билд — это сколько в минутах?

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 05:53 pm UTC (link)
Мой компонент (dxgi.dll) - около полминуты-минуты (на quad core, правда)
d3d9.dll - также.

Вся винда, конечно, долго, в ней таких dll очень много.

(Reply to this) (Parent)


[info]zmaks
2009-05-04 06:37 pm UTC (link)
Размышлять и строить теории на эти темы можно долго, поэтому здесь просто приведу свой опыт...
1. Ага
2a. У меня такое случилось один раз - нужно было срочно QFE выпускать для двух фич. Где-то месяц до 10 часов. Но работа была нужная, свое за это получил, поэтому демотивации не было. Во все другое время сроки строятся из реальных оценок без овертаймов.
2b. В предыдущей конторе тоже менеджмент очень и очень вменяемый, но, тем не менее, в режиме гонки иногда приходилось жить долго. Изматывает...
3. Согласен. Ну уверен. Сложно сказать - с одной стороны мотивирует (сильно), когда твоими фичами начинают пользоваться и идут хорошие отзывы. Но если акцентировать на "вне необходимого", то скорее нет, чем да. Т.е. иногда лучше сделать больше полезных фич в этом случае.
4. Это сильно коррелирует с пунктом 2 - долго жить в режиме overdue сложно, а если используется другой подход, то если задать более ранний дедлайн, то это просто приведет к меньшему количесту фич, запланированных на самом раннем этапе, и потом уже этот список будет сложно изменить. Так что я за реальные дедлайны.

(Reply to this)


[info]109
2009-05-04 06:57 pm UTC (link)
joel: ebs, может быть, может как-то работать, если делать то же самое всё время - иначе откуда evidence? а как часто мы делаем то же самое? а планирование с точностью до часа - вообще за гранью добра и зла.

(Reply to this) (Thread)


[info]sim0nsays
2009-05-05 04:59 pm UTC (link)
Я скорее не про EBS как таковой, а про общие мысли в дополнительной секции

> 1) Only the programmer doing the work can create the estimate.
> 2) Fix bugs as you find them, and charge the time back to the original task.
> 3) 3) Don’t let managers badger developers into shorter estimates.

(Reply to this) (Parent)


[info]larugo
2009-05-04 08:13 pm UTC (link)
осилила! мало того, даже почти поняла!:)

(Reply to this) (Thread)


[info]sim0nsays
2009-05-04 09:03 pm UTC (link)
Ах, я на тебя плохо влияю....

(Reply to this) (Parent)


[info]dennyrolling
2009-05-04 10:36 pm UTC (link)
** У меня за два года кранчи случались всего пару раз

Это нам сейчас везет. Почитай Showstopper! (про первую нт) да и с 2000 были что надо death march-es

(Reply to this) (Thread)


[info]sim0nsays
2009-05-05 04:56 pm UTC (link)
О-о-о-о-о, а чо, это тру книжка?
Т.е. ей верить можно?
Если да, то обязательно заценю.

(Reply to this) (Parent)(Thread)


[info]dennyrolling
2009-05-05 08:11 pm UTC (link)
хрен знает :) может и врет, но уж больно правдоподобно.

(Reply to this) (Parent)(Thread)


[info]sim0nsays
2009-05-05 09:57 pm UTC (link)
Надо старожилов спросить чтоле.

(Reply to this) (Parent)


[info]psilogic
2009-05-05 03:49 pm UTC (link)
На уровне group leaders нужны и сроки, и дидлайны. А на уровне отдельных кодеров - индивидуальный подход group leader-а. В том числе и сроки, если какой-нибудь персонаж любит хуем груши околачивать. Без волшебного пендаля тогда никак.

Как уж там GL организует, чтобы получить суммарный результат к заявленному сроку - это его головная боль.

(Reply to this)


(25 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…