Arquivo

Arquivo de novembro, 2009

Brain Dash Board

30, novembro, 2009

Um pouco de psicologia no desenvolvimento ágil de software:

A motivação do grupo é fundamental no desenvolvimento ágil, se cada membro da equipe não revisar seu estado de ânimo a cada dia e a cada iteração acaba ocorrendo um fenômeno psicológico em que forças antagônicas ao trabalho em equipe surgem na psiquê da pessoa (um pequeno ódio do trabalho). A psicologia realmente é fundamental em qualquer ambiente de trabalho pois lidamos com pessoas que pensam vivem e possuem emoções. Concordo em aumentar o enfoque desta parte humana na comunidade ágil pois no processo de migração de metodologias “legadas” acabamos nos preocupando muito somente com o processo e deixando um pouco de lado a parte humana.

Os nutricionistas dizem: “Somos o que comemos” e nós como engenheiros de software dizemos: “Também somos o que pensamos” pois nos alimentamos emocionalmente dos nossos pensamentos. Nossas criações dependem muito da capacidade de raciocínio.

Intuitivamente nosso amigo Paulo Ragonha sugeriu uma nova forma de dash board, a idéia surgiu no início da iteração e apresentou resultados satisfatórios. Em alguns momentos filosóficos no puf chegamos a conclusão de que o novo dash board é uma abstração simplificada de como nosso cérebro funciona. O Cérebro possui uma gigantesca memória, e as informações comumente utilizadas ficam mais próximas do “mecanismo” de raciocínio, no caso do nosso Brain Dash Board (batizado pela equipe) as estórias e tarefas que estamos trabalhando no momento ficam distribuídas no centro (onde existe maior concentração de foco visual da equipe) enquanto as estórias e tarefas não utilizadas ficam na região periférica. Concluímos que existe uma forte tendência do ser humano em replicar fora o que leva dentro e ótimas idéias surgem quando a mente está organizada, como fazemos com o backlog no nosso dash board.

Layout de Dash Board que se parece com o cérebro humano.

Layout de Dash Board que se parece com o cérebro humano.


.

admin Auto-gestão, Metáforas

Débito Técnico

24, novembro, 2009

Defino Débito Técnico como a distância entre o estado de um artefato técnico e como ele o seria em seu estado da arte. No ramo de desenvolvimento de software, é a medida de quanto uma deficiência técnica compromete o futuro do projeto e pode ser utilizado para antecipar problemas como bugs, baixa produtivadade, dificuldades com manutenção e dificuldades com transferência de tecnologia. Sua unidade é o spag (Sg), ou spaghetti :).

O termo foi cunhado em 1992 por Ward Cunningham, mas até hoje não há consenso de seu significado. Steve McConnell divide Débito Técnico em duas categorias: Intencional e Não Intencional (leia seu artigo). Uncle Bob em seu artigo “A Mess is not a Technical Debt” fala que um débito técnico não intencional (negligente) não deve ser considerado débito técnico. Martin Fowler subdivide débito técnico de duas maneiras: Prudente/Imprudente e Intencional/Inconsciente, gerando os quadrantes de débito técnico.

Minha classificação é algo como a de Steve. É muito útil determinar a existência de um Débito Técnico apenas avaliando o software em si, sem considerar as condições em que foi inserido. A separação entre intencional e não intencional não pode ser determinada apenas analisando o artefato. Um código mediano não é inapropriado se houve estratégia e todos estão conscientes das consequências da sua inserção.

Logo, a todo código ruim ou mediano dou o nome de Débito Técnico, a todo código que compromete o produto ou o futuro do projeto. É uma métrica direta da qualidade do software. Utilizo a subdivisão Intencional/Inconsciente para identificar se houve/não houve justificativas estratégicas para tal débito. As classificações Prudente/Imprudente dadas por Martin, credito mais à equipe, e não ao débito técnico em si.

Vamos descorrer um pouco mais sobre a distinção entre Débito Técnico Intencional e Débito Técnico Inconsciente.

Débito Técnico Intencional

Fazer o refactoring para abrigar a nova funcionalidade nos custará 5 dias, utilizar a arquitetura atual, mesmo que entortando alguns conceitos, nos custará 1 dia. Nossa entrega é no meio desta semana e a multa por atraso é indecente.

Qualquer gestor responsável diria:

1 dia! Faremos simplista agora! Agendamos um refactoring na próxima release, mesmo que nos custe 10 dias depois.

Existem momentos na vida de um projeto que atingir os deadlines é mais importante que a qualidade. O mundo está cheio de desafios: concorrência acirrada, time-to-market, pressões externas e internas… Não observar estes desafios é a pior das negligências de um projeto. De nada adianta um projeto que não atinge seus objetivos. Conhecer os prós e contras de suas estratégias é primordial para fazer a escolha correta.

