Programadores 2.0

Hoje em dia a velocidade de desenvolvimento de software tem que ser a mesma da velocidade dos negócios. Esse pessoal entendeu o recado.

 
27/04/2008 11:16
Por 
Erick Müller
  |  
Votos (6)
 
 
  |  
Comentários (2)

A palestra de ontem (Apresentando Rails 2.0, apresentada pelo o Fábio Akita e organizada pela Impacta), valeu a pena não só para aprender o que é Rails, ou ver como ele funciona.

Serviu para reforçar a minha idéia de que, aos poucos, está surgindo (ou ressurgindo, não tenho tanto tempo de programação assim pra saber) uma nova classe de programadores: os que são responsáveis pelo trabalho que fazem, não se escondem atrás de alguma documentação mal-feita e/ou gigantesca e/ou complicada e/ou indecifrável; participam ativamente do processo de criação do software, junto a todos os interessados, não ficam se escondendo atrás de um analista-culpado e buscam a melhor solução que funcione.

E também para reforçar outra tendência que tenho notado em diversos artigos, tutoriais e apresentações como a de ontem: a de que os programadores que usam linguagens "dinâmicas" (Python e Ruby, por exemplo) incorporam muitas práticas ágeis de desenvolvimento no processo de construção do software.

Hoje em dia a velocidade de desenvolvimento de software tem que ser a mesma da velocidade dos negócios. E desenvolver software é, pra muita gente, um processo engessado, com muita documentação, muita pré-analise, muita estruturação; muita engenharia para se chegar em algo que teoricamente atenda a um certo propósito, que muitas vezes é exagerado, abrangendo muito mais do que o necessário. Teoricamente, porque nada daquilo ainda funciona, nada foi provado.

E esses "novos" programadores querem fazer software que funcione, e logo. Querem saber o que o cliente quer, e atender a estas necessidades. Algo simples e poderoso, que gere retorno para o cliente em pouco tempo de desenvolvimento. E usando ferramentas que não atrapalhem esse processo rápido. O tempo entre a idéia e o programa deve ser o menor possível.

Fica difícil pensar em desenvolver software rapidamente com a burocracia que as metodologias clássicas impõem. E como desenvolver software rapidamente com linguagens tão verbosas e tão engessadas, que exigem tanto trabalho manual e também o conhecimento de uma estrutura hierárquica de classes para efetuar operações simples como gravar um arquivo em disco?

Por isso, a simbiose entre linguagens dinâmicas e métodos ágeis. Para mim, era natural que isso acontecesse, principalmente porque o programador que começa a usar uma linguagem dinâmica quer velocidade, quer "fazer funcionar" logo, com pouco trabalho manual.

E para desenvolver um sistema dessa forma, ele tem duas alternativas: ou senta e começa a digitação de código sem qualquer planejamento, projeto ou até mesmo idéia do resultado final e se frustra ao final do processo vendo a porcaria feita; ou usa um mínimo de práticas que organizam o seu trabalho (práticas como as do XP, por exemplo) e desenvolve algo que funciona e atende às necessidades.

Para novos tempos, novas pessoas e novas idéias. Outras idéias sempre estarão por aí, cada uma com o seu modelo de funcionamento e atendendo muito bem o mercado em que estão inseridas (Mainframes/COBOL é um bom exemplo).

Mas não dá pra manter as mesmas idéias e atitudes para viver em novas realidades. Esse pessoal entendeu o recado, e agora mostra como se faz.

Cartão Vermelho: |
Sobre o Autor:

Graduando em Processamento de Dados na Fatec-SP, trabalha com desenvolvimento e manutenção de aplicações e sistemas web.

Gosta de pesquisar linguagens de programação, padrões web e metodologias ágeis de desenvolvimento.

Veja meu perfil
comentáriose-mail

O que você achou deste comentário?
Vinicius Assef
Erick, assunto bem delicado, viu?

A programação na velocidade dos negócios é um mundo perfeito que até hoje não vi.

Já vivi diversas situações que pareciam boas, mas eram anárquicas. Veja o artigo Eu já sou ágil e não sabia (www.outrolado.com.br/Artigos/eu_ja_sou_agil_e_nao_sabia) que escrevi sobre o assunto.

Entretanto, essa visão que você deu nesse artigo pode muito bem ser confundida com a programação precoce. Não podemos confundir duas atividades correlatas mas completamente diferentes: fazer programas e projetar sistemas.

O que vemos muito por aí, são bons programadores. Eles conhecem um editor, a sintaxe da linguagem, todos os macetes e funções de determinada tecnologia.

O que faz falta no mercado são pessoas capacitadas para projetar sistemas que funcionem de acordo com as necessidades do cliente. Projetar sistemas é muito maior do que pensar em programas bem feitos rapidamente.

Projetar sistemas é pensar em segurança, clareza, desempenho, processos de negócio, procedimentos, estrutura organizacional, intefaces e como tudo isso se encaixa para poder ser chamado de sistema.

O que pensamos a princípio é que o desenvolvimento ágil é o abandono dos documentos, o que não é verdade. Documentos são importantes e têm um papel fundamental para a equipe de desenvolvimento.

Não vamos confundir agilidade com informalidade.

Abraços.
Vinicius Assef.
2008-05-07 08:06:40.
O que você achou deste comentário?
Erick Müller
Concordo totalmente contigo. Tem muita gente que não mergulha (mergulhar exige um certo preparo anterior, equipamentos, conhecimento do local, etc) e sim cai de cabeça no código, sem nem saber muito bem o que o usuário/cliente precisa. E faz isso pensando que é "ágil", mas prefiro chamar de "desesperado".

Eu acredito que deve ser criada uma documentação adequada, que mostre o caminho a seguir. O problema é achar essa quantidade, que não seja escassa ou exagerada. Muito da documentação do sistema pode ser desenvolvida durante a fase de desenvolvimento, se for criado um ambiente onde se possa usar o aprendizado que o cliente e os analistas e programadores adquirem com o passar do tempo e o crescimento do sistema. As metodologias ágeis definem processos bastante inteligentes para lidar com esse "problema".

Quando eu cito nominalmente a documentação, o faço culpando o desenvolvedor que prefere seguir a documentação e se eximir de qualquer problema que tenha percebido no sistema, ou o que justifica qualquer porcaria que faz com a frase "mas foi pra fazer o sistema funcionar, pra ficar dentro da especificação".

O que eu tenho percebido, dentro da pesquisa que tenho feito é que existe a possibilidade de se criar um software que "cresce" de acordo com as necessidades do cliente e de modo bem organizado. E pra fazer esse tipo de software, mais do que toneladas de documentação, é importante envolver pessoas da organização que conheçam os processos e programadores realmente responsáveis (como os que citei). A documentação vira parte do processo (como as estórias da XP, por exemplo).
2008-05-13 18:18:26.

Novo comentário

É preciso estar logado para postar um comentário.
Clique aqui para se logar ou registrar.
Webinsider
Desta.ca
Creative Commons