Conheço muitos programadores acima da média e todos eles concordam em uma coisa: para ser acima da média é necessário entender como as coisas funcionam. Aprender a usar ferramentas é fácil, difícil é entender como elas funcionam e porque funcionam dessa forma. É o que separa os homens dos meninos.

Acho muito importante a curiosidade que o autor do post teve e gostaria muito que todo iniciante fosse assim, mas infelizmente a maioria só aceita o status quo sem querer entender porque as coisas são como são.

Desencorajar a busca por conhecimento é simplesmente a pior dica que alguém pode dar a um programador. O problema é que é necessário ter conhecimento para entender poque ele é importante e útil. Não existe isso de "conhecimento guardado" não colega. Quando você já conheceu um excelente programador que não tivesse muito conhecimento?

Com todo o respeito mas a sua "dica" é basicamente um tutorial de como se tornar um programador medíocre.

Vamos lá vou te responder por tópicos, e pegar um gancho novamente no que eu respondi anteriormente, por que parece que algumas pessoas não entenderam: eu não quis ser arrogante.

Conheço muitos programadores acima da média e todos eles concordam em uma coisa: para ser acima da média é necessário entender como as coisas funcionam.

Eu concordo com isso, mas será que faz sentido aprender cerne de todas as linguagens de programação pra saber como diferencia-las? Ou dar foco em uma delas mesmo que por gosto e se especializar dentro dela?

Aprender a usar ferramentas é fácil, difícil é entender como elas funcionam e porque funcionam dessa forma. É o que separa os homens dos meninos.

A resposta para essa afirmação está na minha resposta acima.

Acho muito importante a curiosidade que o autor do post teve e gostaria muito que todo iniciante fosse assim, mas infelizmente a maioria só aceita o status quo sem querer entender porque as coisas são como são.

A curiosidade é excelente e precisa ser estimulada, mas se um desenvolvedor trabalha pra você, e você passa uma tarefa pra ele, por exemplo integrar com o blobstorage da azure, e ele fica na curiosidade de como funciona a integração pra todas as clouds, eu te pergunto: em que isso vai agregar no valor que ele vai entregar?

Desencorajar a busca por conhecimento é simplesmente a pior dica que alguém pode dar a um programador. O problema é que é necessário ter conhecimento para entender poque ele é importante e útil. Não existe isso de "conhecimento guardado" não colega. Quando você já conheceu um excelente programador que não tivesse muito conhecimento?

Desencorajar a busca não como um todo, mas de maneira generalizada "buscar tudo por que quanto mais conhecimento melhor", é sim uma coisa importante, por que é exatamente isso que separa os bons programadores dos programadores ruins: saber "o que é necessário com o menor esforço possível e entregar valor de uma forma excelente".

Com todo o respeito mas a sua "dica" é basicamente um tutorial de como se tornar um programador medíocre.

...

