Os “Drops da EximiaCo” estão disponíveis em algumas das principais plataformas de podcast, incluindo iTunes, Spotify, Deezer! Em todo caso, caso seu player não tenha suporte a nenhuma dessas plataformas, poderá usar nosso feed.
Ao longo de décadas, Meir Lehman e László Bélády formularam, propuseram e aprimoraram diversas “leis” que, alegadamente, “governam” a evolução de sistemas de software. Essas leis ficaram conhecidas como Lehman’s laws.
As “Leis de Lehman” descrevem e ajudam a entender o sensível equilíbrio entre as motivações para a evolução de um software, pela adição de novas features, e as causas para o aumento do lead time para atender demandas do negócio ao longo do tempo.
As duas primeiras “leis” formuladas por eles, em 1974, foram a lei da “mudança contínua” e a lei da “complexidade crescente”. A primeira diz que, ao longo do tempo, um sistema de software precisa ser continuamente adaptado, recebendo novas features, para se manter relevante e satisfatório. A segunda aponta que, enquanto essas “adaptações” são feitas, o software se torna mais complexo, exceto quando existam esforços explicitamente direcionados para mitigar essa complexidade.
As duas leis, deliciosamente evidentes e conflitantes, levam a alguns desdobramentos preocupantes:
- [tweet]Projetos de software bem sucedidos estão “condenados” a demandarem trabalho para mitigar a a complexidade.[/tweet]
- [tweet]Times extremamente eficazes, mas exclusivamente focados em atender as demandas de negócio se tornam, eventualmente, menos produtivos, deteriorando sua capacidade de fazer entregas e, consequentemente, sua eficácia.[/tweet]
- [tweet]O esforço para combater a complexidade é imperativo para manter o software relevante no médio/longo prazo.[/tweet]
- [tweet]Times de negócio que não se sensibilizam para a necessidade de reduzir a complexidade do software, priorizando somente inclusão de features, se condenam a ter suas demandas atendidas em prazos cada vez maiores.[/tweet]
É responsabilidade do CTO garantir que os times de negócio sejam sensíveis a necessidade de adotar medidas que combatam a complexidade do software. Escolher as alternativas mais eficientes para combater essa complexidade tem impacto determinante para o Velocity e, em tempos de negócios exponenciais, para a manutenção dos negócios. Abordagens ingênuas ampliam potencialmente o problema.