Ao iniciar um projeto front-end, é comum ter uma discussão muito orientada a qual framework utilizar, afinal, parece que o mercado convergiu para algumas principais soluções e muitos desenvolvedores adotam elas como parte de um conjunto de ferramentas “padrão”.
Apesar de serem poderosas soluções para o desenvolvimento de interfaces complexas, dificilmente uma tecnologia “padrão” será a melhor resposta para todos os problemas. O front-end evoluiu e hoje, mais do que nunca, precisamos de uma abordagem madura que nos ajude a direcionar de forma adequada as decisões que irão conduzir o desenvolvimento de um novo projeto.
Não se trata apenas sobre qual tecnologia utilizar, mas qual experiência iremos fornecer, quais os motivos que nos levam a escolher determinada tecnologia e como isso tudo conversa com o negócio. Há pouco tempo assumimos que a web era desktop e agora temos uma grande pluralidade de dispositivos com diferentes tamanhos de telas, largura de banda e latência de rede que tornaram o front-end ainda mais complexo.
Isso tudo nos convida a rever a forma como pensamos o front-end. Com o público mais exigente, interfaces mais elaboradas e ferramentas ainda mais complexas, a falta de uma abordagem consistente pode levar a perdas significativas de receitas e oportunidades, seja por adotar uma solução muito robusta ou simplória demais para a resolução de um problema.
Mas como lidar com essa situação? Como saber se estamos seguindo o melhor caminho disponível para resolver o problema da forma mais eficiente possível? A resposta está na escolha de uma boa arquitetura. Ter um entendimento sobre o que constitui a arquitetura de um projeto front-end, nos permite ter uma conversa melhor sobre design e nos ajuda a focar no que é essencial para desenvolver um sistema de qualidade.
Quando falamos de arquitetura, estamos falando sobre encontrar uma solução viável que pare de pé, sempre levando em consideração os objetivos de negócio, restrições que precisam ser atendidas e atributos de qualidade.
Abaixo estão algumas reflexões sobre pontos que devem ser levados em consideração ao projetar uma solução front-end de sucesso:
- Antes de estruturar o seu front-end, comece explicitando os objetivos de negócio, atributos de qualidades e principais restrições. Entenda que existem decisões chaves a serem feitas no início do projeto e que podem dificilmente ser implementadas posteriormente ou se tornarem caras demais para ajustar. Suas decisões devem ser bem fundamentadas e não devem refletir um roadmap pessoal de estudos;
- Tenha um bom repertório de conhecimento sobre as tecnologias disponíveis (nem tudo se resume a qual framework utilizar), pois talvez você não precise de um framework para resolver o problema. A adoção de uma tecnologia que não faz sentido em um determinado contexto pode adicionar um custo desnecessário ao seu projeto. Existem vários conceitos e tecnologias que podem enriquecer a discussão sobre a melhor estratégia para o front-end, tais como: Single Page Application, Multiple Page Application, Progressive Web App, Server Side Rendering, Responsive Web Design, Hybrid/Native/Desktop apps, SEO, CMS, etc;
- Sempre tente conciliar o contexto atual com o que realmente precisa ser desenvolvido e identifique os principais “trade-offs” de cada decisão. Se a sua solução precisa ter a flexibilidade de ajustar a comunicação frequentemente, de acordo com as ações de marketing, talvez um CMS seja o suficiente. Se o diferencial é fornecer funcionalidades ricas de alta interatividade com o foco predominantemente mobile, então pode ser necessária uma abordagem mais elaborada com a implementação de um framework;
- As decisões devem sempre estar orientadas a atender os objetivos de negócio considerando o custo para desenvolver e o custo para manter. Toda decisão adiciona complexidade e como diria Elemar Jr., CEO da EximiaCo, “Complexidade é custo“. Não adote uma tecnologia apenas porque ela é nova ou porque é uma tendência de mercado, nem subestime um projeto apenas porque você domina uma determinada tecnologia.
As decisões de arquitetura não tem preferência tecnológica e nosso papel é identificar quais são as principais escolhas a serem realizadas minimizando os custos envolvidos para desenvolver e manter a solução.
“A estratégia sem tática é o caminho mais lento para a vitória. Tática sem estratégia é o ruído antes da derrota” – Sun Tsu, antigo general chinês
O desenvolvimento apenas pela perspectiva técnica não é o suficiente. É preciso abraçar o pensamento estratégico para criar abordagens mais robustas que guiem o desenvolvimento do projeto rumo ao sucesso.