Não é à toa que várias empresas e pessoas se dizem
Ágeis, mas quando são questionadas se programam em pares, se desenvolvem orientados a testes, se trabalham 40 horas semanais, etc, grande parte das vezes a resposta ainda é "não necessariamente" ou "mais ou menos" ou "não, mas a gente desenvolve em sprints". Pasmem...
Ser
Ágil não é nada fácil.
Pelo menos nós Agilistas temos a consciência que simplesmente não ser
Ágil é ainda mais difícil.
Mesmo com as várias metodologias ágeis adaptáveis, como
Kanban por exemplo, ser
Ágil significa uma mudança de comportamentos, de paradigmas e para muitas pessoas até mesmo de princípios e de personalidade (se é que isso seja possível). Uma das maiores dificuldades, que pelo menos eu pessoalmente tenho encontrado, é ter que desenvolver em conjunto com pessoas que se dizem ágil porque está na moda, mas nem sequer acreditam nos valores ágeis e se utilizam de qualquer artifício e argumentação para justificar o porque de não praticar a programação em pares, nem refatorar, não compartilhar seu código, não desenvolver testes unitários e principalmente, não focalizar na entrega de algo executável no final de uma iteração. Mais difícil ainda do que ser ágil é explicar para um pessoa que se acha ágil que ela não o está sendo.
(Gostaria de citar aqui esse outro post que eu achei interessante:
The emotional reaction to Agile adoption)
Mesmo para quem é de fato ágil, é extremamente comum saltar as práticas ágeis por indisciplina ou preguiça. Não tenho porque negar que isso já aconteceu comigo incontáveis vezes. Quando se está muito absorvido e pressionado com os problemas momentâneos e isolados é comum perder a noção das conseqüências futuras e globais da indisciplina. O problema aumenta consideravelmente quando a qualidade do trabalho não é visível pelos outros da equipe ou quando não se está programando em pares e não existe ninguém para inspecionar o seu trabalho a não ser você mesmo.
Em muitos casos, uma ferramenta que "force" e "garanta" o cumprimento das práticas ágeis pode ajudar muito uma equipe de desenvolvimento. Compreendo perfeitamente que a interação humana é o fator de maior relevância para a adoção ágil, e que nada a pode substituir. Mas acredito também que nem todas as pessoas possuem os valores ágeis por natureza, que mesmo os profissionais ágeis podem ser indisciplinados muitas vezes e que a simples confiança no empenho individual nem sempre é fator de sucesso. Uma ferramenta de auxílio para
complementar as interações humanas (como comunicação, compartilhamento, respeito, confiança, ...) de uma equipe de desenvolvimento ágil quando esta está sendo incipiente pode ser uma solução muito eficiente.
As vantagens da ferramenta LiveSource
Assista nosso vídeo DEMO:
http://www.screencast-o-matic.com/watch/cX6oVdTPZ
LiveSource é uma ferramenta
Web que garante que o código fonte não estará mais escondido atrás de servidores de arquivos de complexo acesso, mas sim, sempre compartilhado para todos da equipe de desenvolvimento há um clique do seu browser e, mais ainda, que este código será compreensível pelos não-programadores. Pelo menos, se o código não estiver compreensível, a ferramenta LiveSource deixará bem exposto o problema, de uma forma que os programadores não terão como argumentar o contrário com seus jargões técnicos, também incompreensíveis. Tudo isso viabiliza a programação em pares inclusive entre programadores e não-programadores.
Figura 1. Visão dos Stakeholders e do Código Fonte
Extraído de um software para o Jogo da Velha
(Clique na imagem para vê-la ampliada)
Perceba na figura acima que todos os dados do quadro à esquerda foram extraídos diretamente do código fonte exibido a direita. O quadro à esquerda não passa de um filtro das informações de domínio relevantes a um Stakeholder que se encontram diretamente no código fonte. Se o programador utilizar a
Linguagem Ubíqua dentro do código fonte como no exemplo acima, não haverá dúvida que qualquer não-programador poderá compreender o texto filtrado à esquerda. Para transformar esse filtro em uma
História de Usuário ou em um requisito é uma questão de simples formatação de texto.
LiveSource estratifica o planejamento em tarefas o mais simples possível, em seu tamanho tão mínimo como o de uma única classe de desenvolvimento, para que a complexidade das histórias de usuário sejam entendidas e estimadas com mais rigor.
LiveSource publica a realidade verdadeira do projeto de software. O que não está 100% pronto no código fonte ficará evidenciado sem precisar passar por relatórios paralelos onde essa realidade pode ser facilmente mascarada pelos responsáveis.
Observe a lista de requisitos abaixo extraída diretamente do código fonte deste mesmo projeto exemplo, no caso uma aplicação simples para o Jogo da Velha.
Figura 2. Visualização do Escopo
através da Lista de Requisitos
(Clique na imagem para vê-la ampliada)
|
|
Figura 3. Visualização dos arquivos do Código Fonte
(Clique na imagem para vê-la ampliada)
|
Como a lista de requisitos à esquerda é uma visão direta (e filtrada) dos arquivos do código-fonte da direita, não tem como um programador ou um gerente de projeto, ou qualquer outra pessoa da equipe de desenvolvimento, manipular esses dados para demonstrar uma maior produtividade além da verdadeira.
Comparando a Figura 2 com a Figura 3, veja também o quanto é mais fácil ler e compreender a estrutura e o significado do código fonte após os filtros de LiveSource.
Testes Unitários
LiveSource também evidencia com precisão a presença ou a ausência de testes unitários para uma determinada unidade de código.
Figura 4. Link entre um arquivo fonte e seu Teste Unitário
(Clique na imagem para vê-la ampliada)
Live Task Board
O Live Task Board é uma visão realista e dinâmica do status atual do software. É capaz de se atualizar automaticamente, porque seu conteúdo é extraído do que está sendo produzido diretamente no código fonte e não de um banco de dados de histórias que tem que ser atualizado em paralelo ou de histórias escritas em papel na parede que necessitam ser movidas fisicamente pela equipe diariamente.
Figura 5. Live Task Board
(Clique na imagem para vê-la ampliada)
Entendo perfeitamente os efeitos maravilhosos da simplicidade de um task board na parede em frente à equipe de desenvolvimento, principalmente durante uma
Stand up Meeting. Entendo a evolução que isso significa comparativamente aos modelos tradicionais de desenvolvimento, com seus cronogramas extremamente complexos e irreais. A idéia do LiveSource não é substituir os momentos de interação entre a equipe trazendo mais uma ferramenta para ser utilizada pelos desenvolvedores, mas sim melhorar ainda mais a comunicação deixando as tarefas manuais de atualização do quadro de tarefas para ser realizadas por um computador e proporcionando mais tempo para a equipe discutir os assuntos relacionados às tarefas em si.
Pode-se projetar o Live Task Board na parede e continuar adicionando os post-its à imagem projetada. No momento em que o programador for gerar o código fonte de uma tarefa específica, a informação dos post-its pode ser usada como documentação de código e assim a tarefa relacionada no papel volta automaticamente para o Live Task Board de forma eletrônica e bem mais permanente.
Visualizar o código de uma maneira filtrada e limpa, dá ao programador uma idéia imediata do que precisa ser melhorado. Causa um extremo desconforto visualizar tão claramente o próprio trabalho quando não está bem feito. É uma situação que só a real experiência com Live Source pode demonstrar sua extensão.
Agora imagine o impacto de um código confuso sendo visualizado por todos da equipe. Nenhum programador gostará de ser o responsável por esse código. E possivelmente não o será, pois a tendência do programador será priorizar a refatoração, diminuindo a sua complexidade consideravelmente.
É nesse sentido que LiveSource pode ser considerada uma ferramenta para aumentar a qualidade do seu software. Porque possibilita uma grande visibilidade ao que está sendo desenvolvido.
A idéia do LiveSource é que não tenha como disfarçar quando não se está sendo ágil. Nem para si mesmo.
Veja aqui vídeos demonstrativos de como acessar a ferramenta passo a passo.
Depois não se esqueça de enviar-nos seus comentários!