Todos dias vejo discussões intermináveis em blogs, postagens e fóruns sobre qual é a melhor linguagem de programação, Framework ou banco de dados a ser utilizado, normalmente a mesma pegunta se repete “PHP ou Node?”, “Angular, React ou Vue?”, “SQL ou NoSQL?”, e por aí vai, então decidi trazer a RESPOSTA DEFINITIVA para essas questões e todas relacionadas a esse tipo de discussões.

Você deve estar se perguntando como pode existir uma RESPOSTA DEFINITIVA para esses questionamentos, como pode-se ter uma solução completa para isso, mas existe e a resposta para essa questão é muito simples podendo ser sintetizada em apenas uma palavra:

DEPENDE

Simples não?

O que todo programador deve entender que as tecnologias (Linguagens, Frameworks, BD, etc) são ferramentas com propósitos, para ver com mais clareza a resposta, “Martelo, Alicate ou Chave de fenda?” DEPENDE se você vai prender um prego, cortar um fio ou parafusar algo, você pode bater um prego com um alicate sem problemas, assim como parafusar um parafuso com um alicate, mas creio que não sejam soluções ideais.

Então como fazer a melhor escolha?

A escolha das ferramentas a serem utilizadas em projeto DEPENDEM do propósito, DEPENDEM da necessidade, DEPENDEM do projeto e não o contrário, esses questionamentos fazem “inversão de dependência” (e não como princípio do SOLID), primeiro deve-se saber o que pretende resolver para depois buscar uma solução e não buscar uma solução e depois ver o problema.

Todos dias são criadas novas linguagens. Frameworks, etc, podendo ser colocados dentro da mesma analogia de ferramentas, caso você conheça bem como utilizar uma chave de fenda, outras que apareçam você precisa apenas adaptar a “forma de segurar” não aprender novamente como “se parafusa”, além de saber distinguir qual “chave” se adapta melhor ao problema proposto.

Conhecendo VERDADEIRAMENTE o problema proposto e entendendo o PROPÓSITO das ferramentas disponíveis, não vai ter problemas para encontrar o “match” ideal.

--

--

Emerson Braun

Emerson Braun is a Graduated Software Engineer, Senior Developer, Trainer, and Content Producer, with over 10 years of IT experience.