Pular para o conteúdo principal

Arquitetura Evolutiva tem que respirar

Uncle Bob é um grande defensor da filosofia em que o desenvolvedor deve adiar ao máximo as decisões que criam amarras ao seu código. Esta é considerada prática já estabelecida quando estamos tratando de componentes externos como Bancos de Dados (por mais que alguns não consigam seguir essa filosofia), mas o que Robert quer é ir além, onde nosso código tenha o mínimo de dependência tanto de ferramentas, frameworks até mesmo a nossa arquitetura de deploy.

De início pode não pareceruma tarefa fácil. Como desenvolvedores vivemos uma batalha diária a cada tomada decisão. Estas devem encontrar o equilíbrio entre a sustentabilidade de longo prazo do nosso sistema e a velocidade com que conseguimos colocá-lo no ar. Afinal, o valor presente em um software cuja a manutenção seja impraticável é tão nulo quanto um que nunca vai ao ar. Soma-se ainda que para quem vive uma realidade Lean, apesar do desenvolvimento aparentar incremental, a evolução do produto não segue esta mesma linha. Sendo na real formado por diversas "quebras".


Considerando que a cada etapa do processo de aprendizado do produto muita coisa pode (e provavelmente vai) mudar. Nosso software deve estar pronto para fazer o mesmo. Estando apto a embarcar mudanças que podem até mesmo jogar seu repositório inteiro pela janela. Neste caso, eu considero que duas perguntas são chave na tomada de decisões. Primeiro, "Qual a solução mais barata que eu estou disposto a fazer agora?" e segundo "O que eu posso jogar fora do que eu fiz?". A primeira pergunta é bem conhecida entre os praticantes do Lean Startup (de novo, não que seja fácil de se praticar). Já a segunda envolve uma habilidade que poucos desenvolvedores possuem, o desapego


Muitos de nós temos dificuldade de nos livrar de coisas da nossa vida. Séries como Os Acumuladores estão aí para nos mostrar os extremos a que esse tipo de realidade pode chegar. Infelizmente muitos programadores são acumuladores de código, seja mantendo funcionalidades que não são mais usadas, classes não acessíveis por ninguém, testes que não testam nada ou o pior de todos, código comentado. Muitos amontoam essas quinquilharias sob a promessa de que "podem ser úteis no futuro". Porém, o que acabam fazendo é contribuir para aumentar a carga de legado, levando a produtividade do time para baixo. Por isso, se você possui algo que se encaixe em uma dessas situações no seu código, faça um favor, delete-as. Não tenha medo, o controle de versão vai te ajudar se um dia você precisar de algum artefato arqueológico destes (pouco provável).

Dominada esta habilidade, você estará apto a diminuir o tamanho do seu código. Deixando mais espaço (tanto no projeto como na sua mente) para construir novas coisas. É aqui que retornamos a primeira pergunta. Dela as palavras que mais importante a se levar em consideração são "barata" e "disposto". Por barato o que queremos dizer é aquilo que gera valor de forma mais rápida, implicando em menor custo e por consequência um maior retorno (seja monetário ou de aprendizado). Já no disposto entram os valores que você, como desenvolvedor, impõe no seu trabalho. Talvez você esteja disposto a criar algo que seja insustentável no futuro em prol de um aprendizado mais rápido, para que esta dívida seja paga no futuro. As vezes não tem a disposição para abrir mão de uma solução mais redonda, já que não quer carregar isto para frente. É a disposição (pessoa e da equipe) que determina o tamanho do passo que vai ser dado. Determinando não só o ritmo de trabalho como a segurança com que se caminha.

Dominando esta segunda habilidade, podemos escolher como crescer nosso software. Isso em conjunto com a primeira permite que nosso software cresca em "ondas". Sempre tateando qual o caminho mais seguro para que seu software vá evoluindo. E é isso que permite evoluir não apenas tecnicamente, mas também em valor de negócio. Alcançando o equilíbrio tão necessário para as soluções que nós desenvolvemos.


Comentários

Postagens mais visitadas deste blog

Suporte para Celular

É engraçado de se pensar que, em 3,5 anos de blog, o post mais acessado do site é o sobre o Suporte para Notebook. Sozinho ele tem quase 3 vezes mais acesso que o segundo colocado. Até hoje eu não sei dizer o por que deste efeito. Apesar disto me orgulho bastante daquele post, afinal além de ter superado minha falta de coordenação motora, ainda cheguei num resultado satisfatório. Já se passaram 2 anos e ambos os suportes se mostram em perfeito estado até hoje.

Pois bem, mas por que ressuscitar este assunto? Na Intacto temos um amigo oculto um pouco diferente, onde cada um tem que fazer seu presente, usando o máximo a sua criatividade. Como eu tirei o Fernando Aguiar, um cara fã de software livre (isso temos em comum). Por isso decidi tentar uma evolução do projeto inicial do Suporte de Notebook (que é aberto e disponível a todos) que elaborei junto ao Marcelo Bassani. Nesta segunda versão usei o Papel Pluma, que apesar de seu valor bem acima que o Paraná (usado anteriormente) resultou…

Aceleração de Startups - Parte 4 - Como melhor aproveitar uma aceleração?

Hoje eu fecho essa série de posts sobre aceleração. Já contei sobre o que é uma aceleradora de estágio semente, onde ela se encaixa no ecossistema e como ela pode te ajudar. Se depois disso tudo, você tenha decidido seguir esse caminho, faltou uma coisa: o que você deve fazer para tirar o maior proveito desse momento. E é isso que vou tentar fazer hoje.

Antes de Aplicar Entenda o momento da empresa Antes de aplicar para um programa, reflita bem sobre o momento. O propósito de um programa de aceleração té auxiliar a empresa a "saltar" para seu próximo estágio. Para fazer isso, é importante entender bem onde se está agora. Isso vai te auxiliar a mirar onde se deseja estar no futuro. Ter noção desses marcos é de grande valia para estabelecer pontos de referência em medir a evolução ao longo do caminho. É imensa a probabilidade que as coisas irão mudar, mas ter esses lugares para se olhar e comparar pode ajudar a direcionar o navio em momentos bons e ruins.

Existem também algun…

Aceleração de Startups - Parte 1 - O que é uma aceleradora?

Costumo dizer que eu já participei de mais programas de aceleração que o aconselhado. Contando com 2018, completei a marca de 5 dessas experiências e acho que já passou da hora de colocar em texto um pouquinho do que vivenciei.

Se você não sabe o que é uma aceleradora de startups, vale muito ler este texto do Tony. Aqui vou focar nos critérios do GAN (Global Accelerator Network) do que é um programa de aceleração.

Termos favoráveis aos Empreendedores Programa de Curto Prazo Orientado a Mentoria Pequenos grupos de trabalho* Oferece espaço físico* Time forte de gestão
Termos favoráveis aos Empreendedores Uma aceleradora tem por propósito ajudar que as startups consigam ganhar corpo em um tempo extremamente reduzido. Daí o termo acelerar. É um extremo contrasenso que ela canibalize as quotas da empresa em um estágio tão crucial. Favorecer os empreendedores é chave não apenas para fomentar que estes corram com o máximo de energia nessa etapa, mas também que tenham fôlego nas etapas futuras para…