Метод Distributed-one-big-text-file (DOBTF)

Когда я работал в Диасофте передо мной встала проблема усвоения знаний о разрабатываемой системе. И я Вам скажу это была не просто проблема. Это была ПРОБЛЕМА. Главным образом она состояла в том что «знаний» это было много, очень много. И при этом их никак не удавалось сложить в определенную структуру. Т.е. конечно, это относилось не ко всем знаниям (иначе бы система не была бы системой), что-то укладывалось в определенную схему, но все равно оставалась большая куча «знаний» которая представляла из себя весьма и весьма незаконченную мозаику.

Кстати, в отделе где работал (это был отдел разработки) все сотрудники очень любили во время кратких минут досуга собирать большие мозаики (кусочков так на 2000-3000). Для этого специально выделили один стол на котором выкладывалась эта мозаика. Бывало сходил человек покурить возвращается к своему рабочему месту, проходит мимо стола с мозаикой, останавливается и где-то через минуту-две в мозаика становится на один кусочек больше.

Работать меня там хотелось и поэтому необходимо было как-то решать проблему. Когда-то давно я читал очень умную книгу по тайм-менеждменту в которой было сказано: «Никогда ничего не держите в голове. Голова должна отдыхать и заниматься только тем чем нужно заниматься в данный момент. Поэтому составьте список всех Ваших дел и забудьте о них. Пользуйтесь списком: закончили дело, смотрите в список и выбираете наиболее подходящее». В общем из этого я усвоил что не надо ничего держать в голове, нужно просто всегда иметь под рукой хороший справочник, причем не важно справочник ли это по функциям php, поваренная книга или список дел. Кроме того  в каком-то блоге я прочитал про метод «одного большого текстового файла» в который парень заносил все свои todo-списки, списки покупок, разные размышления на тему проектов. И я подумал: «А не плохая идея! Почему бы мне не применить ее для решения моей проблемы?!»

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

Потом ту же технологию я стал применять к каждой новой области знаний (это касается технической информации) которую мне приходилось изучать. Если я встречал удачное решение какой-то проблемы выраженной в коде, я записывал его. Постепенно у меня стала складываться библиотека подобных решений. И если я сталкивался с проблемой вновь все что мне было нужно это посмотреть в справочник (если я конечно не помнил как ее решать). На самом деле я считаю лучший метод обучения новому языку или технологии это хорошо откомментированные примеры сдобренные при необходимости теорией существенной для понимания решения (что называется «by example»).

Возможно опытный читатель спросит меня: а не боюсь ли потерять всю эту бесценную информацию скопленную за много лет?

Как известно системные администраторы делятся на две категории:
• тех которые говорят: «Мы делаем резервное копирование», и
• тех которые говорят: «Мы уже делаем резервное копирование»

Так вот: «Мы делаем резервное копирование». Причем не простое, а очень удобное в использовании. Я говорю о системе контроля версий. Лично я предпочитаю subversion. Достаточно простая система, имеет прекрасный клиент под ОС Windows - http://tortoisesvn.net/ который прекрасно интегрируется с проводником (хотя я лично как фанат cygwin предпочитаю консольную версию).

Почему в качестве формата хранения я выбрал именно текстовый файл?
По нескольким причинам:
• Чем проще, тем надежнее
• Доступен везде и всегда сразу, как для чтение, в том числе и напрямую из репозитария (спасибо subverison), так и для записи.
• Легко сравнивать разные версии (тем же subverion).

В качестве примера такого файла могу привести файл regexp.txt, который я составил как справочник по регулярным выражениям в php.

Эта статья написана в поддержку нового курса Школы Программирования: Основы теории баз данных и MySQL. Надеюсь она оказалась для Вас полезной.

На курсе, который кстати стартует 1 сентября 2011 год (четверг), в качестве бонуса, будет выдаваться мой личный OBTF по MySQL. Приходите!

© Специально для сайта Школа Программирования.

Обсуждение закрыто.