O que um Senior deve saber?

Conversando com algumas pessoas da equipe surgiu a dúvida: O que um senior dever saber? Linux? Balanceamento de Carga? Oracle e mais quais bancos? Java (EJB, JSF, etc), WebServices? Orientação a Objetos? Padrões de Projeto? Saber tudo a fundo ou ter trabalhado com algumas dessas tecnologias já seria suficiente?

Acho que além da vivência com frameworks e tecnologias diferentes, é também a capacidade de discernimento. Saber o porque das coisas. Porque utilizar uma tecnologia em detrimento da outra. Resumindo, na minha humilde opnião, o senior tem que saber os “Porques”.

Achei este texto do sergio taborda interessante: http://sergiotaborda.wordpress.com/2009/06/19/de-junior-a-senior/

E concordo com ele, alem de saber as tecnologias, tem que ter principalmente a maturidade profissional, pensar de mente bem mais aberta e sentir os riscos das coisas, normalmente juniores só entendem do risco.
Além é claro das competências técnicas, saber escrever um bom código, um código fácil de se manter, pensar nas possíveis implementações futuras quando necessário (pois as vezes abstrair demais é excesso desnecessário), projetar uma boa arquitetura e usar os recursos necessários para a situação e saber disseminar o conhecimento com a equipe.

[quote=igor_ks]Achei este texto do sergio taborda interessante: http://sergiotaborda.wordpress.com/2009/06/19/de-junior-a-senior/

E concordo com ele, alem de saber as tecnologias, tem que ter principalmente a maturidade profissional, pensar de mente bem mais aberta e sentir os riscos das coisas, normalmente juniores só entendem do risco.
Além é claro das competências técnicas, saber escrever um bom código, um código fácil de se manter, pensar nas possíveis implementações futuras quando necessário (pois as vezes abstrair demais é excesso desnecessário), projetar uma boa arquitetura e usar os recursos necessários para a situação e saber disseminar o conhecimento com a equipe.[/quote]

Concordo 100%.

Em suma, tem que ser um cara “vivido”. Tem que ter passado tanto por projetos bem sucedidos como por projetos que porventura tenham fracassado. Geralmente se aprende mais errando e observando os erros alheios, do que necessariamente acertando sempre.

Sabem o que acho mais importante? Já vi senior atuando em tecnologia em que nunca tocou e se dando bem.
O sujeito pra ser senior tem de conseguir se virar sozinho e ser competente o suficiente para que a equipe inteira confie no seu trabalho e não precise ficar monitorando-o a cada passo.
Além disto, tem também de possibilitar que o seu conhecimento flua para todas as pessoas da equipe: sendo assim, aquele herói que sempre salva o projeto mas não conta a mágica não é sênior, é um mero junior arrogante. :slight_smile:

1 - Discernir entre as coisas
2 - Os porques de cada coisa
3 - Onde usar o que e como usar o que
4 - Se virar nas ocasiões mais tensas
5 - Pecisa de pelo menos uns 4 ou 5 anos de exp.
6 - Vivência com vários tipos de tecnologia.
7 - O mais importante saber aplicar a melhor solução em cada caso
pois isso só se obtém quando a pessoa senta e reflete sobre as coisas
e consegue se integrar com cada coisa.

E o conhecimento de inglês de Senior deve deve ser avançado? O que acham?

Deve saber o que o junior nao sabe :wink:

Amigo, se para Junior já tem que ser Intermediário

então Pleno e Senior tem que ter fluência…

mas não confunda fluência com domínio, pois não precisa ser nativo
para saber falar inglês e também depende de onde vc pretende trabalhar.

All right?

Acho que depende.

Tem muita empresa aqui no Brasil que tem Seniors muito bons, mas não manjam muito de Inglês por trabalharem somente em projetos locais.

Mas afinal, qual é a profissão hoje em dia que não te exige um conhecimento mínimo de Inglês? :stuck_out_tongue:

Acho ingles fundamental pra alguém dessa área. Maior parte do conteúdo relevante é em ingles. Livros são lançados primeiro em ingles. Existe muito mais conteúdo disponível em ingles na internet. Acho que quem sabe ingles ta sim um passo na frente.

Acho que depende.

Tem muita empresa aqui no Brasil que tem Seniors muito bons, mas não manjam muito de Inglês por trabalharem somente em projetos locais.

Mas afinal, qual é a profissão hoje em dia que não te exige um conhecimento mínimo de Inglês? :P[/quote]

Em algumas ocasiões quem sabe inglês pode estar um passo a frente mas em outras não.

Já vi empresas que possuem sêniors com mais de 10 anos de exp só na empresa.
Como vão abrir mão de uma pessoa com mais de 10 anos na empresa só pq ela não é fluente em inglês?

Sobre livros depende também…
Se a pessoa está começando agora deve estar com vantagem se saber inglês

mas acredito no geral que depende pois cada caso é um caso.

abraço.

