Leis interessantes ao desenvolvimento

Citarei aqui algumas leis interessantes ao aspecto de desenvolvimento. São observações que alguém fez em determinado momento, sobre algum padrão que ocorre sempre e impactam diretamente no desenvolvimento tecnológico. Todas as leis levam o nome de seus autores. Enumero elas por ordem de importância segundo meu próprio critério:

1- Lei de Moore;
2- Lei de Nielsen;
3- Lei de Conway;
4 – Lei de Boehm;
5 – Lei de Brooks.

Lei de Moore

A lei de Moore, provavelmente a mais importante, é a lei que diz que a capacidade de processamento dobra a cada período de 18 meses. Isso significa que a cada um ano e meio temos o dobro do processamento do que no período anterior, traduzindo um ganho exponencial em processamento. O que isso significa na prática? Que a capacidade de processamento cresce mais, cada vez mais.

É uma progressão geométrica, e significa por exemplo, que sê o processamento hoje fosse equivalente à metade do cérebro de um ser humano, daqui a um ano e meio seria igual à do cérebro humano, e daqui a 3 anos, seria o dobro do cérebro humano. Essa lei explica o por que de estarmos avançando tão rápido, e nos mostra que provavelmente o futuro será muito mais surpreendente no aspecto tecnológico do que os céticos imaginam.

Isso se mostra principalmente nas notícias, que dizem hoje por exemplo que já estão sendo desenvolvidos processadores à nível atômico/quântico.

Lei de Nielsen

A Lei de Nielsen é muito parecida com a lei de Moore, Jakob Nielsen é considerado o pai da usabilidade, e possui 10 leis de heurísticas de usabilidade, que não devem ser confundidas com a lei de Nielsen.

Esta lei mostra que a largura de banda (capacidade de transmissão de informação) aumenta de maneira linear, ao invés de exponencial como no caso do processamento. Isso significa que: Processamos muito mais do que transmitimos, e essa distância tende a ficar maior com o tempo.

É uma lei que trás desafios para a tecnologia, pois se pensarmos bem, cada vez mais teremos capacidade de desenvolver soluções muito mais robustas, mas a capacidade de integrar e transmitir continuará dando passos do mesmo tamanho. Por esse motivo hoje, já temos nos softwares muita preocupação em deixar as aplicações leves, em colocar cache em tudo, em compactar ao máximo a informação à ser transmitida. A lei de Nielsen é principalmente interessante por causa dessa relação com a lei de Moore.

Lei de Conway

Conway observou que os softwares possuem divisões semelhantes às divisões na estrutura da organização que o criou. Isso significa que de alguma forma, mesmo sem querer, as organizações imprimem sua própria estrutura no software. Na prática revela que uma empresa que tem sua estrutura muito engessada tende à desenvolver softwares monolíticos, enquanto empresas mais dinâmicas conseguem produzir softwares mais modulares.

Creio que muito disso se deve à própria burocracia. Já trabalhei em ambientes em quê era impossível adaptar a infra estrutura para que o software trabalhasse da maneira adequada, pois a equipe de infra estrutura não tinha interação com a equipe de desenvolvimento, que ficava à mercê da infra fornecida.

Lei de Boehm

Quanto mais tempo se leva para detectar um bug, maior será o tempo para correção deste bug.

É fácil imaginar que um bug não observado durante muito tempo será um grande problema, pois muitas funcionalidades serão desenvolvidas em cima dele, e terão que ser adaptadas no momento de correção. Por esse motivo os testes e o bom código são imprescindíveis.

Muitas vezes se opta por fazer vista grossa à algum trecho de código mal escrito, pois no momento ele está satisfazendo as necessidades, e os custos para sua correção não trarão benefícios à curto prazo. Porém essa opção normalmente será custosa caso o software ainda não esteja maduro. É importante que sempre que possível sejam feitos testes e correções, mesmo que não seja mais o momento de trabalhar naquele módulo. Se você um dia pegar um código com problemas, faça ao menos uma pequena correção antes de continuar desenvolvendo, e aos poucos o problema será mitigado sem um grande impacto.

Lei de Brooks

Um projeto de software atrasado que tenha adição de novas pessoas na equipe sofrerá maiores atrasos.

Entrar em um projeto em andamento leva tempo, é preciso compreender a análise, compreender o que foi feito, se capacitar nas tecnologias envolvidas e se relacionar com equipe e cliente. Há uma boa curva de aprendizagem nesse processo e um projeto que está em atraso já exige tempo suficiente da equipe. Um novo integrante irá exigir mais tempo dessa mesma equipe, e na prática irá apenas trazer um atraso maior. Nestes casos é melhor contar com uma equipe emergêncial que já faz parte do projeto e deixar a adição de novos membros para outros momentos, como no início de um projeto, ou em um projeto que está dentro do prazo.

Finally

Bom, trouxe essas leis que creio serem interessantes e possuem um bom embasamento. Caso tenha interesse procure saber mais, e conheça outras leis (se descobrir outras interessantes comente neste post para eu saber também, hehehe). São relevantes não apenas para o desenvolvimento de software, mas também para análise, gestão e até mesmo uma visão do que está por vir em termos de tecnologia no mundo. Todas elas ainda são aceitas e observadas, e as organizações mais bem sucedidas e planejadas às levam em consideração, faça isso também!

That’s all folks. 🙂

 

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *