O mito da superior produtividade do .net em relação ao Java é real?

[quote=YvGa]
Se voce esta falando de desktop pode ser, realmente ficar criando controles e posicionando tudo na mão toma muito tempo. Mas para web não vejo vantagem. Com um pouco de estudo em css e html voce consegue prototipar tão rapido quanto qualquer drag and drop.

É sobre esse tipo de afirmação que eu falo, drag and drops, sempre eles. E se eu não gosto deles (coisa que não disse) já se supoe que eu gosto de programar em bloco de notas. Um IDE é muito, muito mais que drag and drop. Trabalho ha anos com java para web e só senti falta desse recurso enquanto não tinha dedicado tempo a estudar javascript, html e css.

Desktop é outra historia.

É por esse tipo de pensamento que nós temos esses monstros monoliticos para dar manutenção hoje em dia. Seja lé em java, c#, php, delphi etc… Há uma preocupação com produtividade, sem medir produtividade de nada. A maior parte do tempo que se perde construindo uma aplicação grande é na definição e implementação das regras dessa aplicação.

Mas o que normalmente é feito? Já escolhem a tecnologia porque tem drag and drop e binding de componente. Ajuda? Em muitos casos sim, mas é só a ponta do iceberg. Então depois disso definido, e garantido que a equipe, que há anos não estuda nada de novo, vai ter uma curva de aprendizado suave o projeto começa. Protótipo, telinha pronta aqui, telinha pronta lá e tudo uma maravilha.

Porém antes, e muito antes, da aplicação entrar em produção começa o inferno da manutenção. Cada mudança de requisito é um parto, cada alteração gera um caminhão de bugs, isso sem usuário real usando ainda. E dá-lhe programador passando o dia inteiro olhando valor de variável no debug pra descobrir porque cada vez que ele altera uma coisa outra para de funcionar. E quando finalmente o negócio vai pra produção, se é que vai, o inferno toma conta de vez. E isso tudo muitas vezes sem precisar sequer por a mão naquela tela maravilhosa feita com drag and drop que garante a superprodutividade da equipe.

E vem gente dizer que ferramenta visual é o calcanhar de aquiles do java. Se o problema fosse esse tava tudo resolvido, faz-se tudo com ferramentas visuais, os projetos não atrasam, os clientes ficam satisfeitos, os prazos são cumpridos e o java morre.

Mas não é isso que se ve, nem em .Net, nem em Java, nem em Delphi, nem nada disso. O que se vê são projetos atrasados, clientes irritados, gerentes malucos e programadores insatisfeitos. Ora? no java isso é normal pois não tem “ferramentas visuais”. Mas em .Net e Delphi? Como? Se tem ferramentas visuais espetaculares e programadores que não perdem tempo com telinhas bobas?[/quote]

Não é responsabilidade do programador definir regras, isso é papel do analista. O programador precisa implementar, ou seja, só a ponta do iceberg mesmo.

Se o resultado vai ser um sistema monolítico vai depender da habilidade do programador em implementar boas interfaces.

Isso é bobagem, e das velhas … o mundo seria um lugar melhor se os programadores fossem envolvidos com os clientes desde os primeiros estágios do projeto. A não ser é claro, que você esteja falando de analistas de negócios, que é uma responsabilidade completamente diferente do desenhador de UML. De qualquer maneira, programadores também tem responsabilidades sobre requisitos sim. E se o processo da empresa exige que existam analistas no meio do caminho, ele tem que ter no mínimo desconfiômetro para questionar.

[quote=gomesrod]Olha aqui um sinal de que a filosofia da programação em ambiente Microsoft mudou: o tutorial oficial de C# é todo baseado em editor de texto e compilação por linha de comando.

http://msdn.microsoft.com/en-us/library/aa288436(v=vs.71).aspx[/quote]

Este tutorial é da versão do Visual Studio .NET 2003, versão 1.1 do Framework.

