Disciplina é fundamental no desenvolvimento de software

Na era das startups e inovação disruptiva a informalidade parece ser a condição essencial para o sucesso. A quebra de paradigmas e mudanças dos modelos de negócios são fundamentais para acompanhar o comportamento dos consumidores, transformados pelas novas tecnologias e novos negócios. A ideia corrente é que as novas empresas devem ter ambientes descolados, informais e o “o que” é mais importante do que “o como”. Em muitos negócios a abordagem está correta, mesmo porque “o como” pode ser uma barreira para a transformação. Entretanto, na área de desenvolvimento de software “o como” é tão ou mais importante do “o que”. O planejamento e a disciplina de desenvolvimento são importantes na construção de softwares confiáveis e reduzir custos, essenciais para garantir a disponibilidade dos serviços e crescimento da empresa.

As definições da arquitetura e da metodologia de desenvolvimento de software são fundamentais para criar um ambiente robusto, confiável, flexível, escalável e barato de desenvolvimento de software e operação.

Conceituando, arquitetura de software de um sistema consiste na definição dos componentes de software, suas propriedades externas e seus relacionamentos com outros softwares. Metodologia de desenvolvimento de software é o conjunto estruturado de práticas que pode ser repetível durante o processo de produção de software.

A ideia da “folha em branco” no desenvolvimento de uma nova aplicação de software para valorizar a inovação só é verdadeira nas startups no primeiro estágio de vida. A definição da metodologia de desenvolvimento de software, incluindo opções para diferentes tipos de projetos, e predefinições da arquitetura de software devem fazer parte do plano de negócio da empresa, principalmente se ela tiver uma forte dependência de tecnologia.

Como essas definições irão nortear todo o desenvolvimento da empresa é importante que reúnam as características de robustez, flexibilidade, confiabilidade e escalabilidade. Inclui-se aqui a segurança da informação.

Isso já nos leva a refletir sobre a adoção de softwares proprietários e open source. Se por um lado utilizar um software proprietário implica em um suporte técnico robusto, por outro lado limita a flexibilidade e a escalabilidade, impactando em restrições para novos desenvolvimentos e altos custos de licenças. É importante buscar o equilíbrio nas escolhas. O mesmo ocorre com as definições do hardware para o data center, onde hoje devemos considerar a adesão ao OCP, Open Compute Project, liderado pelo Facebook, que recentemente teve a adesão da Google.

A definição de uma metodologia de desenvolvimento de software está associada as características da empresa e deve ser flexível para apoiar diferentes tipos de projetos. Quando adotada deve ser seguida à risca, sem desvios. Fato que as vezes não bem entendido por programadores da geração Y que acreditam que quebrar regras faz parte do negócio. Nesse caso, os desvios podem comprometer a robustez e confiabilidade dos softwares.

O DevOps, processo automatizado que integra práticas de desenvolvimento e operação, pode ajudar as organizações de TI a ter uma disciplina e processos estáveis para as equipes de desenvolvimento de software.

É recomendável, mesmo para as startups, contar com especialistas experientes que já vivenciaram grandes projetos no “coaching” aos jovens programadores para garantir processos estáveis, melhorar a produtividade e reduzir custos, assegurando a alta disponibilidade dos serviços e mais lucratividade.