Saturday, March 03, 2007 4:32 PM

Atualizado: pequenas mudanças no texto da conclusão 

Um post bem divertido do Jeremy Miller, Anti-Team, apresenta o seria o pior time do mundo, descrevendo alguns tipos bem caricaturatos, mas com fundo de verdade. Sinceramente acredito que muitas vezes é o ambiente que leva o profissional a esta situação. A empresa, um gerente, as vezes até um cliente, acabam forçando o profissional a fazer tarefas inutéis, se preocupar com outras coisas a não desenvolver boas soluções para os clientes.

Vou aproveitar e adicionar um personagem típico aqui no Brasil, o Analista de sistemas documentador. A carreira em uma empresa (ou departamento) de desenvolvimento no Brasil costumava ser: programador -> analista de sistemas -> coordenador de projetos. (Acho que isto finalmente está mudando aos poucos)

O programador, que realmente coloca a mão no código, é o nível de entrada. Um bom programador que se destaca em pouco tempo é promovido a Analista de sistemas! Então a função dele passa ser entender os requisitos e transformá-los em documentação que o programador possa entender. Pode ser um DFD, um modelo UML ou até um texto mais "técnico".

Isto significa que alguém que se destaca como desenvolvedor pára de desenvolver código e passa a desenhar figurinhas que representam código! Percebem a ironia? O pior de tudo é que a função do analista de sistema é entender o que o cliente disse e traduzir para o programador...alguém já brincou de telefone mudo? Pois é, o analista de sistemas torna-se uma camada inútil de abstração, um ruído na comunicação entre quem sabe o que deve ser feito e quem vai fazer.

De novo, não acho que o profissional é o culpado, ele simplesmente está buscando seu lugar ao sol, aceitando uma promoção e botando mais dinheiro no bolso no final do mês.

Eu já atuei neste papel por bastante tempo. Durante algum tempo eu acreditava que minha atuação era importante no processo. Depois eu já duvidava disto, mas demorou mais um pouco para que eu mudasse radicalmente de opinião.

Atualmente acredito fortemente em eliminar desperdício (ver Lean Software Development) e, neste caso, parte da atividade do Analista é exatamente isto. Um atravessador de informações, que agrega muito pouco valor neste processo.

Para mim o desenvolvedor deve ter mais responsabilidades: deve ler a especificação funcional, conversar com o cliente e desenhar e implementar a sua solução. Não acredito em qualquer processo que delega implementação para os membros menos qualificados e/ou mais jovens da equipe. No final das contas, código-fonte é o que entregamos para o cliente, o resto é papel...

 

Comments

At 3/14/2007 4:40 PM, lblima.net said:

#  re: A pior equipe de desenvolvimento do mundo

Oi Eduardo, acho o seu blog muito interessante. Parabéns. Em relação ao post, devo comentar que tambem vivo no limbo entre (arquiteto, design) e analista. Vejo o papel de analista de uma forma diferente da sua, do ponto de vista da qualificação. Seria ótimo se todos os programadores (pelo que entendo que você considera o desenvolvedor = programador) pudessem e soubessem executar essas atividades, mas não vejo isso uma realidade. E por isso, creio que o papel do analista seja ainda muito importante. Claro que o analista de verdade (não como você citou: programador que vira analista por que se destaca). Abraço.
At 3/16/2007 11:46 PM, Eduardo Miranda said:

#  re: A pior equipe de desenvolvimento do mundo


Cara fiquei na dúvida de te responder, afinal você o primeiro cidadão a deixar um comentário no meu blog e eu não quero perder um leitor :). Mas acho que uma discussão saudável é sempre boa.

Não concordo que a baixa qualificação seja motivo para termos a atividade de analista documentador em uma equipe de desenvolvimento. Existem dois motivos pelos quais um “programador” não tem capacidade de especificar e implementar uma funcionalidade:

1. Ele ainda não tem a experiência necessária. Este caso é resolvido escolhendo o tamanho certo das tarefas, funcionalidades mais simples, e com o acompanhamento de desenvolvedores mais experientes. Uma coisa é certa, se ele não executar as atividades nunca será capacitado.

2. Ele não tem competência. Desenvolver software exige qualidades que nem todos tem, assim como em qualquer profissão. Este caso é ainda mais fácil de resolver: aumente sua exigência para contratar. Afinal você está colocando o que é mais importante de um software, o código-fonte, na mão de alguém que você não considera bom o suficiente? Qual seria o motivo? Custo? Então a empresa mantém analistas, que são mais caros e sabem das coisas, para tomar conta de programadores, que são mais baratos, mas não têm capacidade de trabalharem sozinhos. Não sei se esta conta bate, acho que no final a empresa gasta a mesma coisa ou mais, entrega código com qualidade pior e sofre de baixa produtividade.

