Acredito que concorrência é um dos tópicos mais básicos de arquitetura de software, e que deve ser conhecido e estudado por todo desenvolvedor de software. Este ano, fiz uma apresentação introdutória sobre o tema na Bluesoft, e gravei um episódio do DeveloperTalk.tv sobre assunto.
Confira os slides e vídeos e aprenda um pouco mais sobre:
Recentemente recebi uma pergunta no Facebook, sobre o que faz um PO. Gostaria de responder a pergunta e deixar minha opinião registrada através deste post.
A pergunta foi mais ou menos assim:
Onde eu trabalho estou para assumir o desafio de ser PO, e parece que a empresa não tem bem definido o quais são as funções do PO pois alguns dos POs desenham diagramas como um analista de requisitos, isto está correto?
Segundo eles esta é a lista de atividades:
- Entender, criticar, questionar e mapear processos de negócio do cliente;
- Levantar requisitos funcionais e não funcionais de sistema;
- Mapear e descrever atores e casos de usos/user stories de sistema;
- Definir complexidade dos requisitos de negócio;
- Elaborar documento de escopo do sistema;
- Prototipar interfaces de usuário do sistema;
- Realizar reuniões de licitação de requisitos com cliente;
Vamos então as origens. De acordo com o Scrum Guides:
O Product Owner é responsável por maximizar o valor do trabalho que o Time de Scrum faz, [...] é a única pessoa responsável pelo gerenciamento do Product Backlog e por garantir o valor do trabalho realizado pelo Time. Essa pessoa mantém o Product Backlog e garante que ele está visível para todos. Todos sabem quais itens têm a maior prioridade, de forma que todos sabem em que se irá trabalhar.
O Product Owner é uma pessoa, e não um comitê. Podem existir comitês que aconselhem ou influenciem essa pessoa, mas quem quiser mudar a prioridade de um item, terá que convencer o Product Owner. Empresas que adotam Scrum podem perceber que isso influencia seus métodos para definir prioridades e requisitos ao longo do tempo.
Para que o Product Owner obtenha sucesso, todos na organização precisam respeitar suas decisões. Ninguém tem a permissão de dizer ao Time para trabalhar em um outro conjunto de prioridades, e os Times não podem dar ouvidos a ninguém que diga o contrário. As decisões do Product Owner são visíveis no conteúdo e na priorização do Product Backlog. Essa visibilidade requer que o Product Owner faça seu melhor, o que faz o papel de Product Owner exigente e recompensador ao mesmo tempo.
Isso dito, vamos fazer uma analise.
Scrum é um é um processo de desenvolvimento iterativo e incremental para gerenciamento de projetos e desenvolvimento ágil de software [Wikipedia]. O processo define 3 papéis, entre eles o do Product Owner . Dessa forma em se tratando de Product Owner, podemos afirmar apenas que suas responsabilidades são apenas o que dita o processo:
Para todo problema complexo existe sempre uma solução simples, elegante e completamente errada.
Calma, calma, eu sei que o título está um pouco, ou melhor, muito ambicioso, mas em 2009, Jurgen Appelo fez um post chamado “A grande lista de práticas ágeis“, sabendo desde o inicio que o post seria odiado e amado por muitos, visto que já muita gente encara metodologias de modos mais partidários ou religiosos. Com este aqui não será diferente.
Eu gosto de encarar essas práticas como uma caixa de ferramentas, e nessa linha, podemos encarara que cada ferramenta certa para o problema certo, ou seja, dependendo de cada realidade ou contexto, ferramentas diferentes serão ou não úteis. Tomei como base a lista do Jurgen e incluí algumas outras práticas.
Referências
É com grande satisfação que anuncio que o artigo que escrevi sobre Kanban finalmente foi publicado na Java Magazine 84.
Este artigo apresenta uma introdução ao método Kanban. Para isso, descreve os passos para implantá-lo em uma equipe de desenvolvimento de software, aborda a criação de um card wall que represente o processo e cartões que representem itens de trabalho, além da definição da cadência de reuniões e outros eventos importantes para o ciclo de desenvolvimento.
Kanban permite que um processo seja otimizado de acordo com um contexto específico, aderindo a diferentes tipos de equipes e projetos. Geralmente causa pouca resistência a mudanças por parte das pessoas e da organização, ao passo que ajuda a equipe a manter um ritmo sustentável e previsível através de um fluxo contínuo de trabalho, conquistado em virtude da definição do limite de trabalho em progresso.
Para quem tiver mais interesse, há também uma apresentação sobre o tema que fiz no Bluesoft Labs:
Fábio Akita, recentemente publicou uma entrevista com o famoso Uncle Bob Martin, grande personalidade da comunidade de desenvolvimento de software, métodos ágeis e software craftsmanship.
Uncle Bob é, sem dúvida, um grande exemplo para todos nós desenvolvedores de software, apesar de seus 46 anos de experiência com desenvolvimento de software, ele nunca parou de aprender. Programadores não devem nunca pensar que a linguagem que aprendem na faculdade ou que utilizam agora são A linguagem, ao invés disso, devem abrir suas mentes e estar sempre aprendendo uma nova linguagem de programação, disse ele.
Se você programar somente em Java, por exemplo, e não for além disso, você será um programador muito fraco, porém se for em busca de aprender novas linguagens e aprender novos paradigmas você voltará para o seu Java com muito mais conhecimento e será ainda mais eficiente, afirmou Bob. “Eu, por exemplo, estava aprendendo Ruby e agora estou estudando Clojure”, disse.
Depois de ter escrito o livro Clean Code (Código Limpo), Bob está escrevendo um outro livro agora, chamado Clean Coder (Codificador Limpo), falando sobre como gerenciar o tempo, como lidar com pressões, como estimar, como lidar com chefes, etc. Estamos aguardando ansiosos pela nova publicação.
Bob disse que toda boa idéia que fica popular, tornar-se um hype, muita gente usa isso para seus próprios interesses, muitas vezes invertendo os propósitos. Cuidado! Escolha bem quem o ajudará a aprender métodos ágeis. Volte as fontes, busque os livros de quem estava lá no inicio. Martin Fowler e Kent Beck, são ótimas referências.
Muita gente está agora em ágil, defendo ágil, alerta Bob, mas está apenas pela corrida do ouro, ou seja, não conhecem e nem acreditam nos princípios e valores dos métodos ágeis, apenas estão ensinando ou utilizando ágil para manter-se lucrativos em virtude do movimento do mercado que está sendo impulsionado pelo hype.
Veja o vídeo da entrevista, que foi gentilmente disponibilizado sob a licença Creative Commons pelo Akita.
http://blip.tv/play/AYHm7HIC
Siga os conselhos de Uncle Bob Martin, aprenda como um louco, leia, leia, leia.