@MyNamee

Нужно ли программисту изобретать велосипед?

Как вы считаете, нужно ли программисту изобретать велосипед?
Нужно ли создавать то, что уже создано?
spoiler
Сегодня с моим товарищем произошел диалог, который утверждал что настоящий программист создаёт всё сам, на то он и программист, а библиотеками пользоваться и обезьяна сможет. Но каковы реалии?
Допустим, вы работаете над веб-проектом и заказчику необходим на сайт слайдер. Как в таком случае логичнее поступить? Создавать своё, или же сэкономить время и подключить библиотеку? Заказчику ведь чаще всего без разницы, главное чтобы работало.
  • Вопрос задан
  • 973 просмотра
Решения вопроса 4
longclaps
@longclaps
Настоящий программист создаёт всё сам с помощью библиотек.
Ответ написан
DevMan
@DevMan
понятие велосипеда - очень разное. и задачи/необходимости тоже разные.

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

другими словами: если задачи типовые - используйте типовые решения, если задачи не типовые - от велосипедов (в хорошем смысле этого слова) не уйти.
Ответ написан
Комментировать
Griboks
@Griboks
Да, нужно. Но можно использовать противоположный подход - подробный анализ и изучение существующих технологий.
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Представьте себе, у меня в одной коммерческой программе есть велосипед и чужая библиотека, занимающиеся одним и тем же, доступом к XLSX.

В одном месте пользователи иногда скармливают программе огромный XLSX размером мегабайт этак в 20, что соответствует ≈100M памяти, если развернуть в структуры данных, >130M — если сериализовать в XML, и добрых полгига — если этот XML разобрать рекордной библиотекой, а ведь в той XLSX-библиотеке, которую мы купили, ничего рекордного не было. На x86 не хватало памяти ни на что, на x64 тормозило адски. В общем, сделал потоковый разбор XML с пространствами имён «из коробки» и предельно простой разбор XLSX без стилей, без картинок и диаграмм, без сохранения — этот XLSX грузило ≈3 с, из которых <0,5 — раззиповка, ≈1,1 — разбор XML, остальное — собственно разбор XLSX. Для сравнения: Excel грузил 10 секунд, LOo до 6-й линейки вообще не мог загрузить такой файл. Расход памяти — исключительно та сотня, что идёт на структуры данных; расходы памяти на раззиповку и разбор пренебрежимо малы.

В другом месте таких проблем нет, и я даже не пытался перевести этот момент на свою библиотеку.

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

В общем, с велосипедами надо быть осторожным, и причины сделать велосипед в производственном коде — это…
• Производительность. Пример выше.
• Функциональность. Хочется написать своё сохранение в XLSX, потому что нужны заметки, которых, кажется, не поддерживает ни одна библиотека.
• Глючьё. Допустим, я отказался от встроенного в Qt диалога открытия файла, потому что он прикрывал одну важную функцию WinXP+: сохранял, какой каталог был текущим.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
ApeCoder
@ApeCoder
Создавать велосипед можно в учебных целях. Еще один вариант, если нам надо что-то простое и его проще продублировать чем тащить дополнительную библиотеку в проект, в которой еще куча вещей.

По умолчанию лучше пользоваться готовеньким, если оно есть и в данном слуае удобно. Оно уже протестировано и народ прошел по граблям и знает тропинки. И не только народ в вашей конторе, но и за ее пределами.
Ответ написан
Комментировать
makarenya
@makarenya
программист
Есть учебные велосипеды. Вы его сделали чтобы понять, как это всё работает. Я сам пару месяцев назад написал нейросетку, просто чтобы понять метод обратного распространения ошибки... Сетка работала весьма тормознуто, но работала же. Но тут речь о том, чтобы сделать, посмотреть и выкинуть.

А есть ещё и велосипеды промышленные. И про них нужно знать одно - их нужно регулярно смазывать. Всегда хочется его сделать - это, как правило, интересно. Да ещё и решает поставленную задачу зачастую лучше, чем имеющиеся решения. Но:
1. Это отнимет у вас время, причём гораздо больше, чем вам кажется на первый взгляд. Восхищаюсь теми ребятами, которые умеют правильно просчитывать время до получения реально работающего продукта, а не просто прототипа. Но среди программистов я таких не видел.
2. Сторонние тулзы и библиотеки, в параллель к которым вы завелосипеделись, будут развиваться. Они будут уметь делать лучше, быстрее, поддерживать самые новые версии ОС и тех продуктов, с которыми вы работаете. Чтобы держаться с ними на равне и не кусать потом локти, что ваше творение ничего по сравнению с ними на текущий день не умеет - придётся тратить время на этот самый велосипед и в дальнейшем. А в случае с вопросами совместимости, то это уже жизненная необходимость. Сделали вы импортёр с Excel, а формат Excel взял и изменился - обновляйте импортёр, а то не будет работать весь ваш продукт, импортёр этот использующий.

Всем этим я хочу сказать, что велосипеды делать можно, но с пониманием того, что сделать велосипед - это как завести рыбок (или родить ребёнка, если хотите) - тут нужно понимать свою ответственность за последующую судьбу этого вашего велосипеда, и что сам по себе без вашего постоянного участия он не выживет;

Хотя создание велосипеда для веб-проектов - это уже 3-й случай. В реалиях Российского сайтостроения - это велосипед на продажу с последующим убоем. Его сделал - и забыл. Сайт через 2-3 года умрёт сам вместе с велосипедом. Будет заменён новым сайтом, сделанным с нуля. Так что тут уже ответственность за велосипед минимальная - делайте на здоровье, вторую проблему вычёркивайте.

Первая останется - вы потеряете время. И для сайтов это зачастую приводит к катастрофе. Среднестатистический заказчик веб-сайта готов потратить на сабж денег, достаточных лишь на 3-4 рабочих дня оплаты труда веб-разработчика. Делать всё и всюду с нуля при таком условии становиться непозволительной роскошью.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы