Quais habilidades você esperaria e apreciaria em um engenheiro de software júnior? [fechadas]


64

Concluí recentemente meu Mestrado em Engenharia de Software e estou prestes a iniciar minha carreira profissional em algumas semanas. Meu papel será como desenvolvedor júnior de uma empresa que desenvolve software usando Java e tecnologias relacionadas (entre elas Spring e Hibernate). Para ser sincero, estou realmente empolgado com o que está por vir, principalmente porque quero desenvolver minha carreira como desenvolvedor Java. Também estou muito interessado em ganhar experiência no campo. Além disso, esta será minha primeira experiência profissional como desenvolvedor profissional, por isso quero realmente fazer o meu melhor desde o início.

Gostaria de saber quais habilidades e habilidades, tanto técnicas quanto técnicas, seriam mais apreciadas em um novo profissional (Desenvolvedor Júnior) que poderia fazer parte de sua equipe e em quais habilidades devo me concentrar para alcançar uma carreira de sucesso como Software Engenheiro.


13
Uma pergunta maravilhosa feita eloquentemente.
Adam Crossland

2
Encontre uma droga / atividade de gateway para quando as coisas no ambiente de trabalho do mundo real não funcionarem como você imagina, mas certifique-se de que seu efeito não se espalhe pela manhã.
Job

Atenção aos detalhes - nada é mais importante.
Orbling

11
Desde que você é um JSWE. Seja competente nos idiomas em que você disse ser competente. Nada é mais exasperante para contratar alguém que diz que conhece um idioma, mas que só o aprendeu em uma classe. (! Deus me livre, não pode usar qualquer um): Exemplo pessoas que listam C / C ++ em seu currículo, mas não pode usar um ou o outro
do Aqua

O que aconteceu com o sonho de fazer videogame? Você "deseja desenvolver [sua] carreira como desenvolvedor Java", sério? só brincando, cada um na sua :)
cambraca

Respostas:


50

Muitos deles são verdadeiros, não importa onde você esteja em sua carreira, mas podem ser especialmente importantes para alguém que está apenas começando.

  • Ouça mais do que fala. Aprenda com o que as outras pessoas estão dizendo.
  • Seja humilde. Não tenha medo de compartilhar suas idéias, mas não assuma que você está certo e todo mundo está errado. Se vir algo que acha errado, pergunte sobre isso, não faça pronunciamentos a respeito.
  • Continue aprendendo. A base de sua educação é (deve ser) ótima, mas você apenas começou a aprender a profissão. Aprender fazendo. Eu não acho que você possa realmente aprender, a menos que esteja realmente praticando o que está aprendendo.
  • O cliente raramente sabe o que quer até vê-lo. Acostume-se a mudar seus requisitos. Adote um estilo de desenvolvimento (se permitido) que coloque as coisas na frente do cliente rapidamente para obter feedback.
  • Encontre pessoas que sejam boas em trabalhar com clientes e peça que elas o orientem sobre como desenvolver relacionamentos com eles.
  • Escreva um código robusto e bem testado. Fazer isso não é o objetivo; fazê-lo corretamente é. Se você é bom nisso, a velocidade chegará com o tempo.
  • Trabalhar duro. Não espere para ser solicitado a fazer algo; procure ou peça coisas para fazer.
  • Confie nos seus erros ou nos erros da sua equipe. Não jogue os membros da sua equipe sob o ônibus na frente do cliente, mas seja honesto quando tiver problemas de código.
  • Você pode pensar que seus colegas de equipe querem que você seja um brilhante programador. Isso seria incrível, mas seus colegas realmente querem que você seja competente e não um idiota. Se você for um idiota, é melhor ser brilhante.

3
+1 para "O cliente raramente sabe o que quer até vê-lo ..."
FrustratedWithFormsDesigner

11
+1 em "Continue aprendendo". Essa é provavelmente a coisa mais importante que eu iria procurar em um programador de nível júnior
Rachel

+ para "Fazer o trabalho não é o objetivo; fazer o trabalho corretamente é" Garantir que seu código não apenas funcione, mas que seja rigorosamente testado é muito importante. Além disso, fazê-lo da maneira certa significa que outro desenvolvedor pode analisar seu código, entendê-lo e ler os comentários para depois manter a manutenção do código.
Jeremy