Mas eu sei que estou criticando o modelo de 90% das brasileiras, portanto é normal que várias pessoas discordem.

Valeu pelo comentário, espero que você não desista de ler o meu blog por isto :)

At 3/18/2007 9:25 PM, Eduardo Miranda said:

# E a pior equipe continua crescendo...

At 7/11/2007 11:13 AM, Carlos Moraes Jr said:

# re: A pior equipe de desenvolvimento do mundo

Parabéns pelo blog, cheguei até aqui buscando conteúdo sobre qualidade no desenvolvimento e modelagem de projetos para dotnet em camadas.

Sobre esse post e as criticas sobre o analista, concordo em parte. Dependendo da postura e experiência do analista. Acho que um desenvolvedor acima da média com bastante experiencia e bom relacionamento com clientes pode abstrair os requisitos de um sistema com maior facilidade, criar documentos úteis e distribuir tarefas entre programadores não tão experientes, é difícil manter uma equipe de desenvolvedores em um polo de informática como é aqui em porto alegre, a rotatividade do pessoal é muito grande, um analista com essas características acaba sendo valioso pois ameniza a troca de programadores, e se a documentação gerada consegue ser eficiente, o próprio analista pode ser substituído sem muito desgaste aos projetos.

No entanto ...

Não acredito em analistas que aprenderam tudo em faculdade, na prática a teoria é outra, modelar um código eficiente com conhecimento didático atrapalha. Tem também um pessoal que tem muita vontade de ser analista pela postura das empresas sobre hierarquia, esse pessoal tende a exercer autoridade mais que ajudar nas soluções.

Eu tenho um case interessante e de acordo com esse post.
Sou um programador médio, normal, no entanto com muita experiência e boa vontade de evoluir. Fiz um curso chamado "Formação Analista de sistemas e Projetista OO", então pedi pra me tornar um analista de sistemas, no entanto meu papel não é de um analista tradicional como outros colegas daqui, enquanto eu faço a análise e os requisitos eu começo a distribuir tarefas e quando considero a burocracia suficiente (eu faço o mínimo necessário de documentos), me torno o principal desenvolvedor do projeto e vou até o final com o projeto, fica a comunicação de relacionamento com cliente a cargo de um Gerente de Projetos e comunicação técnica e de requisitos eu entro em contato com o cliente. Na verdade eu não me tornei um analista, apenas tirei do meu caminho os outros analistas da empresa pra que eu pudesse desenvolver os projetos do meu jeito, depois disso nunca mais tive problemas com prazos e retrabalhos.

Abraço ...
At 7/12/2007 5:05 PM, Eduardo Miranda said:

# re: A pior equipe de desenvolvimento do mundo

Olá Carlos,

Veja que na prática você está quase fazendo o que eu sugiro. Um líder de equipe realmente é necessário para fazer as atividades não técnicas, no seu caso 'sobrou' para você, mas poderia ser uma outra pessoa.

Pelo que entendi além disso você define a arquitetura e como será implementada a funcionalidade. Por último você fica responsável por parte do desenvolvimento (o mais complexo, imagino).

Basta que você delegue a análise da feature para os outros desenvolvedores. Comece com pedaços fáceis, ensine-os a documentar a solução. Para isto você pode até estabelecer que um faz o design e outro implementa. Na próxima a situação se inverte.

Acredito que até o turnover da sua equipe talvez diminua, pois os desenvolvedores estarão mais envolvidos e aprendendo atividades novas.
At 8/27/2008 10:16 AM, Pablo Anízio said:

# re: A pior equipe de desenvolvimento do mundo

Olá Eduardo, apesar de chegar muito tarde nesta discussão gostaria de disse algo.

Vejo o papel de analista pelo seguinte lado: Um bom programador que sabe se comunicar com os clientes. Sou programador e sei das dificuldades de comunicação entre cliente-programador. A maioria dos "bons programadores" não sabe comunicar-se com os clientes, não conseguem abstrair a real necessidade dos clientes e isso ajuda um programador a tornar-se um analista. Pra mim, e por isso, um analista é um “bom programador comunicativo” e é uma pena que ao assumir esse cargo a maioria dos analista deixem "um pouco" o código de lado.
Post Comment
Title *
Name *
Email (never displayed)
Website
Comment * (Allowed tags: blockquote, a, strong, em, p, u, strike, super, sub, code)  
Please add 6 and 2 and type the answer here: