Система контроля версий, багтрак и wiki

Автор: Алёна С++
Этот пост я начинала писать еще давно, начала с системы контроля версий и в итоге сделала про них отдельный пост - уж больно много получилось. Сейчас я хочу закончить начатое.

Система контроля версий + багтракинговая система + wiki с документацией - это минимальный набор инструментов, необходимый для эффективной работы над проектом. Эта информация обычно не является ни для кого откровением. Все и так об этом знают. Это те самые 'все', которых очень мало и которых можно встретить только по большим праздникам. Потому что если у вас в компании все и так активно пользуются этими инструментами, то у вас вызовут недоумение люди, которые ими пренебрегают. На самом деле проектов, в которых нет вообще даже системы контроля версий - полно. Большие проекты при этом разрабатываются. Отговорок почему не используется что-либо из вышеперечисленного полно.
Целей у этого поста две. Рассказать новичкам зачем все это нужно и переубедить сомневающихся. Ибо отказ от этих полезных инструментов ведет к потере времени и денег.
Системы контроля версий
Про системы контроля версий, как я уже сказала, у меня есть отдельный пост, поэтому кратко. Сейчас в моду входят распределенные системы контроля версий, я чаще всего слышу названия Bazaar, Mercurial, git. На самом деле неважно какую систему контроля версий использовать, главное, чтобы она нравилась разработчикам. Основное правило работы - частые небольшие атомарные коммиты, по одному коммиту на одно логически законченное изменение кода. Не получается так - неприятно, но не критично. Главное, чтобы система контроля версий была в принципе. Отсутствие системы контрля версий приводит к зоопарку бэкапов.

Варианты, которые мне встречались в реальных проектах
MyProject.backup
MyProject.backup.old
MyProject.backup.older
MyProject.backup.oldest

Или
_MyProject.backup
__MyProject.backup

Для Windows разработчиков характерна такая картина
Copy of MyProject
Copy (2) of MyProject

Ну и вот еще варинция на тему
MyProject.oo1
MyProject.oo2
MyProject.oo3

Вспомнить в каком бэкапе какие изменения были сделаны уже никто не может.

Багтракинговая система
Наиболее известные
BugZilla - пожалуй самая популярная. Не очень юзабельный интерфейс, а так ничего
JIRA - тяжелая бюрократическая система
TaCo - не очень известная, но я ей пользовалась, потому решила про нее вспомнить

Вместо багтракинговой системы периодически используются
- Excel или .doc файл (sic!)
- текстовый файлик (sic!)
- мятые бумажки со следами от кружек (sic!)
- и 'я запомню' (все рыдают)

Я работала со всеми этими вариантами. Любая багтракинговая система лучше любого из этих вариантов.

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

Документация в wiki
Я в восторге от wiki и считаю ее лучшим помощником в написании документации. wiki буквально провоцирует программиста писать документацию.
Да, тут речь идет именно о программерской документации, но доки для пользователя там тоже удобно вести.

Частой заменой документации в wiki служат
- отсутствие документации как таковой.
Самый распространенный вариант. Причем есть такое мнение, что по коду все можно восстановить. Нифига. Код отвечает на вопрос 'как это работает', но не отвечает на вопрос 'почему'. Я вижу странное и неочевидное решение в коде. Почему было принятно именно оно? Ошиблись? Спешили? Для этого были неизвестные мне причины? Иногда спасают комментарии. Иногда комментариев нет.
Иногда есть некий программист, который владеет Тайной Кода. Самое веселье начинается, когда он увольняется, уходит в отпуск или заболевает.

- .doc файлы, вообще любые текстовые файлы.
Программистов, в принципе, можно заставить вести там документацию. Но именно заставить, потому что это жутко неудобно. wiki удобна для редактирования несколькими людьми - доки нет. Правка в вики выглядит так: залез - поправил. Поскольку вики старается доку структурировать по мере написания, главы вставлять и т.п., то поиск нужного куска текста не занимает много времени. С доками правка выглядит так - скачать док, открыть, отмотать на нужно место, поправить, залить обратно. В доках нет контроля версий, которые есть в wiki. Только если док в систему контроля версий не залит, но это уже непонятная имитация wiki начинается.
Итог всего этого - доки плодятся, потому что их все ленятся скачивать каждый раз. И все бегают в поисках актуальной версии. Пока не поймут, что актуальной версии на самом деле ни у кого нет.

Мораль: source control + bugtrack + wiki ускоряют работу и искореняют бардак.
  • 11 января 2009, 11:07
  • Bald
  • просмотров: ~3017
  • рейтинг: ?

Комментарии (6)

Вы - anonymous, войти ?

можно использовать bbcode-теги
[b]жирный текст[/b]
[i]курсив[/i]
[u]underline[/u]
[s]зачеркнутый текст[/s]
[size=20px]размер шрифта[/size]
всякие изменения текста
[left][/left]
[right][/right]
[center][/center]
позиционирование элементов: картинки, текст и т.д
[url][/url]
[email][/email]
внутри тега [url] помещайте ссылки, а внутри [email] адрес электронной почты;
так же [url] можно использовать в виде:
[url=http://example.com]пример[/url],
[url=http://test.ru][img]http://flickr.com/givemeimg.png[/img][/url]
[code][/code]
[quote][/quote]
внутри тега [code] можно помещать программный код (подстветка попытается включиться автоматически); для выделения цитат используйте [quote]
также можно напрямую указать язык [code=cpp]int i;[/code]
[list][/list]
создаем списки, каждый элемент пишется после [*].

Можно указывать маркер - [list=marker].
возможные маркеры 1(decimal), i(lower-roman), I(upper-roman), a(lower-alpha), A(upper-alpha). Примеры:

[list][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=1][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[list=A][*]1 элемент[*]2 элемент[*]3 элемент[/list]
[table][/table]
оформляем таблицу, используя внутренние теги [tr] и [td].
[tr] - строка, [td] - поле в строке,
[table=100%] - можно задавать ширину в процентах, по-умолчанию ширина 100%
[td=2] - можно задавать сколько столбцов входит в это поле. Пример:

[table=50%][tr][td]столбец 1[/td][td]столбец 2[/td][/tr][tr][td]значение 1[/td][td]значение 2[/td][/tr][tr][td=2]сразу 2 столбца[/td][/tr][/table]
[img][/img]
тег для вставки фото или картинок, мы любим картинки. Примеры использования:

[img]http://ya.ru/logo.png[/img],
[img=100x100px]http://ya.ru/logo.png[/img]
[img=fullimg.url]thumbimg.url[/img],
Пожалуйста загружайте картинки на наш сайт, либо вставляйте с бекбоновских ресурсов.
[video][/video]
Проигрывает видео, внутрь вставляем ссылки на видео, поддерживается Play.Ykt.Ru(нужно вставить ссылку на страницу с видео) и tv.ykt.ru(нужно вставить ссылку на адрес файла)