61

Aqui está uma lista rápida em cima da minha cabeça:

  • Acompanhamento (termine o que você inicia)
  • Honestidade (me diga se você está preso)
  • Curiosidade (descubra melhores maneiras de fazer as coisas)
  • Mente aberta (tanto para críticas quanto para idéias que não são suas)
  • Generosidade (compartilhe o que aprendeu; treine a próxima geração)

11
Eu concordo com todas as qualidades listadas. Se me pedissem para orientar um programador júnior, eu ficaria feliz em fazê-lo, e isso tornaria meu dia de trabalho muito mais agradável.
Adam Crossland

3
Acho que essa lista resume tudo, a única coisa que eu poderia adicionar é a comunicação. Eu já vi tantos desenvolvedores jovens promissores serem deixados para trás porque eles simplesmente não queriam se comunicar com os membros de sua equipe. Hoje em dia, a codificação sozinha não é suficiente, você precisa conversar com usuários, membros da equipe e se envolver. Além disso, aprenda a escrever bem, pois você fará mais do que nunca pensou que faria.
Nodey The Node Guy

14
+1 Honestidade: Aprenda a dizer: "Eu não entendo isso". - primeiro para si e depois para os seus colegas - é realmente importante. Abre a porta para a comunicação e o aprendizado. Eu já vi muitos programadores que permitiram que o ego deles impedisse a expansão de suas mentes. Trabalho nessa indústria há mais de quatro décadas e ainda encontro coisas todos os dias que não entendo. Então, pesquiso no Google, leio, escrevo código de prática e tenho mais uma habilidade que posso trazer para a mesa.
Peter Rowell

Sobre mente aberta - isso inclui particularmente exceções ao livro de regras. Eu falhei nesse ponto. Parte da experiência é aprender quando quebrar as regras. Às vezes, forçar tudo para se adequar aos seus ideais apenas torna tudo mais complicado. OTOH, não conhecendo o livro de regras em tudo ...
Steve314 15/02

11
Na parte Honestidade: o que digo às pessoas que trabalham para mim é passar meia hora tentando descobrir por conta própria e depois pedir ajuda ou um ponteiro. Se eu não tiver uma resposta imediata, bata nela por quatro horas ou mais antes de me avisar que está demorando mais do que isso. É quando começamos a arrastar as pessoas para outras tarefas para ajudar. Hoje em dia, eu também os aconselharia a pesquisar e, em seguida, pedir no Stack Overflow e no Google em geral, no início desse processo. Meu objetivo aqui é impedir a resposta instantânea à interrupção, o que pode matar a produtividade das pessoas ao seu redor.
Hack Saw

8

Duas coisas: a vontade de aprender e a capacidade de aprender.


4

Curiosidade, entusiasmo, estabelecem um alto padrão para você, vontade de aprender, vontade de admitir que não sabem, interesse no que a empresa faz e como isso afeta o trabalho que você produz. (Todas as boas qualidades, mesmo se você tiver 20 anos de experiência)

Bom conhecimento técnico é ótimo, mas você precisa mostrar como aplicaria esse conhecimento.

Acima de tudo, o entrevistador deve poder vê-lo trabalhando lá, dando uma contribuição e querendo ficar. Se você é bom demais, isso pode levar algumas pessoas mais rápido do que ficar abaixo da média. ;)


4

Motivação. Você sabe como se motivar? Você sabe quais táticas podem funcionar melhor que outras? Trata-se da autoconsciência que algumas pessoas podem esperar que você saiba de toda a educação que você fez para ter descoberto isso de lado.

Habilidades básicas de teste e depuração. Você sabe o que é um teste de unidade? Você conhece algumas maneiras de depurar um problema? Não se trata de saber especificamente o que fazer em um ambiente, mas a idéia geral de quais podem ser os testes mais básicos e quais as estratégias a serem adotadas para analisar um problema.

