Como é ser um engenheiro de software
O professor da EBAC Daniel Santos, do curso de Desenvolvedor Back-end Python, fala sobre o que é a profissão de engenheiro de software e como ela é na prática. Daniel tem 12 anos de experiência como desenvolvedor e engenheiro de software. Ele foi estagiário e chegou a especialista sênior na JetBridge. Segundo Daniel, a carreira de um Engenheiro de Software não é nada parecida com a visão estereotipada de pessoas introvertidas que muitos ainda têm dos profissionais de TI.
Principais responsabilidades: codar, desenvolvimento de produtos e manutenção do sistema
As pessoas pensam que a engenharia de software é apenas sobre codificação. Isso não é verdade. Pelo menos não para os engenheiros de software de nível sênior. Ser capaz de codificar é um dos maiores, mas não o único, requisito para sua função.
Daniel sempre trabalhou muito em conjunto com a equipe de Produto para desenvolver novas funcionalidades dos produtos. Segundo ele, é a parte mais divertida, pois você tem a chance de criar algo novo. Por exemplo, se a equipe de produto de sua empresa decidir integrar um novo recurso de integração para aumentar o engajamento dos clientes, é a equipe de engenheiros de software que sugere diferentes soluções de como esse recurso poderia ser. Essa abordagem é usada na empresa onde Daniel trabalha, mas também pode ser diferente. Em muitos casos, a equipe de Produto e a equipe de Engenharia de Software trabalham em conjunto para definir um caminho viável.
A última, mas não menos importante, responsabilidade é garantir que todos os sistemas continuem funcionando a longo prazo. É sobre pensamento estratégico. Um engenheiro de software rastreia a integridade geral do sistema para que ele não seja desligado devido à sobrecarga ou falta de máquinas.
Engenheiro de software e desenvolvedor de software são funções diferentes
Como mencionamos, ser um Engenheiro de Software é ter um mindset estratégico. Essa é a principal diferença de um desenvolvedor de software.
Desenvolvedores de software geralmente lidam apenas com codificação. Eles costumavam se concentrar em entregar resultados rápidos sem testá-los contra a realidade. Essa era a situação nas empresas quando Daniel iniciou sua carreira.
Os engenheiros de software se preocupam mais com a qualidade do resultado e como isso afeta o sistema geral. Não se trata apenas de velocidade. Quando você integra um novo recurso no produto, o funcionamento de todo o sistema não deve ser afetado. Ele deve ser executado tão rápido e seguro quanto antes da integração do recurso.
Habilidades de comunicação são essenciais
O estereótipo de que os caras de TI são introvertidos trabalhando sozinhos não é verdade neste caso. Como as responsabilidades de um Engenheiro de Software são mais amplas do que apenas codificar, seu conjunto de habilidades também deve ser amplo, incluindo soft skills bem desenvolvidas.
A comunicação é uma das habilidades mais importantes, pois um engenheiro de software sênior precisa se comunicar com sua equipe e outras equipes em toda a empresa. Já mencionamos que Daniel trabalha em estreita colaboração com a equipe de Produto, mas também está em contato com as equipes de Marketing e Vendas. Eles têm reuniões regulares para sincronizar sua compreensão do público-alvo, estratégia de desenvolvimento de produtos, visão geral da situação em cada equipe etc.
Se você quer crescer além da programação, precisa desenvolver suas habilidades de comunicação. Eles são altamente necessários para todos os cargos seniores.
Os engenheiros de software se especializam em front-end ou back-end, mas não em ambos
Antes de tudo, vamos explicar brevemente a diferença entre front-end e back-end. Vamos imaginar um site de comércio eletrônico como a Amazon. Quando você navega por ele como usuário, tudo o que você vê é front-end: o design dos diferentes elementos, as imagens, os botões, o layout da página do produto, os preços, o número de itens em estoque etc.
Back-end é o que acontece nos bastidores. Por exemplo, os preços de todos os produtos são armazenados em um banco de dados oculto aos olhos do usuário. Se alguém alterar o preço de um produto neste banco de dados, ele será alterado automaticamente na página do produto. É assim que o back-end afeta o front-end.
A tarefa do engenheiro de software de back-end é definir o design e a estrutura do banco de dados como o design das tabelas que armazenam as informações sobre clientes, produtos etc. Para simplificar: o front-end é sobre a aparência, o back-end end é sobre as funções. Portanto, requer conhecimento diferente e um conjunto de habilidades diferente para fazê-lo.
Como é um campo amplo com muitas linguagens de programação diferentes para estudar, é difícil abraçar todo o conhecimento necessário. Portanto, os engenheiros de software geralmente se especializam em front-end ou back-end. Com certeza existem engenheiros de software full-stack que são capazes de fazer as duas coisas, mas são raros devido à quantidade infinita de conhecimento e habilidades que devem ter.
A aprendizagem ao longo da vida é essencial
Mesmo que um Engenheiro de Software se especialize apenas no back-end, ainda é útil para ele ter pelo menos algum conhecimento do front-end. Daniel diz que às vezes ele precisa criar um formulário de front-end ou algo semelhante. Felizmente, hoje em dia, essas coisas podem ser facilmente pesquisadas no Google.
O campo de TI está se desenvolvendo em um ritmo muito alto. Surgem novas linguagens e tecnologias, por isso é importante manter-se atualizado com elas.
Além disso, todo problema tem várias soluções. O objetivo do Engenheiro de Software é encontrar o melhor que se encaixe no sistema geral. Para isso, ele deve estar ciente não apenas da linguagem de programação que usa, mas também de todas as outras partes do sistema, como o computador e o processador, e como tudo isso afeta o usuário final.
Mais e mais empresas adotam a abordagem "fail fast, learn fast" originada das startups. Assume-se que um Engenheiro de Software é flexível na escolha da solução para o problema. Ele pode tomar decisões independentes dentro de uma determinada estrutura, desde que essas decisões dêem os resultados desejados.
Tal ritmo e abordagem exigem constante aprendizado e aprimoramento das habilidades.
Como iniciar uma carreira de Engenharia de Software
Segundo Daniel, o maior desafio é entrar no mercado de TI. Era assim quando ele começou, há 12 anos, e ainda continua o mesmo. As empresas querem especialistas experientes em vez de especialistas de nível júnior.
Não desanime com isso. É possível entrar em uma empresa como estagiário, assim como Daniel, e aprender passo a passo a profissão.
A aprendizagem é a chave em TI.
Daniel recomendaria escolher o que você quer fazer: front-end ou back-end. Em seguida, selecione a linguagem de programação para começar. De acordo com Daniel, o mais fácil é o Python, pois sua sintaxe é próxima da linguagem que falamos. Isso facilita o aprendizado. Depois de dominar um idioma, você pode passar para o próximo. Só não esqueça que a prática é necessária. A teoria é importante no início, mas você só pode se tornar um bom profissional com a prática.
Se uma carreira de engenheiro de software parece atraente, você pode dar uma olhada no nosso curso de Python. Consiste em teoria e prática, portanto, ao final do curso, você terá um portfólio para mostrar ao seu potencial empregador.