Ser um desenvolvedor sênior usando um idioma qualifica você para ser um desenvolvedor sênior usando outro idioma? [fechadas]

27

Se eu trabalhar como desenvolvedor em um idioma (por exemplo, Java) e chegar até o desenvolvedor sênior, isso me qualificaria a ser um desenvolvedor sênior para uma posição usando outro idioma (por exemplo, Ruby)?

Philip
fonte
2
@ Philip - esta questão é realmente uma questão limítrofe em algumas frentes. É limítrofe "muito localizado" porque realmente só terá valor para você e é limítrofe "não construtivo", pois não aborda realmente as diretrizes para fazer perguntas listadas em nossas Perguntas frequentes. Se você pode editar esta pergunta e abordar as diretrizes, pode valer a pena salvá-la.
Walter Walter
8
@ Walter - Eu tenho que discordar do seu primeiro comentário sobre localização. Essa é uma pergunta / resposta geralmente aplicável sobre se ser um desenvolvedor sênior em um idioma lhe dá direito a uma posição de desenvolvedor sênior em outro.
Craige 20/01
1
@ Walter - removeu os problemas de localização, acho que provavelmente é razoável agora.
Jon Hopkins
1
@ Walker - Desculpe, a questão é como Craige diz. Eu apenas escrevi dessa maneira porque presumo que a maioria dos programadores considerados Junior quer ser Desenvolvedor Sênior algum dia. Escolhendo a posição Júnior direito, é fundamental (ou não)
Philip
11
Essa pergunta parece assumir que "desenvolvedor sênior" tem algum tipo de significado geralmente aceito. Normalmente, é um tipo de cargo, e um cargo é o que você e seu empregador podem concordar.
precisa

Respostas:

33

A melhor maneira de responder a isso é ver qual a diferença entre um desenvolvedor e um desenvolvedor sênior. Supondo que não seja apenas uma questão de tempo, geralmente esperaria que os desenvolvedores e os desenvolvedores sênior fossem capazes de:

  • Escreva o código com competência nos idiomas exigidos pela função
  • Diagnosticar e corrigir bugs
  • Escrever testes de unidade
  • Siga os padrões e as melhores práticas razoáveis ​​(controle de versão, documentação)
  • Ter uma ampla competência técnica básica
  • Agir de maneira profissional

Além disso, eu esperaria que um desenvolvedor sênior:

  • Orientar outros membros do pessoal nas melhores práticas
  • Ser e reconhecer ponto de referência para pelo menos alguns dos idiomas que estão sendo usados ​​pela equipe
  • Pesquise ativamente e defenda novas áreas de boas práticas
  • Assumir a propriedade técnica de questões / áreas de código mais complexas e fornecer soluções sólidas

Então, a pergunta passa a ser: você atende aos critérios estendidos para o seu segundo (ou terceiro ou quarto) idioma? Eu sugiro que, desde que você seja tecnicamente competente o suficiente no idioma para o qual está se mudando, sim, pois a maioria das coisas de Desenvolvedor sênior tende a ser transferível.

Jon Hopkins
fonte
1
Isso realmente depende do ambiente, principalmente do chefe. Alguns "Srs" sentem que precisam mostrar seus conhecimentos sobre cada assunto, especialmente onde um "jr" pode ter mais conhecimento e experiência em um assunto. Pode surgir uma tensão séria quando um Sr. com experiência em C ++ trabalha em um projeto C #. Um "jr" pode ter uma base de conhecimento maior para essa estrutura específica. Isso pode causar algumas batalhas acaloradas, especialmente quando o chefe está ouvindo.
usar o seguinte código
@ P.Brian.Mackey - É justo, existem algumas diferenças bastante pesadas entre trabalhos diferentes com o mesmo título. Fui com o que considerava uma definição bastante genérica (e sensata), mas pode variar de "tem mais de 30 anos" a "sabe tudo sobre tudo".
Jon Hopkins
1
boa sorte com o último em qualquer idioma mais complicado que o BF ... até o C tem mais cantos escuros do que você esperaria!
SamB
"Alguns" Srs "sentem que precisam mostrar seus conhecimentos sobre todos os assuntos". Essas pessoas devem ser instruídas a relaxar. Você não pode aprender nada se não reconhecer que há coisas que não sabe. A capacidade de admitir livremente a ignorância de algo é um sinal de força, não fraqueza.
PeterAllenWebb
1
+1 Por apontar que algumas, mas nem todas as habilidades, são transferíveis. Ótima maneira de colocá-lo.
Nicole
5