Em uma boa equipe Scrum, o Product Owner tomaria esta decisão, principalmente porque conhece as necessidades do mercado. À equipe técnica (team) cabe o papel de levantar alternativas e alertar o Product Owner sobre os prós e contras de cada uma. O balanço entre qualidade e metas é o resultado esperado, bem como um agendamento de refactorings para amortizar o eventual débito técnico resultante.

Débito Técnico Inconsciente

Este débito técnico pode ser incorrido por algumas razões:

  • Uma equipe técnica iniciante falha ao enxergar uma solução que não comprometa o futuro do projeto.
  • O Product Owner é negligente ao considerar os riscos de suas ações, não considera os argumentos da equipe técnica e falha ao avaliar as necessidades de médio e longo prazo de seu projeto.
  • O imponderável, algo que não pode ser antecipado nem por uma equipe sênior. Isto é comum a trabalhos de pesquisa e desenvolvimento de cunho científico.

De maneira geral, acredito que nem todo Débito Técnico não intencional seja negligente. Como visto acima, existem casos em que a complexidade do trabalho irá impor que débito técnico seja naturalmente inserido e permaneça desconhecido por algum tempo. Isto não configura negligência. Entretanto, ignorar o fato de que débitos técnicos serão inseridos é negligência. Cabe à equipe toda monitorá-los e corrigi-los a medida que sejam identificados.

Rodrigo Machado Metáforas, Riscos

Refactoring: Substituindo Condicional por Polimorfismo usando enum!

23, novembro, 2009

Esse refactoring é muito interessante quando feito sobre condicionais que lidam com parâmetros  que podem mudar com freqüência. Esses parâmetros podem ser tipos de relatórios, comandos utilizados para invocar métodos remotamente, estados de uma máquina entre outros.

O objetivo da utilização do polimorfismo é justamente dar flexibilidade e permitir que o sistema evolua (mude) sem precisar adicionar novos blocos de else if no código toda vez que um novo parâmetro for adicionado, alterado ou removido! Sendo assim, não precisa sair alterando todos os blocos if else do sistema, apenas os pontos mais suscetíveis a mudança e que a flexibilidade fará com que as operações de manutenção possam ser mais agradáveis.

Nosso foco são estruturas que dependem de parâmetros para executar ações como por exemplo gerar um extrato. Os extratos podem ser de vários tipos: Semanais, quinzenais, mensais, completos e tantos outros quanto os clientes necessitarem ao longo da vida útil do sistema.

Abaixo, a classe responsável por gerar um extrato utilizando um tipo passado como parâmetro:

12

Estruturas como essa além de serem procedurais, diminuem a performance do sistema e com o tempo aumentam os custos de manutenção do projeto, contribuindo para um código ilegível (imagine com 50 tipos de extrato) e desmotivante.

Uma forma interessante de resolver o problema é mapear os estados em uma enum e utilizá-la para mapear os estados polimorficamente:

3

E finalmente podemos refatorar o método condicional da classe que gera extratos para delegar a geração de extratos para as subclasses:

4

Lembrando que essa é uma forma simplificada da utilização do padrão Strategy, no entanto evitamos a criação excessiva de artefatos (cada estratégia numa subclassse) e utilizamos a enum para fazer esse trabalho.

Rodrigo Branas Arquitetura de Software

Programa de Capacitação em Metodologias Ágeis

17, novembro, 2009

Inscrição pelo site: www.oncast.com.br/inscricao

A OnCast Technologies é uma empresa ágil em sua essência, motivo pelo qual acredita no desenvolvimento permanente dos profissionais que atuam na área de software. Por esse motivo, você é nosso convidado a participar do próximo evento de capacitação que traz à Florianópolis um grande nome da comunidade brasileira de metodologias ágeis.

Curso: Requisitos de Software: Conceitos e Práticas para Equipes Ágeis

Este é um curso que ensina você a pensar em requisitos e não apenas a escrever documentos! Desenvolve a habilidade de reconhecer as deficiências da comunicação humana no processo de captação e análise de requisitos, oferecendo técnicas efetivas para a elaboração e organização de um Product Backlog simples e efetivo aderente aos princípios e práticas ágeis.

Confira mais detalhes do curso aqui.

Dias: de 10 e 11 de Dezembro de 2009

Local:  Rodovia SC 401, Km 01 - Ed. Celta - 6° andar - Sala de Inovação – Parque Tecnológico Alfa - Bairro João Paulo (Tecnópolis) - Florianópolis - SC

