Desenvolvimento de sistemas – Qual melhor provedor de serviços para sistemas? Sobretudo a Amazon Web Services (AWS), Google Cloud Platform (GCP), servidor dedicado ou outra alternativa? Qual linguagens e frameworks usar para maximizar o resultados? Quantas pessoas preciso em um time para desenvolver o sistema? É possível realizar integrações com serviços de terceiros? Preciso de um MVP, POC, ou já posso começar a desenvolver?
Quando pensamos no desenvolvimento de um software, primeiramente vemos sistema web ou aplicativo mobile, estas são duvidas reais que surgem. Assim a tecnologia avança a um ritmo acelerado e para quem não está 100% imerso no mundo do desenvolvimento, é praticamente impossível tomar as decisões com certeza.
Este é um post pra te falar que na App Masters estamos oferecendo temporariamente uma consultoria em desenvolvimento de sistemas gratuita para te ajudar com seu projeto antes de partir pra prática, mas te peço que siga comigo neste post até o final, porque quero te contar algumas histórias.
Quais tecnologias usar em projetos maiores
(Desenvolvimento de sistemas)
É comum em empresas, após identificarem um problema e realizarem a análise buscando as soluções, concluir que um sistema será assim a melhor solução.
Um Gerente/Diretor de TI consegue enxergar totalmente a solução, o processo em si, os atores, os inputs e outputs, mas as tecnologias exatas a terem uso, às vezes pode ficar fora do seu escopo. E te digo que não há nada de errado nisso.
Desenvolvemos um projeto, o Export Connect, e o Líder Técnico no cliente sugeriu que usássemos um tipo de servidor e infra-estrutura cloud, que era até bem ideal. Porém, ao informar que haveriam inserções na TV e campanhas que trariam milhares de visitantes de um minuto para o outro, vimos que o melhor seria utilizar Kubernetes.
Para chegar a essa conclusão avaliamos os números, tentamos estimar o tráfego e processamento demandado. Nem pra nós é uma tarefa assim tão trivial, mas é possível. Como resultado, não houve sequer um minuto do sistema fora do ar por excesso de acesso, nem perceptível lentidão pelos usuários.
Um sistema para a empresa em crescimento
(Desenvolvimento de sistemas)
Os negócios vão bem, os clientes estão comprando e a empresa crescendo, excelente! Porém surgem algumas demandas e algumas “peças” parecem faltar, para ligar um processo no outro, facilitar a tomada de decisão, dar o retorno automatizando pra um cliente em alguns momentos, e se conclui “preciso de um sistema”.
Uma boa ideia seria contratar um programador ou montar uma pequena equipe de desenvolvimento. Mas essa ideia, é bom que seja validada. Falo mais disso no último tópico deste post.
Em uma empresa de sucesso, incluir um novo “negócio”, totalmente diferente do negócio principal, exige atenção. Digamos que sua empresa seja um pet shop, que precisa de um sistema. Ter um time de desenvolvimento in-house exigirá um volume grande de atenção.
Um bom exemplo disso são os sistemas da Phormar, que desenvolvi e mantive ao longo de alguns anos. A empresa confiou em mim para implementar o que fosse necessário, e gerir um time se fosse o caso, mas preferiu não tornar isso o negócio dela.
Desenvolvedores são colaboradores mais complexos de se lidar, alguns dizem “sensíveis”, outros chamam de “temperamentais”. Por ser um trabalho complexo, o perfil é quase sempre o mesmo, são mais fechados, pensativos, mas nem sempre sabem o caminho a seguir, e com frequência seguem no caminho errado se não houver uma gestão próxima, ou seja, demandam atenção.
Aqui vale a pena verificar onde o seu valiosos tempo é mais bem aproveitado, focando no seu negócio principal ou fazendo a gestão de um time de programadores.
Startup baseada em tecnologia (Desenvolvimento de sistemas)
Outra situação comum é quando um futuro empreendedor tem uma ideia de um projeto a ser validado. Logo mais precisará buscar um investidor, apresentar algo, ter números e argumentos.
O primeiro passo é examinar a ideia, que sempre é boa, mas as vezes grande demais, com muitas frentes e focos, muitas utilidades extras. Limitar os recursos essenciais e faze-los ainda mais incríveis, é o que o usuário precisa.
É fácil, pensar que é fácil, fazer um aplicativo. É confortável pensar que em poucas semanas estará lá, online nas duas principais lojas, e desfrutar dos milhares de downloads.
Mas a realidade é bem diferente, e quando falamos de startups, o risco é maior. A decisão de implementar web ou app, pode ser a diferença entre o sucesso e o fracasso. O mesmo acontece com relação a linguagem, framework e demais tecnologias a serem usadas.
Se olharmos para fora, como acontece no Vale do Silício e outros grandes polos de tecnologia, o primeiro passo seria investir em um MVP (Mínimo Produto Viável), investir em mídia e colher feedback dos primeiros usuários. Com estas informações realizar alguns ajustes, e então ir em busca de um investidor. Com um MVP validado tudo fica muito mais fácil.
Montar um time de desenvolvimento ou contratar uma empresa?
Contratar programadores e montar um time de desenvolvimento, é complicado. Após o advento do COVID então, se tornou mais difícil ainda.
Mesmo que se conheça um ou dois bons analistas de sistemas, dependendo do projeto, será necessário um designer. Como entregar um projeto sem testa-lo adequadamente? Dai já precisaremos de um gerente de projetos para lidar com toda essa gente, prazos, requisitos, mudanças, entregas. Sem falar do deploy (publicação para o servidor).
Sou programador e digo que lidar com essa galera técnica não é das coisas mais simples, é preciso uma habilidade especial, um jogo de cintura diferente.
Um de nossos clientes nos procurou depois de ter fracassado com dois times diferentes, montados e geridos por eles mesmos. Inicialmente eles ficaram com receio de entrarem na terceira falha, foi quando um parceiro sugeriu implementarmos apenas um POC (Prova de Conceito) do projeto, ou seja, pegar a parte que nenhum dos times conseguiu fazer, e implementar apenas ela, do zero.
Assim fizemos, e em menos de uma semana eles estavam vendo (e experimentando) a tal funcionalidade. Ter um time de desenvolvedores treinado, que sabe trabalhar junto, com uma liderança técnica forte, faz toda a diferença.
Financeiramente, olhando na ponta do lápis, os números podem dizer que é melhor (mais econômico) montar um time. Faça isso se sua empresa tiver vocação para desenvolvimento, se puder dedicar boa parte do tempo investindo neste time, tendo quem responda, quem treine, quem motive.
Leia também nosso artigo “Computador para Programar“