Entenda a relação entre tempo, investimento, concentração de usuários, áreas-foco e objetivos.
Tudo começa com um sonho, com uma ideia, com uma grande sacada comercial, que leva ao início dos trabalhos, e então, planejamos, calculamos, pensamos e, em meio a diversos acontecimentos, transformamos a ideia em algo tangível, clicável, acessível através de uma ou de “n” plataformas.
Mas, mesmo diante da adrenalina, é de suma importância ter foco e atuar em pontos que realmente demandem atenção de acordo com o momento que a sua empresa esteja passando, pontos estes que, se falharem, poderão levar seu produto e/ou serviço a um fracasso que pode ser irreversível.
Ao longo do ciclo de vida de uma ideia (sistema ou aplicativo), existe a necessidade de focarmos a atenção em pontos específicos relacionados ao momento em que sua ideia se encontra, por exemplo: a percepção do usuário no início da concepção de sua ideia e a robustez necessária com o crescimento exponencial da base usuária.
Imagine que você está iniciando, que está “tirando da caixa” sua mais nova criação. Neste momento, você não precisa se preocupar com o acúmulo de usuários, com picos trazidos por ações de marketing, nem precisa estimar quantos processadores terão o servidor, a menos que você seja o novo Mark Zuckerberg. E mesmo ele não “estourou” da noite para o dia.
Não digo que você não deva se preocupar com a definição da arquitetura a ser utilizada, porém, precisa ter cautela na tomada de decisão, frente às armadilhas existentes na seleção da tecnologia a ser utilizada, como é abordado no tema DOM (Desenvolvimento Orientado a Modinha) ou HDD (Hype Driven Development). Mas este é um assunto para um outro artigo. Voltando ao assunto, o que estou colocando em pauta é o nível de importância necessário à determinados pontos relacionados ao momento em que você está vivendo com sua startup.
Agora é hora de falarmos, mais a fundo, de cada momento em específico para que possamos entender quais estratégias traçar. Isso acontece depois de já termos falado da importância da qualidade de software, dos riscos e custos de não dar a devida atenção aos testes.
Na fase mais incipiente da ideia, o foco deve estar na aparência da interface, na navegabilidade, na adequação da solução às necessidades de nossos usuários, mesmo que sejam nossos pais, familiares e amigos, pois é a visão crítica de diferentes perfis que trará questões de suma importância para melhorias com as quais devemos nos preocupar.
Nesta fase, o correto é dar início aos testes de usabilidade, à validação funcional e de se preocupar com a experiência do usuário, sem esquecer dos testes unitários e testes de integração que nunca devem ser negligenciados. As validações devem estar orientadas à “persona“, ao perfil de nossos usuários consumidores, mas não a grandes massas ou a situações de grande concentração de usuários. Esta é a hora em que devemos fazer o máximo possível para despender energia em áreas que sejam realmente importantes, investindo pouco, com grande inteligência e com foco nos próximos degraus que serão galgados.
Pois então, nascemos, crescemos e um anjo investe dinheiro em sua criação, não preciso dizer que lidar com dinheiro dos outros não é a mesma coisa que lidar com dinheiro de amigos e familiares. É um outro “bicho” que requer atenção redobrada e que não aceita desaforo. Neste momento deve-se continuar a direcionar a atenção aos testes de UX (experiência de usuário), testes funcionais para garantir o sucesso das operações/funções, testes de unidade e iniciar a automação das principais funcionalidades do sistema.
Posso afirmar, que durante os meus 20 anos de trabalho com desenvolvimento e qualidade de software que, apesar de entender a relação entre desenvolvimento, qualidade e prazos de entrega, hoje tenho claro, assim como meus amigos desenvolvedores, que não existe espaço para desleixo com a qualidade, e assim chegamos a uma mensagem de grande importância. “Se vira”, ou você pode estar colocando tudo a perder. Insucesso e retrabalho não devem fazer parte do dicionário, principalmente com a velocidade e a agressividade do mercado atual. Ser o primeiro é, com certeza, um ponto extremamente positivo, mas não significa necessariamente que será o melhor ou o que obterá o maior sucesso.
Após superados os primeiros passos, chega-se a um dos momentos de grande importância para a maioria das startups, o processo de preparo, de seleção e de aprovação de investimento por uma aceleradora, um momento de nervosismo, adrenalina e felicidade onde o que já era sério agora “vira lei”.
O seu sonho agora será trabalhado por cabeças incríveis de mercado, com grande severidade e agressividade. É neste momento que existe a necessidade de amadurecer e partir para o primeiro de muitos passos em uma escala de maturidade. A sua solução será “acelerada”, existirão muitos pitches, apresentações, adequações, novas funcionalidades, ações de marketing e grande exposição. Aqui é requerido um status de “ZERO DE VIABILIDADE DE FALHA”, e deve-se entender a falha de software como algo fatal.
Entendemos todos que existirão problemas, mas estes, quando existirem, devem ser de baixa severidade. Sendo assim, a mensagem é: mantenha as validações funcionais, as de UX, as de unidade, e agora foque em crescer exponencialmente os scripts de automação.
Adicionalmente, é importante que comece a pensar em testes de carga e de stress, para que consiga atender a picos de usuários online, e que inicie o processo de estruturação futura, com a inserção de ferramentas e conceitos de DevOps.
Digamos que você galgou os degraus do sucesso e chegou no patamar de buscar uma VC (venture capital/fundos de investimento) e agora temas, como: contratos, exigência de alta disponibilidade, tempo para retomada e plano de recuperação de desastre estão sendo colocados na mesa. Este é um momento onde toda a automação elaborada em estágios anteriores torna-se um trunfo, pois é hora de se aprofundar na execução de scripts de automação, tanto funcionais, quanto não funcionais, desenvolvidos em fases anteriores, para que possa garantir o correto funcionamento da solução, mesmo com à inserção de novas funcionalidades e de constantes adequações. Garantindo, desta forma, a publicação de novas versões, sólidas e funcionais, sem os famosos “efeitos colaterais”, tão conhecidos por desenvolvedores e consumidores de serviços de software.
Neste nível de maturidade devemos nos estruturar para que exista uma automação no processo de publicação. É o momento onde devemos pensar sério em DevOps, em releases com validações automáticas de aspectos funcionais e não funcionais, em análise de complexidade ciclomática de código e no empacotamento para publicação, com pouco ou nenhuma interação. Agora estamos falando de uma empresa sólida, com processos e ferramentas bem definidas e aplicadas de forma sinérgica. Precisamos entender o cenário, mapear e nos ater à processos de maturidade, para garantir que tenhamos dados base para ações, análises, apresentações e principalmente para o entendimento de possíveis riscos que possamos enfrentar.
Por fim, com o início de uma era de plenitude, e acompanhado de grande responsabilidade, chegamos à fase de abertura de capital e de negociação de ações em bolsa, com um board de acionistas e executivos. É a hora de maior cautela, lembrando que não basta chegar lá, tem de se manter, e para tal, garantir a qualidade e a constante adaptabilidade de seu produto/serviço para com a constante demanda de mercado.
Acreditando que você trabalhou direito, trabalhou no processo de automatização desde o início, e conseguiu montar uma estrutura sinérgica com base em sistemas e hardwares de apoio, este é o ponto onde se deve focar em “manter os padrões”, cuidar da maturidade e garantir os números e os resultados. Para isso, baseie-se nos índices de controle adotados e definidos com auxílio de modelos de maturidade como o MPT, o SQMMI (ambos com foco em testes de software), e outros presentes no mercado.
Por: Maicol Peixe