Horários: das 13h30 às 18h00 e das 19h00 às 22h30 (quinta e sexta-feira)

Carga Horária: 16 horas

Workshop: A Visão Ágil no Planejamento e Controle da Produção (PCP) de Software

Um workshop realista e pragmático, que aborda o desenvolvimento de software de uma forma objetiva baseada em princípios da Engenharia de Produção Industrial! Trata dos mais diferentes aspectos do planejamento e controle de projetos de software, mantendo sempre aderência aos valores e princípios do manifesto ágil.

Confira mais detalhes do workshop aqui.

Dia: 12 de Dezembro de 2009

Local: Rodovia SC 401, Km 01 - Ed. Celta - 6° andar - Sala de Inovação – Parque Tecnológico Alfa - Bairro João Paulo (Tecnópolis) - Florianópolis - SC

Horários: das 08h30 às 12h30 e das 14h00 às 18h00 (sábado)

Carga Horária: 08 horas

foto_parzianello

Instrutor: Luiz Cláudio Parzianello

Engenheiro Eletricista pela PUCRS e Mestre em Sistemas Eletrônicos pela USP. Possui mais de 25 anos de experiência em informática, atuando no Brasil e no exterior para grandes organizações interessadas no aperfeiçoamento de suas equipes e implantação de programas de melhoria de processos de software. Coach e Trainer nas áreas de gestão organizacional e metodologias ágeis, é especialista em temas como Engenharia de Requisitos, Lean Development, Scrum e Extreme Programming. É pioneiro na utilização de técnicas de Programação Neurolinguística (PNL) nos mais diferentes aspectos do desenvolvimento de software e participante ativo de eventos nacionais e internacionais de metodologias ágeis. É sócio-fundador da empresa Surya Gestão Digital e vice-Coordenador do Grupo de Usuários de Métodos Ágeis da SUCESU-RS.

Investimentos:

Curso Requisitos Ágeis: R$650,00 | Workshop PCP Ágil: R$350,00

Combo: Curso + Workshop = R$ 800,00


Confira os descontos promocionais para estudantes, associados da Acate e Sucesu e para grupos empresariais!

Faça sua inscrição pelo site da OnCast: www.oncast.com.br/inscricao

Informações:

cursos@oncast.com.br

Fone: (48) 3239-2275 - Falar com: Mirela

Apoio:

logo-sucesu-sc-associacao5 logo_surya4

Mirela Rzatki Outros

A OnCast e o Maré de Agilidade em Belém

14, novembro, 2009

Maré de Agilidade Belém

Acontecerá nos dias 26, 27 e 28 de novembro de 2009 a nova edição do Maré de Agilidade, dessa vez na terra do açaí e tacacá, Belém - PA. Serão 2 dias de mini-cursos, seções de Dojo e OpenSpace e 1 dia de palestras e discussões.

O Maré de Agilidade é um evento itinerante, que já visitou as cidades de Brasília (setembro/2008 − 1° edição), Salvador (março/2009 − 2° edição) e Fortaleza (agosto/2009 − 3° edição).

A OnCast está apoiando esse evento, que vai abordar assuntos que têm tudo a ver com o nosso dia-a-dia aqui na empresa, como cultura ágil, Scrum, Lean, Extreme Programming e TDD. Esses assuntos serão apresentados por grandes nomes como Alexandre Magno, Alexandre Gomes, Manoel Pimentel e Renato Willi.

Veja mais informações no site oficial do Maré.

jaime.schettini Outros

SoLiSC - 4º Congresso Catarinense de Software Livre

10, novembro, 2009

solisc468x60banner

O SoLiSC - 4º Congresso Catarinense de Software Livre - apresentará para a sociedade catarinense nos dias 26 e 27/11, no Centro de Eventos da Universidade Federal de Santa Catarina (UFSC) em Florianópolis, os conceitos que estão por trás do Software Livre, demonstrando que soluções abertas e livres deixaram de ser uma alternativa para ser uma realidade de negócio na área de tecnologia da informação e comunicação.

Software Livre é denominação dada a todos os programas de computador que permitem que seus usuários usem, copiem, modifiquem, aperfeiçoem e compartilhem os códigos de acordo com suas necessidades.

A OnCast Technologies está apoiando o evento e está proporcionando um desconto promocional para os parceiros e interessandos em aprimorar seus conhecimentos em Software Livre. Por isso, não perca tempo e faça agora a sua inscrição através do site do evento e com o código GRU8CECB50E pague apenas R$35,00!!

Aproveite, são apenas para os 50 primeiros inscritos!!

solisc125c397125banner

Mirela Rzatki Outros