Про археологические методы и IT
Снова разбавлю IT-темы своего мини-блога фактами из культурологии - первое образование никуда не спрячешь :) Сегодня будет небольшое погружение в археологию.
Иногда разбор legacy на проекте - старого кода, который достался команде от предыдущих разработчиков, без инструкций и указаний, зачем он нужен - очень напоминает археологическую работу. Почему - сейчас расскажу. Возможно, так рефакторить старую систему станет немного интереснее!
Как думаете, как археологи понимают, что какой-то камень был не просто камнем, а настоящим орудием древности, и решают, для чего его применяли? Спросить-то не у кого. И инструкций тоже нигде не наблюдается - до появления письменности еще тысячи лет. А орудия палеолита, увы, были мало похожи на современные - никаких тебе ножей или молотков, чаще это просто камни - круглые, плоские, прямоугольные, с непонятными следами использования.
Представьте, что камень найден на стоянке первобытных людей, с явными следами их пребывания тут - с первыми неуклюжими рисунками, древним кострищем, каким-то захоронением неподалеку. Камень лежит себе, весь в каких-то сколах и трещинах, в окружении других. Кажется, что именно он среди прочих был зачем-то нужен. Но как выяснить, для чего его использовали?
В XX веке по-разному подходили к решению вопроса - ученые смотрели на следы на поверхности, наличие особых форм и т.д. Но функцию орудия могли предположить ну очень примерно. Ближе всех к ответу подошел советский ученый Сергей Семенов - именно он изобрел метод трасологии и описал его в своей книге “Первобытная техника” в 1957 году. Если упростить, метод исследования заключался в следующем: нужно было сделать копию найденного орудия, попытаться использовать его так, как это делали древние люди, и сравнить следы применения на оригинале и копии через микроскоп.
Допустим, ученый предполагает, что наш камень - это скребок, которым очищали шкуры животных. Он делает несколько копий из того же материала, пробует воспроизвести действия древнего человека, и дальше оценивает получившийся микрорельеф на орудии. Если отличия от микрорельефа оригинала минимальные, значит, гипотеза верная, функция орудия установлена правильно. Для своего времени метод был революционным - никаких тебе теорий, только практика и эксперименты. Но именно этот метод позволил лучше узнать о жизни наших предков - и заодно принес своему автору мировую известность.
Теперь вспомните костыли и странности legacy-кода. Ну ведь часто, если не запустить и не проверить - сложно понять, зачем этот костыль вообще был нужен. Спросить точно так же не у кого. И проверять его функцию тоже лучше не на проде, а на стейдже - в тестовой среде, которая полностью копирует рабочую версию продукта. А то мало ли, какой результат получится.
Так что когда в следующий раз будете разбирать артефакты предыдущей проектной команды и пытаться понять природу оставленного в наследство кода - вспомните, что вы занимаетесь почти что археологической работой. А кто не хотел в детстве побыть кем-то вроде Индианы Джонса :)