Além de título e pagamento, qual é a diferença?
Que responsabilidades diferentes eles têm.
Quão bem informados / experientes são?
Qual é a medida básica para determinar onde um desenvolvedor se encaixa nessa estrutura básica?
Além de título e pagamento, qual é a diferença?
Que responsabilidades diferentes eles têm.
Quão bem informados / experientes são?
Qual é a medida básica para determinar onde um desenvolvedor se encaixa nessa estrutura básica?
Respostas:
Isso varia, mas é assim que eu o vejo em um lugar grande o suficiente para ter distinções entre os tipos de programadores.
Eu diria que o nível de entrada e Junior são a mesma coisa. Eles acabaram de sair da escola e têm menos de dois anos de experiência profissional. Eles recebem as tarefas menos complexas e devem ser supervisionados com bastante atenção. Geralmente eles sabem cerca de 10% do que pensam que sabem. Geralmente eles não passaram por todo o ciclo de desenvolvimento e, com frequência, fazem algumas escolhas muito ingênuas, se tiverem a oportunidade de escolher. Infelizmente, muitos deles realmente não se importam com qual é o requisito, querem construir as coisas do seu jeito. Eles costumam ter poucas habilidades de depuração.
O nível intermediário é onde muitos programadores caem. Eles têm mais de dois anos de experiência e geralmente menos de dez, embora alguns possam permanecer nesse nível por toda a carreira. Eles podem produzir código de trabalho com menos supervisão, desde que sejam atribuídos a tarefas relativamente rotineiras. Geralmente, eles não recebem tarefas de design de alto nível ou tarefas altamente complicadas que exigem um nível profundo de conhecimento. Eles podem ser encarregados do design de uma parte do aplicativo, especialmente porque estão na zona para se tornar um desenvolvedor sênior. Eles são bons em tarefas de manutenção ou tarefas em que podem se concentrar apenas na peça do quebra-cabeça, mas geralmente não se espera que considerem o aplicativo como um todo, a menos que trabalhem com desenvolvedores seniores ou estejam sendo preparados para promoção para seniores. Geralmente, eles podem fazer um trabalho decente de solução de problemas e depuração, mas precisam realmente se esforçar para obter os mais difíceis. Eles ainda não têm experiência suficiente para ver os padrões nos problemas que os apontam para o provável local em que estão ocorrendo. Mas eles estão adquirindo essas habilidades e raramente precisam pedir ajuda para depuração. Eles provavelmente já passaram pelo ciclo de desenvolvimento inteiro pelo menos uma vez e viram os resultados dos problemas de design e estão aprendendo a evitá-los no futuro. Geralmente, eles tendem a ter mais probabilidade de aceitar um requisito pelo valor nominal e não o pressionam quando há problemas ou lacunas óbvias. Eles aprenderam o suficiente para saber o que não sabem e estão começando a adquirir esse conhecimento. Eles são os cavalos de trabalho do mundo da programação,
Ninguém que seja de nível sênior precisa fazer essa pergunta. Eles são especialistas em suas pilhas de tecnologia escolhidas. Eles recebem tarefas difíceis (as que ninguém sabe como resolver) e geralmente recebem responsabilidades de design. Eles costumam trabalhar de forma independente porque têm um histórico comprovado de entrega das mercadorias. Eles devem orientar desenvolvedores Júnior e intermediários. Muitas vezes, eles são ótimos solucionadores de problemas. Eles já enfrentaram esses mesmos problemas e têm uma boa ideia de onde procurar primeiro. Idosos frequentemente mentor fora do local de trabalho também. Eles geralmente têm pelo menos dez anos de experiência e quase sempre estiveram em pelo menos uma marcha da morte e sabem exatamente por que algumas coisas devem ser evitadas. Eles sabem como entregar um produto em funcionamento e cumprir um prazo. Eles sabem quais cantos podem ser cortados e quais cantos nunca devem ser cortados. Eles conhecem pelo menos um e frequentemente vários idiomas no nível de especialista. Eles viram muitas "novas tecnologias quentes" chegarem ao local de trabalho e desaparecerem, por isso tendem a ser um pouco mais conservadoras em pular na onda para a próxima e empolgante nova ferramenta de desenvolvimento (mas não completamente resistente à mudança - essas seriam as desenvolvedores intermediários mais antigos que nunca dão o salto para Senior). Eles entendem que seu trabalho é fornecer software funcional que faça o que os usuários desejam, e não brincar com ferramentas divertidas. Eles costumam ser mais exigentes sobre onde trabalharão porque podem estar e porque viram em primeira mão o quão ruim alguns lugares podem ser. Eles procuram os lugares que têm as tarefas mais interessantes para fazer. Muitas vezes, eles sabem mais sobre os produtos de sua empresa do que qualquer outra pessoa, mesmo que estejam lá há apenas alguns meses. Eles sabem que precisam mais do que conhecimento de programação e são bons em obter conhecimento sobre o domínio comercial aos quais também oferecem suporte. Eles costumam estar cientes de questões que os juniores nunca consideram e os intermediários geralmente não pensam em questões regulatórias e legais no domínio comercial que elas apóiam. Eles podem e vão adiar um requisito, porque sabem quais serão os problemas e podem explicar o mesmo aos leigos.
Nível de entrada - deve fornecer instruções explícitas, verificar tudo o que fazem, pouca ou nenhuma responsabilidade no projeto, nenhuma responsabilidade na análise
Junior - instruções menos explícitas, menos verificação, algumas responsabilidades menores de design e análise; ajuda as pessoas de nível básico a encontrar o compilador e usar o repositório
Senior - a principal responsabilidade do projeto e da análise deve corrigir os descumprimentos por conta própria, pouca / nenhuma verificação, pouca / nenhuma instrução; ajuda as pessoas de nível júnior a aprender / melhorar as habilidades de análise e design
Realmente, acho que tudo se resume a quanto tempo você está no trabalho. Se você tem 10 anos de experiência, é um desenvolvedor sênior, se você é graduado, provavelmente é iniciante. Eu já vi muitos desenvolvedores 'seniores' que mal conseguiam codificar e realmente não sabiam o que estavam fazendo e muitos desenvolvedores juniores que eram fantásticos.
Eu acho que as vagas de aprendiz, artesão e mestre de artesãos da velha escola se encaixam nessas vagas bem para o nível de entrada, júnior (ou apenas sem prefixo) e sênior.
O nível de entrada de alguém recebe tarefas relativamente simples que não têm conseqüências profundas e seu trabalho é verificado por um júnior ou sênior. Com o tempo, eles ganham mais responsabilidade e recebem tarefas mais complexas, aprendendo as cordas ao longo do caminho.
Em um júnior (ou apenas a remoção de "nível de entrada" / "júnior" do título / descrição), você concluiu seu aprendizado e cobriu as principais áreas de desenvolvimento da sua empresa, mergulhando em cada área principal para que você familiarizado com cada um deles. Agora você ajuda a fornecer orientação e informações para o aprendiz equivalente, mas seu próprio trabalho ainda é revisado pelo mestre / sênior, embora talvez não tanto quanto quando você era um júnior.
Com o tempo e com a entrega de projetos bem-sucedidos, você se tornará sênior. No nível sênior, você domina tudo o que é coberto em sua área, cobrindo todo o processo de desenvolvimento e todas as ferramentas e tecnologias envolvidas. Você tem o poder de tomar decisões técnicas significativas e espera-se fornecer informações para o gerenciamento sobre o processo de desenvolvimento de software.
Portanto, de acordo com essas diretrizes, você deve poder olhar para uma pessoa ou posição e determinar em qual dos três compartimentos eles pousam.
Vai se resumir às expectativas da empresa em relação ao programador.
Se eu sou a empresa contratante e contrato um programador de nível básico, sei que essa pessoa sabe quase nada e vamos assumir que ela precisa aprender tudo. Se eu contratar uma pessoa de nível sênior, em teoria, ela será auto-suficiente, do ponto de vista técnico.
Isso depende estritamente da empresa. Mas as palavras são bastante óbvias: nível de entrada é alguém que está apenas entrando em campo, júnior é alguém que está além do nível de entrada e conhece muito bem algumas tecnologias de idiomas. Por fim, os idosos são os responsáveis pelo projeto e se sentam em um nível superior. Eles geralmente podem delegar o quanto codificam.
Como muitos já disseram, isso varia de empresa para empresa e de emprego para emprego.
Por exemplo, uma vez eu trabalhei em uma empresa que considerava qualquer pessoa que trabalhasse lá por mais de 5 anos um "Engenheiro de Software Sênior". No outro extremo, outro local em que trabalhei tinha definições muito rigorosas (e escalas salariais associadas).
Alguns lugares podem considerar "nível de entrada" e "junior" como a mesma coisa.
Pode variar com base em anos de experiência, conhecimento geral, conhecimento específico (ou seja, conhecer os recursos de um determinado idioma), experiência gerencial e / ou de liderança, todas as combinações dos mesmos e, certamente, muito mais.
Vou seguir a resposta realmente simples aqui: desenvolvedores seniores (em geral) são pessoas que podem ver a floresta em busca de árvores. Eles pensam além do problema imediato diante de seus rostos e compreendem quais mudanças arquiteturais poderiam ou deveriam acontecer como resultado da correção do problema com que se deparam.
A maioria das empresas de software que eu já vi tem pessoas de nível básico fazendo codificação do dia a dia, enquanto os desenvolvedores seniores estão supervisionando o que as novas pessoas estão fazendo e lidando com questões realmente feias e espinhosas.
Obviamente, essa é apenas a minha opinião, e não uma regra rígida. YMMV.
Basta colocar e a partir de observações pessoais encontradas em sites de publicação de empregos e apenas em relação aos níveis de experiência.
Entrada = Seu novo provavelmente é seu primeiro emprego.
Junior = Você é bom, mas não deveria ser o melhor; você também costuma ter menos de 5 anos e mais de 2 anos de experiência.
Senior = Você deve ser o melhor e tem mais de 5 anos de experiência.