Por que os programadores iniciantes (como eu) sempre perguntam sobre o próximo idioma que devem aprender em vez de perguntar sobre o próximo projeto a ser abordado?
Por que Eric Raymond, na seção " Aprenda a programar " do seu ensaio " Como se tornar um hacker ", fala sobre a ordem em que você deve aprender idiomas (versus a ordem em que você deve abordar projetos).
Os carpinteiros iniciantes perguntam "Eu sei como usar um martelo ... devo aprender a usar uma serra ou um próximo nível?"
Pergunto porque estou descobrindo que quase qualquer projeto significativo que estou interessado em abordar (por exemplo, um aplicativo da Web, um conjunto de ferramentas de análise de pôquer) exige que eu aprenda apenas o suficiente de uma infinidade de linguagens (Python, C, HTML, CSS , Javascript, SQL) e estruturas / bibliotecas (wxPython, tkinter, Django) para implementá-las.
Obrigado,
Mike
fonte
Respostas:
Eu acho que quando a maioria das pessoas decide aprender um idioma, o faz porque quer abordar um projeto escrito nesse idioma, agora ou no futuro. Para fazer isso, eles precisam aprender esse idioma, o que leva tempo. As linguagens de programação são como ferramentas, mas, embora você possa aprender a usar um martelo em cerca de sessenta segundos, as linguagens demoram um pouco mais para aprender a usar; assim, muitas pessoas se concentram em aprender um idioma antes de se concentrarem em trabalhar em um projeto escrito nesse idioma.
Em outra nota, acho que quando a maioria das pessoas pergunta qual idioma aprender em seguida, elas realmente estão pensando em qual projeto aprender, mas se concentram em aprender o idioma primeiro.
Por fim, aprender idiomas pode ser divertido , mesmo que você não tenha um projeto ou objetivo específico em mente.
fonte
O motivo de muitos desenvolvedores em tempo integral é ser mais empregável.
Ser mais empregável geralmente significa passar pelo obstáculo do examinador de RH (e depois passar pelo obstáculo da entrevista real).
O examinador típico de RH geralmente possui uma lista de verificação de idiomas que podem ser comparados com um currículo, mas não tem como avaliar habilidades ou projetos.
O sucesso de uma entrevista real geralmente depende mais da sorte e das habilidades mínimas em um idioma do que da experiência e de um profundo entendimento de um idioma.
Portanto, ser medíocre em muitos idiomas é melhor para empregabilidade do que ser especialista em alguns, a menos que alguém esteja se candidatando a cargos seniores.
fonte
As opções de programação análogas para o carpinteiro seriam "Qual aplicativo devo construir a seguir?" ou "Que sistema devo construir em seguida?" que são bastante válidos e separados de um projeto que pode realmente ser aplicado quase universalmente. Eu poderia ter um projeto para mudar minha dieta ou perder 20 libras com a mesma facilidade que poderia ter algo que exige que algum software novo seja escrito para amarrar as coisas.
Para responder à pergunta, acredito que a idéia é que um idioma represente uma ferramenta na caixa de ferramentas dessa pessoa que possa ser útil em um currículo. Algumas pessoas podem optar por se tornar um programador para pagar as contas e, em caso afirmativo, podem perguntar qual a próxima ferramenta a adicionar, que geralmente seria uma linguagem, mas existem outras possibilidades, como aprender sobre implantação, controle de origem, testes e metodologias de desenvolvimento para cite algumas outras áreas. Se um carpinteiro tiver que divulgar quais ferramentas ele possui, ele pode ter uma perspectiva semelhante, eu argumentaria. No entanto, existe um conjunto geral de ferramentas que a maioria dos carpinteiros tem ou tem acesso para obter, se solicitado rapidamente. Você já viu quantos tipos diferentes de serras e martelos existem para as pessoas usarem?
fonte
Talvez seja parcialmente sobre a mentalidade hacker, pelo menos para alguns dos programadores. Hacker é definido no arquivo Jargon como
Portanto, para uma alma hacker, trata-se mais de aprender e "mexer" com o processo, conceitos, ferramentas e, sim, linguagens de criação de algo, do que o próprio produto final. Mais sobre o processo em si.
É uma luta constante pela próxima novidade e / ou desafio. Projeto finalizado perde apelo rápido. Às vezes (na maioria das vezes?) Os maiores desafios técnicos ou criativos são vencidos antes da conclusão do projeto. Muitos projetos são abandonados quando uma mente sedenta por novos desafios mentais avança.
Especialmente hackers estão interessados em novos pontos de vista, conceitos, abstrações e maneiras de pensar, tipo de hackers mentais:
fonte
Atualmente, existe uma variedade de linguagens de baixa qualidade em uso comum: C, C ++, C #, Java, JavaScript, Python, Perl, Ruby, Visual Basic etc. Os programadores compensam a insatisfação inerente a essas linguagens, aprendendo e misturando muitas delas. juntos.
Há uma pequena comunidade conhecida como a comunidade Lisp que está livre da loucura que permeia a computação moderna.
Como o Lisp é uma linguagem de programação programável, você pode expressar todas as suas idéias sem precisar se afastar para outras linguagens ou outros formatos de dados, como XML. O Lisp pode ser aplicado em qualquer lugar, até no nível do hardware, como vimos nas máquinas Lisp .
fonte
Porque aprender uma nova linguagem de programação é um investimento enorme e ninguém gosta de fazer um investimento ruim.
Aprender uma nova linguagem de programação não é memorizar como escrever construções de loop, declarar classes, importar outro módulo ...
Você precisa saber como escrever um código idiomático nessa linguagem e esse processo realmente leva uma quantidade considerável de tempo e dedicação .
O tempo é um recurso limitado, o esforço é um recurso limitado, mas a distração, o estresse diário, as contas e os jogos esportivos aos domingos estão sempre presentes e devem ser vividos.
Programadores querem investir com sabedoria.
fonte