Habilidades de comunicação. Quão preciso você é da linguagem? Quão bem você pode passar de técnico para não técnico? É certo que isso é algo a ser desenvolvido, mas é algo a ser observado e, em alguns casos, salvo alguém que pode ter problemas por não entender as implicações do que afirmam. Você se dá bem com as pessoas? Não que esse seja um requisito estrito, mas se você pode ter um bom relacionamento com colegas de trabalho, isso pode facilitar um pouco o trabalho de alguns trabalhos. Honestidade e integridade também se enquadram nesse grupo de habilidades, pois geralmente pode haver perguntas sobre o quão bem você diz o que quer dizer e o que diz. "Escritório" tem muitos exemplos de comunicação deficiente e, embora o trabalho seja fictício, pode ter havido muitas cenas realmente próximas da realidade para algumas pessoas em termos de trabalho em ambientes de escritório.

Versatilidade. As novas pessoas da equipe podem obter um amplo conjunto de responsabilidades, de modo que, em uma pequena empresa, você precise configurar bancos de dados, redes, servidores da Web e outras coisas que estão fora do desenvolvimento. Contratar uma equipe para cumprir um prazo seria outro exemplo aqui.


11
+1: gostaria de acrescentar honestidade à seção Habilidades de comunicação. Se você não estiver familiarizado com alguma coisa ou se encontrar com algum problema, avisar um colega ou líder de equipe mais cedo pode ajudar a evitar problemas mais sérios mais tarde.
Oosterwal

2
Espere ... "Office Space" é fictício ???
PSU

3

Para mim, como desenvolvedor júnior sem nenhum diploma, minha disposição de trabalhar duro e melhorar a mim mesma ajudou muito em minha carreira. Também notei que ser capaz de lidar com algumas críticas (positivas ou não) e acompanhar o que foi apreciado pelos meus superiores.

Quanto a um novo ambiente: aconselho apenas seguir o fluxo pela primeira semana ou mais. Eu cometi o erro de tentar demais, isso não foi apreciado.


Sim. Aceitar críticas significa fazer muitas perguntas de acompanhamento para tornar o 'crítico' mais confortável. Pergunte o que mais você poderia mudar para fazer melhor. Mostre o próximo exemplo com o mesmo problema - você fez melhor desta vez? Você está melhorando? Depois que todo mundo realmente fica confortável com construtivo crítica, a diversão começa. Apenas rmember que seus pais produtos negócio não pode estar pensando desta maneira embora;)
Michael Durrant

3

Concordo com tudo o que já foi afirmado, mas quero enfatizar que você nunca deve esquecer essas habilidades gerais (e brandas) em vez de ser um especialista técnico. Você deveria trabalhar nos dois, mas eu prefiro ter um intermediário que possa comunicar o que eles sabem e ter um mestre que prefere trabalhar sozinho.

Além disso, não gaste muito tempo com o nariz em um livro. Os livros são bons, ótimos até, mas se você passa a maior parte do tempo lendo e menos trabalhando, não terá metade desses livros.


++ Bom argumento, Wes, embora eu tenha que me perguntar. Se eu perguntar às pessoas hoje em dia se elas leram algo assim, a resposta é geralmente - Leia?
Mike Dunlavey

2

Ótimas respostas a todos. Gostaria apenas de acrescentar, por minha experiência limitada de vôo - você sabe o que eles chamam de licença de piloto?

Uma licença para aprender.


2

Muitas ótimas respostas.

Mesmo se eu não trabalhar para os "grandes homens" e não sou um guru, adicionarei meus 2 centavos.

Seja legal com as pessoas .

Tente socializar com seus colegas, passe um pouco do seu tempo com alguns deles todos os dias, se possível. Vá jantar com eles de vez em quando, dê uma boa risada com eles.

Em outras palavras, tente criar uma "comunidade" se não houver uma ou tornar-se parte dela, se ela existir.

Conhecer seus colegas o ajudará a conviver com eles mais facilmente. Além disso, as chances são boas de você se divertir fazendo isso.


2

Além de todas as coisas boas enviadas pela comunidade (acima), eu também esperaria ver evidências de algumas habilidades difíceis. Não são poderes de perfeição ou über-geek, mas um bom conhecimento prático dos conceitos básicos e básicos. Você já conseguiu o emprego ( parabéns, a propósito !), Então está praticamente lá.

Porém, atualizar o seu conhecimento e / ou atualizar-se com as ferramentas, idiomas e tecnologias que sua empresa usa, significa que você entrará em ação e criará uma boa primeira impressão.

