Consequências das separações entre Front-end e Back-end developers.
Hoje em dia, com a ânsia de consultorias de desenvolvimento de software em cada vez mais fazer softwares mais rápido, está trazendo à tona uma discussão que há muito tempo se perpetua: o Fordismo. Cada vez mais a divisão de papéis no desenvolvimento de software está presente (back-end, front-end, entre outros).
É possível identificar uma série de vantagens com essa divisão:
- Funcionários mais especializados em cada uma destes componentes;
- Cada vez uma evolução mais rápidas das ferramentas;
- Paralelismo nas etapas das entregas;
Esta divisão está trazendo uma série de problemas para o software implementado, e fazendo com que a qualidade de código da solução caia severamente.
Um grande problema que é fácil de encontrar no Front-end é a falta de conhecimento em Orientação a Objetos e Design Patterns dos desenvolvedores. A capacidade de abstração das ferramentas atuais aumentou muito, porém os desenvolvedores Front-end não acompanharam isto, o que é essencial para a componentização da sua aplicação Front-end. Dessa forma a manutenção do sistema se torna um verdadeiro desafio, por conseguinte surgem profissionais migratórios (pois não querem arcar com as os gigantescos códigos monolíticos e mal estruturados).
Outro problema grande nessa divisão é a falta de entendimento e comunicação entre os desenvolvedores. Isso causa uma briga constante entre papéis no time ou quem criou tal bug. Bugs são normais em aplicações, porém muitas equipes ao invés de promover uma solução em conjunto, onde todos tentam entender e tratar os erros, iniciam uma caça às bruxas para culpar e mostrar que não criou o Bug.
Além de que para contornar algum requisito identificado para o Front-end de forma rápida, é feito uma "gambiarra" no Back-end, assim deixando-o mal-estruturado, com uma manutenção ruim, uma curva de aprendizado do código demorada. O que acarreta em desmotivação de profissionais, migração e até, em casos extremos, perda de interesse no mercado de programação.
Portanto, a divisão de desenvolvimento Front-end e Back-end deve ser muito bem orquestrada por um arquiteto com domínio total sobre o design de solução e o design do software. Fazendo com que conheçam muito bem como serão criados e implementados os requisitos do sistema.
Esse profissional pode ser chamado de arquiteto de software "full-stack", o que ainda não se encontra comumente no mercado. Outro modo a ser contornado esse problema, é o fato de se colocar desenvolvedores "full-stack" como líder de equipe. Esses profissionais devem ter um nível de maturidade avançada, o que torna quase equivalente a presença deste arquiteto "full-stack".
Com a ideia de você conhecer melhor os seus funcionários técnicos, suas capacidades e saber como liderá-los nos desafios mapeados, aumenta a chance de desenvolver um software com o menor investimento e maior lucro aumenta muito.
Engenheiro de Desenvolvimento de Software | Amazon
6 aGiovani De Faria, uma das vantagens de os times do VNT serem flex... Isso é uma coisa que eu acho muito massa do projeto e das demandas que vcs recebem!