Acho que nem isso é vantagem, porque no caso da web esses tookits que a MS disponibiliza não são cross-browser e no fim você vai acabar apelando para um JQuery ou Extjs.[/quote]

Quem disse que não? Usei WebForms em um dos projetos e os componentes funcionaram perfeitamente em diversos navegadores.
A maioria gerava HTML puro, e relativamente simples.

Entretanto, é também um erro achar que a MS recomenda WebForms para grandes desenvolvimentos. Esse não é o foco do WebForms.
Se você quiser fazer um desenvolvimento maior, a solução recomendada é mesmo Razor + MVC.

[quote=JoseIgnacio]Não é responsabilidade do programador definir regras, isso é papel do analista. O programador precisa implementar, ou seja, só a ponta do iceberg mesmo.

Se o resultado vai ser um sistema monolítico vai depender da habilidade do programador em implementar boas interfaces.[/quote]

Esse post veio de 1990… como algo tão antigo veio parar aqui?

[quote=rmendes08]
Isso é bobagem, e das velhas … o mundo seria um lugar melhor se os programadores fossem envolvidos com os clientes desde os primeiros estágios do projeto. A não ser é claro, que você esteja falando de analistas de negócios, que é uma responsabilidade completamente diferente do desenhador de UML. De qualquer maneira, programadores também tem responsabilidades sobre requisitos sim. E se o processo da empresa exige que existam analistas no meio do caminho, ele tem que ter no mínimo desconfiômetro para questionar. [/quote]

Estou falando como funciona em todas as consultorias. O analista de sistemas é que define o que precisa ser implementado.

Agora se vai tornar o mundo melhor não sei, não acho que esse seja o objetivo de nenhuma consultoria.

1990 tinha nem Gopher, quanto mais WWW.

[quote=ViniGodoy]
Esse post veio de 1990… [/quote]

Assim como Java e OO. Qual seu ponto mesmo?

[quote=ViniGodoy]
como algo tão antigo veio parar aqui?[/quote]

Sinceramente, não sei porque o seu post veio parar aqui, já que ele não acrescenta em nada a discussão.

Acho que nem isso é vantagem, porque no caso da web esses tookits que a MS disponibiliza não são cross-browser e no fim você vai acabar apelando para um JQuery ou Extjs.[/quote]

Você vai ter que apelar pra jquery de qualquer maneira se precisar construir uma interface não trivial usando HTML e Javascript.

A não ser que você queira esperar pelo Javafx ficar pronto algum dia… ai vai poder dizer que usou Java.

Como faz uma animação gráfica usando JSF ou GWT?

[quote=JoseIgnacio][quote=rmendes08]
Isso é bobagem, e das velhas … o mundo seria um lugar melhor se os programadores fossem envolvidos com os clientes desde os primeiros estágios do projeto. A não ser é claro, que você esteja falando de analistas de negócios, que é uma responsabilidade completamente diferente do desenhador de UML. De qualquer maneira, programadores também tem responsabilidades sobre requisitos sim. E se o processo da empresa exige que existam analistas no meio do caminho, ele tem que ter no mínimo desconfiômetro para questionar. [/quote]

Estou falando como funciona em todas as consultorias. O analista de sistemas é que define o que precisa ser implementado.

Agora se vai tornar o mundo melhor não sei, não acho que esse seja o objetivo de nenhuma consultoria.[/quote]

Problema delas se querem pagar para alguem inutil, atravessando informação. Analista de sistemas que não programa é uma aberração que só TI é capaz de gerar.

E quem paga a conta são os clientes que ainda não aprenderam a contratar software.

Mas uma hora eles aprendem. E aí o que vai ter de pseudo-analista em fila de seguro desemprego não vai ser brincadeira.

Pelo menos nos casos das consultorias, acho que analistas estarão bem e o mais provável é que programadores sejam substituídos por ferramentas visuais.

