Já falei aqui no blog, em outras ocasiões, acerca do meu trabalho em sistemas legados. Pois agora, após de acumular mais algumas experiências, discussões e refinamentos creio que cheguei em uma forma mais sucinta [mas não definitiva] de explicar a lógica que sigo. Tal raciocínio me levou a levantar esta questão no Agile Trends e Agile Brazil deste ano.
Na apresentação cobri diversos exemplos e consequências que derivam do raciocínio. Mas em todos eles existe uma idéia central guiando o processo. Uma pergunta, que ajuda a sumarizar como penso. É sobre ela que quero falar hoje.
Esta pergunta poder ser decomposta em quatro partes.
O menor passso
Sempre somos tentados a pensar na melhor solução. Nossa educação nos treinou a sempre buscar a resposta certa para as perguntas que nos são apresentadas. Porém nem toda pergunta nasce igual. Sendo assim, um mesmo problema [em software] pode ter soluções distintas, de acordo com seu contexto. Dar um passo menor consiste em não apenas quebrar o problema (e solução) em partes mais digestíveis. Mas entender que cada uma delas fornece pequenas dicas de que estamos indo na direção correta. Quanto menor, mais rápido conseguimos verificar e ajustar o curso.
Sustentável
Idealmente uma decisão sustentável seria aquela que não te causa problemas no futuro. Essa é uma tarefa difícil de se alcançar. Isso porque, toda linha de código que se constrói, enquanto resolve um problema, abre portas para uma infinidade de outros. Por isso, prefiro reconstruir a definição de sustentável como as decisões que você se sente confortável com as conseqüências no futuro. Isso implica em se pensar nos desdobramentos e estar ciente da dívida técnica (e negocial) que nossas decisões de software geram.
Eu consigo executar
Ter consciência de nossas limitações é importante. Por muitas vezes não temos o conhecimento ou domínio para executar nosso melhor plano. Entender essa limitação e decidir como ela influencia o caminho a ser seguido. Qual o custo de se adiquirir essa capacidade em relação as necessidades do projeto?
Agora
Por fim, é importante ter em mente durante a tomada de decisão, não somente o que queremos pro sistema no futuro. É rpeciso balancear suas necessidades baseando-se também no agora. Nada adianta decidirmos a melhor solução [sustentável] se a mesma só estará disponível depois de uma capacitação de seis meses, quando a necessidade do negócio é para o mês seguinte. Temos que balancear nossas decisões e planos com o que nos é apresentado no presente e construir o caminho a partir daí.
Como exemplos de extratégias de como melhorar seu legado indico os artigos do Marting Fowler sobre Sacrificial Architecture e Strangler Application .
Na apresentação cobri diversos exemplos e consequências que derivam do raciocínio. Mas em todos eles existe uma idéia central guiando o processo. Uma pergunta, que ajuda a sumarizar como penso. É sobre ela que quero falar hoje.
Qual o menor passo sustentável que eu consigo executar agora.
Esta pergunta poder ser decomposta em quatro partes.
O menor passso
Sempre somos tentados a pensar na melhor solução. Nossa educação nos treinou a sempre buscar a resposta certa para as perguntas que nos são apresentadas. Porém nem toda pergunta nasce igual. Sendo assim, um mesmo problema [em software] pode ter soluções distintas, de acordo com seu contexto. Dar um passo menor consiste em não apenas quebrar o problema (e solução) em partes mais digestíveis. Mas entender que cada uma delas fornece pequenas dicas de que estamos indo na direção correta. Quanto menor, mais rápido conseguimos verificar e ajustar o curso.
Sustentável
Idealmente uma decisão sustentável seria aquela que não te causa problemas no futuro. Essa é uma tarefa difícil de se alcançar. Isso porque, toda linha de código que se constrói, enquanto resolve um problema, abre portas para uma infinidade de outros. Por isso, prefiro reconstruir a definição de sustentável como as decisões que você se sente confortável com as conseqüências no futuro. Isso implica em se pensar nos desdobramentos e estar ciente da dívida técnica (e negocial) que nossas decisões de software geram.
Eu consigo executar
Ter consciência de nossas limitações é importante. Por muitas vezes não temos o conhecimento ou domínio para executar nosso melhor plano. Entender essa limitação e decidir como ela influencia o caminho a ser seguido. Qual o custo de se adiquirir essa capacidade em relação as necessidades do projeto?
Agora
Por fim, é importante ter em mente durante a tomada de decisão, não somente o que queremos pro sistema no futuro. É rpeciso balancear suas necessidades baseando-se também no agora. Nada adianta decidirmos a melhor solução [sustentável] se a mesma só estará disponível depois de uma capacitação de seis meses, quando a necessidade do negócio é para o mês seguinte. Temos que balancear nossas decisões e planos com o que nos é apresentado no presente e construir o caminho a partir daí.
Como exemplos de extratégias de como melhorar seu legado indico os artigos do Marting Fowler sobre Sacrificial Architecture e Strangler Application .