Демагогия, казуистика и мощный подгон статистики.

Январь 22nd, 2010

Сегодня у меня тема не о бизнесе и не о деньгах.

Один из моих любим блогеров — это Фриц Морген. Правда, если есть блоги которые я читаю для получения информации, просто расслабления, то его блог я читаю для того чтобы немножно размять мозги и потренировать логику.

В чем он безусловно мастер, так это в демагогии.  Ловко подбирая факты и сгиная логику в нужную ему сторону, он легко меняет черное и белое местами.

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

Кстати, если вы любите логические задачки, зайдите к нему на последнюю статью «Оливер Курников» и напишите сюда в комментарии, ваше решение, по поводу того, где были разрывы.

P.S. Да кстати, под разрывами я понимаю то, когда идет подтасовка фактов, вывод не основан на фактах и т.п. трюки, которые могут быть плохо заметны на первый взгляд.

Хороший или Гениальный программист.

Январь 19th, 2010

Мысль из сегодня обсуждения… Плюс навеяно обсуждением книги Good to Great.

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

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

Слава богу, за свой опыт я не слишком часто с такими сталкивался 🙂

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

Подведем простой математический расчет. Естественно все цифры взятые с потолка, если вам они не нравятся, подставьте свои.

а) Не ходить на работу и пользовать это время на программирование. (+10% дополнительного времени).

б) не писать документации (+5% дополнительного времени).

в) не обучать других программистов (+10% дополнительного времени)

г) не менеджить других программистов (+15% дополнительного времени)

д) отсутствие отчетности отчетности (+5% времени)

е) отсутствие необходимости согласовывать решения (+5% времени)

е) не присутствовать на всех митингах (+10% дополнительного времени)

д) отсутствие переключения между задачи (+30% эффективности).

е) отсутствие прерываний работы другими людьми (+30% эффективности)

Итого уже накапало 50% дополнительного времени и 60% увеличение эффективности. То бишь, продуктивность возросла в 2.4 раза. Думаю, если покопаться и выписать более полный список того, что НЕ делает гениальный программист, то вполне разность продуктивности может получаться и в 3-4 раза (отсюда и выходит, что хороший программист делает 3 месяца, а гениальный вадает за 4 недели).

А теперь на секунду остановитесь и задумайтесь. Хорошо ли для компании такое увеличение продуктивности в 4 раза? Если вы ответили «Да», то вам двойка в четверти по бизнесоведению 🙂

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

Есть такая штука «technical debt». Это когда написал код на скорую руку и решил, что потом его приведешь в божеский вид, но потом как-то не наступило и код продолжает пользоваться/изменяться/дополняться. С каждым днем его становится все сложнее поменять и все больше времени уходит на его поддержание. То есть мы сделали что-то быстрее взяв в долг, но долг не выплатили и него начали расти проценты.

Аналогично,  можно, ввести понятие «process debt», когда что-то делается без учета уже действующих правил (а-ля документирование, обучения людей и т.п.).  Взять такой долг на короткое время вполне можно, но постепенно он накапливается (остальные разработчики не знаю тех частей, которые написаны гениальным программистом, не возможно предсказать даты выпуска продукта, так как нету никакой отчетности, время поддержки кода растет из-за отсутствия документации, обсуждений по ходу разработки и т.п).

В целом, Гениальных программистов в Бабруйск, даешь хороших программистов.

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

P.P.S. В еще нескольких комментариях началось обсуждение, как называют этих программистов. Предложенные варианты «Гики», «Хакеры». В целом, пусть хоть горшками (не чайниками) называют. Важно то, что с точки зрения множество людей в компании эти гении/гики/хакеры более (или по крайней мере не менее) полезны чем хорошие программисты выполняющие гораздо больший спектр задач.

Внутренняя мотивация.

Январь 15th, 2010

И все таки ключевое и единственное в конечном счете отличие хорошего от плохого работника — это внутренняя мотивация.  Если она есть, то и опыт и умения наберутся, если ее нет — то пиши пропало.

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

Персональные инвестиции (часть 2).

Январь 4th, 2010

Есть такое дело, что каждый следующий доллар ценится человеком все меньше. То есть, имея всего $10, для нас еще один доллар будет казаться большой суммой, имея $100, мы будем уже относится к нему как к небольшой сумме, а имея $10k, нам он будет казаться просто мелочью.

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

Но, я в целом хотел не об этом поговорить, а о то, что в Украине я обнаружил, что в банках дают 8% на долларовые вклады. По сравнению с 1.5% под которые у меня деньги лежат в банке в штатах. Сразу возникает вопрос, а почему бы их не переложить в Украину. Естественно, есть неудобство с пользованием, но их вполне можно превозмочь за дополнительные 6.5%. Есть правда вторая особенность, в Украине банки раз в некоторое время лопаются. Последний раз по крупному это как я понимаю происходило лет 10 назад, но в целом это не так давно, чтобы не принимать эту возможность в учет.

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

Пусть:
X — вероятность разорения банка (в год).
YUkr — процентная ставка по вкладу в Украине
YUSA — процентная ставка по вкладу в Штатах
S — сумма нашего вклада.

В конце года у нас есть две вероятности
Наша конечная сумма равно нулю (случая вылета банка) с вероятность X или S+S*YUkr (равно S*(1+YUkr)) с вероятность (1-X).

Итого, имеет мат. ожидание 0*X + S*(1+YUkr)*(1-X) = S*(1+YUkr)*(1-X)

Ну и мы хотим, чтобы эта цифра была больше чем S*(1+YUSA).

Имеем

S*(1+YUkr)*(1-X) > S*(1+YUSA)
YUkr > (1+YUSA)/(1-X)-1

В целом для моих YUSA = 1.5% получаем

YUKr > 1.015 / (1-X) — 1.

И вот график сделанный СОТОНОЙ:

Вопрос правда, что дальше делать с этой формулой? Ведь вероятность вылета
банка мы не знаем. Но, просто, для примера приведу три значения

X = 5% (на 10 годах, вероятность вылета составит 40%), YUkr > 6.8%
X = 7% (на 10 годах, вероятность вылета составит 52%), YUkr > 9.1%
X = 10% (на 10 годах, вероятность вылета составит 66%), YUkr > 12.7%

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