Imagino algo com uma proposta tipo Rails, só que para analistas. O dia que inventarem isso vai bombar no mercado.

Como não? Estou criticando o que você falou. Eu conheço muitas empresas que já trabalham com agile, onde analista e programador tem ocupado exatamente o mesmo papel.

Eu, particularmente, considero a visão de que analista projeta e programador trabalha completamente obsoleta. Como o Yvga falou, analista que não programa é uma aberração. Essa visão também cria uma noção de hierarquia entre os dois cargos, como se o analista fosse chefe do programador. Logos vemos rixas idiotas entre analista e programador na empresa, gastando tempo e desperdiçando dinheiro do cliente. Sem falar, claro, na tonelada de documentação inútil, feita para apontar o dedo para o programador e dizer “eu não errei, foi você, está escrito aqui”, ou para apontar para o cliente e dizer “mas você assinou…”

Creio que hoje essas atividades sejam papéis durante o desenvolvimento, não um cargo.
Nem mesmo os processos menos iterativos, como o RUP, admitem hoje um analista que só analisa.

Mas nada disso tem a ver com a produtividade do java versus .net, só com produtividade em geral.

[quote=JoseIgnacio][quote=YvGa]
Problema delas se querem pagar para alguem inutil, atravessando informação. Analista de sistemas que não programa é uma aberração que só TI é capaz de gerar.

E quem paga a conta são os clientes que ainda não aprenderam a contratar software.

Mas uma hora eles aprendem. E aí o que vai ter de pseudo-analista em fila de seguro desemprego não vai ser brincadeira.

[/quote]

Pelo menos nos casos das consultorias, acho que analistas estarão bem e o mais provável é que programadores sejam substituídos por ferramentas visuais.

Imagino algo com uma proposta tipo Rails, só que para analistas. O dia que inventarem isso vai bombar no mercado. [/quote]

Já inventaram isso, se chama Maker.

Sinceramente, eu não acho que os clientes sejam enganados pelas consultorias no desenvolvimento de SW.

Eu acho que se as coisas são assim é porque estão ganhando dinheiro desta forma, quando não estiverem mais outra irá surgir, desde que se ganhe mais dinheiro.

As consultorias tem uma margem de lucro altissima, algumas de mais de 50%, isso de lucro.

Bom, mas sem fugir do tópico eu acho que um ótimo desenvolvedor hoje não pode ser chamado como tal se não tiver um conhecimento bem grande do negócio em que está envolvido.

Não acredito em interpretadores de UML e geradores de código mais…

abs

[quote=ViniGodoy]
Como não? Estou criticando o que você falou. Eu conheço muitas empresas que já trabalham com agile, onde analista e programador tem ocupado exatamente o mesmo papel.

Eu, particularmente, considero a visão de que analista projeta e programador trabalha completamente obsoleta. Como o Yvga falou, analista que não programa é uma aberração. Essa visão também cria uma noção de hierarquia entre os dois cargos, como se o analista fosse chefe do programador. Logos vemos rixas idiotas entre analista e programador na empresa, gastando tempo e desperdiçando dinheiro do cliente. Sem falar, claro, na tonelada de documentação inútil, feita para apontar o dedo para o programador e dizer “eu não errei, foi você, está escrito aqui”, ou para apontar para o cliente e dizer “mas você assinou…”

Creio que hoje essas atividades sejam papéis durante o desenvolvimento, não um cargo.
Nem mesmo os processos menos iterativos, como o RUP, admitem hoje um analista que só analisa.

Mas nada disso tem a ver com a produtividade do java versus .net, só com produtividade em geral.[/quote]

Pode não ser a última moda do momento, mas assim é feito em +90% das empresas de TI hoje.

Se isso é estar obsoleto, deixo a seu critério decidir.

[quote=André Fonseca]
Já inventaram isso, se chama Maker.

Sinceramente, eu não acho que os clientes sejam enganados pelas consultorias no desenvolvimento de SW.