Vocês acham que um senior deve saber muito sobre servidor de aplicação, por exemplo, sobre Jboss(balaceamento de carga, tunning)?

É como te disse, um Senior não precisa saber de todas as tecnologias, o cara pode ser muito bem um senior, que não conhece JBoss, mas ele vai saber trabalhar rapidamente, pois ele sabe o que é um servidor de aplicação, o que ele suporta e o que é as coisas que ele suporta e, caso tenha algum conceito que ele ainda não domina, ele terá a capacidade de aprender, pois com sua experiência, vai entender a lógica da tecnologia, vai saber porque é ela é boa e saber até criticar mesmo sem conhecer a fundo ou nunca ter trabalhado.
Por exemplo: um gerente, fala pra construir um software usando NoSQL e não com banco de dados relacional. Pow, voce acha mesmo que o chefe ia contratar “um senior” pra fazer isso, ao inves de pedir pro senior que ja tem ali, só pq ele não conhece a tecnologia? O cara vai ser capaz de dar uma estudada, e até bater de frente (claro, profissionalmente) com o chefe que ta pedindo isso, e tentar entender o pqê de usar NoSQL ao banco relacional, e caso ele esteja errado, vai ter a maturidade suficiente pra enteder o pqê da escolha e ainda ficar feliz por ter aprendido uma coisa nova.
Portanto, novamente, não tem dessa de Senior precisa saber X,Y,Z tecnologia. Nao vai adiantar vir com mil perguntas, cada hora perguntando sobre uma tecnologia diferente, vai ser td em vão, com a mesma resposta sempre.
Um senior precisa saber que já tem a maturidade suficiente pra ser senior, saber que quando precisar dele, seja lá qual for tecnologia, vai saber lidar com ela. Entenda que quando digo saber lidar com ela, nao é aprender a tecnologia rapidamente, não é que um senior tem que conseguir aprender tudo em 1 semana, mas sim conseguir se virar quando algo aparecer. Vai saber que quando tem dificuldade, vai pedir ajuda de alguem mais experiente, nao vai comprometer a entrega do projeto entre varias outras coisas, ou seja, senior sabe quando é senior por maturidade e não simplemente porque “to com 7 anos na area e ja tenho tempo para ser senior”

[quote=cha]O que um senior dever saber? Linux? Balanceamento de Carga? Oracle e mais quais bancos? Java (EJB, JSF, etc), WebServices? Orientação a Objetos? Padrões de Projeto? Saber tudo a fundo ou ter trabalhado com algumas dessas tecnologias já seria suficiente?
(…)
um senior deve saber muito sobre servidor de aplicação, por exemplo, sobre Jboss(balaceamento de carga, tunning)?
[/quote]

Você demonstra bastante preocupação com conhecimentos específicos. Não existe um conjunto fechado de conhecimentos, tudo depende do seu contexto, da sua vivência. O “Senior A” pode conhecer esse tipo de detalhe e aplicá-lo em seu seu dia-a-dia, enquanto o “Senior B” tem uma vivência mais de aplicações de baixo nível, escovação de bits em geral, e o “Senior C” costuma trabalhar com integração de sistemas e arquitetura SOA.

Os detalhes que cada um conhece profundamente não interessam, mas uma coisa esses 3 têm em comum: possuem forte base sobre computação e sistemas em geral. Quando necessário, podem se adaptar rapidamente às outras “especialidades”, porque embora não esteja com os detalhes frescos na cabeça ele com certeza já estudou ou viu alguma coisa parecida.

Então essa é a principal característica do Sênior. Não é a lista de ferramentas ou linguagens que ele domina (embora naturalmente ele domine uma boa quantidade delas), mas uma base ampla.

Aliás, já vi casos reais de pessoas com muito tempo de experiência, domínio em várias linguagens e servidores, mas que não tinham boa base. Simplesmente não sabiam criar soluções limpas e/ou que funcionem.

Alguém disse uma coisa interessante: o Sênior deve ser capaz de trabalhar sem supervisão da equipe. Parece absurdo, pois falamos em supervisão quando estamos discutindo a diferença entre Júnior e Pleno. Mas o que mais tem por aí é “Senior” que simplesmente não produz código que possa ser considerado pronto, a equipe já sabe que outra pessoa terá que refazer tudo. Não é o que acontece com um verdadeiro Senior: nesse a equipe confia plenamente.

[quote=JavaDreams]1 - Discernir entre as coisas
2 - Os porques de cada coisa
3 - Onde usar o que e como usar o que
4 - Se virar nas ocasiões mais tensas
5 - Pecisa de pelo menos uns 4 ou 5 anos de exp.
6 - Vivência com vários tipos de tecnologia.
7 - O mais importante saber aplicar a melhor solução em cada caso
pois isso só se obtém quando a pessoa senta e reflete sobre as coisas
e consegue se integrar com cada coisa.[/quote]

Acho que o que foi dito acima responde bem à esta questão.