O Valor e o Hype no desenvolvimento de software

Recentemente participei de um evento aqui em Belo Horizonte no qual tive um daqueles momentos “clic!”.
Ficou nítido pra mim que algo que deveria ser óbvio para todos da nossa área não é: a questão do valor em software.
O que é valor? Quando o hype se instaura? O que diferencia um de outro? Aonde erramos?

Coloquei todos estes questionamentos em um post no meu blog: http://www.itexto.net/devkico/?p=1148

Meu objetivo era primeiro obter uma definição formal de valor dentro de TI. Acredito que tenha chegado a uma.
Em seguida, resolvi tratar do problema que causa nosso afastamento de uma questão tão básica: o hype e quem o cria: o hypista.

Espero com isto divulgar este questionamento que, na minha opinião é vital para nossa área e gostaria de ouvir a opinião de vocês.

Sempre levantando belas polêmicas.
Enfim, isso sempre vai acontecer, a supervalorização que damos a algo tem a ver com nossa percepção e, essa experiência particular é parcial e errônea.
Qual a razão disto? Vejo pelo lado mais claro, quando trocamos o JDBC e suas milhares de linhas de query escritas “na mão” por algum framework ORM (leia-se hibernate), não pensamos nos muitos quilos de arquivos XML ou de anotações que teremos que criar e o sem-número de inúmeros possíveis erros e problemas que teremos.
Como diria um ex colega de trabalho “prefiro usar jdbc e eu mesmo customizar as minhas consultas”. Não que hibernate seja de todo ruim e, só é para os que não o conhecem bem. Mas existem coisas mais “manuais” e que nos permitem o total controle.
É o mesmo que fazer uma pesquisa de opinião sobre carros automáticos e manuais. Tem sempre quem prefira um ou outro por n razões.

Realmente… uma conversa com um desses caras é sempre no mínimo peculiar.

Eu percebi um padrão de marketing-porrada que eles costumam aplicar. Qualquer coisa dita contra a tecnologia deles é tratada como completa ignorância da sua parte :slight_smile:

Se você não usa a tecnologia dele é porque você é antiquado e não sabe o que é bom em desenvolvimento de software, por que não importa qual o problema, a tecnologia do cara é “a melhor”, e se você não a utiliza, você não presta.

Discutir com “hypistas” dificilmente rende algo, mas pelo menos eu me divirto :slight_smile:

[quote=Rodrigo Sasaki]Realmente… uma conversa com um desses caras é sempre no mínimo peculiar.

Eu percebi um padrão de marketing-porrada que eles costumam aplicar. Qualquer coisa dita contra a tecnologia deles é tratada como completa ignorância da sua parte :slight_smile:

Se você não usa a tecnologia dele é porque você é antiquado e não sabe o que é bom em desenvolvimento de software, por que não importa qual o problema, a tecnologia do cara é “a melhor”, e se você não a utiliza, você não presta.

Discutir com “hypistas” dificilmente rende algo, mas pelo menos eu me divirto :)[/quote]
Por que parece que você está falando do saoj e do mentawai?

Na verdade eu estava me referenciando a uma conversa com um “Hypista” rubista hehe, nada a ver com o saoj.

Por outro lado, no caso dele, eu acho que os argumentos dele contra o hibernate tem sim motivos muito fortes e concordo com a maioria.

Na verdade eu estava me referenciando a uma conversa com um “Hypista” rubista hehe, nada a ver com o saoj.

Por outro lado, no caso dele, eu acho que os argumentos dele contra o hibernate tem sim motivos muito fortes e concordo com a maioria.[/quote]
De fato, o pessoal do ruby (em específico do ruby on ) é bem chato neste ponto.
Quanto ao saoj, ele é um sujeito perspicaz, inteligente, que vai a fundo na ferramenta que vai criticar. E por isso tem ótimos argumentos (o melhor é relativo ao log4j).

Oi gente, o que o Saoj faz na realidade é sintal de maturidade.
Se você for analisar o discurso que ele usa vai perceber que na realidade ele está lidando com a questão do valor o tempo inteiro.

A pergunta que ele se coloca é: “vale realmente à pena usar isto no meu projeto? O que eu ganho com isto? O custo é inferior ou superior ao ganho? Quais as outras opções?”
E em seguida ele mostra as outras opções. E para a opção que escolheu, vêm com uma justificativa.

É a justificativa por trás da escolha que forma o valor. Então, temos aqui alguém que, concordemos ou não, tem um nível de maturidade que muitas vezes tá faltando na nossa área.

[quote=kicolobo]Oi gente, o que o Saoj faz na realidade é sintal de maturidade.
Se você for analisar o discurso que ele usa vai perceber que na realidade ele está lidando com a questão do valor o tempo inteiro.

A pergunta que ele se coloca é: “vale realmente à pena usar isto no meu projeto? O que eu ganho com isto? O custo é inferior ou superior ao ganho? Quais as outras opções?”
E em seguida ele mostra as outras opções. E para a opção que escolheu, vêm com uma justificativa.

É a justificativa por trás da escolha que forma o valor. Então, temos aqui alguém que, concordemos ou não, tem um nível de maturidade que muitas vezes tá faltando na nossa área.[/quote]

Kiko,excelentes colocações.

É esse tipo de atitude que vc citou acima que diferencia um ‘profissional’ do ‘menino da TI que é chamado quando cai a Internet’:saber embasar seu ponto de vista baseado no que importa, que é o ROI.

E,infelizmente,nossa área ainda está muito populada pelo segundo tipo que eu citei.

Cara, esse post foi muito realista e teve um toque especial de agressividade… quase senti cheiro de sangue, hehe.

[quote=victormagno]Cara, esse post foi muito realista e teve um toque especial de agressividade… quase senti cheiro de sangue, hehe.
[/quote]

O meu? :smiley: :smiley:

Primeiro temos que entender que diversidade de opiniões sempre vai existir e é fundamental. Sem Republicano não tem como existir Democrata e vice-versa.

Agora convicções existem e se o cara não defender a convicção dele, vai defender o que?

Tb acredito que é possível mudar suas convicções, porque a pessoa está sempre aprendendo e evoluindo.

Dito isto eu digo que o Java é um lixo. Não a plataforma e não a linguagem em si, que na minha opinião é uma das mais simples, robusta, produtiva e eficiente que já existiram. Mas o ECOSSISTEMA do Java é um lixo.

Por que vcs acham que a grande maioria das startups usam Ruby on Rails e não Java?

Os caras que perceberam essa zona e se revoltaram foram todos para Ruby (RoR), Python (Djanto) e até mesmo .NET (Steve Balmer!). Qualquer um que se depara com Strust1, JSF1, EJB1, Hibernate3, Spring e tem o mínimo de noção das coisas sai correndo na hora.

Já eu, porque sou maluco e porque gosto de programar, refiz a porra toda e ganhei o título que sustento com orgulho de o maior reinventor de roda do universo. Quando alguém me “xinga” disso eu tomo como um belo elogio.

Então voltando a questão do post do Kico que é valor x hype, eu concordo com o post dele. Valor é algo subjetivo. Para alguns é produtividade e simplicidade. Para outros é especificações e patterns. Hype acontece quando alguma coisa surge e resolve a frustração de muitos (+ marketing). O problema é que toda paixão tem exageros. É natural o cara achar que para quem tem um bom martelo, todo problema é prego. Perfeição não existe.

[quote=kicolobo]Oi gente, o que o Saoj faz na realidade é sintal de maturidade.
Se você for analisar o discurso que ele usa vai perceber que na realidade ele está lidando com a questão do valor o tempo inteiro.

A pergunta que ele se coloca é: “vale realmente à pena usar isto no meu projeto? O que eu ganho com isto? O custo é inferior ou superior ao ganho? Quais as outras opções?”
E em seguida ele mostra as outras opções. E para a opção que escolheu, vêm com uma justificativa.

É a justificativa por trás da escolha que forma o valor. Então, temos aqui alguém que, concordemos ou não, tem um nível de maturidade que muitas vezes tá faltando na nossa área.[/quote]

Cara, muito bom o seu texto. Aliás gosto muito do que você escreve, Kiko. Mas vale uma ressalva.

Eu fico temeroso com certas afirmações do tipo: faça o que o cliente precisa fazer. É difícil avaliar o que exatamente o que o cliente precisa. Há doze anos atrás eu ouvi um dono de empresa dizendo que o produto que ele tinha atende perfeitamente ao cliente, ao cliente pouco importava se era Delphi ou Clipper, se era Dos ou Windows. Para o cliente bastava que resolvesse o seu problema. Eu discordei dele na época, mas discordei mais por ser hype quanto ao Delphi, do que pelo valor que daria ao cliente.

