Em primeiro lugar vale a pena lembrar o nosso leitor de que a Lambda3 não é apenas uma empresa de consultoria e treinamentos. Também temos uma frente de atuação em projetos de software e esta frente vem crescendo cada vez mais.
Recentemente fizemos a entrega de mais um projeto e a idéia aqui é aproveitar este encerramento para refletir sobre o resultado deste trabalho. Fatalmente, surgem lições aprendidas.
O projeto surgiu da necessidade de uma instituição financeira modernizar a nível sistêmico e tecnológico o software que suporta um de seus produtos. Vamos então às lições aprendidas.
-
SPA já é uma arquitetura madura
Implementar Single-page Applications hoje não é tão difícil. Muita gente já apostou nisto e muitas tecnologias que sustentam esta arquitetura estão amadurecendo cada vez mais.
Para este projeto nós apostamos nesta arquitetura e nos apoiamos em tecnologias como RequireJS, CoffeeScript, Backbone.js e Jasmine.Combinadas estas tecnologias suportaram ciclos de desenvolvimento cada vez mais produtivos, sempre amparados em práticas como integração contínua e TDD. O resultado final foi muito bom, tanto para o usuário do software quanto para os desenvolvedores responsáveis por evoluir a base de código daqui para frente.
Esta não foi a primeira e nem será a última vez em que apostamos em SPA.
Se você se interessou por esta arquitetura hoje nós oferecemos dois cursos focados em alguns destes elementos. -
Uma arquitetura evolutiva que gerou bons frutos
As primeiras sprints são sempre mais difíceis de entregar, por conta de todo o setup de tecnologia necessário.
Apostando em uma arquitetura evolutiva, adiamos algumas decisões e preocupações. Para o setup restante foi muito valoroso o apoio de alguns especialistas da Lambda3. O resultado foi a conquista do cliente logo no início dos trabalhos. -
Distribuído sim. Distante nunca!
Por todo tempo nosso time esteve distribuído. O time do projeto foi composto por dois Lambdas em São Paulo e dois profissionais de nosso cliente, sediado em outra cidade.
Reuniões diárias viabilizadas pelo Google Hangout ajudaram bastante. Mas não pode ficar só nisto. Nosso time se entrosou cada vez mais e conversávamos várias vezes ao dia. -
Times pequenos se auto-organizam mais facilmente
Auto-organização por si só já é uma grande quebra de paradigma. Como você já deve saber a Lambda3 não tem gerentes ou chefes.
Para este projeto algumas coisas não saíram da maneira que gostaríamos. Mas de maneira bastante natural cada integrante do time aprendeu a contribuir da melhor maneira possível. Tomar, comunicar e inspecionar decisões técnicas foi mais fácil do que nunca.
Claro que a postura de cada integrante do time sempre é muito determinante, mas o tamanho do time tornou tudo isto mais fácil. -
Cuidado com a capacidade
Ainda que historicamente as estimativas do time sejam assertivas, é arriscado comprometer toda a sua capacidade no planejamento de uma sprint.
O comprometimento excessivo da capacidade foi causa raiz para o aparecimento de alguns débitos técnicos.
Também houveram duas sprints em que o time precisou fazer uso de overtime para conseguir cumprir a meta.
É importante observar que o uso de overtime foi moderado, pontual e iniciativa do próprio time.
Não apelar ao overtime e falhar o cumprimento da meta demandaria mais atenção ao problema na retrospectiva da sprint. Possivelmente surtindo um bom efeito a médio e longo prazo. -
Potencialmente entregável
Deixar de fazer com que o software seja potencialmente entregável ao final de uma sprint é como roubar de você mesmo.
Fizemos uma manobra que permitiu a entrega de mais funcionalidades mas nenhuma delas era potencialmente entregável. No final nós pagamos um preço por isto mas tudo terminou bem. -
Revise seu planejamento de releases
Seguimos um planejamento de releases definido cedo demais e ainda influenciado por uma mentalidade waterfall do cliente. Com todo o aprendizado que ocorreu no decorrer do projeto, desperdiçamos a oportunidade de revisar aquele plano para quem sabe, tomar melhores decisões.
-
Indisponibilidade do PO
Em um projeto guiado por um processo Scrum é muito bom quando você sente que o Product Owner entendeu como o time trabalha e se dispôs a colaborar da melhor maneira possível. Por outro lado a falta de disponibilidade deste mesmo PO tira o brilho de sua atuação e impacta o trabalho do time e o andamento do projeto.
Entre outras coisas, este impacto se apresentou em forma de requisitos confusos e reuniões com perda de foco e demoradas.
Além de lições aprendidas para todos nós, também é importante que cada um cresça como indivíduo.
Particularmente, aprendi que gosto muito mais de JavaScript do que eu poderia imaginar.
Que um browser moderno é uma ferramenta poderosa mas normalmente subutilizada.
E que trabalhar na Lambda3 é melhor do que lasanha.
Rafa Noronha
Rafa Noronha gosta de construir aplicações web inovadoras em qualquer plataforma. Possui experiência em diversas tecnologias mas a única com quem rolou algo mais sério foi a Web. Nos últimos anos precisou se especializar em JavaScript, single-page apps e Backbone.js. Na Lambda3 Rafa Noronha jura que Java é legal e está sempre vencendo seus colegas nos confrontos de Mortal Kombat e FIFA14.