Como desenvolver uma aplicação e garantir a continuidade do código?

Danielle Teixeira
Blog do LFDev
Published in
7 min readJan 8, 2021

Você já precisou testar uma ideia mas ficou indeciso sobre qual tecnologia utilizar para validação da mesma? Participou de projetos onde a “ordem do alto” é desenvolver um avião com peças de um marceneiro para testar com um framework a modinha porque ouviram falar que o custo é menor? E a sustentação como fica nisso tudo?

Equilíbrio é a chave para sustentação de um aplicação sem passar por maiores turbulências. Então se você como eu já passou por situações como essas e ainda assim manter a continuidade do código, esse artigo é pra você, abordando pontos chaves de como não perder tempo para testar algo simples de um problema que precisa ser resolvido. Seja um MVP, numa PoC da vida ou em uma aplicação mais “anciã”. Antes de iniciarmos, gostaria de deixar claro que as recomendações a seguir foi com base em minha experiência de uso, seja profissional ou pessoal, logo os exemplos a seguir são exemplos de utilização de cada um e/ou o que utilizei para a resolução durante minha carreira.

#Definindo o caminho

Se você for testar uma ideia, a lógica é utilizar um percentual pequeno dela para analisar a viabilidade da sua ideia ou MVP (Mínimo Produto Viável). Nada de escrever um pergaminho de requisitos, preocupando-se com aspectos triviais, quando na verdade o que você quer é testar a validade de sua ideia.

“No MVP a eficiência do produto é testada, assim como usabilidade, aceitação no mercado, comparação com a concorrência, entre outras formas de validar. Depois desta etapa de validação, o produto volta a ser desenvolvido e aprimorado.

Lean Startup : Build / Measure / Learn”

#Definindo a tecnologia

Analisando aderência da tecnologia no mercado — É importante fazer uma pesquisa de mercado quanto a utilização da tecnologia na praça, não só sobre sua utilização mas como é o suporte a tecnologia na comunidade, seja através de fóruns, grupos e etc. De nada adianta a tecnologia ser top e não ser aquecida na comunidade, pode ser bem provável que uma hora ela venha a ser descontinuada.

Fonte: https://gph.is/2qFIenY

Se você é ansioso, pare, respire/inspire e pense. Não é porque, a linguagem Go é “mais fácil” que você vai utilizá-la sem ao menos saber para onde vai.

É interessante que você utilize tecnologias que esteja familiarizado, se você é de Front-End e domina Javascript/framework (Angular, React, Vue), aproveite o momento de explorar as funções dele. Aí você pergunta, mas eu vou precisar armazenar dados, faço o que minha filha? Uma alternativa é utilizar uma Api Rest (Postman), para enviar requisições get/post, onde você preenche o campo endereço e clica no botão enviar para mostrar todos os resultados dos dados e informações sobre a requisição desejada.

API Postman — Utilizado para requisições. (fonte)

Você pode preferir armazenar seus dados em Cloud com o Firebase do qual já postei alguns artigos aqui, o firebase é um serviço Baas (Backend as a Service) utilizado para aplicações Web e Mobile que dispõe de serviços de autenticação, notificações, armazenamento, hospedagem entre outros do qual você pode configurar sua endpoint .

Serviço do Firebase

Tudo bem, eu não tenho familiaridade com a tecnologia o que faço? geralmente faço um overview de como funciona o ciclo de vida, sua arquitetura, hello world da vida e mão na massa com a documentação e comunidade. Ah sim, é sempre bom perguntar aos colegas que trabalham com a tecnologia sobre a curva de aprendizado. ;)

#Defina seu Workflow de trabalho

A separação de responsabilidades é essencial para o desenvolvimento de qualquer projeto, seja um aplicação web ou mobile vale a pena configurar o ambiente de trabalho do seu projeto dessa forma: desenvolvimento, teste e produção. Você pode configurar por exemplo o ambiente no seu framework front no meu caso uso Angular, localizado em src/environments, separando o código back-end do cliente (front-end) como o angular-cli.json por exemplo.

É claro que cada projeto tem sua particularidade, pode ser que você apenas precise utilizar o backend ou o front, é só uma sugestão. Você pode se perguntar, mas num MVP ou num PoC separar ambientes (dev, test, prod)? Imagina que sua aplicação cresça após testar a aplicação por exemplo, você vai precisar escalar posteriormente, porque não começar do jeito certo? Pense nisso.

#Recalculando o trajeto, pensando na User Interface

O modal veio pra salvar nossas vidas, imagina um modal que chama outro modal, que chama outro modal e pra não ficar com inveja chama mais outro pra completar a festa? Terrível não? Quebrou a UI/UX. Já me perdi todinha aí, imagina o usuário.

#Boas práticas no código