Um desenvolvedor júnior perfeito hipotético conhecerá os fundamentos de coisas como

  • o idioma.
  • I / O
  • Conceitos OO como herança
  • Interfaces de objeto
  • acesso ao banco de dados (especialmente no que diz respeito à forma como eles fazem isso na sua nova loja de códigos)
  • o modelo HTTP
  • CSS
  • JavaScript / JQuery
  • design de banco de dados
  • SQL e procedimentos armazenados
  • o (s) IDE (s) que você usará
  • estruturas relevantes (você menciona a primavera)

e assim por diante. Ele será capaz de se concentrar em adquirir novas habilidades sem precisar parar e aprender o básico. Ele será capaz de pensar (fazendo quantas perguntas sensatas quiser) - a maioria dos desenvolvedores seniores adora fazer perguntas técnicas sensatas ) com a tarifa de rotina de formulários on-line, páginas de administração que muitos juniores enfrentam nos primeiros meses. Tornar-se um desenvolvedor júnior confiável pode ser o seu primeiro teste de iniciação de equipe ;-)

Quando eu estava começando como júnior na equipe da web de uma grande corporação, a maior parte do trabalho inicial que me foi designado era algo pouco inspirador, mas me sobrecarregou ao ponto em que eu batia nos livros todas as noites para entender o que estava acontecendo. ter que fazer no dia seguinte . Passei por isso, mas isso foi estressante cinco ou seis meses após o relativo luxo do meu curso de mestrado ;-)

Se você pode fazer todas as coisas básicas de forma eficiente, você obtém coisas mais interessantes com bastante rapidez e, é claro, isso ajudará a avançar em sua carreira.

E ecoando o que muitos acima disseram, o mundo dos computadores e do código está em constante evolução. Você precisará aprender coisas novas a cada dois dias. Mantenha sua mente aberta e tente e veja por que você iniciou isso em primeiro lugar - porque você o faz menos. Nos próximos anos, poderá haver momentos em que isso não estará na vanguarda de sua mente. Entusiasmo vai levá-lo através da maioria dos obstáculos e obstáculos.

Dito tudo isso, minha experiência nos últimos doze anos mais ou menos sugere que a maioria dos juniores não fica na primeira empresa para sempre, portanto, não fique muito ansiosa por ser 'perfeita'. Cometer erros faz parte do processo que o levará do júnior até onde você quiser. Faço isso há um tempo e quase excluo um banco de dados de produção praticamente pelo menos duas vezes por ano.

Boa sorte com sua carreira.


11
+1 por ter uma resposta que menciona algo específico da programação e, portanto, não pode ser movido sem edição para o manual do escoteiro.
Psr

Ri muito. Sim, há uma série de lugares-comuns dentro desta questão;)
5arx

1

(1) Uma mente aberta. Você não quer alguém institucionalizado para usar a linguagem X e o ambiente Y para cada projeto. Você quer alguém que possa se reconectar quando uma determinada tecnologia não resolverá um problema de maneira limpa e oferecerá boas alternativas. Além disso, você quer alguém que possa desafiar o pensamento convencional e apresentar soluções que motivem os negócios. Você pode experimentar isso sozinho, mas descobri que as pessoas se acostumam a um processo que não o modificam, mas ainda reclamam da quantidade de dor que isso lhes causa. Normalmente, quando chego, vejo como melhorar isso e oferecer soluções ao meu gerente. Agora, eu também diria que o pessoal deve ser "diplomático" sobre suas sugestões :)

(2) Boas habilidades de modelagem de domínio. Este é um grande problema que algumas pessoas ignoram. Em alguns dos lugares em que trabalhei, aprender sobre o negócio é 'sujar as mãos' e as pessoas se esquivam de problemas puramente técnicos, como a integração de corretores ortográficos no controle de versão, etc. e eles não investem muito tempo em melhorar o o negócio. Sendo capaz de analisar um negócio e criar modelos (simplificações) a partir dele e comunicar que para vários públicos-alvo, seja falado, visual (UML, SSADM ou o que for) ou um pouco de ambos, você quer alguém com essa mentalidade.

Dois livros que posso recomendar sobre o assunto são: O Programador Apaixonado e O Programador Pragmático . Ambos os livros oferecem bons conselhos para programadores juniores e seniores.


