Você acabou de obter seu diploma de CS ou se formou no bootcamp e passou meses ou anos aprendendo a escrever código eficiente, praticando para entrevistas e construindo projetos de portfólio. Finalmente, você aceitou uma oferta e está entusiasmado - você agora é um Engenheiro de Software ™. Você marcha em seu primeiro dia, com a cabeça erguida. E então, em sua primeira semana de trabalho, você percebe o quão pouco você realmente sabe.
Em sua busca para se tornar um desenvolvedor, você aprendeu a escrever códigos elegantes e de alto desempenho que podem resolver qualquer problema bem definido. No entanto, para oferecer suporte e expandir efetivamente um aplicativo da web, você precisa entender as ferramentas, estruturas e fluxos de trabalho que permitem que sua equipe colabore e implante um aplicativo ativo (“produção”).
Essas habilidades são difíceis de adquirir durante o estudo ou trabalho em projetos pessoais, e muitas vezes não são expandidas em bootcamps ou programas de ciência da computação. Não se preocupe! Este artigo servirá como um curso intensivo para as muitas coisas que você precisa saber para ter sucesso como desenvolvedor em seu primeiro emprego - além de escrever código.
O porquê : de projetos pessoais ao código de produção
Ao trabalhar em projetos pessoais ou de portfólio, você provavelmente implantou e manteve o código. Então, qual é a diferença entre empurrar mudanças em seus projetos pessoais e contribuir para a base de código da DoLitter, a startup de entrega de areia para gatos em rápido crescimento da qual você acabou de ingressar?
Carga de usuário : DoLitter pode ser acessado por centenas ou até milhares de usuários de todo o mundo ao mesmo tempo. O tempo de inatividade pode custar à empresa centenas de dólares por minuto em pedidos, manchar a marca e irritar os clientes existentes.
Escala : DoLitter é um serviço robusto com um aplicativo voltado para o consumidor, uma API para aplicativos móveis e nativos e integrações com outros jogadores importantes do setor. Conforme a equipe e a base de código crescem, o código precisa ser bem arquitetado e documentado para que outros desenvolvedores possam contribuir de forma eficaz. Antes de qualquer alteração chegar aos usuários, ela precisa ser testada exaustivamente em um ambiente o mais próximo possível da produção para garantir que não atrapalhe os recursos existentes e funcione em vários dispositivos.
Segurança : DoLitter obedece às leis internacionais de privacidade, como o GDPR , e trabalha com grandes parceiros corporativos, que seguem regras rígidas sobre como seus dados de usuário devem ser tratados. Se alguma coisa der errado, você precisará de um software de monitoramento para detectar vulnerabilidades ou violações de dados o mais rápido possível e um registro de servidor robusto para revisar exatamente o que deu errado.
Acessibilidade : Nem todos os usuários DoLitter têm as mesmas habilidades visuais, auditivas e motoras e podem usar o DoLitter com dispositivos auxiliares, como um leitor de tela. É fundamental que o aplicativo seja igualmente acessível a todos os seus usuários, seguindo um padrão como as Diretrizes de Acessibilidade de Conteúdo da Web .
Confiabilidade: os usuários - principalmente os pagantes - esperam que o site seja funcional, acessível e seguro - o tempo todo. O DoLitter precisa armazenar dados de negócios com segurança e fazer backup deles regularmente, de modo que, se um servidor de banco de dados travar, por exemplo, você possa restaurar rapidamente os dados de outro.
Comunicação : Alcançar os objetivos que delineamos até agora requer a colaboração com outros desenvolvedores, designers e gerentes de produto. Você pode criar, codificar e dar suporte a um projeto pessoal sozinho. No DoLitter, no entanto, você não pode fazer tudo sozinho - e seus colegas de trabalho são o seu melhor suporte! Aprender a se comunicar de forma eficaz com outros desenvolvedores, como buscar e oferecer ajuda e como delegar trabalho, são aspectos essenciais (e muitas vezes mais gratificantes) de trabalhar em uma grande equipe - um tópico crucial que poderia formar a base para um todo outro artigo!
O como : uma viagem pelos processos
Então, como uma equipe de desenvolvimento atende a todos esses requisitos elevados? Com toda uma série de ferramentas e processos! Vamos examinar a diferença entre como você introduziria uma mudança em um projeto pessoal e todos os processos envolvidos em enviá-lo para a base de código DoLitter.
Dependendo do tamanho da equipe e da base de código, seu local de trabalho pode não usar todos eles ou pode ter ainda mais ferramentas de nicho. Não se preocupe em se lembrar de todos os nomes e siglas. Concentre-se no problema que cada ferramenta está tentando resolver e, se for uma ferramenta que você vê com frequência, pesquise mais .
Fluxo de trabalho Git
Se o código é como você faz alterações no software, um sistema de controle de versão como o git (e alternativas menos populares como o Mercurial e o SVN) é como você rastreia e compartilha seu trabalho. Quando você trabalha em seus próprios projetos, git pode ser uma ferramenta útil para reverter para versões anteriores de seu código ou compartilhar seu código com outras pessoas. No DoLitter, no entanto, seu poder é muito amplificado.
Com o git, (e suas interfaces web intimamente associadas como GitHub e GitLab ), você pode compartilhar partes do seu trabalho, ter seu código revisado, verificar em que outros desenvolvedores estão trabalhando, mesclar seu trabalho com o de outros e até mesmo visualizar commits individuais. O Git também pode ajudar a mesclar mudanças e resolver conflitos quando várias pessoas trabalham (e se comprometem) no mesmo arquivo. Tudo isso ajuda DoLitter a garantir que você contribua com código de alta qualidade que se beneficie do contexto de seus colegas.
Assim que estiver confiante em suas alterações de código, você envia uma solicitação pull (uma mudança com a qual deseja contribuir para a base de código) e o novo código será revisado por vários membros da equipe - às vezes, colegas com conhecimento de domínio específico ou foco , e às vezes qualquer pessoa disposta a dar uma olhada.
Enquanto aprende, você provavelmente se deparou com três atividades principais no git: push, pull e commit de código. No trabalho, você precisa se sentir confortável com:
criação de ramos, que delineiam um novo recurso ou linha de trabalho
enviar solicitações pull (“PRs”) para que suas alterações locais sejam puxadas para o repositório central ou “mestre”
resolver conflitos de mesclagem quando vários engenheiros fazem alterações no mesmo código
mantendo um histórico git limpo garantindo commits descritivos e precisos
rebasing , uma alternativa comum à fusão que ajuda a manter um histórico de projeto linear e mais limpo
seleção seletiva , que permite mover os commits entre ramos
culpar , que mostra quem tocou anteriormente no código com o qual você está trabalhando. Pode soar acusatório, mas não é. Está aí para que você saiba a quem pedir contexto, não para apontar o dedo.
Entender o git tornará muito mais fácil salvar, manipular, compartilhar e revisar o código que você escreveu. Fique confortável com isso e você achará muito mais fácil colaborar.
Teste, teste e produção, meu Deus!
Em projetos pessoais, muitas vezes você pode colocar o código direto na produção - seus sete usuários são bastante tolerantes a bugs (obrigado, mãe!). No entanto, DoLitter usa vários ambientes de programação diferentes para ajudá-lo a escrever código rapidamente, testar com eficiência e implantá-lo com segurança. Por exemplo, antes de o código entrar no ar, é uma ótima ideia usá-lo em um ambiente semelhante ao que seus usuários verão.
Você pode fazer isso empurrando para um “ambiente de teste”; um clone apenas interno de seu ambiente de produção destinado a replicar a experiência que seus usuários terão. Então, se o seu código passou nos testes automatizados e na revisão interna, você pode integrá-lo à produção. Para acompanhar as diferentes necessidades de diferentes ambientes, DoLitter tem configurações explícitas, armazenadas em arquivos de configuração.
Após ser carregado no servidor de produção, o código geralmente passa por um processo final de construção. E então, vejam só! Suas alterações estão ativas. Mas, você já se perguntou o que exatamente acontece durante o processo de implantação?
O processo de implantação
Embora você ainda possa implementar o Firebase em seu projeto pessoal, o DoLitter precisa garantir que as alterações enviadas para a produção (“prod”) sejam rígidas e não quebrem nada. Sua equipe pode implantar várias vezes ao dia, ou sempre que uma nova mudança é incorporada ao branch master, seguindo um processo denominado “integração contínua”. Este processo pode ser gerenciado por uma ferramenta de integração contínua como o CircleCI .
Então, o que exatamente acontece durante uma implantação? Para começar, você está trabalhando em um ambiente de “desenvolvimento” local, o que lhe dá a capacidade de ver as mudanças quase que instantaneamente. No entanto, o que é implantado na produção geralmente não são os arquivos exatos com os quais você trabalha em sua máquina local.
Os arquivos que você usa são agrupados em um, compilados em outro idioma e minimizados eliminando os espaços em branco e encurtando os nomes das variáveis.
Um conjunto de testes de unidade única e testes de integração compostos é executado em seu código para garantir que não haja erros de sintaxe ou lógica gritantes.
Ferramentas adicionais como CodeClimate podem medir a qualidade do seu código (analisando sua sintaxe para melhores práticas), enquanto outras verificam as mudanças visuais, testam a construção para garantir que ela seja capaz de lidar com um influxo de usuários e até mesmo medir o desempenho.
Se o seu código passar em todos os testes, a construção foi bem-sucedida e você tem uma versão do aplicativo que pode mostrar aos usuários.
Monitoramento de Erro
Seu código está ativo. É hora de ver como funciona na produção. Uma vez que seu código está em produção, há uma série de plataformas que informam como ele está se saindo. Ferramentas como Airbrake ou Sentry ajudam a encontrar erros que seu aplicativo atinge na produção, o que pode acontecer devido a:
conexões defeituosas de terceiros, como quando uma API com a qual você conversa atinge o tempo limite
inconsistências em seus dados
erros de lógica em casos extremos não detectados por testes
Além disso, ferramentas de monitoramento como Datadog e NewRelic se concentram no desempenho de aplicativos ao vivo . Eles rastreiam quanto tempo seu site leva para responder às solicitações e até mesmo quais áreas do código demoram mais para carregar. Às vezes, o código não gera erros, mas ainda é executado lentamente; o monitoramento de desempenho pode ajudá-lo a descobrir onde está o problema. Finalmente, se surgirem erros, as ferramentas de registro do servidor, como o PaperTrail, podem ajudá-lo a rastreá-los.
Uau, isso é muito!
Quando você começa a trabalhar em um aplicativo da Web em escala de produção, percebe que há muito mais em ser um desenvolvedor do que apenas escrever código. Aprender uma nova base de código pode ser um desafio, mas aprender as ferramentas e os fluxos de trabalho da indústria ao lado disso pode ser totalmente assustador. Muitos novos desenvolvedores sentem que deixam de saber algo e passam a não saber muito. Essa experiência é comum e completamente normal, mas se torna mais fácil à medida que você se acostuma com as ferramentas e fluxos de trabalho que as empresas usam.
É provável que seu primeiro trabalho envolva uma enxurrada de ferramentas e processos que fazem a escrita de código parecer uma reflexão tardia. Lembre-se de que você foi contratado não apenas para escrever código, mas para manter e desenvolver um aplicativo - e fazer isso efetivamente envolve dominar suas ferramentas e aprender a avaliar os problemas que elas resolvem. Com o tempo, você se descobrirá escrevendo um código mais robusto e eficaz - e ajudando o DoLitter a entregar areia para gatos de forma confiável em todo o mundo.
O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.