Recentemente tenho vivenciado que qualidade de código é fundamental, imagina que você ou seu colega pegue esse código futuramente para fazer a sustentação da aplicação. Más práticas e costumes como condicionais quebrados, longas listas de parâmetros de repetição de código, podem te levar ao efeito macarrão conserta uma tela e quebra outra. Difícil de sustentar e acreditem, um código pequeno pode crescer e tomar proporções inesperadas.

Neste exemplo $path é definida em todos os métodos, apontando para o diretório de upload dos arquivos. Note que se caso esse diretório mude, será necessário alterar esse caminho em todos os locais em que ele foi referenciado.

Da pra simplificar? Sim, usando a classe Path para obter o caminho de upload de uma forma mais elegante.

Refatoração de código é sempre bem-vindo, um condicional pode resolver o problema, mas sair largando IF em tudo de qualquer jeito, não é nada elegante e muito menos performático.

#Implementando sua ideia

A probabilidade de errar no desenvolvimento é muito menor quando você desenha o protótipo e define as regras do jogo antes de entrar nele. Procuro sempre fazer um esboço da minha ideia, isso me ajuda a chegar no objetivo e a não passar do limite. Por exemplo, quero criar uma aplicação, o primeiro que vem a mente é um protótipo bem simples para testar a funcionalidade, em alguns casos com apenas um Wireframe (utilizo muito o Mockingbot ) funcional da ideia você já consegue validá-la para seguir em diante com o desenvolvimento. Quando aplicação já está em produção, a regra é a mesma. Desenhar, definir as regras de negócio, validar e desenvolver a parte evolutiva, mantendo sempre o histórico de versões, isso salva vidas, acredite!

Mockingbot

Vamos lá … como a ideia é validar um negócio, ao invés de criar um App top com inúmeras features para fazer preservação ambiental mapeei algumas funcionalidades como Tábua de Marés com base nele manipula-se os dados na prevenção do índice de afogamento e os pontos onde existe área de preservação.

Fonte do Autor (Protótipo da ideia a ser validada)
Fonte do Autor — Protótipo da ideia a ser validada

#Escalando sua aplicação

Pense sempre na continuidade do serviço, é essencial que você pense a longo prazo, todo e qualquer projeto tem possibilidade de expansão se a ideia/ viabilidade for boa. Então projete sua aplicação pensando em alguns aspectos como:

- Controle de acesso ao usuário
Qual comportamento da aplicação para um determinado número de usuários acessando simultaneamente? Ela empaca ao efetuar requisições? Se com um número limitado aplicação leva mais de 6 segundos para se autenticar imagina quando houver um número maior, por exemplo: um sistema de transporte público ou mesmo um app de banking.

- Responsividade

Fonte

Responsividade é um elemento essencial a vida digital, ninguém merece acessar uma aplicação que quebra o layout a cada redimensionamento. Em que século estamos? E aqueles modais que sai quebrando o datapicker? Mesmo a aplicação sendo apenas para web, é válido pensar a longo prazo, ela pode virar um web-apps ou mesmo avaliar a resolução dos monitores e dos browsers que de vez em quando tira uma com nossa cara, são aspectos que devem ter um olhar mais maduro.

-Design para Dispositivos Móveis:

Pense que quase tudo que começa web ou desktop certamente tem a possibilidade de ter uma versão smartphone, tablet e etc … sendo assim, pense na continuidade da aplicação.

Freepik

#Comunidade é a sua grande aliada

Para concluir, a comunidade é sua grande aliada. Porque digo isso? basicamente já gritei socorro algumas vezes e obtive ajuda de pessoas que nem siquer conheço, é fundamental saber como perguntar, além de relatar o problema (o código que você fez).

O Angularjs foi descontinuado em 2015 para dar espaço a uma nova arquitetura angular 2+, mas ainda existem sistemas que funcionam muito bem com ele e que precisam de sustentação que uma refatoração nesse momento seria crucial, logo, se não fosse a documentação disponível na comunidade muitos desenvolvedores ficariam a deriva por assim dizer.

Espero que esse post tenha contribuído de alguma forma, se gostou, ajude a chegar em outras pessoas.

“Ninguem é tão sábio que não tenha algo pra aprender e nem tão tolo que não tenha algo pra ensinar. — Blaise Pascal

Referências

https://movile.blog/escalando-uma-aplicacao-front-end-alem-do-codigo-arquitetura-qualidade-processos-e-pessoas/

https://www.devmedia.com.br/como-nao-escrever-codigo/38679

https://gdglauro.tech

--

--

Danielle Teixeira
Blog do LFDev

Desenvolvedora Mobile , Pesquisadora em IoT e Machine Learning, Organizer GDG Lauro de Freitas e Embaixadora Women Techmakers