Waterfalling… 3

Posted by miguelbaldi on junho 01, 2008

Primeiramente tenho que admitir que o termo usado no titulo do post não existe em nenhum dicionário convencional (encontrei apenas no UrbanDictionary, mas não era bem o que queria expressar…risos).
Mas mesmo assim vou usá-lo livremente, pois acho que não teria nenhum verbete mais adequado para expressar como me sinto atualmente (profissionalmente falando claro!), nada descreve o fenômeno que é desenvolver software, ou pelo menos tentar, em um mercado onde praticamente 99% das grandes empresas ainda gastam milhares de reais com consultorias especializadas em implementar metodologias e processos que no fundo só servem para gastar tempo, dinheiro e a paciência dos colaboradores envolvidos. O resultado disso é uma empresa certificada(CMM/i, MPS.br e afins) e dezenas de funcionários estressados.
É impressionante como a falsa segurança de um processo todo controlado,
medido e previsivel (isso é o que os chairmen ainda pensam!) ainda está
presente nos gestores de TI atuais, pelo menos no Brasil.
O Waterfall continua enraízado em nossa cultara de gestão por simples
jogo de interesses. Essas metodologias (CMM/i e similares…) só
beneficiam pessoas que não querem se comprometer, não estão
interessadas na real satisfação do cliente e querem se manter no
mercado, muitas vezes sendo incompetentes no que fazem (afinal este
tipo de processo permite que as pessoas se escondam atrás desta
burocracia). Existem milhares de papéis (analista, projetista, analista
de negocios, gerentes e mais gerentes, analista de qualidade…blah
blah blah) a serem desempenhados, mas estes papeis são tratados como se
fossem exercidos por robôs. Isso gera o tipo de frase: “Mas eu faço
análise, prazo não é comigo!”.

Eu vejo este tipo de metodologia como a velha discussão dos sistemas sócio-politicos. Se analisarmos de forma fria e racional as duas principais vertentes desenvolvidas neste campo, percebemos que de uma lado temos o socialismo com todo seu esforço para ser algo justo e equilibrado, e na outra ponta temos o capitalismo com toda sua desigualdade, agressividade competitiva entre outras coisas.

“O Socialismo é um sistema sócio-político caracterizado pela apropriação dos meios de produção pela coletivadade. Abolida a sua propriedade privada
destes meios, todos se tornariam trabalhadores, tomando parte na
produção, e as desigualdades sociais tenderiam a ser drasticamente
reduzidas uma vez que a produção, sendo social, poderia ser
equitativamente distribuída. A proposta de Karl Marx, um dos autores que desenvolveu este tema, é a de que o socialismo fosse um sistema de transição para o comunismo, que eliminaria de forma integral o Estado e as desigualdades sociais.” Ver referencias

Como sabemos atualmente o mundo é capitalista, apesar de algumas exceções. Mas que relação isto tem com processo de desenvolvimento de software??
Uma das razões para o capitalismo dar certo é a sua naturalidade, quero dizer com isso que este pensamento/comportamento é intrínseco ao ser humano, todos nós de alguma forma nascemos pensando e agindo assim, uns mais outros menos, e isso acaba refletindo no sucesso que teremos ou não no futuro. Por isso digo que é natural.

Capitalismo é comumente definido como um sistema de organização de sociedade baseado na propriedade privada dos meios de produção e propriedade intelectual, e na liberdade de contrato sobre estes bens (livre-mercado).
“Capitalismo” é o nome que se dá às atitudes econômicas decorrentes
naturalmente numa sociedade que respeita a propriedade privada e a
liberdade de contrato. As pessoas quando sujeitas a estas condições,
com o intuito de satisfazer seus desejos e/ou necessidades, tendem
espontaneamente a dirigir seus esforços no sentido de acumular capital,
o qual é então usado como moeda de troca a fim de adquirir os serviços
e produtos desejados.” Ver referencias

Quando falamos de socialismo, logo percebemos que ele parece muito perfeito, realmente tudo é pensado em prol de todos, todos são uma peça de um esquema muito maior e que tem um plano ideal para todos.
A desigualdade não existe, porém temos que pagar um preço muito alto por isso, ficamos o tempo todo lutando contra nossos instintos, motivações e tudo mais que move o ser humando em sua busca por uma condição melhor pra si. Temos que sempre pensar no coletivo antes do individual, temos que nos conformar em ter as mesmas coisas que todos, perdemos caracteristicas que nos tornam únicos em nome de uma causa maior. Isto é muito legal!! Mas é altruísmo demais até para um monge.

Apenas para deixar claro, não tenho intenção nenhuma de discutir ciências politicas ou econômia com ninguém, realmente não tenho conhecimento para isso (desconsiderem qualquer bobagem que eu tenha dito, tentem captar a intenção. risos).
Minha intenção desde o inicio é mostrar que os processos e metodologias que conhecemos na vida real como parte do Waterfall não são naturais ao desenvolvimento de software e muito menos à nós desenvolvedores. Eles parecem maravilhosos em um quadro na parede com todo fluxo do PMBOK, por exemplo, mas no dia-a-dia custam muito para serem aplicados e exigem que nademos contra nossos instintos para que cheguemos à algum lugar.

