Os 10 mandamentos do arquiteto de software

65 respostas
M

Acredito que seja do interesse de todos:


Os 10 mandamentos do arquiteto de software

http://www.enterpriseguys.com/Artigos.aspx?ColunistaID=29&id=40

Vale a pena ler todo o artigo. Alguns tópicos fazem lembrar bastante alguns participantes aqui do fórum. :slight_smile:

[]'s
Marco Campêlo

65 Respostas

P

O artigo é itneressante, mas alguns pontos “estranhos”:

1 - O cara é programador “SUN certified J2EE Programmer”? Não achei essa certificação aqui.

2 - Até que isso:

Não é estranho para quem tem tantas certificações Microsoft. FUD deve cair na prova.

3 -

Claro, e como mencioneia qui outro dia o cliente também não quer saber quando você diz que tem que mudar mil arquivos em mil lugares diferentes no seu lindo programinha de acoplamento recorde feito em VB. Simples, bonitinho, usável… mas por dentro é todo podre.

Existe uma balança entre usar tecnolgoia rápida e suja e avaliar direito seu problema, e o fato de não mencionar nisso invalide este “mandamento”.

4 - Outra cosia nem um pouco estranha

Ok, a Microsoft não é o bicho-papão que vendem por aí, ams dizer que sempre a culpa é do “sujeito”… por favor! Vou largar Java e tudo mais e partir agora para essa paltaforma perfeita que vem de Redmond.

Ok, esqueça o que eu disse. Esse artigo é uma proposta interessante, a lsita é interessante, mas as explicações sobre os “mandamentos” são sofríveis.

Se o mundo .Net é assim (e não estou dizendo que seja, estou apenas comentando o artigo do colunista de “.NET Enterprise” desse site, que tem gente muito boa como o Jorge Diz), como disse o luca outro dia: graças a zahl eu estou onde estou.

J

Eu só não concordo com o tópico 10.
Porque isso traz uma imagem erronea do desenvolvimento inteligente.
Porque não criar bibliotecas próprias para facilitar o desenvolvimento ?
Isso traz simplificação.
Agora não quer dizer que é preciso reinventar a roda.
O bom censo deve ser usado.

Ele também meteu o pau nos design patterns.
Aposto que ele é amante do RAD adora aquele arasta-aqui e arasta-ali.
Tudo pronto !!! Uma beleza.
Muitas vezes isso traz mais manutenção que fazer da “maneira mais dificil”.

Principalmente para os estagiários.
O que eu já peguei de tela torta do VB. Sem validacão de tipo de dados, tamanho de campo.
O que precisei fazer ? Criar uma porrada de OCX para substituir os controles padrão.
E falei : Tu só vai usar isso aqui !!!

Ainda bem que ele desenvolve em .NET.

F

Olá,