Na verdade eu era sim Hype, defensor do RAD e da ferramenta pela qual eu tinha me encantado. Mas por tras daquilo havia algo que eu não tinha notado, e que na realidade pouco me importava (pois eu queria era largar o Clipper): O software daquela empresa estava envelhecendo. Ele resolvia os problemas do clientes todos, mas logo a exigência aumentaria.

Hoje isso é obvio, mas na época não era tanto. Nós não sabiamos que rumo as coisas tomariam e sistemas em dos ainda existiam aos montes. Hoje a empresa não existe mais e o dono dela trabalha como consultor para empresas do ramo contábil.

Outro exemplo é o saoj que já citaram no tópico. Há algum tempo ele vem levantando “questões” sobre o Hibernate. Eu tinha essa ferramenta como intocável dentro do ambiente java. Pra mim era algo sobre o qual e sequer pensava, eu aprendi a mapear tão logo aprendi a sintaxe java. Aprendi a escrever hql, ao mesmo tempo que aprendia a lidar com servlets e coisas do gênero. Nunca me passou pela cabeça que ela poderia ser esse monstro todo que alguns apontam.

Mas ele é. Se não esse monstro, ele é uma ferramenta com uma curva de aprendizado muito grande, isso muitas vezes só para substituir algo que é bem mais simples sem ele.

Eu, pessoalmente, preciso do Hibernate, ou de alguma ferramenta que o substitua. Eu uso muito nos meus modelos conceitos que seriam dificeis mapear sem eles. Como polimorfismo, composição etc… (se houver algo que exista e ajude estou disposto a estudar). Mas a curva de aprendizado dele é realmente terrível.

Muitas vezes nós mesmos estamos presos a mesma coisa, lenta, difícil sem sequer se dar conta de que ela nos atrapalha.

O que eu quero dizer é que eu tenho medo que esse discurso mais conservador, mais anti-hype, seja convertido pelo retrógrados e reacinários em desculpa para a sua preguiça imensa de se atualizar, de buscar coisas novas, novas soluções para as gambiarras que eles estão fazendo a seculos, mas não deixam de lado porque “não tem valor para o cliente”.

E entre os retrógrados e os hypes-mala eu fico com os hypes. Pelo menos preguiça de inovar eles não tem.

Oi,

Eu sempre enxergava o “Hypista” pelo lado comercial (vendedor, comerciante etc…) e não pelo lado “programático viciado” (Algo do tipo: Que?! Android?! Não, não! Compra um Iphone)…

Se é que vocês me entendem…

Tchauzin!

[quote=saoj] Para alguns é produtividade e simplicidade. Para outros é padrões e patterns.
[/quote]

E acima desses dois,existe o cara que manda na p*rra toda e acha que valor é $$$

Kiko Lobo, adorei seu texto. É bem por ai mesmo.
O lobby (hypista) tá em todo o lugar.
Quem tá iniciando agora é quem mais sofre por não ter muita referência. Compra a idéia e vai nela por anos sem questionar.
As vezes é até capaz de bater num colega por causa do “amor” à tecnologia que teve o <strike>azar</strike> (sorte) de estudar.
http://www.guj.com.br/java/285737-voce-que-ama-javarelato-meu
http://www.eletronicoblog.com/post/7299/fanatismo-pela-apple-e-semelhante-a-devocao-religiosa-de-acordo-com-cientistas

Eu tenho a estratégia de dár maior valor à segurança e simplicidade. Penso que se eu investir muito tempo de estudo em uma ferramenta de alta produtividade, eu reduzo o número de pessoas capazes de trabalhar no meu sistema. Pra mim, isso é sempre algo a ser evitado. Sou tão chato nestes pontos que tento escrever um código que possa ser utilizado em java, c# ou mesmo C++ só pra não ser pego de surpresa.
Tem opção pra caramba de ferramentas assim e eventualmente uma ou outra empresa compra a idéia achando que tá fazendo o melhor negócio do mundo e acaba sem encontrar “profissional qualificado” pra trabalhar. Isso quando não cria um indecifrável monstro de 7 cabeças.