Você pode se candidatar a qualquer cargo em qualquer empresa que desejar, independentemente do seu status atual.

Caberá a você provar em seu currículo / carta / entrevista que você é o responsável pelo trabalho.

gingerbreadboy
fonte
5

Eu procuro as seguintes qualidades quando entrevistei Sr. Developers.

  • Trabalhou em vários idiomas
  • Especialista em pelo menos um, competente em pelo menos um outro, de preferência em um paradigma diferente
  • Ciente das tecnologias atuais, estado da arte, etc. na área escolhida
  • Boa base de CS, ou seja (algoritmos, custeio algorítmico, estruturas de dados, etc.)
  • A capacidade de alternar entre os detalhes de um problema específico e o cenário geral
  • Expresse quando as coisas estão se movendo na direção errada e por quê; e depois continuar na direção errada (também conhecido como profissionalismo)
  • Capacidade de Mentor
  • Capacidade de trabalhar dentro e com uma equipe

Há uma miríade de outras coisas que procuro, mas esses são os pontos principais.

Embora eu tenha recomendado a contratação de desenvolvedores Sr. que não eram especialistas no idioma usado no trabalho, eles eram especialistas em idiomas semelhantes.

dietbuddha
fonte
3

Você poderia se inscrever, mas pelo menos se eu estivesse contratando, eu poderia ou não contratá-lo.

A antiguidade refere-se a (pelo menos) duas áreas. Experiência geral em desenvolvimento e experiência em linguagem / estrutura. (Estou propositalmente deixando de fora o conhecimento do espaço comercial) no momento. Ser desenvolvedor sênior em meus livros também incluiria um nível de conhecimento em design / arquitetura. Como construir um sistema bom / testável, etc.

Chegar a esse nível em Java deve ajudá-lo em outras linguagens (semelhantes / processuais).

Mas nesta era de produtividade imediata esperada, é improvável que você saiba quase tanto sobre Ruby quanto Java. Como dividir seu sistema em construções compatíveis com Ruby em vez de construções compatíveis com Java. Você provavelmente conhece algumas estruturas Java e não o Rails ou outras coisas específicas do Ruby.

Se eu pedisse para você codificar o quadro branco em Ruby durante a entrevista, você poderia fazê-lo?

Tudo isso entraria na minha decisão de contratá-lo ou não, em qualquer nível; mas em particular para um cargo sênior .

Boa sorte

sdg
fonte
Obrigado pela sua resposta, sim, eu poderia fazer a codificação do quadro branco em Ruby (o mesmo para C ++, Java). Na verdade, eu me considero no momento atual ainda mais proficiente em Ruby do que em Java porque, desde um ano, trabalho em um projeto privado que é construído em Ruby.
Philip
3

Não.

Essa é uma das grandes diferenças entre nossa profissão e outras profissões mais 'formais'. Se você trabalhou como advogado fazendo testamentos e propriedades por 20 anos, terá uma taxa alta porque possui 20 anos de conhecimento acumulado nesse domínio .

Se você pratica C ++ / Win32 / MFC há 15 anos, isso realmente não o qualifica para um cargo sênior como desenvolvedor do Rails, mesmo se você ainda estiver resolvendo os mesmos problemas no mesmo domínio ... diga medical cobrança, por exemplo.