Eu acho que se as coisas são assim é porque estão ganhando dinheiro desta forma, quando não estiverem mais outra irá surgir, desde que se ganhe mais dinheiro.

As consultorias tem uma margem de lucro altissima, algumas de mais de 50%, isso de lucro.

Bom, mas sem fugir do tópico eu acho que um ótimo desenvolvedor hoje não pode ser chamado como tal se não tiver um conhecimento bem grande do negócio em que está envolvido.

Não acredito em interpretadores de UML e geradores de código mais…

abs[/quote]

Quando falo tipo Rails, estou falando que será simples para o próprio usuário fazer, e não que vai ser web, ou desktop, ou mobile, ou se vai usar banco de dados.

E se precisa ser simples acho que podemos descartar a possibilidade de ser baseado em UML ou fluxograma.

[quote=JoseIgnacio]Pode não ser a última moda do momento, mas assim é feito em +90% das empresas de TI hoje.
Se isso é estar obsoleto, deixo a seu critério decidir.
[/quote]

Em cidade você mora? Gostaria de evita-la.
Aqui esse número certamente é bem mais baixo do que 90%.

Hehhehe costumo dizer que o mais produtivo é o que você sabe mais. Java é sim, robusto, pratico e certamente tem suas vantagens. Mais onde a Miscro$oft mais investe é em produtividade.

Snippets, ferramenta de correção de códigos, geração de códigos, nesse ponto, acho que as IDE´s deixa a desejar no java.

Há alguns recursos interessantes, get e set implicito, enfim, produtividade é sim o forte da Microsoft. O grande problema é que pelo fato de ser, de certa forma, acessivel, tem muita merda em .NET, menos comum em aplicações em Java.

Conheço uma aplicação em Java, impecável, (www.valemobi.com.br), os caras realmente fizeram um bom trabalho, mas para saber qual delas é realmente produtiva, teriam que pegar os melhores de cada linguagem e fazer o mesmo projeto. aí sim, daria para provar, caso contrário, melhor seria o que o desenv conhece mais.

[quote=AlexandreMinato]Hehhehe costumo dizer que o mais produtivo é o que você sabe mais. Java é sim, robusto, pratico e certamente tem suas vantagens. Mais onde a Miscro$oft mais investe é em produtividade.

Snippets, ferramenta de correção de códigos, geração de códigos, nesse ponto, acho que as IDE´s deixa a desejar no java.

Há alguns recursos interessantes, get e set implicito, enfim, produtividade é sim o forte da Microsoft. O grande problema é que pelo fato de ser, de certa forma, acessivel, tem muita merda em .NET, menos comum em aplicações em Java.

Conheço uma aplicação em Java, impecável, (www.valemobi.com.br), os caras realmente fizeram um bom trabalho, mas para saber qual delas é realmente produtiva, teriam que pegar os melhores de cada linguagem e fazer o mesmo projeto. aí sim, daria para provar, caso contrário, melhor seria o que o desenv conhece mais.[/quote]

concordo com você, mas no final ainda sim seria bem relativo.

Pois é, e se voce for avaliar bem, vai reparar ainda que dos outros 50% que não são lucro, pelo menos metade é desperdício. Analistas que não sabem programar, hierarquia enorme de gerentes, sub-gerentes, semi-gerentes e coordenadores que mais atrapalham que ajudam e não contribuem em nada para o produto em si. Consultorias e pessoal contratado específicamente para implantar CMMI, MPS BR, ISO e afins. E nada disso é capaz de fazer software de qualidade, mas o cliente paga a conta disso tudo.

A vantagem das grandes consultorias é que elas já tem uma base grande de clientes, que já se acostumaram a tudo isso. E acham, como eu já ouvi muitas vezes, que software é “assim mesmo”. Mas dificilmente uma empresa pequena com o mesmo modelo de gestão e produção das grandes vai conseguir crescer.