De um tradutor: Valery Aleksiev, um programador experiente,
falou sobre o que é melhor feito por um desenvolvedor de software no início de sua carreira. Em particular, quais ferramentas valem a pena usar e o que procurar em entrevistas.
Os primeiros anos da minha carreira foram anos de treinamento intensivo. Me deparei com uma dura realidade e percebi que precisava adquirir muitas habilidades diferentes nas quais nunca havia pensado antes. Portanto, decidi escrever um pequeno guia para outros desenvolvedores. O artigo revela tópicos como entrevistas, trabalho como programador, recursos que ajudarão a melhorar.
Entrevistas de emprego
Tendo iniciado uma carreira como programador, você perceberá imediatamente que as entrevistas são péssimas. Eles podem ser terríveis para todas as partes envolvidas. Eles simplesmente matam o tempo, um fator gerador de estresse e o primeiro obstáculo a uma carreira de sucesso. Mas você precisa lidar com eles, por isso é melhor saber para o que se preparar.
Preparação para a batalhaPerguntas e tarefas podem ser muito diferentes, como exemplo, citarei a popular tarefa do FizzBuzz.
Escreva um programa que exiba números de 1 a 100. Mas, para números múltiplos de três, é necessário exibir o Fizz em vez do próprio número e, para números múltiplos de cinco, Buzz. Para números múltiplos de três e cinco, exiba a palavra FizzBuzz.
Tudo parece ser tão simples e claro como o dia, certo? De fato, a maioria dos programadores iniciantes falha na entrevista de emprego. Eu já vi casos em que os candidatos ao cargo sênior não concluíam a tarefa e, além disso, tinham acesso à rede. Meu conselho é concluir esta tarefa antes da entrevista na linguagem de programação que você usa com mais frequência. Caso contrário, a entrevista será uma perda de tempo para todos os seus participantes.
Claro, você precisa de muito mais conhecimento. Em particular:
- Estruturas e algoritmos básicos de dados: listas, matrizes, árvores e classificações vinculadas.
- Informações gerais sobre o idioma “your”, incluindo imutabilidade de strings, gerenciamento de memória e muito mais.
- Conceitos de programação orientada a objetos, como classe x objeto e herança.
Tudo isso deve ser literalmente polido, se você quiser se mostrar do melhor lado. Posso aconselhar esses recursos que ajudarão a preparar as entrevistas:
- "Cracking the Coding Interview ", apenas um livro fantástico que contém informações sobre um grande número de problemas de programação e suas soluções;
- CodeWars , um site com tarefas incomuns de programação que você pode resolver diretamente no seu navegador usando vários idiomas.
A Skillbox recomenda: Curso prático "Profissão Web Developer" .
Lembramos que: para todos os leitores de "Habr" - um desconto de 10.000 rublos ao se inscrever em qualquer curso Skillbox usando o código promocional "Habr".
E um pouco mais
Existem alguns pontos que ajudarão você a obter conhecimento e experiência adicionais.
Primeiro, aprenda a expor claramente seus pensamentos e a descrever seus conhecimentos e capacidades. Aprenda a criar currículos bons e dobráveis. Isso pode parecer bobagem, mas muitos candidatos a emprego não sabem como fazer isso, não podem explicar o que são em uma reunião pessoal nem escrever um currículo competente.
Em segundo lugar, publique exemplos de seu código no GitHub ou em qualquer outro repositório aberto. As amostras de código não devem ser muito complicadas, mas o código precisa ser limpo e racional. Esta é sua chance de mostrar algumas de suas habilidades antes da entrevista.
Tente participar de um projeto de código aberto. Isso mostrará sua experiência e ensinará você a trabalhar em equipe.
Entreviste seu entrevistadorSim, a entrevista não deve apenas perguntar a você. Você pode e deve estar interessado nas várias nuances de seu trabalho e empresa futuros. Ouça atentamente as respostas. Eles podem ser muito importantes, conter informações explícitas e não muito sobre o que é uma nova empresa, sua equipe e trabalho.
Aqui estão alguns exemplos de perguntas a serem feitas.
Qual será o meu dia de trabalho padrão?Essa é uma questão importante, pois as tarefas de um desenvolvedor de software em diferentes empresas podem diferir acentuadamente. Se a resposta não for muito confiante ou vaga, considere isso um aviso, um indicador de que algo está errado aqui. A pessoa que o contrata deve ter uma compreensão clara do motivo pelo qual você é uma empresa.
Como você testa seu software?Idealmente, o teste deve ser bastante diversificado. Se a resposta for algo como "Acabamos de escrever tudo de uma só vez sem erros, haha", você deve entender isso de tal maneira que haja erros, mas ninguém os quer ou não pode corrigi-los.
Qual sistema de controle de versão você está usando?Uma questão importante, pois é necessária para o trabalho em equipe. Se a resposta for: "O que, sistema de controle de versão?" - então fuja dessa entrevista rapidamente e longe.

