Se for para aprender como algo funciona, principalmente os detalhes "por debaixo dos panos", então reinventar a roda é um ótimo exercício.
Mas pra código sério em produção, eu diria que, como regra geral, o melhor é não inventar demais. Sabendo os fundamentos (algoritmos, estruturas de dados, lógica, etc), vc perceberá que muita coisa é só variação e combinação deles. A maioria dos problemas comuns do dia-a-dia já foi resolvida, com soluções testadas e aperfeiçoadas ao longo de décadas. Muitas rodas já foram feitas e são comprovadamente boas para várias situações recorrentes da nossa profissão.
Um exemplo clássico é criptografia. Todo mundo já pensou em fazer sua criptografia caseira, com algum algoritmo ingênuo que só parece seguro, mas não é. Não invente, use o que já tem pronto, que inclusive foi feito por especialistas muito mais inteligentes que eu e vc.
Outro exemplo é usar regex para fazer parsing de HTML (ou JSON, ou qualquer outro formato estruturado). Não, já existem parsers específicos para cada um destes formatos, que funcionam muito melhor que qualquer regex. Não insista.
Claro que isso é a regra geral. Mas o mais importante é saber que, se houver uma boa justificativa técnica (embasada por uma boa análise dos prós e contras), essas regras podem ser quebradas. Não tem jeito, pra muita coisa na nossa área (senão pra tudo), a resposta é "Depende".
Às vezes vc precisa reinventar uma parte da roda, porque as que existem não giram da maneira específica que vc quer. Mas às vezes vc não tem tempo e/ou conhecimento para reinventar. Às vezes vc precisa de uma roda quadrada, mas às vezes vc só achou que precisava, porque a roda tradicional resolvia o problema e vc que não percebeu. Cada caso é um caso.