Acabo de responder um questionário de um aluno do Mackenzie sobre design patterns, que será utilizado em seu trabalho de conclusão de curso. Era curto (e isso é pré-requisito, ou eu não responderia), composto de apenas sete perguntas rápidas. Ele entrou em contato com alguns dos artigos que ando publicando sobre o assunto, e pediu meu feedback.

E porque estou contando isso pra vocês? Porque a terceira pergunta era essa:

Em algum projeto, durante a fase de análise, já foi detectado que a melhor solução era a não utilização de Design Patterns?

Fase de análise? Alguém ainda acredita em fase de análise? Parafraseando um twit meu, eu acredito em duendes, mas não acredito em fases de análise.

Minha resposta ao universitário:

Não entendo que exista uma "fase de análise". Isso leva a um modelo de desenvolvimento em cascata, que é prejudicial. E a analise arquitetural, que é feita um pouco antes do código, não deve chegar ao ponto de definição de padrões de codificação, mas sim a padrões arquiteturais. E mesmo essa, deve ser feita de forma incremental.

Não me estendi demais no comentário porque a pergunta já foi feita errada. Não é a primeira vez que entro em contato com conteúdo acadêmico fundamentado em práticas waterfall. As universidades, em sua grande maioria, estão presas à idéia de que construir software é igual a construir carros em uma fábrica, ou a construir uma ponte. Não é.

Temos que parar de "analisar o negócio" e voltar a escrever código. Milhões se gastam em papel, e proporcionalmente muito pouco em código funcionando. O overhead gasto em arquitetura, análise de negócio, análise de sistemas, documentação, gestão de projetos é grande demais. Tudo isso devia acontecer apenas como suporte do produto final funcionando. Temos que fazer análises arquiteturais, de sistemas, de negócio? Claro! Temos que ter uma fase para elas? Não, de forma alguma.

As universidades ensinam pouco aos estudantes, e quando dão para ensinar, ensinam isso: técnicas anacrônicas, despreparadas para a realidade. Os alunos chegam ao mercado de trabalho com a cabeça enviesada a favor de técnicas que não funcionam, e, dependendo da faculdade, ideológicamente estragados (principalmente se forem faculdades públicas).

Posso falar com autoridade sobre o assunto. Tenho aplicado, em paralelo à consultoria de arquitetura, também consultoria em agilidade. É comum o cliente entender a arquitetura, mas ainda ter problemas com processo, e acaba me perguntando como resolver, e aí aparece a consultoria de processo. Os resultados são impressionantes, e sempre muito positivos. E garanto: não existe fase de análise em projeto focado na entrega, ágil, produtivo.

Há muito o que caminhar ainda para que tenhamos uma profissão, para que possamos chamar nossa prática de desenvolvimento de software pelo nome de "profissão". Por enquanto, o que temos são discussões dispersas, práticas sem comprovação, e, sem dúvida alguma, ego demais.


Postado na(s) categoria(s) Gestão de projeto , Arquitetura pelo giovanni bassi em 1 de setembro de 2009 às 15:55 | Tags: , ,

Comentários


setembro 1. 2009 17:40
Leandro Daniel
Giovanni, texto irretocável, parabéns!

Abraços!

http://reverb.leandrodaniel.com/http://reverb.leandrodaniel.com/


setembro 1. 2009 17:51
Rafael Noronha
Acredito que o movimento ágil está enraizado em conhecimentos empíricos.
Tendo de certa forma rompido relações com idéias difundidas (até hoje) nas universidades.

O conhecimento acadêmico teria até certo ponto se tornado obsoleto?
É um assunto interessante...

http://rafanoronha.net/http://rafanoronha.net/


Brazil Eduardo Costa
setembro 1. 2009 18:18
Eduardo Costa
Giovanni,

Acho que fase de analise poderia ter outro nome, tipo fase de entendimento onde serve para os times (cliente e desenv) se alinharem ao negocio e entenderem o problema, nada mais. O resto é interativo incremental.

no site


Brazil Alex
setembro 1. 2009 18:24
Alex
Parabéns, perfeito.

É deprimente o nível do ensino superior na área de tecnologia, alunos entram sem saber programar e saem programando errado.

no site