Se o seu interlocutor começar a falar sobre um sistema personalizado, nada de bom estará esperando por você nesta empresa, já que a infraestrutura aqui claramente não foi atualizada por um longo tempo.
Você realiza revisões de código?De fato, a revisão de código é uma etapa importante no trabalho em equipe, pois permite identificar muitos erros. Se você receber uma resposta negativa, isso significa que o trabalho em equipe não é muito bom. Claro, pode haver exceções, mas na maioria dos casos é. Se lhe disserem algo como "Confiamos um no outro", vale a pena considerar. Provavelmente, ninguém verifica nada nesta empresa.
Quais programas educacionais você pode oferecer? Um programador deve evoluir constantemente, para que a maioria das empresas ofereça a oportunidade de aprender. Se não for esse o caso, o dinheiro é um problema ou os desenvolvedores são alterados com frequência.
Qual processo de desenvolvimento de software você usa?Em qualquer empresa em que mais de duas pessoas trabalhem, deve haver algum tipo de algoritmo para o trabalho geral da equipe, um processo simplificado. Se não houver nada assim, o trabalho nesta empresa será como andar de bicicleta que queima, e tudo ao seu redor queima, todo mundo queima.
Como você resolve o problema da dívida técnica?Dívida técnica, ou dívida de codificação, é um termo que identifica erros de longa duração no código ou na arquitetura do aplicativo. Os problemas se acumulam e, no final, tornam-se um obstáculo muito sério para continuar o trabalho no projeto.
Se você responder que não há soluções e a empresa estiver "focando em novos recursos", provavelmente o problema cresceu a tal ponto que não pode ser resolvido ou o caos começará no futuro próximo.
O que você pode dizer sobre a cultura corporativa?Diferentes empresas têm uma atmosfera e cultura muito diferentes. Mas lembre-se de que você precisará estar dentro da equipe mais de 40 horas por semana por vários anos; portanto, ouça o que lhe disseram.
Trabalhe como programador
Ok, você passou por todas as etapas da entrevista e conseguiu um emprego. Parabéns!

O que agora Você precisa perceber muitas coisas interessantes e não tão. Como somos programadores, vamos nos concentrar na discussão do código.
Good codeEle deve atender aos seguintes critérios:
- Para ser legível, porque o código é analisado com muito mais frequência do que está escrito. Portanto, seu código deve ser legível e compreensível para você e seus colegas.
- Confiável. Você deve ter certeza de que todas as classes e métodos são usados corretamente e não causarão falha no programa.
- Otimizado. Você não deve ser um perfeccionista, mas ainda precisa revisar regularmente seu código. Você sempre deve estar preparado para fazer um pouco de otimização de código.
Aqui estão mais algumas coisas para aprender.
Você não estará programando muito.
Sim, isso pode parecer estranho, mas na verdade você passará muito mais tempo em:
- depuração
- lendo o código;
- reuniões e escrever e-mails / respostas;
- planejamento.
E vamos falar sobre as habilidades que são importantes para a carreira de um programador.
Depurando e lendo código
- Para se tornar um profissional em depuração, você precisa decidir sobre as ferramentas apropriadas. As linguagens de programação mais populares possuem as ferramentas necessárias para depuração. Conheça-os, aprenda como usá-los - você economizará inúmeras horas.
- Entenda a base, a estrutura da base de código. Você pode aprender o código com ferramentas como ReSharper, grep ou Sourcegraph.
- Aprenda os manuais. Você ficará surpreso se descobrir como poucos desenvolvedores aprendem documentação técnica. Como resultado, muitos simplesmente não sabem como o software deve funcionar, o que significa que é gasto mais tempo na depuração. Basta ler a documentação - você economizará tempo.
Organização e PlanejamentoComo você tem muito para se comunicar com colegas, planejar e executar tarefas (e algumas ao mesmo tempo), você precisa ser capaz de organizar seu tempo. Isso irá ajudá-lo:
- TODO / Tarefas. É provável que sua empresa tenha um sistema para manter tarefas e monitorar sua implementação, mas não custa nada iniciar seu próprio sistema. Use o Trello, Todoist ou qualquer outra coisa.
- Notas. Nesse processo, você frequentemente precisa memorizar várias pequenas coisas necessárias. É melhor gravá-los - por exemplo, usando o Evernote, o OneNote e outras ferramentas.
- Gráficos e visualização. É melhor avaliar seu desempenho com ferramentas como Lucidchart, Visio e outras.
Quando usar bibliotecas?Quase sempre. Não há necessidade de reinventar a roda repetidamente. Na maioria dos casos, trabalhar sem bibliotecas leva a uma perda de tempo. Obviamente, isso não significa que você deva permanecer ignorante sobre como usar os algoritmos ou qual é a estrutura dos bancos de dados, porque você precisa entender como e onde usar tudo isso.
As bibliotecas padrão da maioria dos idiomas populares são extremamente eficientes. Revise a documentação para entender melhor como usá-los.
Você não deve ter medo de trabalhar com bibliotecas adicionais se elas ajudarem a economizar tempo. Pode ser:
- Bibliotecas de código aberto onde você pode avaliar a qualidade do código.
- Bibliotecas licenciadas sob MIT e BSD, você pode usá-las sem problemas. Tenha cuidado com a GPL.
- Aqueles que já estão em uso há muito tempo e possuem uma ampla variedade de recursos.
- Suportado - aqueles que recebem atualizações regularmente.
- Utilizado por outras empresas / projetos, o que pode indicar sua confiabilidade.
Continue melhorandoPode parecer brega, mas você precisa aprender mesmo durante o trabalho e no tempo livre - todos os dias. Isso é auxiliado por cursos on-line, livros, blogs e também por uma segunda (terceira) educação. Também vale a pena prestar atenção em conferências e vários tipos de workshops. Entre as conferências mais famosas, eu destacaria GOTO (direção geral), Strange Loop (também geral), PyCon (Python), CPPCon (C ++), DEF CON (segurança), Fluent (webdev).