fisher (raa) wrote,
fisher
raa

Categories:

Хочешь управлять - измерь


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

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

Попался мне русский перевод книжки Стива Макконела, "Остаться в живых". Мне настолько понравилось название, что я купил, не раздумывая. Ну нравится нам быть камикадзе, интересно быть камикадзе, камикадзе, камиказде, какое же охуенное слово, нравится говорить о том, что мы камиказде, писать о том, что мы камикадзе, особенно если в данный момент времени я не хочу бросить всё к чертовой матери, потому что как же это, блядь, заёбывает - быть камиказде. В-общем, остаться в живых - это про нас, сработало стопроцентно, купил. Человек известный, слышал раньше про его Сode Сomplete, но правда ни хрена не читал.

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

В-общем, надо идти и говорить начальству "ой". Ещё недели две-три приплюсовать к оговоренным срокам, а иначе совсем нельзя. Ну и разговор обещает быть совсем неприятным, но идти-то по-любому надо. Надо как-то подготовиться. А говорить-то в-общем нечего, разве что старую песню петь про "ну вот, баги, недоделки, давайте чуть отодвинем, зато более качественно все сделаем". Но это ж детский сад, правда. А все фичи-то ведь сделаны, вот ведь ещё что. Визуально всё работает. Причем можно было бы что - ну плотность новых багов посчитать, но релиза-то ещё никакого не было, соответственно каждый девелопер помимо централизованно раздаваемых тасков ведёт какой-то свой список, причем часть этого списка вообще в башке этого самого девелопера, и выудить её оттедова надо ещё очень постараться. Короче, где-то конечно, может, и мой промах, но факт остается фактом - может получиться, мягко говоря, некрасиво. Грубо говоря, жопа.

И тут сплывает в мозгу эта кривая роста проекта. Хо-хо, думаю я, это ж как два байта об асфальт. Че я делаю. Пять минут "гугления" и нахожу чудесный проект, называется cvsplot. Берем и строим такую вот кривую (спасибо Тренту, торжественное первое измерение проекта выполнил именно он).




Это зависимость числа строк кода в проекте от времени (красная) и числа файлов в проекте (зеленая). Разумеется здесь учтен только программный код, без всякого сопутсвующего хозяйства типа шаблонов. График получается ну просто классический. И что я вижу,
ну точно - мы аккурат в самом конце фазы активного девелопмента, едва приходим к фазе "насыщения", после которого код расти почти не будет, ну просто потому что мы будем активно всё тестировать и править баги. Хочешь, не хочешь, а в этой точке более менее понятно, что в течении такого-то времени запускаться нельзя, и менее более - когда примерно будет можно, опять же, исключительно из общих физических соображений. По этому графику - как раз около месяца, цифра эта, конечно, не с потолка но почти, её можно определить "полушириной" фазы активного девелопмента, и если код тестируется в процессе - то можно рисковать и брать оценку ещё меньше. Опять же, это мои оценки на опыте средних и небольших (но не совсем уж крошечных) подзадач: делить фазу активной разработки на 2 и вероятнось того, что все основные баги будут найдены в это время, довольно велика. Короче, кто-то ставит эту фазу в 15% от времени всего его проекта. Кто ещё как - не суть, это все магия, очень сильно меняется от усложности ПО и условий обкатки и тестирования кода в процессе. Но что важно. Просто абсолютные цифры строк кода почти никогда ничего не дадут. Но когда мы на все это хозяйство смотрим в "динамике" - это всегда полезно. Вы видите все фазы. Все очень неплохо коррелирует с тем, как живет проект.

Самое смешное. Посмотрел я на график. Убедился, что прав. Показал ребятам, говорю, чуваки, всё супер - ещё чуть-чуть. А начальству и не показывал толком. Не, ну показал так, предварительно, невзначай, ну и как-то вообще никак, не понял я, что поняли меня. Короче, кончилось тем что просто говорю - товарищи, хотите режьте, нельзя и всё, fisher сказал, и неебёт. Ну, поскандалили, конечно. А потому что чё им эти графики. Вот, скажут, сволочь хитрая, снова отговорку выдумал.

А теперь самое несмешное. Недавно я построил ещё одну кривую - на большем масштабе. Она не кривая. Она почти прямая, черт подери. И кода уже три сотни тысяч строк. Но ничего, мы прорвёмся ;)
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 18 comments