Como o Pcalcado falou as premissas sao ótimas, mas os argumentos muito ruins.
No fundo a mensagem que ele tenta passar é use a plataforma da M$ que ela é perfeita, se der errado nao é culpa da M$ e sim sua e nao use projetos OS porque ninguem assina em baixo.

]['s

J

fabgp2001:
Olá,

Como o Pcalcado falou as premissas sao ótimas, mas os argumentos muito ruins.
No fundo a mensagem que ele tenta passar é use a plataforma da M$ que ela é perfeita, se der errado nao é culpa da M$ e sim sua e nao use projetos OS porque ninguem assina em baixo.

]['s

:thumbup: :thumbup: :thumbup:

L

Olá

+1 aqui

jprogrammer, reinventar a roda para mim sempre foi uma das coisas mais desmotivantes.

Acho interessante quando os ASProgramadores começam a perceber que o mundo mudou. Não é a primeira vez que vejo Microsoft slaves descobrindo coisas que a gente já sabe há alguns anos.

[]s
Luca

J

Eu disse:
“Agora não quer dizer que é preciso reinventar a roda. O bom censo deve ser usado.”

Estou falando em reutilização e componentização do sistema, coisas que muito pseudos OO programmers deveriam estar fazendo a decadas.

O que eu insisto é o seguinte:
Para que eu repetir um código de validação em várias telas se posso criar uma API para ser usada e centralizar o código.

M

Ótima propaganda das boas práticas de programação, e ótimo argumento contra as tecnicas grag-n-drop de programar!!

hehe :smiley: Esse pessoal hem!

L

Ninguém notou isso? Que esse cara não tem a menor idéia do que é um Design Pattern. Até onde eu sei, DP existem exatamente para você “inventar” algo que já foi feito por muitos.

L

Olá

Louds, acho que você esta sendo muito radical com o MXPTO, MK5P3, MOXPK, OCMX, ASPecialista. :lol:

DP é um padrão a ser seguido que a gente usa em nossas próprias criações. O máximo que a gente tem são exemplos de aplicações. Na verdade a gente aplica DP, a gente não reaproveita DP. Mas como a frase dele inclui a palavra “orientar” acho que não acho tão ruim assim.

[]s
Luca

F

louds:

É claro que Design Patterns existem para ajudar, orientar e evitar que você invente algo que já foi inventado.

Ninguém notou isso? Que esse cara não tem a menor idéia do que é um Design Pattern. Até onde eu sei, DP existem exatamente para você “inventar” algo que já foi feito por muitos.

Claro Louds, o problema é que se fossemos colocar aqui todas as besteiras que ele falou seria mais facil postar o texto inteiro. :mrgreen:

]['s

L

Minha maior dúvida quanto ao artigo é se o .NET remoting é tão ruim assim ou o autor não sabe fazer benchmarks.

M

Bom dia a todos os membros desse forum,

Antes de mais nada, eu sou o tal “Microsoft slave” que escreveu o tal famigerado artigo que vocês estão criticando.

Devo confessar que estou um tanto perplexo com as reações causadas pelo meu artigo por aqui… Até voltei e dei uma lida de cima a baixo para entender melhor se eu tinha ofendido alguém, ou se fiz alguma declaração anti-qualquer-coisa que pudesse disparar tantas críticas.

Realmente não encontrei nada assim… Então porque essa raiva toda? Porque eu sou um “Microsoft slave”?

Talvez seja interessante explicar que nos 18 anos em que desenvolvo sistemas, trabalho com Microsoft tem apenas 6 (trabalhei com tudo um pouco antes disso), e já quase fui mandado embora de uma empresa por criticar o Visual Basic 5 e elogiado o Delphi enquanto dava um treinamento oficial da Microsoft nessa ferramenta. Esse foi um dos vários casos onde coloquei minha carreira em risco por falar mal da Microsoft. Mas, claro, vocês não tinham como saber…

Então às vezes ofende um pouco quando uma pessoa te rotula sem nem saber do seu passado, mas essas coisas acontecem… Entristece-me ver tecnologias sendo transformada em facções religiosas. Existe isso tanto lá no mundo Microsoft quanto em outras esferas.

Mas paciência… esse é um país livre, certo? Todos expressam o que pensam e vocês estão exercendo esse direito.

Só gostaria de fazer algumas observações, no intuito de evitar que o que eu escrevi seja distorcido, daí deixo a vocês a liberdade de me crucificar, se isso faz todos mais felizes.

1- Penso que todas as tecnologias têm os seus problemas, não vou ficar aqui contando os apuros que eu já vi a IBM passar com o Websphere, nem os que eu passei com Oracle, assim como vivo passando com Microsoft. Desenvovedor sofre com a tecnologia, e isso é universal. Mas quando uma arquitetura é mal feita, aí qualquer tecnologia desanda, isso também é universal.

2-Quando eu digo que a tecnologia não importa ao cliente, ela realmente não importa CONTANTO que o software funcione direito e seja fácil de usar e se gerenciar. Então por favor não me acusem de defender o desenvolvimento de software mal feito. Me incomoda ver o que eu disse sendo distorcido. No mínimo, isso não me parece ético.

2-Reinventar a roda com o objetivo de aprender é uma coisa, já reinventar a roda no meio de um projeto com prazo definido, budget apertado e uma enorme responsabilidade nas costas é outra. Nada contra criar bibliotecas próprias (eu vivo criando).

3-Jamais critiquei Design Patterns. Se isso não ficou claro no artigo, que fique claro aqui. E por favor: “Esse cara não entende nada de design pattern”… Sugiro o seguinte: Reclame do meu nariz, diga que minha cara é torta, mas por favor não critique o que você não sabe a meu respeito, é possível? Obrigado.

3.1-A Microsoft tem feito vários eventos só para discutir design patterns. Sim, ela está demonstrando um grande esforço para mudar… E vocês, estão dispostos a mudar também? :slight_smile:

4-Já solicitei a correção do nome da certificação, realmente estava errado, e inclusive coloquei um post no artigo agradecendo (não sei quem foi exatamente) por me avisarem disso.

5-Remoting é excelente! Conheço muita gente que usa e assino embaixo! Leia novamente o artigo e verá que não estou dizendo que ele não tem performance. Só não concordo com um argumento que é muito usado pela Microsoft, por sinal (olha aí eu criticando ela de novo) de que em muitos casos os Web Services não atendem à performance desejada. A discussão aqui é: Usar uma tecnologia proprietária (Remoting) ou algo universal (Web Services)?

No mais, quero apenas deixar registrada a minha decepção ao ver que ao invés dos mundos Java e .Net se aproximarem, com troca de experiências, conhecimento e até código (foi o que me chamou a atenção na proposta do Enterpriseguys, a idéia dele ser eclético) continuo vendo essa mesma guerra fria entre os dois lados, gente se odiando sem nem se conhecer só porque um trabalha com x e outro com y.

De qualquer forma, como já disse no site e repito aqui (imagino que agora eu esteja conhecendo os autores dos comentários do site) que estou aberto a conversar sobre o assunto, ouvir críticas e ponderar sobre elas.

Obrigado e desculpem a intromissão,

Mateus Padovani Velloso, o slave.

L

Olá

Em homenagem a sua paciência de vir aqui discutir dentro do das “hostes inimigas” retiro o Microsoft slave e o substituo por dependente das tecnologias Microsoft.

Também como você eu já usei Microsoft. Vou explicar porque desisti. No primeiro semestre de 1997 a bolsa de valores estava extremamente atraente. Larguei tudo para ficar só aplicando diariamente. Senti falta de uma aplicação gráfica que me ajudasse com análise técnica e ainda também administrasse minha pequena porém lucrativa carteira. Com minha ótima experiência em C e com excelentes conhecimentos de C++, comecei a desenvolver uma aplicação em C++ com o VisualStudio 6. Cada vez que eu colocava 100 linhas novas e compilava, o VS colocava mais outras 100 espalhadas em um monte de arquivos. Meu software foi ficando tão complicado que comecei a me perder. Passava o dia todo preenchendo TODO colocado pelo VS e meu core business foi ficando de lado. No meio do projeto a bolsa foi perdendo atração e eu estava com aquele monstrengo dificil de administrar sozinho. Cheguei a conclusão que o VS mais me atrapalhava do que ajudava. Talvez se eu tivesse escolhido desenvolver em Delphi ao invés de C++ não teria me frustrado tanto. Mas na época a briga era entre a turma do C onde me incluia e os pascaleiros. Nesta época já conhecia Java que como o C++ tinha as vantagens de ser orientado à objetos e permitir o grau de abstração que eu precisava. Foi então que resolvi abandonar o mundo Microsoft e até agora não tenho nenhum motivo de arrependimento.

[]s
Luca

M

Oi Luca,

Na verdade não foi a paciência e sim a falta dela, mas já passou… :slight_smile:

Se eu tivesse passado pelo mesmo problema que você em 1997, provavelmente teria tomado a mesma decisão. Aprendi VC++ mais por obrigação que por prazer, e realmente o considero muito pouco produtivo nos cenários mais comuns.

Na verdade, 1 anos antes do lançamento do .Net, quase abandonei a tecnologia MS por sentir falta de uma plataforma OO produtiva, porque no mundo MS tínhamos o VC, o FoxPro e o VJ que eram OO, e nenhum deles atendia nossas necessidades. Mas valeu ter aguentado um pouco mais.

Também invisto na bolsa, mas prefiro usar o Metastock que já vem prontinho (o tal “não reinventar a roda”…)

Obrigado.

R

Você me parece um cara legal.

P

Olá, Mateus,

Devo adimitir que ainda sou “religioso” com tecnologias (assim com tudo em que acredito), mas se alguém aqui já me viu defendendo um ponto ha algum tempo atrás vai ver que eu melhorei bastante, se eu te ofendi, desculpa,não foi minha intenção, eu apenas não concordo com seu ponto de vista e o respondi.

Como moderador do fórum, quero como o Luca te dar parabéns por vir defender sua opinião e dizer; seja bem-vindo. O GUJ é um fórum sobre Java mas discutimos muitas cosias aqui que são referentes às tecnologias em geral, e ocasionalemnte C#, .Net, etc cai na roda e alguém que entenda faz falta. Se você quiser continuar frequentando o fórum, será muito legal.

Como falei acima, não concordo com o que você escreveu, eu acho sim que a Microsoft (assim como borland e Oracle) rpezam mais pela quantidade do que epla qualidade. Já vai vir meu amigo Campêlo dizer que elas são emrpesas e t~em que vender, eu concordo, mas eu acho que educar a comunidade de desenvolvedores é fundamental. Infelizmente eu vejo seu artigo como cultura Microsoft.

Sim, Redmond tem mudado, até lançaram aquele portal de patterns, não foi? Mas a cultura continua. É como Delhpi, que possui uma estrutura OO boa, mas ninguém usa porque não faz parte da cultura.

C

Ja parou pra pensar que isso nao muda tanto assim com o pessoal que programa em Java hoje em dia? Java tem toda aquela parada de OO e APIs fantasticas pra todo lado, mas presta bem atencao na esmagadora maioria das duvidas sobre arquitetura aqui do GUJ ultimamente: dificil ver uma que nao seja aquela nojeira JSP-Servlet-VO-EJB-VO-DAO-Banco-DAO-VO-EJB-Servlet-JSP com alguma das siglas trocadas por algo mais moderninho (Struts, Velocity, Hibernate, whatever).

Isso eh, mesmo, tao melhor do que o que se ve em Delphi, C# ou VB? So pq tem mais codigo, mais configuracao, demora 5 minutos pra compilar e fazer deploy, e tem “”“objetos”"", nao quer dizer que seja um progresso pra humanidade.

P

cv,

Não falei nada pró-Java no meu texto, falei anti-cultura-microsoft.

De qualquer modo, eu acredito sim que só o fato de haver gente em volume muito maior discutindo arquitetura e não simplesmente usando arquitetura out-of-the-box representa uma evolução. Em qualqur profissão existe a grande maioria, que senta na cadeira, digita e pega o salario no fim do mês e a minoria que se preocupa com o que faz. Eu acho que a cultura que está se formando ao redor de Java ultimamente tem feito com que a minoria tenha mais acesso a informação, e assim possa cosntruir coisas melhores. Para a maioria semrpe vai haver o Sun Java Studio Creator.

O fato é que Microsoft e Borland dominaram por tanto tempo esse mercado, e que fizeram para melhorar o nível de conhecimento dos seus usuários? Não é a Sun que impulsionou Java, foi a comunidade de desenvolvedores que usa a linguagem para fazer cosias legais, a cultura Java é baseado em lugares como SourceForge, TSS e java.net, não em empresas, essa é a diferença.

Agora se você fizer um find/replace “java” “qualquer otura linguagem”, vaid ar no mesmo. A plataforma Java em si está no lugar certo e na hora certa.

M

Oi pcalcado,

Agradeço pelas boas vindas e será um prazer “dar uns palpites” se e quando vocês acharem que isso pode contribuir em alguma coisa.

Quanto a não concordar comigo ou com a Microsoft (repare que as minhas opiniões não são necessariamente as opiniões dela), nada contra. Aliás, se não fosse o Java, provavelmente não existiria o .Net, assim como se não fosse o Linux, a Microsoft provavelmente estaria com o Windows estacionado nos 9x até hoje… Nada como uma boa concorrência para “apertar” os fabricantes e melhorar a tecnologia.

Assim como a Microsoft não me paga para falar dela, imagino que a SUN ou a IBM também não paguem a nenhum de vocês, afinal, somos todos clientes dos seus produtos e não eles os clientes dos nossos serviços.

Minha bronca não foi quanto a discordarem de mim, e sim com relação a terem distorcido o que eu disse, recortando frases e dizendo: “viram? ele quer dizer tal coisa!”, com o intuito de provar uma questão ideológica. Isso realmente me assustou, fazia tempos que não via mais esse tipo de atitude na nossa área. Não bastasse a integração tecnológica ser uma coisa dificil por si só, esse fator complica mais as coisas.

Realmente a Microsoft pecou durante muito tempo, tanto no que diz respeito à estabilidade e segurança dos seus produtos quanto na questão da cultura dos desenvolvedores. E isso não é uma defesa, e sim uma constatação: Ela errou, e muito. (e olha que eu vivo ouvindo isso da boca deles)

E da mesma forma que eu exercito minha humildade admitindo isso, também coloco essa mesma humildade em prática ao constatar que ela realmente está mudando (não vou entrar no mérito de dizer se ela está mudando porque quer ou porque precisa). E nem acho que eu deva precisar argumentar muito para provar isso. Basta pegar o Visual Studio 6 e instalar os seus 6 service packs (isso mesmo, 6!) e ver que ainda assim ele é instável, e depois pegar o Visual Studio 2003, mesmo na versão beta, e fazer o mesmo teste.

Também muito está sendo feito com relação à cultura dos desenvolvedores, e se vocês tiverem interesse, posso contar a respeito sempre que participar de algum evento ou alguma outra coisa do gênero.

Daí, é claro, podemos dizer: “Eh! Mas isso não é suficiente!”. Claro que não é! Mas já é melhor que antes, ou não?

No mais, faltou um emoticon com uma bandeirinha branca de trégua para colocar aqui. :slight_smile:

Até mais,

Mateus

F

Hehehe … discordo … tem gente que a sun paga aqui :twisted:

//edit

Falta mais não …

M

haha, sério? eh… bom… pula essa parte então. :stuck_out_tongue:

K

Falando em Visual Studio 2003.
Eu cheguei a dar uma olhada…
[Comentário]
Obs: o cara que foi mostrar falou que teve que arranjar 15 Gb no notebook dele para poder instalar… :S
[/Comentário]

A microsoft “promete” com essa versão 2003, mas como quem apresentou foi um marketeiro, não estou nem um pouco empolgado para ver essa criança.

antes que vcs me ataquem,
não eu não mexo com .NET, só “brinquei” um pouco, e mesmo assim foi com C#…
Que convenhamos é quase uma cópia do java.

M

Cara, acho que você confundiu o 2003 com o 2005. Eu dei o exemplo do 2003 beta, mas ele já é final, e não acredito que precise de mais que 1 giga para instalar…

Já o 2005 é pesadão mesmo, até porque ele tem vários “módulos” pensados em “team development”.

A idéia da MS é que o Visual Studio seja desde a ferramenta que o programador usa para programar, passando pela ferramenta de modelagem usada pelo analista, de administração de banco de dados (do SQL 2005), de modelagem de BI (também sql 2005), modelagem física da sua arquitetura (definir quais são os servidores, se estão em segmentos de rede separados, etc, quais as regras de firewall…), controle de qualidade, batch build e até mesmo para desenvolvimento em ferramentas de terceiros (incluindo aí Oracle e SAP até onde estou sabendo).

Ele inclui um toolkit chamado “Domain specific language toolkit” onde você pode tirar proveito do designer visual dele para qualquer coisa que você queira, por exemplo: Quero criar um modelador de UML com algumas particularidades e com um suporte a geração de código do meu jeito, então pego o toolkit e monto isso. Daí você não fica preso ao drag and drop built in do Visual Studio.

Então se você for instalar o “pacotão”, poe 15 giga mesmo (tenho que confirmar esse tamanho). Mas você pode, por exemplo, baixar as versões “Express” do C#, SQL Server e etc que são simples e pequenas (1.3 GB). Se não me engano, essas versões serão gratuitas, mas ainda não sei direito dos detalhes comerciais.

Assisti algumas demonstrações, fiquei muito impressionado com algumas coisas e um pouco decepcionado com outras, mas no geral gostei bastante. Isso porque do Visual Studio.Net 2002 para o 2003, quase nada mudou, mas do 2003 para o 2005 a mudança é enorme.

R

Hã? 1 GB? :shock: :shock: :shock:

Hã? 15 GB??? :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:

M

ehehehehe, achou muito? :slight_smile:

Bom, nada impede de baixar apenas o .net Framework (uns 20 mega) + o Web Matrix (acho que são 4 mega) e desenvolver… :slight_smile:

Os 15 giga provavelmente estão incluindo uma máquina virtual, porque a gente evita de misturar produto beta com o windows que usamos no dia a dia…

R

mateusvelloso:
ehehehehe, achou muito? :slight_smile:

Bom, nada impede de baixar apenas o .net Framework (uns 20 mega) + o Web Matrix (acho que são 4 mega) e desenvolver… :slight_smile:

Os 15 giga provavelmente estão incluindo uma máquina virtual, porque a gente evita de misturar produto beta com o windows que usamos no dia a dia…

Digamos que achei… humm… muito! Mas muito, tipo… muito, é aquilo… muito, muito, muito, MUITO mesmo!

E sobre a máquina virtual não entendi muito bem, seria um Windows simulado de modo a não afetar o Windows “real” se o programa aí não funcionar? Acredito que não esteja falando do .NET Framework, que tem só uns meguinhas.

Sinceramente, mesmo assim, 1 GB já me assusta, e muito. E eu que achava que meu Eclipsezinho extends God de 115 MB era grande…

Abraços.

M

Na verdade, se não me engano, já é possível desenvolver com Eclipse/C#/Mono… Tenho que confirmar, porque tinha um pessoal trabalhando nisso.

Mas estamos falando de instalação FULL, ou seja, instala C#, VB, C++, J#, todas as ferramentas… Dificilmente alguém precisa disso tudo.

A máquina virtual é isso mesmo. Pode ser um VMWare ou o próprio Microsoft Virtual PC e Virtual Server. A idéia é muito boa (e útil) principalmente para nós desenvolvedores. Voce roda um processo que emula uma máquina, instala um sistema operacional nela e roda o que você quiser. É muito legal para ambientes de testes, você tira uma imagem de um dvd, joga pro computador, levanta um SO zerado, instala seu software, testa, remove e deleta a máquina.

Na verdade, muitas empresas estão colocando seus servers assim. Coloca um storage enorme, um cluster com um monte de máquinas físicas hospedando um monte de máquinas virtuais. A vantagem, obviamente, é que você tem tolerância a falhas, distribuição de processamento e uma enorme velocidade para restaurar um servidor perdido (basta copiar a imagem). Isso, inlusive, não é só windows não. Eu tenho um linux virtual dentro do meu windows aqui para brincar de rodar .Net nele.

Fora a vantagem de isolar essa “máquina” do resto, imagina se você quiser testar um virus :slight_smile: Se olhar por esse lado da segurança, essa máquina virtual tem muito em comum com a do java…

M

Poxa, assim não consigo nem mais postar no Guj! :slight_smile:

[]'s
Marco Campêlo

R

Poxa Mateus o artigo é muito legal, compartilho suas visões! Só não entendi a última do Design Patterns. Em que situação eu deixaria de usar um pattern em nome de uma feature do .NET e vice-versa? Parece que DP são ferramentas. Poderia exemplificar?

Uma das partes mais legais é quando você diz:

Isso, NMO, é a lei que rege pelo menos a maioria do mercado, e a Microsoft é um grande exemplo de empresa que trabalha forte com a aparência (não importa o que é, o que importa é a impressão que o cliente tem). Concorda?

C

google eclipse ikvm :slight_smile:

Screenshot:

L

Hmm, acho que vou instalar windows e .NET só para rodar o Eclipse com ikvm. Hehehehe

P

Eu tenho uma proposta.

Já que muitos acharam que os 10 pontos foram bem escolhidos e mal justificados, justifiquem os 10 amndamentos propostos.

R

Como eu disse achei tudo legal, só não entendi a última.

C

Gostei da ideia, Shoes, mas, sinceramente, eu que ja nao gosto dos 10 mandamentos originais, gostei menos ainda desses. Eis a minha lista revisada dos 4 mandamentos:

:arrow: Tenha o sistema sempre em estado utilizavel e testavel durante o desenvolvimento

:arrow: Faca o que for importante para o negocio primeiro, o que for importante para o projeto depois, e deixe o que nao for nem um nem outro de lado

:arrow: Use as melhores ferramentas e pessoas que o orcamento puder garantir

:arrow: Tenha um processo, e refine-o sempre para garantir da melhor forma possivel que os outros mandamentos sejam cumpridos a risca

Faltou alguma coisa?

M

Atualmente eu estou trabalhando num projeto de migração para Asp.Net+VB.Net de um grande sistema feito em VB6. Graças a Deus no próximo mês essa tortura vai acabar, pois vou para uma empresa trabalhar com Java.

Essa não é a primeira vez que eu trabalho com VS.Net. Ano passado também fiz um grande projeto nele, e digo que em nenhuma das vezes, em nenhum momento, eu me senti minimamente confortável com o VS.
No projeto do ano passado tivemos grandes problemas com alguns simples mecanismos de validação que o próprio Asp.Net cria, que, basicamente falando, são javascripts criados em tempo de execução. Muita coisa teve que ser feita à mão, pois o Asp.Net não oferecia uma solução mais flexível para o problema que tivemos.
Outro grande problema foi com sessões. Elas simplesmente morriam após um intervalo aleatório de tempo. Mesmo que o timeout fosse colocado no máximo possível, a sessão muitas vezes morria com 1 ou 2 min. Entramos em contato com alguns consultores certificados pela M$, que nos disseram que isso seria resolvido em releases futuros. Só que, como não tínhamos tempo pra esperar a boa vontade da M$ pra liberar esses releases, tivemos que implementar outra solução às pressas.
Fiquei sabendo até de alguns boatos dizendo que esse problema de sessões é o mesmo que o Orkut tinha até há pouco tempo atrás.

Aliás, na minha opinião, o Asp.Net é uma das tecnologias mais mal feitas que eu já vi até hoje. É praticamente a “reinvenção da roda” (alguém falou isso?? :roll: ) do Html, mas tem objetos incompatíveis com o padrão proposto pelo W3C (aliás, M$ e padrões não são compatíveis, que o diga o polêmico Mauro Santana, colunista da MSDN Mag), alguns que simplesmente não existem, além de ser extremamente prejudicial para o trabalho de um webdesigner, caso o programador não esteja MUITO familiarizado com a tecnologia. E mesmo assim, para o programador fazer algo que seja manipulável por um webdesigner, ele terá que fazer um esforço hercúleo.

No projeto atual não estamos tendo tantos problemas como antes, pois a aplicação, apesar de grande, não é muito complexa. Digamos que os maiores problemas que estamos enfrentando são o tratamento automático do versionamento de arquivos do VS, que às vezes sobrepõe os arquivos instalados no servidor de teste com versões antigas que estão no cache local da máquina, relatórios feitos no Crystal Reports em versões não suportadas pelo VS, que ele tenta converter mas corrompe, entre outras coisas menores…

Na minha opinião, a IDE do Visual Studio mais atrapalha do que ajuda, tamanha é a quantidade de opções. Algumas delas bem pouco intuitivas e obscuras. Não sei, pode ser apenas impressão minha, mas eu já a uso há muito tempo e até hoje não consegui me acostumar. Só como um exemplo, eu comecei a usar a IDE do Eclipse muito depois de ter visto a IDE do VS, e apesar de também ser uma IDE bem complexa, eu já me adaptei totalmente. Às vezes eu tenho a impressão :roll: de que a Microsoft tenta entupir a IDE do VS de funcionalidades só pra dizer que ela é melhor do que as outras…

Ah… chega de falar dele… só mais uns comentários:

Faz isso não… o WebMatrix é horroroso… às vezes é até melhor usar um EditPlus da vida do que ele. A única coisa que presta nele é o Class Browser.

Na verdade são mais de 2GB. Acabei de ver aqui na minha máquina.

*editado:
Concordo e continuo achando isso mesmo após o autor do artigo ter exposto seus esclarecimentos aqui.

R

cv, o que tu ta dizendo? Que concorda? Que discorda?

Marcio, onde que o cara fala “compre Windows, compre Windows”???

Ele não fala Java é mau, .NET é bom, ele nem tá falando de tecnologias específicas ali, mas de posturas do desenvolvedor. Não?

L

Olá

cv:
Eis a minha lista revisada dos 4 mandamentos:

:arrow: Tenha o sistema sempre em estado utilizavel e testavel durante o desenvolvimento

:arrow: Faca o que for importante para o negocio primeiro, o que for importante para o projeto depois, e deixe o que nao for nem um nem outro de lado

:arrow: Use as melhores ferramentas e pessoas que o orcamento puder garantir

:arrow: Tenha um processo, e refine-o sempre para garantir da melhor forma possivel que os outros mandamentos sejam cumpridos a risca

A lista original é óbvia e não é nenhuma novidade desde os tempos do Clipper, VB ou Delphi. Não vou justificar nem discutir porque ela fala por si mesma. O erro do Mateus foi tentar justificar o óbvio.

Já esta aqui é bem mais moderna e leva 5 estrelinhas. Muito mais de acordo com o mundo atual. Faço questão de repetir o segundo ítem:

Faça o que for importante para o negócio primeiro, o que for importante para o projeto depois, e deixe o que nao for nem um nem outro de lado.

No próximo projeto que eu gerenciar vou colocar isto no topo da lousa!

[]s
Luca

L

Olá

+1

Aliás não foi a toa que uma vez o Ray Duncan (gênio do tempo do DOS) escreveu na DrDobbs que os programadores da Microsoft deveriam ser gênios porque conseguir escrever alguma coisa que funcione com as ferramentas Microsoft só sendo gênio. Isto ele escreveu comparando o C da Microsoft com o C da Borland.

[]s
Luca

R

Sentimentalismos… :roll: A Microfoft é Satã! :evil: Que venha o Messias da tecnologia, salve-nos!!! :smiley:

M

Hein? Hein?

Eu também não falei que ele disse que Java á mau. Só disse que achei, e continuo achando, que o texto é voltado para o mercado/cultura Micro$oft.

R

Hein? Hein?

Eu também não falei que ele disse que Java á mau. Só disse que achei, e continuo achando, que o texto é voltado para o mercado/cultura Micro$oft.

Então cara, por quê? O que ele escreveu que é cultura M$, o que ele escreveu de INADEQUADO?

É a cultura do vender acima de tudo, acima da qualidade da cominidade de desenvolvedores? Se é, tá, não reparei coisas assim no texto.

M

Desculpem, estive fora o dia todo e não deu tempo de acompanhar essa discussão, bem interessante por sinal.

Vamos por partes:

1.1-Marcio Tavares, quanto aos problemas que você citou, sou capaz de apostar que todos têm solução. A sessão que expira pode ser configuração incorreta do webgardening ou estouro de sessões, ambas têm como serem solucionadas. Posso te mostrar um monte de sites (até o site onde eu invisto em ações que comentei com o luka e o internet banking que eu e uso) que são feitos em asp.net e ficam de pé (diferente do Orkut). Anos dando suporte nessas coisas e a gente vai “pegando as manhas” :slight_smile:

1.2-A compatibilidade com W3C do ASP.Net é perfeitamente possível, também tem configurações para isso.

1.3-Os scripts de validação gerados por ele fazem o básico, a idéia é ir extendendo com os seus ou com os de terceiros. Tenho uns que eu fiz e uso uma biblioteca que gosto muito, chamanda Infragistics, toda em .Net, ela também ajuda. Também muita coisa vai mudar nessa parte agora com o VS 2005.

1.4-Também não uso o WebMatrix, dei só um exemplo de uma ferramenta de 4 mega feita em C#, se o tamanho for algo que importa :slight_smile: Também pode usar o notepad e compilar em linha de comando, tem gosto pra tudo. :slight_smile:

1.5-Vamos pegar o Excel. Eu uso 5% do que o Excel oferece. Meu colega usa outros 5%. Conheço outro cara que usa 20%. Minha mãe usa 0.5%. Se você quer fazer um produto que atenda milhões de pessoas, com certeza ele SEMPRE vai ter mais recursos do que cada uma delas individualmente usa. Você usa tudo o que o J2EE te oferece? Já vi cara da IBM na frente do Websphere mudando entre as milhares de páginas de configuração e não conseguindo dizer exatamente como configurar WS-Security lá, enquanto no Visual Studio você faz isso em minutos… As ferramentas estão ficando complexas mesmo, bom pra nós que somos bons e vamos ter muito mercado para ensinar a usa-las. :slight_smile:

2-Gostei dos 4 mandamentos! Só não entendi por que quando eu falo que o negócio é mais importante, sou taxado de defender software mal feito, mas quando vocês falam que o negócio vem em primeiro lugar, a coisa muda de figura… não estamos falando da mesma coisa? Também vi muita gente dizer que os meus tópicos estavam corretos, mas com argumentos errados. Queria mesmo ver os argumentos adequados.

3-Não lembro quem me perguntou sobre o que eu falei dos Design Patterns e a tecnologia. Pois bem, um exempo super polêmico: Existe uma discussão no mundo Microsoft sobre o que usar na camada de persistência. Alguns defendem o nHibernate (irmão do Hibernate em .Net), outros o Gentle.Net, e por aí vai… O .Net traz built-in os DataSets, que são mapeamentos de XSD Schemas para classes, propriedades e coleções. Daí como não existia nenhum Design Pattern que falasse de DataSets (agora até estão aparecendo), muita gente preferia não usa-los, mesmo em projetos mais simples onde eles resolviam 100% a necessidade. Agora na versão nova viriam os ObjectSpaces numa abordagem mais inteligente e performática que o nHibernate, mas adiaram isso mais pra frente.

Outro exemplo foi num curso de .Net que eu dei para uma turma de analistas que trabalhavam com java (isso mesmo, já treinei uns 150 profissionais java em .Net, e acredito que nenhum saiu decepcionado com essa tecnologia, mas aí é outro papo), e eles questionavam muito os Delegates do .Net. Diziam que esse não é um recurso 100% O.O. Eu defendia que na prática era exatamente a mesma coisa que vocês fazem com Interfaces, só que simplificado, e que nada impede que se use Interfaces do jeito tradicional também…

Entende a questão? É aquela velha discussão entre purismo x produtividade. E nenhum dos lados tem 100% de razão o tempo todo.

4-Obrigado aos que me defenderam! :slight_smile:

Vixe, falei demais…

M

Mudando rapidamente de assunto, amanhã deve sair outro artigo meu, também polêmico. Só que dessa vez eu acho que vou apanhar da turma do VB, hehehe.

É sempre bom polemizar um pouquinho: gera reflexão. Só não vale soco na cara, nem xingar a mãe. =]

M

[size=12]

mateusvelloso:
1.1…

Mateus, como eu falei antes, nós tivemos que resolver o problema de outra forma na época (tem mais de um ano isso) e não pudemos esperar por outra solução. Se os consultores contradados foram incompetentes, aí eu não sei… pelo menos eles e a empresa contratada eram “certificados” pela M$.
Eu mantive contato com o pessoal dessa empresa que eu trabalhei e pelo que me disseram parece que o problema com as sessões já não existe mais, desde algumas versões atrás do .Net. Mas de qualquer forma, preferiram não usar sessões, para não terem um re-re-trabalho, e porque a confiança da tecnologia nesse ponto ficou abalada.

Pena que eu só vou estar de volta ao trabalho na segunda-feira, senão eu iria te mandar um link da MSDN falando sobre alguns objetos HTML que não existem no Asp.Net sem motivos muito claros. Tentei procurar agora mas não consegui achar, porque o sistema de busca do MSDN realmente acaba com a minha paciência… retorna coisas que não têm nada a ver com o que eu perguntei…
Vc tem algum link que tenha texto falando sobre isso?

Quando tivemos os problemas com validação que eu citei, nós chegamos ao ponto de ter que fazer manipulações diretamente no código javascript gerado em runtime pelo Asp.Net. Foi muito ruim fazer isso, porque o código gerado, até hoje, tem uma aparência muito “porca”. Me desculpe falar dessa forma, mas essa é a minha opinião pessoal. Vou fazer um comentário a respeito do que envolve isso, no final.

Existe também um produto similar mas pra C#, se eu não me engano o nome é SharpDeveloper, que tem um acabamento bem melhor que o WebMatrix, mas não é da M$. Acho que o WebMatrix poderia ter uma atenção maior, porque ele tem alguns problemas muito básicos.

Entendo o que vc quis dizer, mas eu acho que a comparação não é totalmente válida. O uso do Excel é um milhão de vezes mais genérico e amplo do que o do VS.Net, talvez isso justifique as porcentagens que vc colocou, mas não vamos entrar no mérito dos detalhes. Eu concordo com o que vc falou, mas eu continuo achando que o VS.Net tem opções demais pro que se propõe. Realmente, nesse ponto entraríamos em outro assunto porque eu acho que isso acontece pelo perfil da M$ querer criar coisas extremamente fáceis pra qualquer tipo de usuário. Dependendo do âmbito de aplicação dessas facilidades a coisa pode se tornar boa ou ruim. Pro Excel pode-se dizer que foi bom, mas pro VS.Net foi ruim, na minha opinião.

Eu tenho uma opinião a respeito disso. Talvez até me crucifiquem por causa disso, mas vamos lá:
Eu trabalho no mercado M$ desde 1998. Desde então já trabalhei com desenvolvimento, teste de software, engenharia de localização de software, um pouco de infra-estrutura, entre outras coisas. Com isso, eu fui criando uma opinião sobre qual é a diferença entre profissionais M$ e não-M$. Falando de uma forma curta, o perfil que eu sempre vi de quem trabalha com M$ geralmente é daquele tipo de profissional que não se importa nem um pouco com o que está fazendo e da forma como está fazendo. O que importa na verdade é o resultado final, a satisfação do cliente e o dindin no bolso o mais rápido possível. Por outro lado, os profissionais não-M$, e mais especificamente Java, têm um perfil, digamos assim, “romântico” de trabalho. É o cara que está preocupado não só com a lógica de negócios, mas em como o produto está sendo criado, está sempre com um olho no futuro pra não criar potenciais problemas para um eventual crescimento do produto e se interessa em saber como as coisas funcionam por trás dos panos, tentando sempre ficar minimamente dependente de outras coisas pra resolver seus problemas.
Qual é o perfil certo? Quem está certo, quem está errado? Existem muitos poréns nisso. Muitos acham que o que importa é a satisfação do cliente e ponto. Outros acham que tem que haver o meio termo entre os dois… enfim, é um assunto imenso.

