Архив метки: epicurus

Про программный код, отношения и эпикуреизм

Про программный код, отношения и эпикуреизм

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

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

Конечно без использования чужого кода не получится. Но следует проявлять при этом разумность и умеренность. Если неограниченно плодить зависимости (а значит отношения с авторами этого кода), это перестанет быть сколько-нибудь контролируемым и неизбежно приведет к проблемам. Тем более, когда использование чужого кода оправдывается не объективными насущными причинами, а тем, что так "проще писать", "на N строчек короче", "работает на 10% быстрее", "да все так делают", "уважаемый эксперт N сказал, что так делать правильно".

"Никакое наслаждение само по себе не есть зло; но средства достижения иных наслаждений доставляют куда больше хлопот, чем наслаждений" © Эпикур.

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

К примеру, если мне потребуется интеграция через http-based API я скорее разберусь сам как оно устроено и буду сам делать запросы, чем понадеюсь на непонятно кем и как поддерживаемый модуль. Если для моей частной задачи будет достаточно небольшого самописного "велосипеда", то я буду использовать его, а не мега-комбайн (привет log4j, ага).

Итого, Keep It Simple Stupid и в отношении чужого кода тоже. Лучше лишний спросить себя действительно ли эта новая зависимость нужна и не хватит ли того, на что мы уже завязались (и чьим авторам доверились).

"Величайший плод ограничения желаний — свобода." © Эпикур.