setembro 1. 2009 20:39
leodip
Estou elegendo o Giovanni Bassi o Joel Spolsky brasileiro! hehehe
Parabéns, muito bom o post!

http://twitter.com/leodiphttp://twitter.com/leodip


setembro 1. 2009 20:48
Leandro
Como sempre, um post espetacular. Concordo com tudo isso que foi dito sobre a fase de análise, é realmente desnecessária a forma como é feita hoje em dia na maioria das empresas.

Agora quanto a questão acadêmica eu tenho um pensamento que vira e mexe discuto com algum conhecido e consiste no seguinte, um cara que entra numa faculdade não deveria poder "entrar cru" e muito menos sair pronto simplesmente para o mercado de trabalho comum, para mim o curso superior deveria ser algo muito maior, deveria formar pesquisadores, profissionais que fossem capazes de trabalhar acima do mercado comum.
O que eu quero dizer mencionando "mercado de trabalho comum"? Na última fabrica de software que passei fiquei 3 anos e a maioria dos projetos consistiam basicamente em cadastros em bancos de dados, muito pouca coisa fugia disso.
Agora um cara que faz Ciência da Computação e tem umas 3 ou 4 disciplinas de matemática, que tem física, alguns tem a sorte de ter "projeto e analise de algoritmos" vai usar isso tudo onde? Onde ele vai usar isso tudo tendo que fazer um monte de "telas de cadastro/consulta" na maioria dos projetos? Essa parte mais prática, mais voltada a usuário final poderia ser resolvida através de formação técnica, algo que seja mais objetivo e conciso, seria inclusive mais fácil de manter atualizado de acordo com as novidades do mercado tecnológico.

Espero não ser mal interpretado como estou imaginando que vai acontecer, mas o que estou tentando falar com isso tudo é que existe uma parte da computação que realmente não muda tão constantemente como o mercado aparenta e que é a base de tudo que conhecemos e utilizamos bastante, como por exemplo banco de dados, algebra relacional não muda de 6 em 6 meses, ninguém fica inventando um algoritmo de ordenação a cada ano alcançando uma complexidade melhor que a outra, algoritmos de busca, organizacionais e por aí vai, era esse o perfil de profissional que um ensino superior deveria formar na minha opnião.

Acabei fugindo do tema do post, hehe.
Infelizmente eu não trabalho nesse mercado mais "glamouroso" que citei, e vivo o dia a dia do desenvolvimento com usuário fim, então sei bem como é essa questão do modelo em cascata que em 7 anos de trabalho nessa área nunca vi dar certo =P

http://blog.programmingland.org/http://blog.programmingland.org/


Brazil Flávio
setembro 3. 2009 11:02
Flávio
Giovanni, li seu post e achei muito interessante sua ideia sobre processo de software.
Sou um veterano de TI - comecei em 87 criando codigos estruturados em cobol, etc, etc.
Discordo da sua opinição quando diz que modelo cascata não é eficiente. Até meados dos anos 90 a análise estruturada fundamentava-se no desenvolvimento ciclico ou espiral, muitos projetos se desenvolveram com base nesse modelo - alguns grandes bancos ainda mantém esse método.
Também não concordo (provocações saudáveis) sobre a afirmação de que o processo construtivo de um software não pode ser igual a de um carro, por exemplo - deve ser. A análise de sistema é uma fase de percepção, abstração, entendimento, é uma fase presente em qualquer processo construtivo, assim como a fase de projeto, da mesma forma a fase de construção, testes e entrega.
Por fim, voce deixou claro sua postura pragmática - eu acho muito bom, afinal o que o cliente quer é resultados (software).
Isso (postura) é apenas uma dinâmica, é prudente não taxar negativamente as instituições de ensino dessa maneira, é obrigação delas ensinar métodos, e é importante que elas nao se contaminem com a dinâmica pragmática (que não importa o meio e sim o final) das consultorias de ti
e demais.
Computação, CI, informática, TI (cresci nessa ordem) é imatura, é nova, é volátil - é uma ciência em transformação, métodos de desenvolvimento de sistemas são criados e destruidos a cada ano. Ainda não há um modelo forte e consolidado como há na engenharia civil.

Um grande abraço e continue no pique total.
flavio

no site


setembro 3. 2009 16:36
Andre Fonseca
Muito bom o seu post, embora eu discorde em parte de você. Em um artigo de Martin Fowler, ele inclusive critica um pouco esse radicalismos que alguns do movimento agil tem em relação a fazer analises.
Eu acredito que deva existir um exercicio anterior a codificação de analise e definição minimo (arquietural, design, etc). Inclusive escrevi um post falando exatamente isso.
Bem esta é minha opnião

http://www.andrefonseca.net/http://www.andrefonseca.net/


Brazil Flávio Borges
setembro 11. 2009 02:00
Flávio Borges
Giovanni, boa noite.

Bastante interessante o seu Post, principalmente porque tenho vivido essa realidade.

Realmente, "na prática" não existe uma fase de análise, é no mínimo uma ilusão... No entanto, continuo achando muito importante o entendimento do projeto, embora ele tenha mudado (ou pelo menos precise mudar) em relação a pensamentos mais antigos... De nada adiantaria fazer algo o qual não se sabe onde quer chegar, acabamos perdendo mais tempo do que ganhando...

Naturalmente, essa "análise" hoje deve ser incremental, realizada a cada dia, a cada minuto.

Acredito que o enfoque da análise mudou: antes era algo engessado, restrito a uma "fase", hoje deve ser algo maleável, que muda a todo tempo. Considero que seja sempre importante sabermos "onde estamos" e "para onde vamos", dessa vez analisados com muito mais frequencia que nos modelos anteriores.


Falou.


no site


Brazil Derlon
setembro 13. 2009 17:21
Derlon
    Luis,

  Concordo contigo! C/ Análise existe a mesma confusão de 'Testes': serem entendidos como <en>fase</en>, em vez de DISCIPLINA. Na verdade, quando as pessoas se bitolam no termo 'fase' é como se estivessem IGNORANDO aqueles gráficos (tipo baleia)  dos Processos Unificados. E isso, como vcs sabem, é a <en>maioar Cascata</en>!!! :O

no site


setembro 21. 2009 18:13
Hospedagem
Giovanni texto formidavel, concordo  com a analise tendo de certa forma rompido relações com idéias difundidas (até hoje) nas universidades.

http://www.weblocal.com.br/http://www.weblocal.com.br/


Brazil Marco
outubro 5. 2009 18:56
Marco
O comentário do Leandro foi dos mais felizes. Bela visão esta de separar o cientista da computação do kra q vai c lançar no mercado e, mto provavelmente passará na maioria das vezes desenvolver sistemas CRUD. Realmente o mundo acadêmico deveria buscar mais o lado científico dos cursos d TI como bem foi comentado sobre algoritmos por exemplo, e eu acrescento processamento d imagens, IA, Teoria das Linguagens Formais e dos Autômatos e tantas outras áreas. Realmente para c trabalhar no mercado com, basicamente sistemas CRUD um técnico poderia ser suficiente. Ou Sistemas de Informação poderia ser o curso para tal objetivo, talvez. Mas Ciência da Computação deveria enfocar mais em, bem, Ciência da Computação, hehe ...

no site

Comentar


(Vai mostrar seu Gravatar)

  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading



Quem é Giovanni Bassi

Giovanni Bassi Sou uma pessoa apaixonada por tecnologia e especificamente por .Net. Sou consultor independente especialista em .Net, focado em arquitetura e melhores práticas. Tenho dezenas de artigos publicados na .Net Magazine, revista da qual sou editor técnico. Ministro palestras e cursos de vez em quando, e quando dá tempo eu respiro um pouco. Mais detalhes nesta página.

Busca

Selos

MVP

MCPD

MCSD

.Net Magazine

Abaixo ao if!

Calendário

«  fevereiro 2010  »
seteququsedo
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567
Ver detalhamento de posts no calendário

Blogs interessantes

    OPMLDownload OPML file

    Postagens recentes

    Comentários recentes

    Disclaimer / Aviso
    As opiniões colocadas neste blog são minhas e pessoais e não expressam necessariamente as opiniões de meus empregadores, pareceiros e amigos. Da mesma forma, os comentários feitos por leitores do blog não expressam a minha opinião.

    © Copyright 2010 .Net Unplugged
    Log in