saoj tá certo: Vale apena reinventar uma roda dentro das próprias especificações.

Cara, mas imagine algo: Se o cara trabalha com java, somente com java e não é capaz de, em pouco tempo aprender rails ou grails ou play, ou mesmo vraptor, mentawai ou seja que ferramenta for, diretamente ligada ao trabalho dele é porque ele é fraco. Um bom programador deve ser capaz de lidar com diferenças e ser relativamente rapido em se adaptar a outros ambientes.

Eu sempre vi esse argumento de que “nao vou achar programador para x” muito fraco. Lógico, não estou falando de linguagens exóticas e ultrapassadas, mas faz parte das skills de um bom programador se adaptar aos projetos e as ferramentas. E se preocupar com isso é assumir que só vai ter programador meia boca no seu projeto.

Sim, concordo muito contigo sobre isso.
Sendo ele bom ou “meia boca” as empresas vão ter que preparar os funcionários pra os cargos.
Só que a maioria das empresas querem o profissional prontinho e que se enquadre exatamente dentro do quadro dela e diante de tantas opções isso é bem difícil. Muitos sabendo disso memorizam os macetes e preenchem a vaga.

A TI é uma área muito dinâmica. Um dia vc tá trabalhando com JDBC, no outro Ibatis, Hibernate, regex, swing ou FX… Percebe que o conteúdo é muito grande e as vezes fazem as mesmas coisas?

Se o funcionário conhecer bem sobre a linguagem, metodologias, patterns e etc, ele vai pegar facilmente qualquer ferramenta que a empresa tiver utilizando. É até melhor ter este tipo de funcionário do que um que memorizou os macetes feijão com arroz de um spring ou um hibernate. Entender por dentro das ferramentas e frameworks é mais útil do que saber os macetes de um único framework.

Putz, concordo 200%, por isso que não tenho essa preocupação sobre qual framework/tecnologia usar baseado no numero de gente no mercado capaz de usá-lo. Posso usar qualquer framework que me de produtividade porque eu sei que vou ter programadores capazes de se adaptar a eles porque serão programadores de verdade e não configuradores de framework.

[quote=YvGa]
Putz, concordo 200%, por isso que não tenho essa preocupação sobre qual framework/tecnologia usar baseado no numero de gente no mercado capaz de usá-lo. Posso usar qualquer framework que me de produtividade porque eu sei que vou ter programadores capazes de se adaptar a eles porque serão programadores de verdade e não configuradores de framework. [/quote]

Eu tive oportunidade de trabalhar com Seam. É o mais demorado que conheci.
Não falta profissional, falta empresas pacientes em dar treinamentos.
Este tempo e gasto deveriam ser das empresas.
Eu parei de investir tempo e dinheiro estudando os frameworks x e y porque mesmo estudando não existe garantia de retorno do seu investimento neste quesito. Tenho e focado mais nas metodologias e patterns. De vez em quando reinvento uma roda só por exercício e estudo.

[quote=Luiz Augusto Prado][quote=YvGa]
Putz, concordo 200%, por isso que não tenho essa preocupação sobre qual framework/tecnologia usar baseado no numero de gente no mercado capaz de usá-lo. Posso usar qualquer framework que me de produtividade porque eu sei que vou ter programadores capazes de se adaptar a eles porque serão programadores de verdade e não configuradores de framework. [/quote]

Eu tive oportunidade de trabalhar com Seam. É o mais demorado que conheci.
Não falta profissional, falta empresas pacientes em dar treinamentos.
Este tempo e gasto deveriam ser das empresas.
Eu parei de investir tempo e dinheiro estudando os frameworks x e y porque mesmo estudando não existe garantia de retorno do seu investimento neste quesito. Tenho e focado mais nas metodologias e patterns. De vez em quando reinvento uma roda só por exercício e estudo.
[/quote]

Concordo com ambos!

Também acho bobagem querer se especializar nos frameworks do momento, achando que isso vai continuar pra sempre assim.

Eu procuro estudar aquilo que a empresa exige obviamente, mas não deixo de ficar antenado nas novidades e em outros conteúdos que me atraem interesse…

E exercitando sua capacidade de aprendizado, você aprende mais e com maior rapidez, e daí pra frente é só lucro!

:smiley: