Renan de Melo

Um blog pessoal, normalmente com conteúdo a respeito de desenvolvimento de software.

Nome:
Local: São Paulo, SP, Brazil

Mais um palhaço no circo que é o desenvolvimento de software

segunda-feira, 23 de junho de 2008

Tecnologia de ponta.. até que ponto?

Muitas pessoas afirmam a necessidade de desenvolver em tecnologia de ponta.. algumas metodologias também afirmam que é uma boa prática o desenvolvimento com este tipo de tecnologia. Mas até que ponto isto é verdade, até que ponto compensa?

Primeiramente, qual é a origem destas afirmações? Espera-se que uma tecnologia de ponta possua recursos suficientes para acelerar desenvolvimento, melhorar qualidade do código, ou até diminuir dependencias internas do sistema.

Porém, qual impacto da adoção de tecnologia de ponta?

Com a evolução das tecnologias, sua utilização se torna cada vez mais complexa.. é fácil observar, compare a necessidade de conhecimento de um programador que desenvolve um sistema somente com servlets e outro que programa com JSF+Hibernate+Spring+Sei lá o que.

Isso leva a outra questão, qual é o nível de conhecimento suficiente para um programador em uma nova tecnologia não fazer cagada com seu código? O ideal é que ele já tenha trabalhado com isso, para observar como "contornar" esta tecnologia em casos não triviais. Eu sempre digo para os outros: "Se você acha que alguma tecnologia é muuuuito boa.. você ainda não trabalhou de verdade com ela". Tudo tem seu mico.

Outra coisa importante a se pensar é o mercado.. Sua empresa não está sozinha no mercado de desenvolvimento, programadores vem e vão dela e seu conhecimento está baseada no que o mercado utiliza. Houve uma época que vi vários programadores dizendo a superioridade de frameworks como o Mentawai e VRaptor, sugerindo sua adoção em larga escala. Mas imagine uma empresa utilizando o Mentawai, qualquer programador que esta empresa adquirir precisará aprender estas ferramentas na própria empresa, porque raramente terá trabalhado com ela anteriormente.

As dificuldades do dia-a-dia aparecem, isto é fato, principalmente aprendendo uma nova tecnologia. Qualquer tecnologia de ponta não possui muitos programadores suficientemente maduros e disponíveis para auxiliar nas comunidades on-line de desenvolvimento. Imagine você aprendendo java sem o guj nem artigos na internet? Demoraria muito mais.


Portanto, eu penso que não é boa a adoção imediata de tecnologias de ponta, quando o mercado estiver maduro com estas tecnologias, talvez fosse uma boa idéia adotá-las.

Não estou falando que você não terá vantagens em adotar uma tecnologia de ponta, mas acho que a curto prazo as desvantagens são um pouco maiores.

Sugestão: Nunca seja o primeiro nem o último a adotar uma tecnologia.

Flw,
Renan

terça-feira, 17 de junho de 2008

Em busca de agilidade

Muitas pessoas discutem, o que seria desenvolvimento ágil?

Vou me utilizar de citações encontradas por mim (não por diversão, pela obrigação do meu TCC) para tentar encontrar a resposta.

"Core to agile software development is the use of light-but-sufficient rules of project behavior and the use of human and communication-oriented rules." (COCKBURN, 2002)

"Agility is dynamic, context-specific, aggressively change-embracing, and growth-oriented. It is not about improving efficiency, cutting costs, or battening down the business hatches to ride out fearsome competitive ‘storms.’ It is about succeeding and about winning: about succeeding in emerging competitive arenas, and about winning profits, market share, and customers in the very center of the competitive storms many companies now fear." (Goldman apud KIDD, 2000)

Cockburn comenta que o núcleo de ágil é a utilização de regras leves porém suficientes.. eu concordo que este é o núcleo de ágil, mas é só uma parte do que é ser ágil.

Goldman por outro lado define com mais atributos este conceito de agilidade, porém não concordo com algumas partes de seu pensamento, pois acredito que cortar custos é algo que deve ser buscado, pois senão não existiria pensamentos inseridos no contexto de metodologias ágeis como o da teoria das restrições, o princípio da economia, Win-Win-Win situation, todas defendidas por Kent Beck no famoso "Extreme programming explained - 2º ed." (BECK & ANDRES, 2005)

A reunião do manifesto ágil tentou unir os pensamentos de algumas metodologias "leves" e considerou isso como pensamento ágil, acabou que estas metodologias nem sempre olhavam para o mesmo lado, e eu acredito que uma mistura de todas as práticas de Scrum, XP, TDD, FDD, Cristal, etc geraria uma metodologia pesada e complexa como outras...

Para mim, ser ágil é possuir bom senso em práticas baseadas em valores como fácil adaptabilidade, simplicidade, comunicação, reflexão, observação, etc..

Não sei se alguém vai conseguir algum dia uma definição coerente sobre o que é metodologia ágil, porque o próprio surgimento deste termo se deve à mistura que comentei anteriormente.


Flw gente..

COCKBURN, A. Agile Software Development. Addison-Wesley, 2002.

KIDD, Paul T. Agile Manufacturing: A strategy for the 21st Century. , 2000.


BECK, K; ANDRES, C. Extreme Programming Explained: embrace change. 2. ed. Upper Saddle River: Addison-Wesley, 2005.