Alma, músculos, cérebro e ossos (do software)
Recentemente, prestei um concurso público para uma vaga de tecnologia e, enquanto estudava, senti que me aprofundei um pouco mais no entendimento dessa área incrível. Como alguém que adora compartilhar coisas interessantes, quis escrever sobre os principais papéis que encontramos em uma linha de produção de software moderna, papéis que podem ser um pouco difíceis de diferenciar, e quando fazem sentido.
Vamos olhar para Design, Desenvolvimento, Engenharia e Arquitetura:
🎨 Design
O Design é conceitual e está na linha de frente. Ele não fica preso à execução ou às limitações técnicas de início, em vez disso, foca em responder: O que as pessoas esperam disso? Quais pessoas? Por quê? E qual é a atmosfera, o plano de fundo, o "sabor" que faz sentido para esse produto? O design pode ser muito técnico, pensando sobre a eficácia do negócio no mercado, mas também divertido, exploratório e inovador.
Se você quer ser designer, algumas coisas fundamentais para prestar atenção são tipografia, cores, Figma, experiência e interface do usuário (UX/UI), entrevistas com usuários, personas, protótipos e testes A/B.
💻 Desenvolvimento
É aqui que o código é escrito e onde o produto final se torna tangível e ganha corpo. É o bloco de construção fundamental da linha de produção. Geralmente há mais necessidade de desenvolvedores do que de designers, engenheiros ou arquitetos, porque o desenvolvimento é a parte mais granular, consumindo a maior parte do tempo e tendo que lidar com muitos erros e comportamentos inesperados. O desenvolvedor constrói, testa e entrega. Sem o desenvolvedor, tudo o resto é apenas uma ideia, um plano, um sonho.
Se você quer ser um desenvolvedor, você terá que saber um pouco (ou muito) sobre linguagens de programação, front-end, back-end, APIs, busca de dados (data fetching), testes unitários, testes de ponta a ponta (E2E), controle de versão (Git), gerenciamento de estado etc.
⚙️ Engenharia
Um engenheiro é frequentemente confundido, inclusive dentro das empresas, apenas como "um desenvolvedor experiente", e essa confusão faz um pouco de sentido. "Desenvolvimento" é muitas vezes usado como um termo amplo e generalista e, dentro das empresas, muitos desenvolvedores que sobem de cargo ganham o título de "Engenheiro". No entanto, a engenharia não é apenas sobre fazer funcionar, é sobre tornar o sistema performático, confiável, escalável e seguro em situações reais e diversas. Engenheiros pensam em equilibrar diferentes aspectos, como qualidade e rapidez, e também em otimização e automação, tanto na escala do usuário quanto na do desenvolvedor.
Se você quer ser um engenheiro, provavelmente vai querer aprender sobre integração, desenvolvimento e implantação contínuos (CI/CD), que fazem parte do DevOps, bem como observabilidade, cacheamento, concorrência, balanceamento de carga, testes de penetração, algoritmos e assim por diante.
🏗️ Arquitetura
Alguns chamam a arquitetura de "design com zoom out", isso porque se afasta da perspectiva individual de um usuário, um processo ou um serviço, e vai para cima, afim de ter uma vista da estrutura que mantém tudo unido. A arquitetura foca a longo prazo, na estratégia na manutenibilidade do produto. Ela define o ambiente, as ferramentas e as restrições tecnológicas com as quais todo o resto terá que trabalhar. Frequentemente, o papel do arquiteto acaba sendo absorvido ou diluído nos demais quando a escala do projeto não é assustadora e massiva o suficiente, e é raro encontrarmos uma pessoa especializada na arquitetura, principalmente em projetos menores.
Se você quer mergulhar em arquitetura de aplicações e software, deve começar pesquisando sobre padrões de microsserviços vs. monolitos, soluções nativas em nuvem (AWS, Google Cloud, Azure), governança de dados, conformidade, Zero Trust e recuperação de desastres (DR).
Vale lembrar que, embora essas reflexões mostrem de forma realista como compreender a criação de um produto digital nos dias de hoje hoje, as os contornos desses papéis são conceituais e não escritos em pedra, e vemos que, na maioria dos casos, uma pessoa ou um time frequetemente transita por mais de um. Se você é um fundador, ou também se é um curisoso degenerado com um impulso constante para inventar coisas, como eu, muito provavelmente você tem um pouco de designer, de engenheiro, de desenvolvedor e de arquiteto, tudo ao mesmo tempo. No fim das contas, cada projeto e cada empresa deve entender suas necessidades e prioridades e manter seus recursos e gestão sob controle, e essas definições são usadas como um guia, um norte, para que se evite deixar espaços sem a atenção devida.