Проектирование программного обеспечения — дело непростое. Думаю, мы все можем с этим согласиться. Независимо от того, сколько у вас опыта, ваша первая идея о том, как структурировать модуль или систему, обычно оказывается не самой лучшей. Мне пришлось усвоить этот урок нелегким путем, и я очень жалею, что не узнал о концепции «спроектируй дважды» в начале своей карьеры.
В главе 11 книги “Философия разработки ПО” автор предлагает простую, но мощную идею: «проектируй дважды». Суть идеи заключается в том, что не следует просто выбирать первый пришедший на ум дизайн. Вместо этого придумайте как минимум два разных проекта, даже если вам придется заставить себя. Независимо от того, насколько вы уверены в себе, вы примете лучшее решение, если сравните варианты бок о бок.
Сравнивая разные варианты, вы сможете найти лучший подход. Иногда окончательный дизайн будет сочетать в себе идеи из обоих вариантов. А дополнительные усилия на начальном этапе? Он того стоят. Это гораздо быстрее, чем исправлять что-то потом.
Тот случай, когда я ошибся
Позвольте мне рассказать вам о том, как я ошибся. Мне поручили разработать новую фичу для нашей системы. Я думал, что все уже придумал, и потратил целую неделю на подготовку. Я пришел на совещание по проектированию высокого уровня, с диаграммами и всем остальным, чувствуя себя уверенно. Но тут возникло несколько критических вопросов — вопросов, о которых я даже не подумал. Весь мой проект развалился прямо на там.
Оглядываясь назад, могу сказать, что если бы я разрабатывал проект дважды — если бы я потратил время на обдумывание альтернативных вариантов, — то был бы гораздо лучше подготовлен. Я мог бы ответить на эти вопросы или даже подготовить запасной вариант. Это был большой урок того, как легко упустить из виду важные детали, когда вы бросаетесь в первую же идею.
Почему это важно
Суть в том, что дизайн — это не просто заставить что-то работать, а сделать это правильно. Идея «спроектировать дважды» поможет вам избежать плохих решений и найти лучшие решения. И что самое приятное, такой подход не требует много дополнительного времени, но повышает качество ваших проектов и оттачивает ваши навыки.
В следующий раз, когда вы будете работать над проектом, не соглашайтесь на первую идею. Потратьте время на то, чтобы придумать альтернативные варианты. Вы сделаете лучший выбор и будете чувствовать себя гораздо увереннее на следующей встрече.