Pior ainda, a maioria das empresas nem o considera por uma posição mais ou menos parecida ... Por exemplo, se você faz C ++ / MFC por 5 a 7 anos, deve ser capaz de acelerar o processo em C # /.NET muito rapidamente, pelo menos para a área de trabalho. Infelizmente, a maioria das empresas não vê dessa maneira.

sujeira vermelha
fonte
4
Não sei que "a maioria" das empresas vê dessa maneira. O problema agora, em uma economia em baixa, é que existem tantas pessoas disponíveis que já conhecem (pelo seu exemplo) C #, para que possam restringir você de uma pesquisa apenas com base em números.
Wonko the Sane
Eu acho que a maioria das habilidades e experiências são transferíveis. Aprender uma nova sintaxe é fácil. Infelizmente, você está certo: não é o que você pensa, mas o que a pessoa contratando você pensa.
Ninguém
3

Depende

Tire a "programação" dela. Finja que você é um tradutor profissional.

Suponha que o inglês seja seu primeiro idioma e você também seja proficiente em francês. É provável que você aprenda espanhol com bastante facilidade.

No entanto, é pouco provável que você domine rapidamente os muitos dialetos do chinês. Embora sua experiência como lingüista o ajude a aprender o (s) idioma (s), dando-lhe uma vantagem sobre alguém que nunca estudou um idioma estrangeiro, ainda levará muito mais tempo para se tornar um "especialista" (por exemplo, "sênior" ) tradutor nesse idioma.

Wonko, o são
fonte
2

Sim e não.

Se as linguagens forem semelhantes , diga C ++, Java ou Ruby, com certeza você deve ser considerado. Dependendo da flexibilidade das pessoas sentadas nesses escritórios, você tem uma chance de lutar.

No entanto, se os idiomas são muito diferentes , e com isso quero dizer que você é um cara da COBOL que se interessou por Haskell, não obstante seus 10 anos de chances de COBOL, existem muitas chances de que você não consiga nem garantir uma entrevista.

PARES DE COISA QUE VAI EM SEU FAVOR EM TAIS SITUAÇÕES:

  1. Se você já conhece vários idiomas e tem experiência comprovada sobre o mesmo. Digamos que você seja bom em C ++, mas também saiba Perl, Tcl e Ruby. Eu gostaria de considerá-lo para Java. Na verdade, eu conheço pessoas que têm trabalhos em Java com C ++ em seus currículos.
  2. Se a sua experiência estiver em um domínio relacionado, você terá uma boa chance de fazê-lo. Por exemplo, se você é um programador de jogos em C ++, não vejo razão para não poder ser contratado para um trabalho em C # que precise de um pouco de multi-threading.
Fanatic23
fonte
1
Ok, eu tenho que perguntar - como é o Ruby como C ++ ou Java? C ++ e Java são linguagens no estilo C, enquanto Ruby é derivado de Perl, Python e Smalltalk.
Craige
Eu estava me referindo ao POO como o tema norteador.
precisa saber é o seguinte
2

Eu raramente vi um título "sênior" com base no idioma. Conheço alguns programadores seniores de sistemas , alguns programadores seniores da web e um programador sênior da COBOL.

A programação é multifacetada e tem algumas disciplinas a oferecer. Eu esperaria que um desenvolvedor web sênior (em títulos, programador e desenvolvedor parecesse intercambiável) seja proficiente em várias linguagens principais usadas no desenvolvimento web. Isso faz de um guru de Python e PHP um especialista instantâneo em c #? Não. Por outro lado, nem todos os c # gurus dominam a arte do gerenciamento e liderança de projetos.

Desempenhei o papel de CTO em uma empresa, além de ser programador sênior de sistemas. No entanto, eu felizmente me mudaria para um especialista em esquemas ou LISP se encontrássemos um projeto que fosse necessário. Parte de ser um bom líder é entender suas próprias limitações e deficiências primeiro .

