Como é atuar no mercado de trabalho como desenvolvedor?
Calma, eu sei, eu sei...
Como assim? Em um portal envolvido de tecnologia há esse tipo de pergunta?
Bem... Eu vou me usar como exemplo para que eu possa validar essa minha pergunta e, de certa forma, respondê-la para os que se identificarem com o Mateus de 07 anos atrás!
⌨️ O que é programar?
Quando iniciei meus estudos, lá em 2016, sobre linguagens de programação em meu curso técnico, eu já sabia que queria ser um programador! Porem, nunca tive ninguém para me explicar o que de fato era programar, surgindo assim dúvidas como:
O que é programar?
Será que um programador faz calculadora em C no trabalho?
Que tipo de empresa pede para os funcionários criarem calculadoras de Índice de Massa Corporal (IMC)?
Todas essas dúvidas do filósofo Mateuzinho de 2016.
🤔 O que um desenvolvedor faz, DE FATO, em seu trabalho?
Um desenvolvedor é responsável por criar soluções, integrações e realizar manutenções em sistemas de tal forma que haja sentido para a empresa! Ou seja, SIM! Se faz sentido para a sua empresa criar uma calculadora de massa corporal, será feito!
Mas como de fato essas soluções são criadas?
🏭 A fantástica fábrica de features
De primeiro momento, é gerada uma demanda por parte de algum módulo da empresa ou do próprio cliente do tipo:
- Preciso de um botão de "Ligar-me" na interface do aplicativo.
Neste momento, a demanda é repassada para o seu gerente de projetos que verificará a viabilidade da solicitação.
Deferido então a solicitação por parte do gestor, e momento de "quebrar" essa tarefa em diversos módulos:
Quais cores, ícones e ações são melhores para este botão?
Quem implementa o botão na interface?
O que de fato acontecerá quando clicar no botão?
Caso o botao nao funciona, o que acontecera?
👷🏽 O carinha das regras
O grandiosíssimo engenheiro ou analista de requisitos Irá elaborar um documento explicando meticulosamente e direto ao ponto quais são as regras de negócio da nova feature. Exemplo:
[RN01] - Não deve ser possível que o botão seja pressionado caso usuário não tenha um telefone cadastrado.
[RN02] - Quando pressionado, o botão deve realizar uma chamada de voz para o numero do usuario
[RN03] - Caso usuario nao atende, não permitir que o usuário clique no botão por 05 segundos
Este usa e abusa de softwares de edição de texto e de criação de diagramas.
🕴🏽 O chefão do projeto
O gestor de projeto é responsável por também estipular prazos e metas juntamente com os times abaixo! Sua função é observar de uma forma macro o andamento do projeto. Um gestor pode utilizar diversas ferramentas de controle de projeto como o JIRA, Trello e outros.
🎨 O carinha do design
Toda a demanda visual e interativa, de experiência do usuário ao visualizar e interagir com o botão, será encaminhada ao incrivel Deisng UI/UX!
Esse carinha é responsável por criar toda a interface dessa funcionalidade de uma maneira ilustrativa! Ou seja, até aqui nada de código foi criado! Um design UI/UX geralmente utiliza ferramentas como Figma, Adobe XD e outros.
🖼️ O dev front-end
Com o design pronto, o nosso incrível Desenvolvedor Front-End implementara o botão dentro do aplicativo. É importante que o dev se preocupe em seguir meticulosamente cada pixel criado pelo UI/UX, sua responsabilidade é codificar aquela ideia criada pelo UI/UX.
Além de utilizar do Figma para ver o design, o dev front-end também utiliza bastante do seu navegador de internet e de um bom editor de código.
⚙️ O maluco do back-end
Agora entra em campo o Desenvolvedor Back-end, responsável por aplicar as regras de negócio no lado do servidor da aplicação para que tal botão funcione de acordo definido com o Engenheiro ou Analista de Requisitos.
Na linha de ataque, o dev Back-end com certeza terá cinco milhões de abas abertas de documentações sobre APIs de implementação (por exemplo: utilizar uma API de ligação para efetuar a chamada), um bom editor de código e uma generosa xícara de café.
🧪 O cara que todo mundo xinga
Em um ambiente controlado e não disponibilidade pro usuário, e mostrado ao analista de testes a obra final! Sua missão? Bem... Encontrar furos, gotejos, pisos quebrados, maçanetas sem funcionar e outros problemas na obra recém criada. Apesar da brincadeira, seu papel é fundamental e importante na entrega de qualidade para o usuário final.
O analista de testes utiliza softwares para capturas de tela, gravações de vídeo e também muito de sua escrita para elaborar ONDE falhou e O QUE falhou para que os devs possam verificar POR QUE falhou e COMO falhou.
👮🏼 Isso não é uma ditadura!
Por mais hierárquico que pareça, na verdade não é! O desenvolvedor back-end tem total autonomia para questionar regras de negócios e a viabilidade delas para o seu analista/engenheiro de requisitos!
Assim como o dev front-end tem também o seu direito de opinar e falar sobre o design criado pelo UI/UX.
O gestor de projetos nao e um big fuc#ing boss inquestionável! Ele também está ali para ouvir as dores da equipe e, se necessário, prorrogar prazos de forma a entregar um produto bom para os futuros clientes.
☕ Conclusão
Você! Você mesmo! Fique tranquilo, pois no mercado de trabalho você não será responsável por criar design, documentar projetos, desenvolver, testar, publicar e etc.! Você é responsável apenas por designar sua função e designar com excelência! Você não precisa ser o melhor designer para iniciar sua carreira como front-end, pois na sua futura empresa terá um cara que estudou especificamente para isso!
Porém, nada impede que um dev front-end também saiba, mesmo que o básico, sobre design! Sempre é importante cobrir "mais que a sua area", até mesmo para entender melhor e ver mais sentido no trabalho dos seus colegas de trabalho!
Lembrando que esta é minha visão como o Mateus de 2022 de uma forma simples e generalista sobre como funciona o processo de produção de um software! Sei que não é exatamente desta forma e existem N fatores que podem diversificar o desenvolvimento, contudo eu queria que alguém, lá em 2016, tivesse me dito isso!