"Не изобретай велосипед, за тебя уже все придумали"
Очень сильно зависит от задачи, если это функция/класс до 100-200 строчек, то обычно можно самому написать, но скорее всего решение будет покрывать только ваши потребности в проекте. Но если это что-то большое или что-то связанное с криптографией, то лучше использовать готовые и проверенные решения.
Раньше меня учили что если можно обойтись без библиотеки и написать самому, то лучше так и сделать, но в последнее время я вижу, что люди пишут : "Не изобретай велосипед, за тебя уже все придумали","Не факт что ты напишешь без костылей, а в готовой либе уже все костыли прошли".
+ и - есть у всех подходов, обычно готовые решения лучше протестированы и содержат меньше багов, но они больше и если там, что-то пойдет не так, то большинство людей не смогут найти причину ошибки и исправить её.
Большие компании часто пишут свои решения, т.к. обычно их не устраивает что-то в готовых, ВК вроде использует свой протокол для передачи медиаконтента, чтобы уменьшить трафик. Также что касается готовых решений, то с одной сообщество может проверять их на отсутствие уязвимостей, но с другой стороны хакеры ищут в нем уязвимости и используют, если инструмент популярный, то многие сайты будут под угрозой.
Если в двух словах, то стоит использовать готовые решения для большинства вещей, но если у программы есть специальные требования или вы не хотите тащить большую зависимость ради простой функции, то придётся писать свой код.