+1 para as recomendações de livros; As habilidades de modelagem de domínio da OTOH levam tempo para amadurecer, então eu não esperaria isso de um júnior. Mas esforçar-se para entender o ponto de vista comercial e resolver os problemas reais dos usuários é realmente importante, em qualquer nível.
Péter Török 15/02

Peter, na universidade (pelo menos pelo que vi), um desenvolvedor criaria um forte conjunto de habilidades analíticas. Esse é realmente o objetivo de modelar, extrair conhecimento e torná-lo aprendível para outras pessoas. Então, eu diria que essa é uma habilidade fundamental que eu esperaria da maioria dos desenvolvedores. Ser capaz de enquadrar um problema específico no nível micro / marco e explicá-lo para um operador financeiro, obter feedback e comunicar isso de volta aos colegas de equipe. Essa é apenas a minha opinião sobre o assunto.
Desolate Planet

1

Tomando a iniciativa. Já tive muitas pessoas que não fazem isso e sempre esperam que me digam exatamente o que fazer. Se você vir algo que deve ser aprimorado, faça-o. Você tem uma idéia para melhorar alguma coisa? Traga isso adiante. Precisa de outra habilidade para melhorar alguma coisa? Aprenda.

Mostra que você se importa com o que está fazendo e deseja melhorar.


1

Não é para assustar você, mas uma coisa que vou alertar contra isso em todas as empresas em que trabalhei são os grandes métodos sujos de rolagem e objetos mal nomeados que fazem você temer abrir os arquivos de origem de maneira simples. choque e horror de tal confusão. Os locais em que você normalmente encontra esses itens são os manipuladores de eventos dos botões "OK" nas caixas de diálogo ou o botão "Enviar" nas páginas da web.

Eu estou te implorando do fundo do meu coração. Instale uma campainha de alarme mental, que quando um método começar a parecer grande, e por grande, quero dizer mais de 10 linhas, pense em criar outro método ... tantos métodos depois, você entenderá quanta responsabilidade o objeto no qual você está desenvolvendo.

A próxima campainha de alarme que eu recomendo é o máximo de 2-3 parâmetros em um método. Se você vir métodos com cerca de 10 parâmetros de entrada, diga Olá para a programação funcional em uma linguagem OO ...

Desculpe a ligeira frustração expressa nesta resposta, mas não posso gritar o suficiente como é benéfico aprender a escrever código limpo.

Por favor, pegue uma cópia de Robert. C Código Limpo Martins . Leia-o semanalmente, leve-o para o jantar, durma com ele debaixo do travesseiro, leve uma cópia para o banheiro e imprima algumas páginas e cole-as no teto para que, quando for dormir, possa lê-las antes você cochila;).

Desejo-lhe tudo de melhor em sua carreira. Sua paixão neste momento já mostra que você se sairá bem.


1

O único conselho que posso oferecer é nunca parar de aprender. A maneira que esses desenvolvedores de rockstar chegaram lá é dedicar tempo para aprender novas técnicas e idiomas, e é seu próprio tempo livre. Embora seja ótimo se você ficar lá por 10 anos, quando sair, você conhecerá apenas o Java + Spring + Hibernate. É por isso que, no meu tempo livre, olho para a plataforma .NET, Python e o código C ++ ocasional para permanecer ativo. Como alguém que trabalha em um MS em info sec, o tempo pode ser precioso e deve ser gasto com sabedoria.


1

A capacidade de usar o google. Realmente.

Não que eu nunca ajudaria ninguém, especialmente um colega júnior. Mas não há nada mais frustrante do que ter alguém que não faz a devida diligência na solução de problemas, continuamente.

Meu conselho para junior soft. engenheiros é fazer sua diligência na solução de problemas. Use o google, a wikipedia ou o stackoverflow de maneira diligente e metodológica quando não souber alguma coisa.

Não espere muito tempo antes de pedir ajuda a um colega mais sênior - isso depende do tipo de organização. Em uma boa empresa em que as pessoas se ajudam, se você passar mais de meio dia tentando encontrar uma resposta, não hesite em interromper sua própria pesquisa para pedir ajuda.

Em outras organizações em que as pessoas sempre são más, talvez você precise passar alguns dias sozinho (documentando tudo o que fez e em todos os lugares que pesquisou) antes de pedir ajuda. Nessas empresas, documentar o que você fez ajuda a mostrar a você que "você fez uma pesquisa no google", porque essa será a primeira resposta que eles lançarão para você.

