Недавно я потерял проект кодирования. После 16 часов биения головой о LLVM и C++ мне удалось заставить работать средство проверки ошибок с делением на ноль. Моя виртуальная машина зависла, и я пошел ее перезагружать. На моих глазах я наблюдал, как вся виртуальная машина была очищена. Мне пришлось перезапустить.

В тот момент паники я не мог представить, что это будет одним из лучших событий, которые могут случиться со мной.

Видите ли, этот проект занял 16 часов. Пришлось читать документацию LLVM, разбираться в логике динамического анализатора и отлаживать. Когда я пошел переделывать, это заняло 2 часа. Но это не урок. В этом процессе произошли следующие три вещи:

1. Я подтвердил полученные знания. Сколько раз вы едва успевали за работой над проектом и стараетесь не смотреть на него снова, пока вам не понадобится? Делая это во второй раз, вы понимаете это.

2. Мне понравилось. Часто, работая над сложным проектом, он чувствует себя несчастным. Как и я с этим проектом, вы можете почувствовать, что бьетесь об него головой. С легкой знакомостью, переделывание делает его более приятным. Вы знаете, что делаете. Вы двигаетесь уверенно. Таким образом, вы приятно помните весь опыт.

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

3. Я улучшил его. Во второй раз я знал, что делаю. Вы когда-нибудь переписывали работу или проект с нуля и обнаруживали, насколько лучше это получается во второй раз? Вы уже придумали, как это будет работать. Вы узнали о процессе, пройдя его один раз. Теперь вы можете принимать лучшие решения.

Вместо едва собранного проекта у вас остается проект, созданный кем-то, кто понимает проблему (вы!).. И когда вам нужно разработать или отладить его дальше, вы являетесь экспертом.

На самом деле у нас нет времени повторять каждый проект. Но столкнувшись с проектом на грани моих возможностей, можете поспорить, что я сделаю это во второй раз. Уроки, извлеченные здесь, настолько сильны. Когда есть время, повторение проекта — лучшее, что мы можем сделать для обучения и качества проекта. Это может даже сэкономить время в будущем, поскольку вы лучше разберетесь в своих приложениях.

Это был большой урок для меня, и, как ни странно, счастливый. Вы когда-нибудь повторяли проект, добровольно или нет? Считаете ли вы, что этот опыт был полезным?