Depois de ler o livro The RSpec book, principalmente sua base de conceitos de como fazer ciclos pequenos de programação e tentar na prática aplicar alguns métodos que são explicados no livro. Enxerguei a possibilidade de aliar esses métodos a técnicas de gestão de tempo e tarefas, como GTD (Getting Things Done) e pomodoro.
Meu objetivo não é fazer nenhum guia definitivo. Mas sim, explicar como eu consegui colocar esses dois métodos em prática, pra assim reduzir incrivelmente minha procrastinação nos períodos de sujar a mão no código.
Primeira coisa, para programar seguindo TDD, você vai quebrar sua programação em pequenos ciclos, o que já facilita a identificação das tarefas a serem seguidas. Ao quebrar em por exemplo um ciclo semanal de uma feature nova do seu sistema, você em seguida vai começar a identificar esses passos a serem tomados para conseguir finalmente implementar essa nova aplicação.
Nesse ponto entra um bom software GTD, no meu caso o Things da Cultured Code, nesse posts apps GTD para mac, eu explico um pouco o porquê da minha preferência pelo Things.
Voltando, ao quebrar seu desenvolvimento em pequenos ciclos, o que eu tenho feito é o seguinte: criar um projeto que seria por exemplo meu ciclo semanal, para aquela determinada aplicação. Dentro desse projeto, literalmente destrinchar o processo de criação do código, em todos os ciclos que eu imagino que serão necessários para completar o projeto. É claro que nunca da exatamente certo, sempre vai faltar ou sobrar algum ciclo que esqueceu. Mas isso já da uma boa base, para pensar no todo do projeto e até perceber bem inicialmente se existe alguma falha na sua trilha.
Depois disso que entra o pomodoro technique. Que é básicamente, dividir todo o seu trabalho em pomodoros, que são, pequenos ciclos de 25 minutos de trabalho e 5 minutos de descanso. Com intervalos maiores de 30 minutos a cada 4 pomodoros. Já da pra sentir uma semelhança com o conceito de BDD/TDD por aí.
A partir do momento em que eu já tenho um plano a seguir do desenvolvimento da minha aplicação. Eu atribuo estimativa de pomodoros no meu plano GTD, de quanto cada um daqueles ciclos de cucumber examples, RSpec Red/Green/Refactor vão levar. Por exemplo eu tenho 2 ciclos, bastante simples, que provavelmente vão levar 25 minutos para serem concluídos, junto esses 2 em 1 tarefa no GTD. Depois vem um ciclo médio, que vai levar mais ou menos 2 horas de programação dedicada, então atribuo a ele 4 pomodoros. Depois tenho um ciclo realmente penoso, que levará 12 pomodoros para ser concluído. Então eu já vejo um pequeno problema por aí. Que provavelmente eu posso dividir isso em 2 ou 3 tarefas. Que deixará mais documentado em termos de tdd, mais organizado no gtd e mais efetivo com o pomodoro.
Depois de algumas semanas aliando essas técnicas, percebi uma melhora muito grande na minha procrastinação. Se eu quero ver o twitter, ou meus feeds, vou fazê-lo nos meus intervalos, e não enquanto programo. Isso parece banal, mas ter pequenos objetivos durante seu dia de trabalho, ajuda e muito na produtividade.
Também consegui perceber que usando essas técnicas, tenho uma noção melhor de quanto tempo leva cada passo de programação o que leva a uma ótima consequencia, que é a maior facilidade de precificar e analizar se um produto ou uma feature vale a pena. Usando os examples de cucumber, e colocando realmente o valor que aquele código trará pra minha aplicação. Em embate com o tempo que ele levará a ser completado.
Enfim, acho que vale a pena para quem não conhece, dar uma olhada nesses modelos de trabalho. Mesmo que não sejam os ideais para você.