Ou: qual a diferença entre back-end, front-end e afins?
Não é raro uma pessoa que está começando na área da programação e da TI (tecnologia da informação) ficar perdida em meio a tantas áreas: front-end, back-end, DevOps, UI/UX, Data Science... Afinal de contas o que significa cada um desses termos e com o que trabalha cada profissional? Bom, pra começar, precisamos entender o motivo dessas divisões.
Até alguns anos atrás (por volta da década de 80), um programador era uma pessoa que desenvolvia sistemas e softwares para computadores de modo geral. Ou seja, a mesma pessoa ou equipe ficava responsável por todos os protocolos, etapas de desenvolvimento, aprimoramento e lançamento do produto final. E isso era algo aceitável, uma vez que a demanda ainda era pequena, e a quantidade de espaços onde a programação adentrava era bastante limitada (alguns sistemas embarcados, poucos computadores de uso específico e só). Mas com o tempo, a evolução dos sistemas digitais e a popularização dos computadores, os programadores precisavam se tornar cada vez mais especialistas em algumas etapas do processo. Com isso começaram a nascer as divisões. E elas foram se aprofundando a medida que o tempo passava, assim como novas especializações foram nascendo. Hoje em dia podemos falar de algumas áreas maiores, mas sem a pretensão de sermos totalizantes, afinal de contas, isso com certeza mudará ao longo do tempo.
Front-end:
O desenvolvimento front-end está muito ligado ao desenvolvimento de interfaces, sites e telas no geral. Esse profissional domina tecnologias voltadas para tudo aquilo que é visível pelo usuário final. Ele trabalha muito associado ao designer e ao back-end. Portanto, toda vez que você ver uma tela, saiba que quem a programou dessa forma foi um programador front-end. A escolha dos botões, de distribuição da informação, priorização de texto e afins, tudo é colocado em prática pelo front-end.
Back-end:
Enquanto o front-end cuida da interface, o back-end cuida de tudo aquilo que não é visível pelo usuário, mas é usado por ele. Ao fazer login em uma página, por exemplo, é o back-end que fará a conexão com o servidor e buscará neste as informações que devem ser exibidas. Além disso, ele cuida de segurança da informação, privacidade, agilidade do sistemas e afins.
Essa imagem ilustra bem a diferença: o front-end é aquilo que o usuário vê (ou a lataria do carro) e o back-end é aquilo que ele não vê (ou as partes elétrica e mecânica do carro).
Full-stack:
O full-stack é o profissional dedicado a atender as duas partes que compõem o desenvolvimento web. Ele domina o front e o back end, sendo bastante versátil. Esse profissional precisa dominar uma gama muito grande de tecnologias e ferramentas, ainda que não necessariamente trabalhe com tudo no dia a dia. É comum dizer que o full-stack é uma lenda, que na prática um desenvolvedor sempre será front ou back end. Mas isso não é exatamente verdade. Mesmo que um full-stack tenha mais demandas de uma área, ele pode (e irá) atuar nas duas, buscando uma integração entre as duas áreas.
Cientista de dados:
O cientista de dados (ou data scientist) é aquele profissional que irá usar da tecnologia e da programação para analisar dados e informações para ajudar na tomada de decisões e encontrar pontos de melhoria na sua empresa. O alimento do cientista de dados são os dados, geralmente armazenados em algum banco de dados ou planilhas. A partir disso ele pode (e irá) usar de ferramentas estatísticas e computacionais para definir estratégias, aprimorar sistemas, otimizar investimentos dentre outras coisas. Ele acaba atuando muito próximo a lideranças, tomadores de decisões e donos de empresas e projetos, além dos desenvolvedores front e back end para ajudar a alavancar o programa ou empresa da melhor forma possível.
UI/UX Designer:
User interface/User experience Design são áreas do design responsáveis por entender a experiência do usuário final e encontrar modos de otimizá-la. De nada adianta um sistema com muitas ferramentas e opções, capaz de fazer milhares de coisas incríveis se o usuário final não conseguir utilizar esse sistema. Por isso, esse profissional se preocupa em deixar a experiência final cada vez melhor e mais flúida, engajando assim o usuário final e tirando da sua jornada todos os percalços que ele poderia vir a ter. Costuma tomar decisões baseadas na análise de dados e trabalha muito próximo do desenvolvedor front-end.
DevOps:
Em alguns lugares o DevOps é visto como um profissional. Em outros, é visto como uma prática que atravessa todos os profissionais e está mais próximo de uma cultura do que de uma ação. De todo modo, o DevOps busca a integração entre as equipes, tornando os buracos cada vez menores, a segurança e a entrega contínua uma realidade universal e constante no time de operações. Questões como escalabilidade (ou a possibilidade de tornar aquele produto cada vez melhor, agregando novas funções constantemente) e automação do processo de entrega são partes dessa cultura/profissional.
Arquiteto:
Posição geralmente designada para pessoas mais experientes, o arquiteto de sofware é a pessoa responsável pelo planejamento do sistema ou programa que está em desenvolvimento. É ele que irá entender as dores a serem solucionadas e pensará em algo integrado que solucione essas dores. Esse profissional precisa conhecer de todas as áreas ao menos um pouco, dado que ele fará a integração entre todos, garantindo que o que foi planejado desde o começo seja seguido até o fim e que a entrega corresponda ao que o cliente necessita.
Gestor de banco de dados:
Aqueles responsáveis pelos bancos de dados tem em mãos todas as informações disponibilizadas pelos usuários e pelo serviço em si. O banco de dados é onde todas essas informações estão armazenadas. O gestor de banco de dados deve então lidar com a segurança, integridade, agilidade e disponibilidade desses dados sempre que necessário. Suas decisões podem aumentar ou diminuir os gastor de uma empresa, assim como tornar serviços mais rápidos ou lentos.
É claro que, na prática, todos trabalham em conjunto em busca de uma soluções final. O cientista de dados, por exemplo, não seria ninguém se não houvesse alguém para cuidar do armazenamento, disponibilidade e integridade de dados, como faz o gestor de banco de dados. Além disso, suas conclusões e estudos não teria uso algum se não houvessem profissionais para aplicar e concretizar as análises feitas por ele. Desse modo, todos os profissionais são imprencidíveis para o bom funcionamento do projeto. É do trabalho em equipe que nasce bons projetos e bons resultados.
Além dessas carreiras citadas aqui, é importante salientar que existem outras, e que algumas especificações variam de uma empresa para outra. Além disso, existem as carreiras menos técnicas e mais gerenciais, que eu abordarei no futuro. Mas essas aqui citadas podem servir como um bom ponto de partida caso você esteja perdido no mar de nomes e possibilidades de cada área.
Comments