Não tenho certeza se gostaria de trabalhar em uma empresa ou mesmo em um departamento focado em um e apenas um idioma. Parece que faria o que eles sempre disseram que fumar faria: atrapalhar seu crescimento quando a realidade é realmente muito pior.

Não persiga títulos, persiga conhecimentos. Mas, para ser justo, seu papel em uma posição anterior de liderança provavelmente daria uma vantagem adicional, desde que você demonstrasse competência no idioma em questão.

Tim Post
fonte
0

Eu acho que depende do que você considera um desenvolvedor sênior? Se for mais uma função de arquiteto, muitos dos princípios e padrões de design estarão à sua disposição na sua experiência como desenvolvedor, independentemente do idioma. Então isso é uma vantagem ;-)

No entanto, ao analisar a criação de um aplicativo ou código da maneira mais produtiva e sustentável possível (a rolagem dos bits de sleaves), não acho que você possa entrar no mesmo nível de experiência ao alternar idioma, IDE e / ou estrutura.

Mas, como disse runrun, isso não impede você de se candidatar a algo

Syg
fonte
0

Isso dependerá muito da empresa que você entrevistar, pois normalmente são os procedimentos internos de recursos humanos que orientam a maneira como os novos funcionários são contratados. As empresas maiores tendem a ser muito rígidas e, se disserem que você deve ter n anos de experiência em um determinado idioma para ser considerado um nível sênior, talvez descubra que elas apenas o levarão a um desenvolvedor de nível intermediário.

Dito isto, porém, isso não deve impedi-lo de se candidatar à vaga e, se eles o trouxerem para uma entrevista, é algo que você deve discutir.

rjzii
fonte
0

Eu diria que quanto mais baixo o nível de linguagem ou a máquina, mais especialista você é.

A experiência em Java / C # é menos paga que a experiência em ASM / C / C ++.

Essas últimas linguagens gerenciam a memória e outras coisas que realmente importam na programação.

Mas para outras linguagens "fáceis", você precisaria fazer uma comparação rápida sobre os recursos que as tornam "mais fáceis", mas acho inútil. As experiências com linguagens fáceis são melhor avaliadas com o CMS / outro código criado que você costumava trabalhar, como o ignitor de código ou o django, o Apache ou o RoR.

Para mim, desenvolvedores seniores são pessoas que programam Kernels, Sistemas, hardware incorporado, etc. Programadores que usam linguagens que não são compatíveis com máquinas não são seniores para mim. Eles apenas fazem o trabalho, mas é tudo.

jokoon
fonte
Opinião interessante. Eu concordo, C ++ é muito mais doloroso. Por outro lado, existe muita dor no C ++ porque partes da linguagem (atual) são meio desatualizadas. Linguagens mais recentes têm muito mais funções de biblioteca, Lambdas, for-each-loops e sintaxe menos enigmática para muitas coisas. Essas questões podem distrair a pessoa de se concentrar nas coisas reais de baixo nível.
Philip
Esta é uma opinião interessante. Na minha experiência, uma pessoa idosa lida mais com a gerência, não necessariamente porque não codifica, mas porque tem mais experiência em traduzir coisas de baixo nível para não-técnicos. Você certamente pode respeitar essa capacidade ou não. Seu ponto de vista levanta uma questão: em uma equipe de 30 desenvolvedores da web, nenhum deles é mais experiente porque não pode escrever um kernel? Não faz diferença para você se eles trabalharam no Mosaic ou acabaram o ensino médio?
27511 Steve Steve
30 desenvolvedores web? DESENVOLVEDORES? Bem, "sênior" significa para mim que a pessoa está codificando há muito tempo ou tem mais idade. Mas se eu acho "sênior" em termos de experiência e conhecimento que importa, não acho que você poderia chamá-lo de experiência em programação se usar uma linguagem de coleta de lixo.
Jokoon