Использовать методы или самому писать функции?
В каких ситуациях есть смысл:

Улучшить свои знания.  Допустим самому попробовать реализовать какие-то алгоритмы, чтобы лучше понимать как работает поиск, сортировка, обход древовидных структур и так далее;
Специфичные требования. Например вам нужна высокая производительность, ваш основной стек на Back-end - это Node.js. Так вышло,  что вам не хватает производительности и поэтому вы берёте и переписываете нужный NPM пакет на на c++;
Раз коснулись темы NPM, то другой пример. В NPM миллионы пакетов на любой случай жизни и так бывает, что нецелесообразно тянуть зависимость ради пару десятков строчек кода. 

Когда НЕ стоит изобретать велосипед:

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

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