Quando falamos de metodologias ágeis, em primeiro momento parece muito vago, o manifesto ágil em sí não se mostra muito técnico, em alguns momentos parece um pouco distante de uma aplicabilidade real. Mas na verdade em sua excência ele tem tudo que nos identificamos. A começar por suas ferramentas, quem na vida nunca se viu praticando
pair programming, pois bem isto é uma pratica muito útil de uma coisa maior chamada Extreme Programming. E não precisamos procurar muito para chegar a conclusão de o Scrum tem como consequencia uma maior aproximação da equipe e auto conhecimento dentre os participantes, com isso proporciana um maior controle gerencial para quem exercer esta função.

Tudo isso natural para nós
programadores e computeiros, assim como o capitalismo é para a sociedade e o mercado ecônimico.

Reforçando, não quero iniciar nenhum tipo de flamming relacionado à política ou econômia, quero apenas expôr algumas maluquices que venho pensando ultimamente.

Bom galera, gostaria de dizer que me motivei a escrever essas idéias depois de ler um excelente post do Rodrigo Yoshima no Blog Débito Técnico. É bom saber que ainda existem pessoas que tem a capacidade de provocar o pensamento e instigar a busca por explicações.

Eu sonho um dia poder trabalhar com uma metodologia ágil, enquanto isso não chega vou me lamentando por aí.

Abraços, e coloquem suas opiniões! Podem esculachar, risos…

Referências:
Socialismo
Capitalismo
Débito Técnico - Não jogue dinheiro com melhoria de processos…

O paradoxo: iterativo-incremental x confiança 4

Posted by Rodrigo Panachi on maio 26, 2008

Recentemente trabalhei em uma empresa de pequeno porte tentando implantar (ensinar, vender, disseminar, ou outro termo que caiba aqui) Scrum na tentativa de organizar e agilizar o processo de desenvolvimento do software da empresa, que até o momento só conhecia (e conhece) Waterfall.

As desculpas da empresa para não adotar Scrum (ou outro processo ágil) são todas apoiadas em confiança (ou desconfiança): como confiar num projeto que não tem tudo detalhadamente especificado desde o início? Era comum ouvir: “só isso não vai dar certo”, “precisamos detalhar todas as funcionalidades primeiro”, “não quero chegar lá na frente e ter que mudar alguma coisa hein”, “o cliente não vai querer comprar uma coisa que ele nem sabe o que é”.

Na ocasião, encontrei este artigo falando sobre desenvolvimento iterativo e incremental, e utilizei estas imagens para (tentar) argumentar meu ponto de vista.

Iterativo:

Incremental:

É evidente que ninguém entendeu a mensagem. Para eles, a confiança ainda estava em jogo. Em termos de proteção, o Waterfall ainda garante uma “falsa segurança” à empresa: “estamos entregando apenas o que estava documentado nas especificações”, “a documentação nos protege”.

Bom, tá aí um resumo da minha experiência e tenho certeza que vocês já passaram por algo parecido. Continuamos nos comentários…

A ferramenta/metodologia que ainda não existe. 4

Posted by Rodrigo Panachi on maio 15, 2008

Este é meu primeiro post aqui no 1up4developers e tentarei ser objetivo.

É fato que a maioria das empresas de desenvolvimento de softwares são desorganizadas, têm problemas nas entregas, falta documentação, etc. Outro ponto em comum é a espectativa de resolver todos os problemas apenas adotando uma ferramenta/metodologia de nome forte ou que ainda não foi inventada.

Só para ilustrar essa afirmação, vou expor algumas situações reais que presenciei:

Multinacional alemâ com dificuldades no levantamento de requisitos e testes buscou resolver seus problemas com uma suíte de produtos da Borland. Não deu certo.
Empresa nacional de médio porte quando enfrentou uma crise financeira por não conseguir cumprir datas buscou solução contratando uma consultoria especializada e “organizar” a bagunça. Não deu certo e deixou a empresa à beira da falência.
Empresa nacional de pequeno porte pretendia migrar a tecnologia/plataforma de desenvolvimento fornecendo cursos para seus desenvolvedores na esperança de melhorar o processo e a qualidade de seu produto. O resultado foi desastroso.

É comum hoje ouvirmos nomes como RUP, XP ou Scrum como a solução para todos os problemas de uma empresa. Outros nomes como UML, Testes Unitários e TDD também têm ganhado espaço nessa lista de “celebridades”. O erro das empresas é achar que esses nomes são “roupas” que podem ser vestidas ou trocadas facilmente. Elas têm um problema X e acham que resolvem aquilo adotando uma ferramenta/metodologia Y.

A grande solução para esses problemas são as pessoas, os profissionais da empresa. Encorajar o desenvolvimento profissional, incentivar financeiramente, deixar os profissionais à vontade para opinarem são alguns pontos que geram resultados a longo prazo. Valorizar o profissional na contratação também é muito motivador ao invés de tentar negociar seu salário com base em seu tempo de experiência ou quantidade de ferramentas que já trabalhou.

Só para finalizar o post, esperando que tenham entendido a mensagem, fica um artigo do Fowler falando de quando o barato sai caro.