Apr 20, 2016 00:21
Я работаю с кодом, но думаю, что у работающих с иными формами информации (текстом, формулами, графиками и пр.) тоже возникают похожие задачи проблемы.
По работе мне периодически нужно понять что-то немаленькое или нетривиальное чтобы это что-то изменить или дополнить (да-да, документации традиционно с кискин нос!). И вот что я делаю.
Я примерно локализую область задачи и начинаю составлять всевозможные списки разных поименованных сущностей (подпрограмм, переменных, типов, иногда файлов). Организую несколько первичных смысловых кучек. Прослеживаю доступными способами (чтением кода, трассировкой) последовательность действий анализируемой программы и составляю некое его сконденсированное описание (в виде дерева вызовов и пр.). По ходу я помечаю вещи, которые сейчас не понятны. Далее я медитирую над этой информационной выборкой, заныривая в код за недостающими деталями, дополняя уже существующие списки/деревья/диаграммы/етц. Иногда я делаю альтернативные списки/деревья/етц, как несколько проекций чего-то одного на разные более-менее независимые аспекты задачи чтоб не всё сразу было перед глазами, а только нужное сейчас. Так я постепенно создаю в голове структуру и логику интересующей меня части существующего проекта, после чего уже и становится понятно как его менять или дополнять. К сожалению, в данной работе всевозможные IDE продолжают сосать большое время с т.з. нахождения концов (это C++, детка!) и гибкости в презентации всех тех же деревьев и «проекций». И в них нет ничего для какого-то облегчения составления и организации информационных выборок из кода для последующих навигации (по ним и по коду) и анализа. По этому использую эквиваленты grep и OneNote (или тупо текстовый редактор), что-то, что есть на всех интересующих меня платформах.
Как я уже сказал, полагаю, что иные формы research'а вполне могут быть сделаны с использованием похожих подходов и инструментов.
Что делаете вы?
work,
effectiveness,
questionnaire,
ui,
c++,
usability,
software