Conforme declarado no título, qual é a diferença em anos de experiência em determinado idioma em termos de desenvolvedores? Por exemplo, se um desenvolvedor tiver cinco anos trabalhando com a linguagem A e outro tiver dois anos trabalhando com a linguagem B, seguido por três anos trabalhando com a linguagem A, haveria uma diferença perceptível entre eles?
9
Depende.
Eu tenho um amigo que tende a aderir a um idioma, então se você o considerou "programador A", ele tem 1 ano de experiência com esse idioma, cinco vezes.
Idiomas diferentes permitem fazer coisas diferentes. Um ensaio que eu particularmente gosto é chamado " Beating the Averages ", de Paul Graham. Nele, ele está tentando convencer as pessoas a aprender cocô, mas também faz alguns pontos muito úteis:
Geralmente, meu conselho é aprender mais de um idioma e aprender quais são os pontos fortes e fracos dos idiomas.
fonte
Obviamente, o desenvolvedor que tiver mais anos de experiência em um idioma terá uma melhor compreensão das principais bibliotecas e idiossincrasias desse idioma. Se as línguas adotam o mesmo paradigma (imperativo versus funcional), não devem ter mais problemas para aprender essa língua do que aprender isso.
Minha maior dificuldade para escolher um novo idioma veio da tentativa de mudar de C # para Erlang, porque representava não apenas uma nova sintaxe, mas também uma nova maneira de pensar sobre programação.
fonte
Aqui está o que eu esperaria / espero:
fonte
Idiomas não são o problema. Você pode aprender um idioma inteiro em alguns dias. O que leva mais tempo para absorver são as convenções, APIs e várias estruturas de terceiros. Quando as pessoas pedem cinco anos de X, não se importam com o idioma, querem alguém com muita experiência na solução de problemas e com esse idioma, para que não precisem pagar por nenhuma das curvas de aprendizado.
fonte
Especialização e prática deliberada.
Se você não praticar deliberadamente, não ganhará experiência. (Você deve examinar seus erros e corrigi-los, praticar o que é fraco e ter um especialista para lhe dizer o que está fazendo de errado também ajuda.)
Se você não tentar melhorar, pode ser um novato para sempre!
Após dez mil horas de prática deliberada, você obterá experiência. (Esse resultado da educação / treinamento está em toda a rede.)
Se o seu programador A não estiver praticando deliberadamente, ele nunca ficará melhor.
Se o seu programador B não estiver praticando deliberadamente, ele nunca ficará melhor.
Outra descoberta da mesma pesquisa: se eu tenho 15.000 horas e você tem 10000, e eu continuo praticando e você também, você nunca será melhor que eu.
Conhecer dois idiomas provavelmente tornará B um programador melhor (sujeito às regras de prática).
fonte
E você os está usando para a linguagem A, presumo? (Claramente, haveria uma diferença no idioma B.)
Depende em parte das diferenças entre A e B (principalmente se reduzimos a experiência do segundo desenvolvedor com A). Se forem bastante semelhantes, não haverá essencialmente nenhuma diferença na experiência. Se A tem conceitos consideravelmente diferentes, ainda é provável que três anos sejam suficientes para aprendê-los. Dada uma biblioteca muito grande e ferramentas complicadas, pode haver uma diferença entre três e cinco anos.
Obviamente, o que mais importa aqui é o indivíduo. Um bom desenvolvedor pode aprender uma nova plataforma completamente em três anos e, portanto, isso não deve ser um problema.
fonte
Concordo que linguagem é linguagem e conceitos são conceitos.
Meu problema é que há um grande número de programadores hoje em dia que, sem um IDE sofisticado, eles não poderiam programar. Eles realmente não são programadores, mas são realmente mais parecidos com designers.
Sei por experiência pessoal que muitas pessoas foram seduzidas pelo ambiente de desenvolvimento da Microsoft. Não é errado que eles largem uma caixa de texto na tela e depois definam as propriedades com o assistente e arrastem os dados de uma imagem do banco de dados, mas eles são realmente codificadores em qualquer idioma se tudo o que fazem é configurar testes básicos de igualdade?
Essas pessoas nunca serão capazes de pegar os conceitos que aprenderam e aplicá-los em outro idioma.
Quando entrevisto pessoas, estou mais interessado em como eles desenvolveram e em quais estruturas eles usaram. Eu gosto de fazer perguntas como "Como você escreve um manipulador de eventos?", "Como exatamente você coloca os dados no banco de dados?" Ou até "Como eu coloco esse botão específico em roxo quando clico nele?" isso eliminará rapidamente os designers e deixará os programadores. Eu descobri que 3 ou 4 anos, na verdade, programar com um ano na minha língua de escolha é suficiente para o que eu preciso.
Apenas outra opinião,
Tal
fonte
"Anos de experiência na linguagem / plataforma X" são basicamente uma patologia de recrutamento ...
É aberto à interpretação e não é nem de longe tão útil quanto parece à primeira vista. Como já foi dito, o Mito dos Anos de Experiência é uma boa leitura.
Além disso, crucialmente, a medida dos "anos de experiência" em si pode ser muito imprecisa. Aqui está um exemplo do meu show atual: minha principal tarefa é desenvolver e manter um aplicativo da web Java. No entanto, isso executa um back-end que é MFC / C ++ / SQL Server. Consequentemente, também estou lidando com o código C ++ praticamente diariamente. MAS - essa experiência em C ++ é relativamente superficial e orientada à manutenção, e eu realmente não escrevo grandes componentes ou programas inteiros a partir do zero no MFC / C ++ (como eu costumava em funções anteriores).
Ainda posso contar esses últimos 5 anos como "5 anos de experiência em C ++"? Talvez. Talvez não. Dependendo de como eu quero vendê-lo para garantir uma função específica, eu posso exagerar facilmente sem mentir, ou posso admitir que não foram realmente cinco anos sólidos de experiência em C ++. :) Tenho certeza de que muitos casos por aí também estão abertos a esse tipo de problema de "imprecisão de medição". A profundidade da experiência pode ofuscar a qualidade da experiência. Portanto, "uma quantidade X de tempo gasto com C ++" não significa muito por si só.
fonte
Sim, o Programador 1 não tem conhecimento de sintaxe da linguagem B.
Conceitos de programação são conceitos de programação. A linguagem é apenas sintaxe.
fonte