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)?
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)?
Respostas:
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:
Além disso, eu esperaria que um desenvolvedor sênior:
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.
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.
Eu procuro as seguintes qualidades quando entrevistei Sr. Developers.
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.
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
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.
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.
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:
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.
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
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.
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.