Программистское мракобесие
May. 3rd, 2009 04:08 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я почему-то думал, что когда 10 лет толпой людей разрабатывают сложные системы, там не делают так, как я - держа все знания по проекту только в виде кратких текстовых набросок по поводу архитектуры, часть информации в голове(чтобы можно было проектировать в уме в любое время), и основную часть - в виде структуры проектов и кода в системе контроля версий.
А вот оказывается, что так и делают:
К этому моменту я выкинул все свои диаграммы классов, за ненадобностью – зачем на них смотреть, если они давно уже в голове?
А вот оказывается, что так и делают:
К этому моменту я выкинул все свои диаграммы классов, за ненадобностью – зачем на них смотреть, если они давно уже в голове?
no subject
Date: 2009-05-03 01:56 pm (UTC)no subject
Date: 2009-05-03 02:08 pm (UTC)no subject
Date: 2009-05-03 02:48 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-05-03 01:57 pm (UTC)Начиная с CMM 3, каждый проект ведёт массив проектной документации в инфраструктуре, есть процедуры по поддержанию и т.п.
no subject
Date: 2009-05-03 01:58 pm (UTC)no subject
Date: 2009-05-03 06:49 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-05-03 02:32 pm (UTC)no subject
Date: 2009-05-03 02:45 pm (UTC)Но больше всего рулит понятно написанный, хорошо структурированный, и по делу комментированный код, с содержательными комментариями к коммитам. Сюрприз, правда? :) Если этого нет, то можно удокументироваться до полусмерти, толку все равно будет ноль. А если есть - то документирование добавляет незначительное количество ценности.
no subject
Date: 2009-05-03 03:03 pm (UTC)У нас зачастую бывает как раз наоборот. Сам IBM PC появился в результате того, что соответствующую группу в IBM освободили от необходимости следовать внутрикорпоративным процессам, "с целью ускорения разработки". Что уж тут говорить :).
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: (Anonymous) - Date: 2009-05-06 10:07 am (UTC) - Expand(no subject)
From:(no subject)
From: (Anonymous) - Date: 2009-05-06 11:21 am (UTC) - Expand(no subject)
From:no subject
Date: 2009-05-03 03:24 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2009-05-03 04:58 pm (UTC)no subject
Date: 2009-05-03 05:48 pm (UTC)Если цель документа - зафиксировать общее понимание некоторых вещей в группе людей - хорошо. Кто будет читать - понятно, цель - понятна, решаемая проблема - понятна, способ использования понятен, и самое главное, понятен срок актуальности и жизни документа - в топку его после того, как все закодировано в соответствии с пониманием. Вернее сказать, в архив. Вряд ли кто-то его еще раз откроет.
Если самому не забыть - то можно в свободной форме, на листочке писать закорюки. Даже лучше.
А вот писать документ непонятно для кого, который неизвестно, кто и когда будет читать - трата времени.
no subject
Date: 2009-05-03 06:59 pm (UTC)Трудно даже за актуальностью _названий_ методов уследить. Параметры, их назначение и выходные данные - про это вообще молчу.
Насобачился "точки входа" документировать и краткое содержание (без деталей в какой последовательности внутри всё вызывается).
Полезно "список features" иметь.
Некоторые "диаграммы классов" самому очень хочется "выбросить". Продерёшься сквозь дебри - и оказывается, что ничего полезного не узнал.
С удивлением обнаружил, что сам работаю по СММ минимум третьего уровня. Просто по-другому самому неприятно.
+1 к "документировать идею". Причем, подписываюсь, что документирование занимает больше времени с момента как только идея продумана до состояния "готово к кодированию".
no subject
Date: 2009-05-04 07:41 am (UTC)no subject
Date: 2009-05-03 07:10 pm (UTC)ЗЫ. В этом плане поучительна книга Фаулера УМЛ Дистеллед на фоне фолиантов и справочников от Бутча и Ко:)
кстати
Date: 2009-05-03 08:51 pm (UTC)а) Иллюзию заменяемости исполнителя.
б) Недовольство замедленными темпами разработки.
Результат очевиден. ;)
Re: кстати
Date: 2009-05-03 11:18 pm (UTC)Булшит. Начальство занимается доками не потому, что хочет людей заманать. А потому что иначе всё упадёт до уровня советских минских НИИ.
Re: кстати
From:Re: кстати
From:Re: кстати
From:Re: начальство -- дураки, занимаются дуростью
From:Re: кстати
Date: 2009-05-04 07:08 pm (UTC)no subject
Date: 2009-05-04 04:57 am (UTC)no subject
Date: 2009-05-04 05:52 am (UTC)no subject
Date: 2009-05-04 09:47 am (UTC)В целом же правило такое - чем выше уровень программы (или более обще - чем больше совокупная сложность модуля), тем более развёрнутый должна быть документация. Зависимость практически линейная, за исключением хитрых хаков на низком уровне.
no subject
Date: 2009-05-04 11:26 am (UTC)Совсем нетяжело и невредно если руководитель тима программеров перед кодированием опишет что и как они собираются делать, и совсем неплохо если каждый программер перед кодированием опишет аналогичто что он собрался делать и после кодирования проапдейтил. Подробности - в коде, а в общем будь любезен в документик. Это не больно, а вносит порядок.
no subject
Date: 2009-05-04 07:10 pm (UTC)no subject
Date: 2009-05-05 05:05 pm (UTC)Мой пост не является призывом не писать никаких документов, он вообще о другом. Но раз уж зашла речь о документах, могу внести пояснения. Документация и документирование - не цель, не решение проблем, это средство. Которое в целом, очень плохо подходит для решения описанных проблем. Почему так.
1) Завязанность компетенции на единичные ключевые фигуры никак не связана с наличием и отсутствием документации. Вообще. Документация - не единственный и во многих случаях не лучший способ передачи знания. Лучшая защита от такой ситуации - поддержание как минимум двух человек на каждой теме, и налаживание среды для передачи знаний. Например, этому способствуют практики design review, имея передачу знаний своим побочным эффектом.
2) Если пропущен пункт 1, то проблемы будут точно, ибо наличие документации само по себе никак не поможет при уходе ключевых фигур. Во-первых, спагетти-говнокоду не поможет никакая документация. Во-вторых, эта документация никогда на практике не соответствует коду, поэтому она практически бесполезна. Поможет только хорошо написанный, и понятно структурированный, и по делу комментированный код, и соблюдение дисциплины работы с VCS - содержательные комментарии к коммитам критичны. Наличие перечисленного, в свою очередь, также никак не связанно с наличием или отсутствием описательной проектной документации, и определяется наличием coding standard, практики перекрестного code review, и практики design review.
Ваша позиция является следствием убеждения, что факта документирования достаточно для надежной передачи знаний. Это не работает на практике на "живых" проектах, у которых поддержка идет одновременно с разработкой (про что я рассказываю) - документация стремительно устаревает, практически всегда out of date, и кроме того, ее мало кто читает. Кроме того, это просто не главное - в реальности упомянутые факторы связываются с наличием документации исключительно искусственным образом.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:pt. 2
Date: 2009-05-05 05:06 pm (UTC)Опять же, наличие предварительного проектирования никак не связано с наличием или отсуствием документов. Проконтроллировать факт его наличия вы можете только проведя design review, а не факт наличия документа, а review во многих случаях можно провести без документа, в форме семинара с докладом у маркерной доски. От чего ему, review, станет только лучше.
Писать документ необходимо только в случаях, если документ фиксирует договоренность группы людей о чем-то, иои проходит процедуру design review, на предмет вылова ошибок. Срок жизни этого документа не превышает срока актуальности этой договоренности, а во втором случае, после дизайн ревью им вообще пользуется только автор.
Важным является следующее - кто и как пользуется документами. Не понимая этого, их не имеет смысла вообще писать.
1) Документы первого вида не имеет смысла поддерживать после того, как договоренность потеряла смысл - они теряют ценность. Как следствие, например, документы-спецификации внутренних интерфейсов живут до фазы интеграции, после чего по факту не поддерживаются, ибо уже нафиг не нужны. Действие, ради которого нужна была договоренность - то есть написание кода группой лиц по предварительному сговору - совершено. Все.
2) Документ второго вида вообще не имеет смысл поддерживать в актуальном состоянии, у него четко определенная цель.
На практике, так все и происходит, и именно поэтому вы НИКОГДА не увидите актуальной документации на живом проекте в развитии и поддержке, если она не генерируется из кода. Касательно документации по уже существующему коду, ее дешевле (и на самом деле, это вообще единственный работающий на практике способ) получать из самого кода автоматически. Для C/C++ используйте doxygen. И это и будет как раз тот самый случай, когда код - лучшая документация, ибо doxygen-документация и есть не более чем специальным образом комментированный код. Просто кому-то приятнее его смотреть в браузере - что на самом деле не принципиально.
Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From:Re: pt. 2
From: