О пользе изобретения велосипеда
(В оригинале - Reinvent the Wheel Often)
«Используйте уже написанное – глупо изобретать велосипед...»
Приходилось ли вам слышать что-то подобное? Конечно же! Каждый разработчик не один раз слышал такое. Хотя почему? Почему так плохо изобретать велосипед? Потому что, чаще всего, уже существующий код – это работающий код. Он уже прошел через контроль качества, тестирование и успешное использование. К тому же, усилия, затраченные на разработку аналога уже существующего кода, скорее всего, не окупятся. Так стоит ли изобретать велосипед?
Наверняка вы читали статьи и книги о паттернах проектирования или дизайне ПО. К сожалению, часто такие книги оказываются весьма бесполезными независимо от того, насколько классная информация в них предоставлена. Примерно такая же разница между «посмотреть фильм о мореплавании» и «выйти в море самому». И то же самое можно сказать и об использовании существующего кода по сравнению с проектированием и написанием кода с нуля, его тестированием, отладкой, исправлением и улучшением в течение всего жизненного цикла.
Изобретение велосипеда – это не только упражнение на написание кода. Это способ получить глубокие знания внутреннего устройства различных уже существующих компонент. Знаете ли вы, как работают менеджеры памяти? А виртуальные страницы? А сможете это реализовать самостоятельно? А двойные списки? А динамические массивы? ODBC клиенты? А получится ли у вас написать графический интерфейс пользователя, работающий так же, как и ваш любимый? А как насчет отличия мультизадачной и мультипотоковой систем? А правильно выбрать размещение базы данных – на диске или в памяти? Большинство разработчиков никогда самостоятельно не разрабатывало эти базовые вещи и поэтому не имеет глубоких знаний о том, как они все работают. Для них это все – лишь загадочные черные ящики, которые просто как-то работают. Понимание лишь того, что происходит на поверхности воды, недостаточно для избегания всех опасностей, скрывающихся в глубине. Непонимание глубины основ в разработке ПО послужит серьезным препятствием для написания чего-либо выдающегося.
Изобрести велосипед неправильно – более ценно, чем сразу узнать о том, как это надо делать, прочитав книгу. В этом случае вы получите урок по принципу «попробовал – не получилось», что гораздо более эмоционально, чем просто чтение технической книги.
Изучение фактов из книг – хорошо и важно, но стать сильным программистом вам в гораздо большей степени поможет опыт, а не факты. Изобретение велосипеда для разработчика ПО – весьма важная часть в его опыте и образовании.
Автор оригинала - Jason P Sage