TL; DR
Você nunca saberá tudo. Sempre há mais profundidade e amplitude em cada "coisa" individual que você pode conhecer. Aprenda à medida que avança. Aplique as "melhores práticas" que você acha relevantes agora. Cometer erros. Apenas tente evitar cometer erros realmente caros . Encontre mentores se o seu projeto pode levar a erros dispendiosos.
E agora a resposta longa ...
1. "O software de trabalho é a principal medida de progresso." ( Manifesto ágil )
Se você pode ver as margens do seu conhecimento, isso é incrível! Prossiga pelas bordas! Continue aprendendo! Mas lembre-se, você pode aprender e analisar para sempre .
Construa algo.
2. Aprenda e cometa erros; mas não faça coisas "ruins". *
Continue empurrando os limites do seu conhecimento / habilidade. Você vai cometer erros. Você pode aprender com eles. Mas você não precisa ser imprudente .
O tempo gasto em busca e trabalho com desenvolvedores e mentores mais experientes deve aumentar proporcionalmente ao valor comercial e ao perfil de risco do projeto.
Se você está criando uma pequena CLI para si mesmo : faça com que funcione da maneira que quiser.
Se você está escrevendo o portal da web de um banco: rodeie-se de desenvolvedores muito experientes.
3. "Boas práticas" devem ser escritas entre aspas e faladas com uma piscadela.
As "práticas" são promovidas para as "melhores práticas" quando elas são bem-sucedidas na realização do X em pelo menos alguns casos. Alguém reconhece o benefício da Prática A por obter o Benefício X e declara que é uma "melhor prática" na Internet. Outros concordam - geralmente por um bom motivo. Mas, a partir desse ponto, geralmente perdemos de vista por que algumas práticas são "melhores práticas" e outras são "antipadrão" ou "fedido".
O problema é que uma "melhor prática" nunca é egoísta. Os "antipadrão" não são diabólicos por si só. E, mesmo um "fedor" às vezes vem da podridão. Às vezes, esse fedor é apenas um queijo chique e delicioso ...
Você não pratica coisas como "injeção de dependência" (DI) porque "injeção de dependência" é inerentemente valiosa para os negócios. Não é nem remotamente essencial para criar um produto funcional. Realiza algo que você talvez queira no seu produto final. Mas também pode fazer com que seu trabalho demore mais, sem nenhum benefício ...
Hmm...
Então, você deve seguir as "melhores práticas"? Mesmo se você não os entender? ... Err ... sim. Eu quero dizer não. Mas sim. Porém, somente aqueles que realmente se aplicam a você e ao seu software e a sua finalidade.
Invoque o POAP ! (Sim. Meu blog.)
Princípios, padrões e práticas não são propósitos finais.
A boa e adequada aplicação de cada um é, portanto, inspirada e restringida por um propósito superior e mais final. Você precisa entender por que está fazendo o que está fazendo!
(O POAP não está isento do POAP.)
Portanto, você pode não entender completamente todas as nuances da DI, por exemplo. Mas, se você entender a intenção, saberá se "deve" usar o DI e entenderá implicitamente melhor o DI.
E, depois de lançar o produto, você pode refletir se o DI (ou o que seja) foi realmente benéfico. Se sim, articule o porquê por escrito. Se não, articule por que, por escrito ...
Leitura de bônus / um pouco relevante:
A paralisia da análise é uma coisa. Você precisa analisar e aprender; mas você também precisa fazer as coisas. Saldo.
Você pode sempre se sentir como um programador de cowboys .
* Você realmente vai cometer erros ruim se você fizer alguma coisa digna de nota. Mas você é humano, presumo. Então, perdoamos você antes do tempo ... Ou, pelo menos, eu o faço. Talvez. ... Bem ... Vamos ver.