Vejam bem: esses tipos de perfil que eu falei são de pessoas que trabalharam comigo até hoje. Principalmente de profissionais M$, e não foram poucos. Lógico que no mercado M$ existem ótimos profissionais e no mercado não-M$ também existem péssimos profissionais. Mas até hoje o que eu vi na prática foi o que eu citei.

Um exemplo: uma vez eu fui contratado para fazer manutenção e desenvolvimento de módulos num grande sistema que tinha partes em Asp tradicional e partes em Asp.Net. No dia que eu fui entrevistado eu fui almoçar com o dono da empresa e, papo vai, papo vem, eu perguntei pra ele se usavam alguma metodologia, modelagem etc e qual. Ele me olhou com uma cara de “tá maluco?” e falou “Nada disso! Aqui é pensou, escreveu. Rodou, entrega pro cliente!”. Durante os meses seguintes eu sofri por causa disso, porque basicamente a parte em Asp.Net era apenas uma imensa classe de ± 10mil linhas que fazia tudo. Fazer manutenção era uma gracinha…
Nessa mesma empresa eu ainda passei por uma outra situação onde um dos funcionários questionou de forma rude o planejamento que eu estava tendo com outro rapaz a respeito de uma nova funcionalidade. Resultado: esse funcionário acabou assumindo essa parte. Terminou em uma semana, beleza. No mês seguinte precisou fazer uma grande alteração e levou mais um mês e meio, porque teve que reescrever praticamente tudo, pois foi fazendo de qualquer jeito no começo. No final, eu e o outro rapaz provamos por A+B que do jeito que estávamos planejando isso não teria acontecido. Levaríamos uma semana no máximo, os dois, pra terminar, e menos de uma semana pras alterações necessárias. Por pouco o funcionário não foi demitido.
Isso sem falar que um dos bancos de dados dessa empresa tinha mais ou menos 50 tabelas sem nenhum relacionamento entre elas. A justificativa: “os relacionamentos estão dando muitos problemas, então decididos remover todos e tentar fazer a integridade via código.”

Outro bom exemplo que eu tenho foi quando eu trabalhei com Localização de Software. Nessa época eu tive contato direto com pessoas de dentro da M$. Fiz os projetos de localização do Office, Office Online, Windows, entre dezenas de outros produtos. Acho que foi nessa época que a ficha caiu de fato: a M$ não é nada mais que uma empresa como outra qualquer, mas em proporções maiores. Tem gente tapada como qualquer outro lugar, comete erros bisonhos como qualquer outra, não tem metodologia nenhuma etc…

Também trabalhei com um rapaz de redes que odiava Linux, porque dizia que “tinha que configurar muita coisa. No Windows eu dou 3 cliques e pronto”.

Na própria MSDN Magazine saiu uma entrevista com um desenvolvedor .Net radicado nos EUA, dizendo em um ponto porque tinha desistido do Linux: “é muita coisa pra estudar. No Windows é tudo mais fácil”.

Até hoje todos os sistemas feitos com tecnologia M$ que eu dei manutenção eram muito mal construídos. Sem planejamento nenhum e com pseudo-arquiteturas próprias no estilo bacalhau com batatas. Foi azar meu pegar só projetos assim? Ou a maioria É assim? Não sei.
Então, durante esse tempo todo eu percebi que, na maioria esmagadora das vezes, o profissional M$ tem uma base teórica mínima, muitas vezes nenhuma, enquanto que profissionais não-M$ ocorre totalmente o contrário.
Por que isso acontece? Na minha opinião por causa da filosofia da M$ de tornar tudo mais fácil pra todo mundo, inclusive suas tecnologias de desenvolvimento. Com isso, pessoas com preparo zero podem se aventurar em VBs e ASPs da vida, e fazer coisas que chamam de sistemas. Muitas dessas coisas torturaram a minha cabeça muitas vezes. Por esse motivo também, a remuneração pra profissionais M$ geralmente é bem menor.

Pra concluir esse ponto (ufa…) eu digo que a minha opinião a respeito do que vc falou sobre “falar sobre o negócio” é justamente a falta de preocupação do profissional M$ com o que acontece por trás dos panos em um sistema.

PS.: Estou generalizando mesmo. Senão, teria que triplicar o tamanho do texto. Mas eu tenho consciência das exceções dentro do que eu estou falando.
PS2.: Renato, acho que respondi à sua pergunta com isso, confere?
PS3.: Falei a palavra profissional(is) 10 vezes!

Esse é outro ponto que me irrita na M$: a cada momento surge uma solução pro mesmo problema, mas sem padronização nenhuma, isso quando não é cópia, como o Hibernate. Aí, esqueça o que vc aprendeu antes e aprenda outra coisa totalmente nova, do zero. Isso aconteceu do VS 2002 pro 2003, vai acontecer com o 2005 de novo e também quando o LongHorn sair.
Às vezes quando eu navego no MSDN eu fico assustado com a quantidade de funcionalidades novas que são criadas em pouquíssimo tempo. Muita coisa de segurança, muita coisa de configurações específicas, atualizações de funcionalidades incompatíveis com as anteriores… Menos 1 pra credibilidade.
Sim, Java também tem muito produto pra mesma coisa, mas pelo menos a maioria segue a mesma teoria. Isso sem falar na imagem totalmente voltada pro lado profissional da coisa, ao contrário da M$, que só quer saber de marketing. Muito ruim.

M$ e padrões: eu não entendo até hoje porque a M$ reluta tanto em adotar padrões, metodologias etc consagradas no mercado. Sempre quer criar uma tecnologia própria. Pra quem é profissional “híbrido”, isso é péssimo!
Eu vejo muito isso nos artigos do Mauro Santana. Ele adora alfinetar os outros… vive dizendo que o padrão SQL é vergonhoso, que o W3C não sabe o que faz com os seus padrões, entre outras baboseiras. Gostaria de ver ele falando a respeito do padrão próprio de *HTML que o IE tenta impor ao mercado há anos, antes de ele criticar o W3C.
Há algum tempo atrás eu vi um artigo de gente da própria M$ criticando a UML, e dizendo que iria criar uma linguagem de modelagem própria… prontamente, James Rumbaugh respondeu às críticas de forma bem firme. Pra que isso? Só pra ser “diferente”? Lógico que a UML tem os seus problemas mas acho que isso não justifica criar uma coisa totalmente nova pra só pra ser diferente. Odeio essa postura…

Eu acho que muitos dos problemas que acontecem com as tecnologias da M$ são mostras de uma certa “imaturidade” por parte da empresa. Tudo bem, muitos dos problemas já foram solucionados, mas eles não deveriam sequer ter existido nas versões públicas, como o problema das sessões por exemplo. Nesse caso, como eu falei, a confiança na tecnologia cai.

Bom, não concluí o texto do jeito que eu queria, mas eu dei a essência do que eu penso a respeito disso tudo. Tô tonto de sono já e não aguento escrever mais… :S[/size]

C

Sim, estamos falando da mesma coisa - o que talvez nao tenha ficado claro no seu artigo (e, peco desculpas, nao tive tempo de ler!) seja o foco em se manter pragmatico ao tentar elevar a qualidade do software desenvolvido, mesmo que pra isso se jogue um pouco do purismo de lado.

Aaaaaaaaah :frowning:
Cade a diversao, entao? :mrgreen:

L

Olá

Aconteceu do Fortran 4.1 para o Fortran PowerStation, do C 3 para o C 5, do C 5.x para o C6.0, do VB 1 para o VB 3, do VB 3 para o VB4, do VB 4 para o VB 6, do Access 1 para o Access 2, do FoxPro anterior para o FoxPro3, do 3 para o seguinte, etc…

Realmente a falta de compromisso ou de respeito da Microsoft com a base instalada vem desde o início da empresa. Eles acham que rodar um programinha de migração resolve tudo.

[]s
Luca

M

Achei: http://www.ddj.com/documents/s=9211/ddj050201dnn/

Esse é o tragicômico: A Petition to Microsoft

C

Marcio, voce ta falando do Joel Spolsky?

M

Não, tô falando desses aí que eu coloquei em cima.

Mas vou dar uma lida nesse que vc mandou. :mrgreen: :thumbup:

L

Olá

Observações sobre os links que passaram em relação ao que disse no meu post anterior:

:arrow: Quando falei que os Fortrans eram incompatíveis não estava falanda da mudança do 77 para o 90 que na verdade são linguagens quase diferentes e sim de incompatibilidade de 2 implementações M$ da mesma linguagem.

