Решите программные проблемы, добавив больше

Решитепрограммныепроблемыдобавивбольше

Было субботнее утро. Я смотрел Youtube и видел это видео на Youtube.

Сразу несколько примеров из моей повседневной работы пришло мне в голову.

Несколько недель назад я исправлял небольшую ошибку крайнего случая в одном из наших продуктов. Еще до того, как начать исправлять проблему, я знал, что это будет изменение кода на одну строчку. Итак, я исправил и на следующий день пришел отчет о контроле качества, из-за того одного изменения строки, которое я сделал, я ввел еще 4 крайних случая, которые вызывают некоторые несоответствия. Затем я начал исправлять эти проблемы одну за другой, через несколько часов мне удалось исправить все, но с несколькими изменениями в существующей структуре. В котором было несколько новых локальных переменных, добавлен необязательный параметр к методу, добавлено одно новое состояние.

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

Затем я вернулся к исходной ошибке и снова начал с самого начала. Поскольку теперь я знаю, что если я сделаю одно изменение строки, это приведет к появлению еще нескольких крайних случаев, я использовал другой подход и мне удалось исправить первоначальную ошибку, не вводя каких-либо крайних случаев. Самое главное – никаких новых локальных переменных или изменений параметров метода или новых состояний. Я продолжал думать о том, что произошло в тот день, и хотя все закончилось хорошо, была большая вероятность, что я мог бы пойти со всеми дополнительными изменениями, не осознавая, что есть лучший способ. Поэтому, когда я смотрел это видео на Youtube сегодня утром, я знал, что со мной произошло то же самое. Я продолжал создавать больше частей, не понимая, что удаление первой части – лучшее решение.

Таким образом, мы можем связать эту функцию мозга с добавлением частей, а не с удалением частей при разработке программного обеспечения. Например, есть эта библиотека A, которая лучше справляется с xyz, чем текущая библиотека B, которую мы используем. Итак, мы начинаем использовать библиотеку A и понимаем, что один из недостатков библиотеки A заключается в том, что действие abc выполняется медленнее, чем в библиотеке B. Поэтому мы представляем библиотеку C для ее оптимизации. В целом по этой цепочке все еще есть случаи. Но вместо того, чтобы продолжать добавлять новые библиотеки, могут быть другие возможные решения. В большинстве случаев мы упускаем эти варианты, потому что нам нравится добавлять что-то, а не удалять.

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


Ура,

DilumN