Почаще изобретайте колесо Джейсон П. Сэйдж


Пользуйтесь готовыми решениями — глупо снова изобретать колесо…


Приходилось вам слышать подобный совет? Ну, еще бы! Каждый разработчик или студент часто слышит такие высказывания. Но почему? Почему на повторное изобретение колеса так косо смотрят? Потому что существующий код, как правило, работает. Он уже в какой-то форме прошел контроль качества и строгое тестирование и теперь успешно применяется. Кроме того, время и силы, потраченные на изобретение нового решения, едва ли окупятся в той же мере, как использование готового продукта или кода. Стоит ли браться за изобретение колеса? Зачем? В каких случаях?

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

Изобретение колеса — это не просто упражнение в правильном размещении конструкций кода: оно требует глубокого понимания внутреннего устройства различных готовых компонентов. Вы знаете, как работают менеджеры памяти? Виртуальные страницы? Можете сами их реализовать? А как насчет двунаправленных связных списков? Классов динамических массивов? Клиентов ODBC? Можете написать графический интерфейс пользователя, который работает так же, как тот, что вы сейчас используете, и который вам нравится? Можете сами создать виджет для браузера? Знаете, когда нужно писать систему с мультиплексированием, а когда — многопоточную? Как решить, какая база данных лучше — в файле или в памяти?

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

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

Запоминать факты и читать умные книги важно, но в становлении выдающегося программиста приобретение опыта имеет такое же значение, как накопление фактов. Изобретение колеса так же важно для образования и мастерства программиста, как поднятие тяжестей для культуриста.

Загрузка...