:arrow: Não acredito que alguém possa ter migrado do Apple para o basic do PC mudando apenas 2 linhas de código em cada módulo a menos que seu programinha não usasse IO.

:arrow: Quando o Sr Joel Spolsky diz: [color=darkblue]“This was literally the first time in living memory that when you bought an upgrade to a Microsoft product, your old data (i.e. the code you had written in VB6) could not be imported perfectly and silently. It was the first time a Microsoft upgrade did not respect the work that users did using the previous version of a product.”[/color] ele está exatamente corroborando o que eu disse, isto é, que sempre a cada nova versão é necessário fazer migração (silenciosa ou não)

Com o Java também já passei por algumas dificuldades na mudança de versão. A mais sofrida foi a passagem do jsdk1.1.6 para o chamado Java 2 (j2sdk 1.2). Uma outra bem dificil foi passar do j2sdk 1.3 para j2sdk 1.4 por causa das mudanças na API de foco no swing. Agora com o Java 5 há a questão dos warnings que incomodam alguns. Mas com tudo isto as mudanças ainda são menores do que a prática de incompatibilidades da Microsoft.

[]s
Luca

M

Marcio, esse artigo é muito interessante! Também gostei dos seus argumentos, são bem consistentes.

Em algumas coisas eu concordo bastante com o artigo, principalmente nas críticas em relação ao VB. Quem me conhece sabe que eu sempre fico meio de nariz torcido em relação a uma linguagem onde você pode dizer: “Não quero ter que declarar variáveis” ou “Não quero ter que fazer conversão explícita de tipos”. Bom, mas o VB tem seu público…

Já em relação a outros pontos que ele coloca, aí da pra fazer um simpósio para discutir o assunto, tem muitas visões aí.

Essa questão da continuidade realmente é difícil. Mas temos que considerar que uma coisa era evoluir as tecnologias de desenvolvimento quando você nem tinha uma biblioteca central de classes (pré-.Net) e outra é disso em diante. Do Framework 1.0 para o 1.1, não se perdeu praticamente nada de compatibilidade, assim como no 1.1 para o 2. Os objectSpaces, como eu disse, nem vão ser lançados por enquanto (exatamente o caso do WinFS que ele comenta no artigo, ele depende disso). E mesmo sendo lançados, não irão matar os DataSets.

Na verdade, do VB4 para o 5 e depois o 6, praticamente nada mudou de significativo, tirando uma bobagem ou outra (como RDO virar ADO) a maioria das coisas ficaram iguais. ESSE era o problema! Uma mudança radical TINHA que acontecer. Precisávamos de um ambiente OO, de um “Framework” central, de liberdade de escolha de linguagens… Daí veio o .Net. Daí pra frente (aí eu corro o risco de me queimar no futuro) eu acho difícil grandes quebras de compatibilidade. Por outro lado, coisas ainda precisam ser definidas, como os WS-*.

Justamente porque você tem que atender muita gente, é difícil às vezes simplesmente falar: “Minha tecnologia de persistência é essa aqui e apenas ela, se vire se não gostar”. Às vezes você tem que oferecer mais de uma opção…

Quando ao W3C, posso procurar por algum artigo, mas te explico aqui basicamente porque já tive que apanhar disso:

Por default, o VS trabalha tudo com estilos dinâmicos (aqueles style= nas tags). Aí ele define posicionamento, cor, tamanho de campos, etc tudo por style. Se você usar desse jeito, aí só o IE vai entender (O Firefox também entende, mas aí você tem que abrir os arquivos de configuração do .Net e dizer a ele que se vier o FireFox, ele não deve filtrar os styles).

Mas você pode não concordar e fazer os posicionamentos via Tables, tamanhos via as devidas propriedades e etc. E mesmo que em algum momento você diga: “Ei, mas tal tag HTML não existe aqui!” (não me lembro de nenhum caso assim) você pode também montar seus custom controls e mandar gerar HTML do jeito que quiser.

Ou seja, não vejo aí nenhum impedimento de trabalhar com 100% puro W3C, certo?

Quanto aos scripts que ele gera, não sei se você já viu mas essa biblioteca é aberta. O que eu fiz foi criar meu próprio textBox com meus próprios Validators com scripts que eu escolhi. Aí ele ja entra com validação de CPF, CGC, CEP, máscaras e coisas que o .Net não traz pronto.

Quanto a você ter conhecido empresas sem nenhuma metodologia… Bem… Também conheci uma centena delas. Tem empresa ai concorrendo no mercado cobrando 14 reais/hora de desenvolvimento (inclusos impostos, análise, gerência de projeto…). Faça as contas e me diga se da pra esperar muita coisa de uma emrpesa dessas.

Infelizmente isso ainda existe. Mas como eu disse, isso está mudando. Aliás, a Microsoft acabou de lançar uma campanha de financiamento e apoio para os parceiros tirarem CMMI nível 3. (minha empresa está em processo de tirar o CMMI já tem 1 ano).

Conheci alguns caras na MS Brasil e de fora responsáveis única e exclusivamente por arquitetura e patterns (o cara do patterns foi um dos criadores do COM+ hehe). Como eu disse, eventos que antes eu nunca imaginaria a Microsoft promovendo estão ocorrendo. Muitos desses sujeitos têm doutorado, trabalharam muito com java, e às vezes até me irritam um pouco quando são muito puristas, hehe. Então podemos sim olhar para o passado, mas como diz meu banco: “Valores passados não são garantia de rentabilidade futura”. :slight_smile:

No mais (aqui eu posso até apanhar de novo) quanto mais eu olho para o C# e para o Java, menos diferenças encontro. Vocês têm httpModule, nós temos httpModule, vocês têm stringBuffer, nós temos stringBuilder. Aliás, vocês agora têm stringBuilder também, né? :slight_smile:

Outra coisa muito interessante no artigo é o XAML. O autor coloca isso como uma tática da Microsoft para vender Windows. Pode ser? Pode. Por outro lado, tem o myXaml que é uma iniciativa open source feita para rodar em outros lugares, e tem o Flex da Macromedia (agora adobe) também com a mesma linha.

Isso mostra que o HTML, um dia (nem que leve 20 anos) vai ter que dar lugar a algo mais consistente, com mais recursos, e se Deus quiser, mais padronizado. Vejo o XAML como uma dessas iniciativas. E sinceramente, falando tecnicamente, eu ADOREI o XAML. Simples, eficiente, organizado… E se a MS não se preocupar em fazer XAML pra linux, pode ter certeza que outros vão fazer, não se preocupe.

Mais um último argumento: Lembre que a interface do VS pode ser toda customizada. Então se você acha que tem botão demais atrapalhando, menu demais, tela demais, se as cores não estiverem boas… pode mudar!

PS. Esse tópico está rendendo boas conversas, tô gostando!

P

Cultura UNIX Clássica: Faça o mais performático e mais configurável, se não tiver algo que precise na libc, crie baseado naquele livro d ealgoritmos na estante em vez de procurar um pronto na Internet. Você é macho ou não é?

Cultura Java Romântica: Você já leu o paper do Japoneis A. King no TSS que fala sobre um padrão inverso em IoC para usar com containers JTA integrados à JMS?

Cultura Programadores java Migrando do VB/Delphi: Eu tenho uma JSP que usa um JavaBean apra conectar ao banco e traz um DTO…como faço pra fazer meu link piscar? tem algum framework pra isso?

Cultura Programadores microsoft VB e borland delphi: Click. Click. Click. Hey, it compiles, let’s ship it!!

O programador Microsoft/Borland padrão (e excluo dessa lista muitos programadores Visual C++ que conheço) é treinado em ferramentas, não em programação. Falando em C++, muitas vezes quando fazia seleção recebia curriculums com:

(o cara para começar nem imagina que ASP clássico não é linguagem de programação)