> Vamos lá vou te responder por tópicos, e pegar um gancho novamente no que eu respondi anteriormente, por que parece que algumas pessoas não entenderam: eu não quis ser arrogante. Bom, eu particularmente não achei que você tenha sido arrogante. > Eu concordo com isso, mas será que faz sentido aprender cerne de todas as linguagens de programação pra saber como diferencia-las? Ou dar foco em uma delas mesmo que por gosto e se especializar dentro dela? De "todas" as linguagens? Bom, isso é objetivamente impossível porque existem mais de 8 mil linguagens de programação[1]. Mas se formos falar de se especializar em **uma** linguagem, é **obrigatório** estudar Programming Language Theory (PLT) para entender no mínimo como essa uma linguagem funciona. Você não precisa estudar a teoria para entender sobre "todas as linguagens", precisa estudar a teoria para entender a(s) linguagem(ns) que você se dispor a estudar. É impossível entender uma linguagem de programação sem essa base em PLT. E por consequência disso como você poderia se declarar "especialista" se você não entende as bases dessa linguagem? Entender só a sintaxe da linguagem e saber usar frameworks/bibliotecas dela não me parece suficiente para se considerar "especialista". > A resposta para essa afirmação está na minha resposta acima. Coincidentemente a tréplica está acima também. > A curiosidade é excelente e precisa ser estimulada, mas se um desenvolvedor trabalha pra você, e você passa uma tarefa pra ele, por exemplo integrar com o blobstorage da azure, e ele fica na curiosidade de como funciona a integração pra todas as clouds, eu te pergunto: em que isso vai agregar no valor que ele vai entregar? Você comparou bananas com maçãs. Como "integrar com um cloud X" poderia ser considerado um conhecimento fundamental de computação? Isso é literalmente aprender a **usar uma ferramenta** e não aprender como a ferramenta funciona. Mas curiosidade de aprender como serviço de cloud funciona seria bastante útil. Não útil para concluir essa tarefa, mas seria útil **para o desenvolvedor** pois o conhecimento novo o permitiria trabalhar em tarefas mais complexas (vulgo tarefas que não envolvam especificamente usar ferramentas, como essa do exemplo). > Desencorajar a busca não como um todo, mas de maneira generalizada "buscar tudo por que quanto mais conhecimento melhor", é sim uma coisa importante, por que é exatamente isso que separa os bons programadores dos programadores ruins: saber "o que é necessário com o menor esforço possível e entregar valor de uma forma excelente". Hmm, não. Pela minha observação programador ruim é justamente o que só aprende o mínimo necessário para cumprir seu trabalho. Claro, isso é "bom" para o **seu chefe** porque você faz o seu trabalho, recebe seu salário no fim do mês e vida que segue. Um típico **funcionário**. Mas isso é ruim para o desenvolvedor em si, que vai continuar sendo só mais um **funcionário** para o resto da vida dele. Se não quiser ser só mais um pelo resto da vida, vai ter que aprender muito mais do que o mínimo necessário. Bom, é **óbvio** que para cumprir as tarefas atuais o conhecimento que o desenvolvedor já tem é o suficiente. Mas o desenvolvedor quer continuar cumprindo o mesmo nível de tarefa para sempre? Sem nunca pegar tarefas/projetos/problemas cada vez mais difíceis, cada vez necessitando conhecimento mais profundo? Se sim, esse é justamente o desenvolvedor medíocre. 1. https://hopl.info/
Entendi o nosso desacordo. Você está levando o assunto, ou o tema pra um lado muito mais científico que eu. Eu não levei, e nem queria levar pra esse lado, até por que pra mim, nunca fez sentido isso, nem pros meus projetos e nem financeiramente falando. Já tenho 12 anos de carreira, e nunca aprendi **Programming Language Theory (PLT)**, pra ser sincero, nunca tive nem contato com esse termo. Fato é que: nós técnicos colocamos muita expectativa em o quão cientificos somos, tenho um amigo que é exatamente assim, a diferença entre ele e eu, é que além de focar nas coisas que me fazem performar excelentemente bem como desenvolvedor, eu também foco nas minhas soft skills no tempo que eu estaria me especializando cientificamente, no mais baixo nível de como as coisas realmente funcionam. No fim das contas, o cliente, não vê nada disso. Pra mim, fazer um projeto bem estruturado, bem modelado e bem performático com as ferramentas que o framework e os itens de infraestrutura dão já é o bastante pra render bons frutos pro meu cliente. Mas a partir daqui é questão de gosto mesmo =)
O problema é que você não foi arrogante mesmo, só simplório. Uma resposta dizendo isso mesmo: "Não estude todas as linguagens de programação que existem" ainda assim seria um concelho. Mas você só entregou como se curiosidade fosse atraso. Se meu chefe me pede para usar azure, eu vou estudar azure, nao vou estudar 'todas as clouds'. Até na minha pergunta eu disse 'eu escolhi java e react'. Eu não quero entender todas as linguagens do mundo, eu quero entender O QUE É QUE EU NÃO SEI QUE TEM POR TRÁS DA LINGUAGEM DE PROGRAMAÇÃO. Igual o colega disse, dev que não estuda a linguagem é piloto que dirige carro e não sabe que tem motor. Você tendo o melhor das intenções vei com o concelho de 'O que você tem que fazer é estudar coisas por demanda e que são relevantes pra sua atividade fim, ou seja, se você hoje precisa fazer alguma coisa use ferramentas que te facilite naquilo.' e como o amigo aqui disse, é a receita da mediocridade
`O problema é que você não foi arrogante mesmo, só simplório. Uma resposta dizendo isso mesmo: "Não estude todas as linguagens de programação que existem" ainda assim seria um concelho. Mas você só entregou como se curiosidade fosse atraso.` Mas em momento algum eu disse ou tentei dar a entender que curiosidade é um atraso, até por que isso é uma premissa básica pra você no mínimo se estimular a entender algo. Eu já li umas 2 vezes o meu texto, e te diria a mesma coisa: Tenha curiosidade sempre, mas saiba o momento certo de usar, saiba no que é útil gastar teu tempo, saiba que perguntas fazer e principalmente quando você achar o que faz sentido pra você tenha foco nas curiosidades que te agregam. No futuro quando você tiver bastante xp, você vai entender que procurar "1000 pelos em um ovo" não faz tanto sentido, se não agregar muito valor. `Eu não quero entender todas as linguagens do mundo, eu quero entender O QUE É QUE EU NÃO SEI QUE TEM POR TRÁS DA LINGUAGEM DE PROGRAMAÇÃO. Igual o colega disse, dev que não estuda a linguagem é piloto que dirige carro e não sabe que tem motor.` Eu não sei seu objetivo profissional, mas se o que você quer é ser um programador web, um desenvolvedor backend, ou fullstack, entender minuciosamente "o que tem por trás ou o que tem no motor" e quando eu digo "o que tem por trás ou o que tem no motor" estou tomando como premissa que você quer entender do binário gerado, do compilador, código de baixo nível, ao código de alto nível. E isso não faz tanto sentido pensando em performance de carreira. Até faz, mas demoraria MUITO mais pra você performar bem. No mercado em si, você precisa saber muito menos que isso pra começar a performar bem. `Você tendo o melhor das intenções vei com o concelho de 'O que você tem que fazer é estudar coisas por demanda e que são relevantes pra sua atividade fim, ou seja, se você hoje precisa fazer alguma coisa use ferramentas que te facilite naquilo.' e como o amigo aqui disse, é a receita da mediocridade` Quando você tiver trabalhando, for senior, tiver responsabilidades na tua empresa, o teu chefe, o cara de produto, ou melhor a pessoa que não entende nada que entendemos, ele não quer saber se vc entende como funciona o garbage collector, ele quer saber se o que vc tá fazendo vai retornar valor pra empresa pra ele te pagar. Então lá na frente quando você tiver sua familia, filhos, use o menor tempo possível pra entregar valor, e isso acontece entendendo coisas por demanda. Todos nós, eu, você só temos 24h/dia, eu já tentei aprender coisas que eu estava muito interessado, mas não tinha aplicabilidade naquele momento. O que eu vi logo depois de ter aprendido, é que eu tinha um conhecimento morto dentro de mim que não ia ser usado pra nada. A receita da mediocridade é a estagnação, e criar crenças limitantes dentro de você, se acomodar, acha que o que você sabe tá bom. Não foi isso que eu falei, eu falei pra você dar foco no que realmente importa.