Mas, independentemente disso, a essência do que eu procuraria em um engenheiro júnior é fazer sua devida diligência na tentativa de resolver um problema, em vez de esperar ter respostas respondidas a ele o tempo todo. Em poucas palavras, mostre-me que você pode usar o google.


1
  • Paixão pelo trabalho

  • Dispostos a aprender mais e mais e mais ..

  • honestidade

  • consistência


1

Ótimas respostas, se você seguir tudo o que as pessoas dizem aqui, tenho certeza de que alguém será bom no que está fazendo,

Só quero enfatizar alguns pontos.

  • Seja humilde, não tenha medo de dar sua opinião, mas depois que uma opinião for compartilhada, não se apegue a ela, esteja pronto para aprender com os outros.
  • forme um relacionamento com os membros da sua equipe, pessoas com quem queremos trabalhar com programadores inteligentes e bem estabelecidos, ainda precisamos de pessoas com quem possamos conversar, um relacionamento saudável com os membros da equipe ajudará muito sua carreira.
  • Seja proativo, não espere para receber trabalho, encontre trabalho, proponha novas idéias ao meio ambiente, mesmo que não sejam aceitas, isso aumentará o seu valor para a empresa.
  • Compartilhe com outras pessoas o que aprender, isso aumentará o nível de sua compreensão, aumentará seu valor para a empresa e para a comunidade.
  • Terminar o que você começa, compromisso é uma ótima qualidade de ter.
  • Fique feliz e não fique desapontado quando as coisas não estão indo como o planejado, haverá altos e baixos, mas espere aí

Tudo de bom no seu trabalho


1

Uma habilidade que eu não acho que muitos programadores Jr têm, mas é realmente boa, a capacidade de criar suas próprias ferramentas. Você pode economizar muito tempo e esforço com algumas ferramentas personalizadas bem feitas. E eles não precisam ser nada extravagantes, a maioria dos meus são scripts de shell de 3 linhas, embora alguns sejam muito mais longos.

Mas aprender a automatizar as coisas facilitará sua vida. (E impressione seus colegas de trabalho quando você conseguir fazer as coisas bem)


-3
  • Uma forte aversão a Java e C ++.
  • Uma compreensão básica dos componentes internos do sistema operacional, algoritmos e estruturas de dados.
  • Excelente proficiência em C e pelo menos uma linguagem de script.
  • Conhecimento prático de um VCS convencional (Mercurial, Subversion ou Git).
  • A capacidade de trabalhar eficientemente na linha de comando.
  • Não gosta do Windows e o uso doméstico ocasional de um SO derivado do Unix, como Linux, BSD ou Solaris, para desenvolvimento ou uso geral.

Eu não acho que uma forte aversão ao Java / C # / C ++ seja importante tanto quanto entender que o mundo não começa e termina com eles. O Java tem seus usos, mas o mesmo acontece com Ruby, PHP, Erlang, Lisp etc.
Zachary K

Quanto tempo leva para desenvolver o conhecimento prático de um VCS convencional?
Andrew M

@ Andrew M: Pode levar semanas para se tornar proficiente com a infinidade de ferramentas em torno de um VCS. Diffs, galhos, remendos, mesclagem. Depois, há soluções para as limitações ou complicações excessivas de cada VCS.
Matt Joiner

@ Matt: Entendo, obrigado. Então, qual é a melhor maneira de fazer isso por conta própria? Apenas usá-lo para seus próprios projetos de animais de estimação seria uma boa prática?
Andrew M

2
Seus primeiro e último pontos têm pouco a ver com ser bom no desenvolvimento ou na aprendizagem (as principais coisas que você precisa de novos desenvolvedores.) Ter uma "forte antipatia por XYZ" só é útil se todos da equipe compartilharem essa antipatia. Se todo mundo não fizer, isso só causará fendas. Não há diferença entre os que odeiam o Windows e os que odeiam o Linux, exceto que os dois são inimigos. Por outro lado, alguém com motivos para não gostar de algo baseado na experiência pessoal significa que tem algo a trazer para a mesa - vale a pena ter ... Mas usar o Suse em casa não o deixará mais inteligente.
corsiKa
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.