Qual é a diferença entre desenvolvedores de nível básico / Jr / Sr? [fechadas]

198

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?

JD Isaacks
fonte

Respostas:

341

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.

HLGEM
fonte
2
existe um título (em inglês) para o "nível intermediário"? O tradutor do Google usa "desenvolvedor completo". Mas não é uma fonte valiosa =)
Michel Ayres
23
Excelente, explicação de história. Eu gostei de ler.
Saeed Neamati
11
Obrigado por esta explicação. Sou autodidata no desenvolvimento do iOS (sem educação em ciências da computação) e lancei meu primeiro aplicativo que possui alguns recursos não triviais (como o JSON do CRUD, alguns componentes sociais, um bom design). Eu não acho que sou um ótimo programador, mas escrevi o aplicativo de trás para a frente e entendi o que é preciso para enviar. Onde você colocaria alguém como eu, hipoteticamente?
SamYoungNY
11
@NYCTechEngineer, bem, o excesso de pilha vem à mente. Também grupos de usuários locais, blogs, artigos e livros.
HLGEM
11
@BrianHaak Thx - é interessante o que você diz. Desde o ano passado, trabalhei em um projeto muito maior do que antes. Tive a sensação de dar uma olhada no código que escrevi há alguns meses e dizer "wtf? Quem pensou que era uma boa idéia?" :) - Iniciar este projeto de um pequeno kernel para um projeto que pode ser estendido facilmente e também capaz de acomodar não-desenvolvedores que desejam adicionar conteúdo me forçou a pensar em uma estrutura de nível superior. O emparelhamento com um programador mais experiente me mostrou que estou perdendo muitas opções. usar abstrações. Eu também tenho problemas com espaço para nome.
21717 SamYoungNY 3:17
43

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

Steven A. Lowe
fonte
20
Bom, exceto que eu não sei que concordo completamente com "nenhuma verificação / instruções" para o nível sênior. A menos que você não esteja trabalhando com ou com uma equipe, ninguém deve ser completamente uma ilha.
Wonko the Sane 26/10/10
@WonkotheSane, temos alguém que mescla códigos com erros sem nenhuma solicitação codeReview ou pull. Não discute muito sobre a arquitetura de aplicativos além de usar o padrão de observação em todos os lugares. Toma todas as decisões sozinho, para que ele não se adapte a nada novo . Tudo porque ele é uma ilha. Ele não está nele. Ele é a ilha :(
Honey
16

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.

Craig
fonte
7
Isso ecoa minhas experiências. "Sênior" significa tempo na empresa e geralmente nada mais; habilidade não leva em consideração um pingo. Eu trabalhei com muitos desenvolvedores "seniores" (e gerentes) que não sabiam nada sobre software além do desenvolvimento de tentativa e erro, mas estavam na empresa há mais de 5 anos ou foram os primeiros programadores contratados quando o o local foi iniciado e, portanto, foi promovido devido à posse.
Wayne Molina
8

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.

Todd Williamson
fonte
6

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.

Walter
fonte
4

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.

Chris
fonte
Entendi, mas em que ponto você está "além do nível de entrada" ou "além do nível júnior"? Se você está sempre aprendendo, todos os dias está além do que estava no dia anterior.
JD Isaacks 26/10/10
O nível de entrada é fácil, mas estou procurando mais exemplos de experiência / conhecimento que sugiram junior ou senior.
JD Isaacks 26/10/10
Como eu disse, isso depende da empresa, do contexto da tecnologia / idiomas em questão e, mais especificamente, é uma questão de opinião, a menos que você esteja falando sobre cargos oficiais. Acho que nunca me considerarei um especialista em qualquer idioma, a menos que eu mesmo tenha escrito a maldita coisa.
26710 Chris
Além disso, se você estiver em uma empresa, olhe para os desenvolvedores jr, sr e compare / se compare a eles. Este é um bom indicador no contexto específico da empresa.
Chris
4

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.

Wonko, o são
fonte
3

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.

MattC
fonte
2

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.

senhor-fu
fonte
Você perdeu um intermediário.
Neolisk 3/17/17