O Uber, o taxi e o desenvolvedor FullStack
Gostaria de falar um assunto polêmico aqui, que é a história do desenvolvedor chamado FullStack. Mas não gostaria de despertar ódio da comunidade, portanto vou tentar ser ameno. Para isto, vou contar uma história. Recentemente fomos eu e minha esposa a um aniversário de amigos, e como não sabíamos se haveria espaço para estacionar o carro (e iríamos beber um pouco também), optamos por chamar um Uber. Bem, chamamos via aplicativo e chegou o carro para nos buscar. O carro não era exatamente aquele que gostaríamos de ter recebido, mas o senhor que nos pegou era muito gentil e educado. Criava empatia facilmente. Quando falamos para onde ele nos levaria, ele começou a seguir o caminho apontado pelo Waze. Em uma parte do caminho, falamos a ele: "senhor, se for pela direita, cairá mais rápido na 23 de maio". Ele ficou inseguro e preferiu seguir o caminho do Waze.
Chegamos lá, e tudo foi bem, mas depois da festa, no dia seguinte, fiquei a pensar sobre o evento anterior, e principalmente no passado, na época em que pegávamos taxi. Os motoristas de Taxi de antigamente precisavam de uma licença especial, que custava até bem caro (algo como R$150.000 hoje). Ou seja, a pessoa se tornava taxista e isto deveria ser uma carreira. Não fazia o menor sentido investir este dinheiro por algo temporário. O carro era bem cuidado e sofria manutenção, na maioria das vezes era cheiroso, tinha jornais para ler, serviam bala e as vezes água, masssss principalmente: o motorista sabia o que estava fazendo ! Ele NÃO precisava do Waze para chegar aos locais. Ele conhecia a cidade, sabia desviar do trânsito, chegar mais facilmente aos locais. Isto se chama experiência. E não se baixa em um aplicativo no celular, nem se compra um software para instalar. Senti falta disto quando aquele senhor simpático do Uber estava alí, sabe?
Para se tornar um motorista de Uber, os requisitos são mais simples, e muitas vezes são papeis temporários e sociais. Uma forma de ganhar o sustento da família, o que é muito louvável, mas raramente o Uberista tem uma "especialização" ou se dedica a conhecer a cidade, ou mesmo manter a ferramenta de trabalho da forma como deveria. Os Taxis eram pintados de outra cor, e raramente era usado além do trabalho, já o Uber é um veículo comum que pode ser "chaveado" a qualquer momento, ou mesmo o Uberista pode ter dois empregos ou atuar no anonimato, como um quebra galho para suas finanças.
E porque você está falando tudo isto, Glauco ? Bem, nossa conversa é sobre o ato de desenvolver, e a especialização de cada programador. E falando um pouco mais sobre isto:
Existem programadores que gostam e se sentem confortáveis em entrar nas profundezas dos sistemas legados, gostam de mexer naquela poeira deixada pela TI ao longo dos anos, e conhecem protocolos em detalhes. Estes são os programadores BackEnd. Eles conhecem de HTTP, SMTP, FTP, REST, SOAP, e mais uma infinidade de protocolos, ou ao menos sabe como funcionam sem detalhes, conseguem interagir com diversos BackEnds. É um perfil específico, e como tudo em TI, é necessário ter afinidade e experiência com estes temas. São conhecimentos que se adquire ao longo dos anos, com a experiência.
Por outro lado, existem aqueles programadores que se preocupam com a interação com o usuário, conseguem combinar cores de forma a tornar o acesso mais agradável, usam as melhores práticas para tornar a interação assertiva. Estão atualizados com modernos padrões de Single Page, conhecem JavaScript muito bem, sabem lidar com imagens e vídeos dos vários tipos e conhecem cada uma dos tipos (GIF, JPEG, PNG,etc). Tornam a interface consistente e tornam o site agradável. Este é o programador Front End.
Mas acontece que existe o programador FullStack, que se propõe a fazer os dois papeis dentro da construção de um sistema. Aposto que algumas pessoas já se armaram e estão dizendo : "eu sou FullStack e provo isto!!!". Pode ser sim gente! Como disse, não quero arrumar encrenca com ninguém!
Mas me deixe fazer umas perguntas (maliciosas) aqui :
Se você consegue fazer estas duas atividades, com pouco acesso à internet para copiar exemplos, e conhece bem o caminho das pedras, PARABÉNS, acabou de receber o logotipo de FullStack developer! Se você se sentiu inferiorizado por ter dificuldade em alguma destas atividades, não se preocupe, estou no seu time. Quando fui programador no passado, meu foco era BackEnd, e me sentiria mais confortável com a segunda atividade (embora talvez não fizesse tudo assim de bate pronto, e as tecnologias fossem diferentes).
Ahhhh, mas e o mercado de FullStack developers prospera a todo vapor! É tudo mentira? Claro que não, é realidade. Mas embora eu não seja um Head Hunter, vou dar o meu palpite. Creio que o esperado é que você saiba de uma forma genérica sobre todos os temas, mas tenha uma especialização maior em um dos temas. E como isto funciona no dia a dia ? Quando você está focado na programação de uma parte do sistema, deve acontecer aquela coisa do tipo se virar para o programador que está ao seu lado e perguntar :
Recomendados pelo LinkedIn
Programador1 : Fulano, quem do time manda bem em CSS ?
Programador2: Ahhh, converse alí com o Ciclano, ele cria uns sites muito bacanas
Ou seja, a colaboração faz com que as pessoas se polarizem em suas áreas de especialidade. Caso um perfil necessário não esteja disponível, mesmo aquele perfil BackEnd (por exemplo) ainda pode criar o FrontEnd, ainda que de forma não tão elaborada, mas na falta de disponibilidade do programador FrontEnd ele ainda se vira com o básico. Este é o programador "FullStack" que enxergo como o comum no mercado. Ou seja, foi dada muita ênfase no Full, e talvez até devessem mudar o nome para programador "MeanStack". Isto talvez fosse mais modesto e mais honesto.
Todo mundo brinca com aquela história do pato, sabe? Ele não sabe andar como a galinha, nem tem a mesma agilidade, também não voa como um falcão, mas consegue ainda voar pequenas distâncias, e não tem a graciosidade do Cisne na água, mas ainda consegue se virar na água. Só que em programação ao menos, uma destas coisas ele precisa fazer muito bem. Portanto poderíamos dizer que o programador "FullStack" deveria ser como que um "pato que se especializou em algo"! Não veja isto como pejorativo de forma alguma! Conhecer tudo é impossível, e conhecer algo bem e outras coisas de forma mediana não é demérito algum! Muito pelo contrário, é muito acima da média.
Bom, se chegamos até aqui acho que não devo estar sendo banido pela comunidade de FullStack Developers da terra, ou ao menos torço para que não. Mas se tiver algum comentário, coloque embaixo do artigo, como um comentário. Seria muito bom saber a sua visão sobre o tema...
Tem outros artigos meus que você pode ler aqui, nem precisa saber nadar bem, voar bem ou caminhar bem. Até a próxima !
#glaucoreis #patonaonada #ibm #fullstack #backend #frontend
Systems Analyst at IBM Global Services
3 aMuito bom artigo sobre programadores. Para ter uma elucidação clara e objetiva , Glauco faz analogia com serviços de táxi. É por isto que eu o considero como o rei da analogia didática!