Ao iniciar o planejamento de um projeto de software, uma das primeiras questões que podem surgir para a empresa que está contratando este tipo de serviço é qual a tecnologia mais adequada.
Para que esta decisão seja tomada, é preciso estar atento a algumas especificidades do negócio e características das tecnologias ofertadas no mercado. Afinal, as opções são muitas, mas nem todas vão atender ao que sua empresa necessita.
Por isso, construímos este artigo, com algumas orientações que vão nortear essa escolha e ainda evitar alguns problemas pelo caminho, durante o desenvolvimento do seu projeto.
Acompanhe o conteúdo e veja algumas dicas importantes, além de um pouco da experiência da Ubistart como consultora de software. Confira abaixo o que vamos abordar:
- O que você precisa em uma tecnologia?
- Entenda as necessidades do seu projeto
- As tecnologias do momento são as melhores?
- Como escolher o melhor banco de dados
- Banco relacional
- Banco de dados não relacional
- A tecnologia escolhida pode ficar defasada
- Fique atento às alternativas
- Pontos que precisam de atenção
- Considere outras opções
O que você precisa em uma tecnologia?
Levando em conta a nossa experiência aqui na Ubistart, normalmente, o cliente já traz uma tecnologia específica, seja em um projeto já iniciado por ele ou em uma demonstração de preferência por uma determinada linguagem.
Para o caso de o projeto já estar em andamento, nosso time dá continuidade e se adapta ao projeto, atendendo aos requisitos que já foram definidos. Dessa forma, o projeto segue e é executado com sucesso.
Por outro lado, um projeto que ainda não possui uma tecnologia definida, precisa que alguns pontos sejam analisados:
- Que tipo de projeto a empresa quer realizar?
- Que tipo de problema ela pretende resolver?
- Quais as funcionalidades que serão incluídas no projeto?
Após esses questionamentos serem respondidos, os direcionamentos podem ir do mais abstrato ao mais tangível. Dentro das questões mais tangíveis, algumas respostas também precisam ser respondidas, como por exemplo:
- O que você precisa?
- O que você identifica que resolve o problema?
- É um aplicativo mobile?
- Ele precisa estar nas lojas?
- Quem é o seu cliente? É outra empresa ou uma pessoa física?
Entenda as necessidades do seu projeto
Digamos que a solução a ser desenvolvida seja um aplicativo mobile, então ele pode ser desenvolvido especificamente com Kotlin para Android ou em Swift para iOS. Para além disso, o desenvolvimento também pode ser feito de forma híbrida, com React Native, Flutter ou Ionic.
O primeiro passo para essa decisão é avaliar a interface onde o usuário vai interagir e se o aplicativo é acessado online ou se ele pode ser acessado também offline, pois existem tecnologias específicas para cada situação.
Caso a aplicação seja de desktop e, por isso, vai ser instalada no computador e não vai ter acesso externo, então será preciso usar outro tipo de tecnologia. Isso ocorre porque cada linguagem de programação tem capacidade para resolver problemas específicos.
Se estamos falando de uma aplicação web, por exemplo, voltada para a nuvem, vamos utilizar uma stack, que se trata da pilha de tecnologia determinada para aquela aplicação.
Dessa forma, o frontend vai ser desenvolvido em TypeScript ou JavaScript, sendo possível utilizar qualquer uma dessas linguagens com React ou Vue.js, que são frameworks web. Já o backend pode ser desenvolvido utilizando JavaScript ou TypeScript, com alguns frameworks, dentre eles o Express.JS, Nest.js, Adonis.js e outros.
As tecnologias do momento são as melhores?
Nesse universo, quando falamos em desenvolver softwares, apesar de muitos pontos dependerem do tipo de projeto e da solução que ele pretende construir, há outro fator que precisa ser levado em consideração: a procura de bons devs no mercado.
Com o aquecimento do mercado de tecnologia, muitos desenvolvedores estão migrando para as tecnologias do momento, como Node e React, que tem muita oferta atualmente. Isso porque são frameworks com bastante material disponível na internet.
Entretanto, aqui na Ubistart, o “tamanho da comunidade” não é o fator principal para a tomada de decisão tecnológica. Normalmente, sugerimos a stack TypeScript, React e Node pois:
1. O projeto se beneficia dessas tecnologias;
2. É uma linguagem de propósito geral, ou seja, serve para Web, Desktop, Mobile etc;
3. Existem mais desenvolvedores no mercado com esse conhecimento.
Centenas de linguagens de programação estão disponíveis, muitas delas com um propósito específico, porém, o que determina a tecnologia é muito mais o tipo de desafio do que a disponibilidade de profissionais que têm conhecimento sobre a tecnologia.
Por exemplo, se o projeto for em análise de dados, comumente se utiliza a linguagem “R” ou Python, por causa das bibliotecas. Agora, se for necessário desenvolver um jogo, normalmente se usa C ou C++, que são linguagens de alto desempenho.
Sendo assim, também é preciso trabalhar a escolha da tecnologia certa, olhando por esta perspectiva, dando atenção também ao tipo de projeto que será desenvolvido e se ele vai precisar de mais performance.
Como escolher o melhor banco de dados
Quando falamos da tecnologia certa, é importante ressaltar que é preciso alguma robustez para lidar com bilhões de dados, informações bancárias, transações diversas, que podem estar envolvidas no projeto.
Nesse sentido, também é preciso estar atento à escolha do banco de dados mais adequado e, quando se trata disso, a decisão vai girar em torno de um banco relacional ou um banco não-relacional. Vamos colocar aqui a diferença entre entre os dois:
Banco relacional
O banco de dados relacional, também conhecido como Banco de Dados SLQ, trabalha com tabelas e linhas, onde armazena seus dados. Neste tipo de banco, as informações das tabelas são ligadas através de um identificador, chamado de “chave”.
Essa chave pode estar ligada a um registro tanto da tabela principal, quanto de outra tabela, sendo denominadas de “chave primária” e “chave estrangeira”, respectivamente. E é aí que se cria a relação entre as informações de várias tabelas.
Banco de dados não-relacional
Neste tipo de banco, as informações podem ser colocadas lá dentro e vão sendo salvas, podendo ser relacionadas ou não. Por isso, ele oferece mais desempenho em consultas.
Se a quantidade de dados a serem armazenados é realmente considerável, essa opção acaba oferecendo a melhor estrutura. Lembrando também que o tipo de tecnologia escolhida ajuda a definir o banco de dados mais adequado.
A tecnologia escolhida pode ficar defasada
Para o cliente, escolher a tecnologia certa para o seu projeto, sempre é um desafio, pois, na maioria das vezes ele não tem esse conhecimento mais aprofundado. Em grande parte dos casos, a empresa não possui um CTO, então a decisão é tomada com base no que está em alta no mercado e, como já mencionamos, nem sempre o que está em alta agora, vai se manter assim para sempre.
Um exemplo do que pode acontecer com sistemas defasados foi vivido pela Southwest, uma companhia aérea americana. O sistema usado pela empresa praticamente não foi atualizado desde a década de 1990, o que culminou no seu colapso total, durante uma forte nevasca em Dezembro de 2022.
Bem, o resultado foi um prejuízo de quase US$ 1 bilhão e queda de 10% no valor de suas ações. Tudo por conta de uma tecnologia que não recebeu as devidas atualizações para acompanhar a demanda.
Com o tempo, é possível que as tecnologias fiquem defasadas, mas quando feitas as devidas manutenções, é possível que ela consiga ser utilizada por muito tempo. Quando isso não ocorre com frequência, pode deixar o sistema mais caro de manter e suscetível a erros conforme mais dados são inseridos na plataforma.
Fique atento às alternativas
É importante entender os aspectos técnicos de cada projeto. Fazer um aplicativo iOS ou Android Nativo é muito caro mas, em contrapartida, há a opção de usar um profissional que utiliza a tecnologia Flutter, que permite entregar o mesmo aplicativo, com as mesmas funcionalidades, porém com o investimento mais baixo.
Atualmente, frameworks mobile como React Native e Flutter já disponibilizam maneiras bem eficientes de um desenvolvedor acessar as funções de hardware de um aparelho. A necessidade de usar uma linguagem nativa (Swift e Kotlin) pode ser analisada, por exemplo, se for o caso de desenvolver um jogo, que requer um código bem enxuto e otimizado.
Resumidamente, a melhor forma de designar as tecnologias é entender primeiro o contexto e os requisitos de cada projeto, porque é preciso analisar a questão arquitetural e até a quantidade de usuários esperados para esse sistema.
Pontos que precisam de atenção
Se o sistema for utilizado por poucos usuários, a arquitetura recomendada é chamada de monolito, por ser mais fácil e rápido de resolver. Agora, para o caso de a aplicação ganhar muitos usuários em pouco tempo, pode ser necessário refazer o código, mas isso em casos extremos.
Já para o caso de uma rede social, onde milhões de usuários são esperados, o projeto será desenvolvido de uma forma em que esta aplicação pode ser colocada em diversos servidores, chamada comumente de microserviços.
Considere outras opções
Em termos de performance, utilizar o low code pode ser algo a ser considerado, se um aplicativo tiver que ser construído do zero, pois isso baixa muito o custo de desenvolvimento, já que oferece ferramentas prontas, que não precisam ser construídas especificamente para aquele aplicativo.
Para fechar, podemos definir 5 hierarquias para a decisão de uma tecnologia:
- Definir qual a tecnologia para o frontend;
- Definir a tecnologia para o backend;
- Definir a tecnologia para o banco de dados;
- Qual a estrutura em nuvem que vai ser utilizada
Por fim, se a escolha da tecnologia mais adequada está sendo uma questão para dar início ao seu projeto, a Ubistart pode lhe ajudar. Temos um time de profissionais extremamente capacitados e que trabalham de forma consultiva. Entre em contato!