Eu acho que ferramentas de produtividade são ótimas, o problema é quando você faz seus programadores aprenderem a usar ferramentas e nada mais. Um exemplo clássico é o Delphi (infelizmente VB não é exemplo útil aqui) que tem uma senhora infra estrutura, mas a Borland sempre preferiu investir em fazer programadores quin’n’ndirty do que ensinar a linguagem e plataforma em si. Essa é a cultura Microsoft, ou melhor aidna: Cultura Programador Windows.

Como falei outro dia, java está no lugar certo e na hora certa, Delphi e VB estiveram taaaanto tempo nesse lugar e…nada.

Dê uma olhada em termos de componentes prontos. Quase todos os componentes Java são frameworks ou classes em um jar que você isntancia e usa no seu código. Os componentes visuais só estão chegando agora com JSF e essas porcarias de outras JSR para JavaBeans.

Produzir rápido, todo mundo quer, atender ao negócio, todo mundo quer, a diferença é que alémd a fronteira da cultura Microsoft geralmente se quer também entender o que se está fazendo, não confiar num wizard.

R

SharpDeveloper (eu acho legalzinho, principalmente o editor que é muito show)

mateusvelloso:
3-Não lembro quem me perguntou sobre o que eu falei dos Design Patterns e a tecnologia. Pois bem, um exempo super polêmico: Existe uma discussão no mundo Microsoft sobre o que usar na camada de persistência. Alguns defendem o nHibernate (irmão do Hibernate em .Net), outros o Gentle.Net, e por aí vai… O .Net traz built-in os DataSets, que são mapeamentos de XSD Schemas para classes, propriedades e coleções. Daí como não existia nenhum Design Pattern que falasse de DataSets (agora até estão aparecendo), muita gente preferia não usa-los, mesmo em projetos mais simples onde eles resolviam 100% a necessidade. Agora na versão nova viriam os ObjectSpaces numa abordagem mais inteligente e performática que o nHibernate, mas adiaram isso mais pra frente.

Outro exemplo foi num curso de .Net que eu dei para uma turma de analistas que trabalhavam com java (isso mesmo, já treinei uns 150 profissionais java em .Net, e acredito que nenhum saiu decepcionado com essa tecnologia, mas aí é outro papo), e eles questionavam muito os Delegates do .Net. Diziam que esse não é um recurso 100% O.O. Eu defendia que na prática era exatamente a mesma coisa que vocês fazem com Interfaces, só que simplificado, e que nada impede que se use Interfaces do jeito tradicional também…

Entende a questão? É aquela velha discussão entre purismo x produtividade. E nenhum dos lados tem 100% de razão o tempo todo.

Acho que entendi agora. Acho que não é questão nem de ser purista cara, mas de gente que quer seguir a modinha OO, Design Patterns. Os cara num deve ser assim do jeito que tu ta falando, pelo motivo que realmente verificaram que se usarem nHibernate, Delegates, DataSets etc. vão estragar seus projetos, mas sim por mania de estar na moda, de se cool, de ser elegante. Agora se realmente tu ve que a coisa eh um lixo que vai te detonar, reinvente a roda, uma roda melhor!!!

M

hehehe, se eu disser que já entrevistei mais de um que me jurava que sabia programar em XML… Pelo menos a gente se diverte. =]

Também já vi um professor de MBA dizer: “Essas Advanced Server Pages não prestam!”

Realmente não deve prestar porque nunca ouvi falar desse negócio, hehe

D

Perai! Calma lá! Antes de confundir o povo, java.lang.StringBuffer e java.lang.StringBuilder podem fazer exatamente a mesma coisa, mas suas implementações são bastante diferentes. Diferentemente do java.lang.StringBuffer, o java.lang.StringBuilder não é thread-safe (igual ao System.Text.StringBuilder do .NOT, cuja documentação diz que “any instance members are not guaranteed to be thread safe”), logo, várias threads podem alterar o conteúdo de um StringBuilder simultaneamente.

Mas, enfim, isso não adiciona nada à discussão. Voltamos à nossa programação normal.

J

Cara se não tormarmos cuidado está acontecendo o mesmo com os frameworks.
O pessoal está usando pela inércia não pela necessidade real.
A mesma coisa são com os patterns…
Joãoziho diz:
“Vamos usar DTO, EJB, DAO, Hibernate, Factory, Struts, Swing, Servlet porque esse é o padrão certo”

M

Sim, Daniel, desculpe a piadinha infame, foi só para brincar com os termos parecidos.

Realmente o .Net trata como regra que em qualquer instance member, o controle da thread é problema de quem desenvolve, ao contrário do que for static.

M

Cara se não tormarmos cuidado está acontecendo o mesmo com os frameworks.
O pessoal está usando pela inércia não pela necessidade real.
A mesma coisa são com os patterns…
Joãoziho diz:
“Vamos usar DTO, EJB, DAO, Hibernate, Factory, Struts, Swing, Servlet porque esse é o padrão certo”

Bem, se você consegue fazer alguma coisa com a mesma produtividade e o mesmo nível de controle sobre a aplicação sem usar nada disso, parabéns.

Frameworks são aplicações semi-prontas que servem pra serem estendidas e utilizadas conforme as nossas necessidades. Se não fosse assim, agente ia programar em assebly, que é o único jeito de não usar (quase) nada, montar tudo na mão.

Tem uma empresa de desenvolvimento de sites em Java que está passando por um problema sério, por que as suas páginas não estão abrindo no Firefox (exemplo: http://www.wscom.com.br/ ), eles não usaram MVC, fizeram tudo “dentro” do JSP. Agora imagine o milagre que eles vão fazer pra mudar tudo isso, simplesmente porque ninguém pensou nisso. Se alguém tivesse se preocupado em dividir essas coisas em camadas, montar uma arquitetura bonitinha, o trabalho ia ser bem menor.

Usar frameworks, padrões de projeto, orientação a objetos, orientação a aspectos e todos esses buzzwords da informática, não serve de nada pro cliente, serve é pra nós, os trabalhadores braçais, que vão ter que debugar, limpar, corrigir e mudar aquele resultado. Montar uma arquitetura bem definida só serve pra facilitar o nosso trabalho, não deixar a ferramenta melhor pro usuário final.

Eu, pessoalmente, acho que o clicar e arrastar, os wizards e essas coisas comuns de ferramenta RAD estão a um abismo de distância dos frameworks que nós estamos acostumados a trabalhar em Java.

Teve até um caso interessante na lista Java-BR, um cara tava perguntando como é que ele instalava o Hibernate no PC dele. Disse que foi no site e não achou nada na documentação que falasse sobre a instalação dele no computador. Ele queria wizard até pra dezipar o arquivo?

J

Concordo plenamente.
Usar frameworks e patterns com certeza é fundamental.
O que eu quiz colocar é que devem ser usados com bom senso.
Usá-los por moda não é muito proveitoso.

R

jprogrammer:
Concordo plenamente.
Usar frameworks e patterns com certeza é fundamental.
O que eu quiz colocar é que devem ser usados com bom senso.
Usá-los por moda não é muito proveitoso.

Concordo plenamente.

M

Mas tem muita gente mesmo que não sabe nem o que tá falando e já quer usar “os frameworks da moda”. A quantidade de gente que eu vejo que nem aprendeu a usar JDBC e já quer meter as mãos no Hibernate e os caras que não sabem nem o que é uma requisição HTTP ou um formulário HTML e já querem usar o Struts é terrível.

Tem que ter uma base, não é como usar os programas da M$ que você simplesmente clica e arrasta, tem que entender mesmo o que está acontecendo pra poder controlar a aplicação, mas as pessoas andam com tanta “pressa” que simplesmente se perdem.

C

http://www.joelonsoftware.com/articles/LeakyAbstractions.html :slight_smile:

M

Perfeito :smiley:

R

Maurício, não entendi seu Mas, se está concordando com a gente :smiley:

E esse artigo é muito legal.

M

Opa, erro de sintaxe, to concordando sim :smiley:

Criado 28 de abril de 2005
Ultima resposta 19 de mai. de 2005
Respostas 65
Participantes 16