Qual é a diferença nos anos de experiência de um desenvolvedor com um idioma? [fechadas]

9

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?

rjzii
fonte

Respostas:

26

"depende"

Experiência <> conhecimento ou entendimento.

O programador 1 pode ser muito bom, até um guru, ou pode ser alguém que mexe com o idioma nos últimos 5 anos.

O programador 2 pode ser alguém que entende conceitos independentemente da linguagem que está usando. Ou alguém que achou a linguagem B muito difícil e espera que A seja mais fácil.

Vale a pena ler "The Years of Experience Myth" de Coding Horror

gbn
fonte
6
Como se costuma dizer, seu desenvolvedor pode ter cinco anos de experiência com o idioma A - ou ele pode ter um ano de experiência, repetido cinco vezes.
precisa saber é o seguinte
11
+1 por verdade - trabalhei com pessoas recém-contratadas com mais de 8 anos de experiência que se mostraram na média na melhor das hipóteses. Por outro lado, acabamos de contratar um garoto por um ano fora da universidade e ele superou todas as expectativas.
Damovisa
4

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:

Os programadores se apegam muito a seus idiomas favoritos, e eu não quero magoar os sentimentos de ninguém, então, para explicar esse ponto, vou usar uma linguagem hipotética chamada Blub. Blub cai bem no meio do continuum da abstração. Não é a linguagem mais poderosa, mas é mais poderosa que o Cobol ou a linguagem de máquina.

E, de fato, nosso hipotético programador Blub não usaria nenhum deles. É claro que ele não programava em linguagem de máquina. É para isso que servem os compiladores. E quanto a Cobol, ele não sabe como alguém pode fazer algo com isso. Ele nem tem x (recurso Blub de sua escolha).

Enquanto nosso hipotético programador Blub estiver olhando para baixo, ele sabe que está olhando para baixo. Idiomas menos poderosos que o Blub são obviamente menos poderosos, porque faltam alguns recursos aos quais ele está acostumado. Mas quando nosso hipotético programador Blub olha na outra direção, no continuum de poder, ele não percebe que está olhando para cima. O que ele vê são apenas línguas estranhas. Ele provavelmente os considera equivalentes em poder a Blub, mas com todas essas outras coisas peludas também. Blub é bom o suficiente para ele, porque ele pensa em Blub.

Quando mudamos para o ponto de vista de um programador usando qualquer uma das linguagens mais altas do continuum de poder, descobrimos que ele, por sua vez, olha para Blub. Como você pode fazer algo no Blub? Nem tem y.

Geralmente, meu conselho é aprender mais de um idioma e aprender quais são os pontos fortes e fracos dos idiomas.

Tangurena
fonte
Concordo que é importante conhecer vários idiomas. Os idiomas são ferramentas em nossa caixa de ferramentas e saber quais são seus pontos fortes e fracos é importante para realizar um trabalho. Você pode pregar um prego com uma chave de fenda, martelo ou alicate, mas um funciona muito melhor do que os outros. É claro que um martelo é ruim para remover um parafuso ou apertar ou afrouxar uma porca em um parafuso.
the Tin Man
2

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.

Watson
fonte
5
Supondo que o desenvolvedor seja competente.
GBN
2
@gbn: Eu posso absolutamente garantir-vos que no meu caso não é possível fazer essa suposição :)
Watson
2

Aqui está o que eu esperaria / espero:

  1. Fluência - eles devem ser capazes de escrever mais códigos do topo da cabeça e menos tempo procurando a sintaxe.
  2. Conheça a diferença entre as versões anteriores e as atuais e como migrar o código de uma para outra.
  3. Compreenda melhor a compilação, distribuição, teste e criação de atualizações e patches.
  4. Crie / inclua complementos no IDE e obtenha eficiência com eles.
JeffO
fonte
2

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.

Jeremy
fonte
Você pode aprender um idioma inteiro rapidamente, mas se houver algum conceito que você não saiba, isso levará tempo. Nem todos os idiomas têm os mesmos conceitos.
David Thornley
2

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).

Tim Williscroft
fonte
1

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.

David Thornley
fonte
1

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

Tal Cameron McMahon
fonte
1

"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ó.

Bobby Tables
fonte
-1

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.

Michael Riley - também conhecido por Gunny
fonte
5
oh, tão errado ...
Javier
Javier está certo, a linguagem é muito mais do que sintaxe ... existem convenções, bibliotecas de terceiros, APIs, que você aprende com a experiência.
Daniel S