Categories
Engenharia de software

Programadores ou apertadores de botão?

Ontem estava conversando com uns amigos sobre os novos programadores que estão surgindo por aí, especialmente os que usam o Visual Studio .Net. O Visual Studio nem parece que foi feito para pessoas que sabem programar. Muitas vezes não dá para fazer certas coisas programando código mesmo, você é obrigado a usar um dos milhares de wizards da ferramenta.

Um dos meus amigos estava contando que quando ele começou a programar estava precisando colocar um combo box numa página e os itens deste combo precisavam ser lidos de uma tabela do banco de dados. Ao procurar na internet para descobrir como isso era feito, as únicas referências que ele encontrou eram de wizards! Simplesmente ele não conseguia encontrar uma página que mostrasse o código para fazer o que ele queria.

Eu ainda não tirei minhas conclusões definitivas sobre isso. Ás vezes eu acho que as pessoas estão ficando preguiçosas, ás vezes eu acho que falta mesmo qualificação para os programadores e ás vezes eu acho que é tudo isso ao mesmo tempo. Ultimamente a quantidade de gente desse tipo tem aumentado muito por aí. As novas ferramentas de desenvolvimento estão tornando os programadores em apertadores de botão!

Programar é uma atividade intelectual que exige conhecimento técnico (linguagens, plataformas, sistemas operacionais, tecnologias), conhecimento específico sobre o negócio para o qual o sistema é desenvolvido, capacidade de resolver problemas e criatividade. Quanto mais as pessoas se preocuparem em aprender sobre ferramentas ao invés de tecnologias e práticas de desenvolvimento, mais vão surgir os apertadores de botão e as características acima vão sendo substituídas por conhecimentos de wizards, opções da ferramenta e botões diversos que fazem coisas mágicas.

Na semana passada saiu um artigo na Artima entitulado Visual Development versus Coding que fala exatamente sobre isso.

A opinião do David Intersimone é a mesma que a minha: é muito legal ter ferramentas visuais para te ajudar a fazer as coisas, note bem, para AJUDAR. Mas se você precisar (e vai), você tem que saber codificar.

15 replies on “Programadores ou apertadores de botão?”

Eu acho o seguinte, os apertadores existem a algum tempo. Quem jah naum ouviu falar que Delphi eh OO….Pode ateh ser que seja, mas ninguem programa OO com Delphi, acho que esses apertadores de botaum existem pq o mercado tem a necessidade de pagar pouco e como dizem os americanos: You can get that you can buy!!! Naum tem segredo, um cara quer pagar R$600,00 por mes para um programador ele vai ter no maximo um bom apertador de botaum…

Luiz,

Com certeza absoluta! Eu não falei aqui sobre isso mas concordo com sua opinião. Se estes caras estão empregados é porque existe espaço para eles no mercado.

Com este modelo de fábrica de software que é adotado por muitas empresas hoje em dia, é necessário realmente ter uma quantidade grande de pessoas que só fazem aquele trabalho de “apertação de botão” repetidamente e sem pensar.

Na verdade, sem querer ser agressivo, isso é um grande preconceito da comunidade Java. Trabalhei por muitos anos na plataforma Microsoft e hoje sou “fluente” tanto no mundo Java quanto no mundo .NET.

A questão é a seguinte: o Visual Studio.NET permite que você escolha se quer apenas apertar botões (e conseguir um resultado, digamos, “não otimizado”) ou fazer tudo por contra própria. Até o Visual Studio 6, muita coisa só era feita via wizard mesmo, mas isso mudou drasticamente com a versão .NET (7.0). O problema é que muitos dos antigos desenvolvedores estavam condicionados aos wizards e, realmente, muito do que se encontra na internet é um monte de screenshots dos wizards disponíveis.

Isso não significa que quem desenvolve para a plataforma .NET é “apertador de botão”: com a disponibilidade de ferramentas hoje, eles existem em praticamente qualquer plataforma de desenvolvimento, assim como os bons programadores. Já está mais do que na hora do pessoal “do Java” reconhecer o .NET como um concorrente à altura e que os verdadeiros desenvolvedores (e não apertadores de botão) dessa plataforma podem sim ser tão bons quanto os verdadeiros desenvolvedores da plataforma Java. Desenvolvo nas duas tecnologias já há algum tempo e sei que também no Eclipse, NetBeans e Sun Studio é bem possível ficar só apertando botões também (e conseguir o mesmo resultado “não otimizado”).

Oi Lucas,

Eu apenas escreví um artigo com um exemplo do que aconteceu e por acaso isso aconteceu com o Visual Studio .Net. Foi verdade mesmo, eu não inventei essa história. 🙂 Em momento algum eu descartei a hipótese disso acontecer com outras ferramentas, linguagens, etc.

Não me considero parte do “pessoal do Java” ou de qualquer outra linguagem. Me considero um desenvolvedor de software e estudo várias linguagens e tecnologias para que eu possa ter vários recursos e poder escolher o melhor deles na hora de resolver um problema. Também não tenho preconceito nenhum contra linguagens, muito pelo contrário. Trabalho com atualmente com Java, estou fazendo um projeto pessoal no trabalho que envolve Ruby e Python, semana passada eu fiz umas coisinhas em Perl e por aí vai.

Só tenho um pé atrás com a Microsoft porque os caras sempre tentam reinventar a roda e dar tiros para todas as direções. Eu lembro quando teve o “boom” do Ajax que a Microsoft resolveu criar o Avalon, o Ajax da Microsoft. Qual o problema de usar a prototype.js, Scriptaculous e outras coisas que já existem no mercado? Simplesmente não gosto muito da “filosofia” da empresa.

Além disso tudo eu lí em algum lugar que não me lembro qual que uma estação de desenvolvimento Microsoft com todas as licensas necessárias custa na faixa de $5000 dólares! Enquanto isso neste momento estou na minha estação Linux que o único custo é o hardware e a qualidade é muito superior: fica ligada por vários dias e não trava, não tem memory leaks, não tem telas azuis, funciona, é rápida e não deixa nada a desejar para nenhum Windows.

Eu não vejo nenhuma justificativa razoável hoje em dia para utilizar .Net em um projeto de software com TANTAS alternativas melhores e ainda por cima gratuitas, como Java, Ruby on Rails e outros mais.

Quanto aos apertadores de botão, certamente existem os apertadores de botão do Eclipse, porem como o Eclipse é menos user-friendly que o Visual Studio este tipo de apertador de botão existe em menor quantidade. As pessoas normalmente preferem usar o Visual Studio porque é bem mais fácil. Eu mesmo quando comecei a programar em 1998 foi com VB, e eu no início só sabia apertar botões. 😀 É o mesmo caso do Windows e Linux: como o Linux é menos user-friendly normalmente quem utiliza é um pouco mais safo e a quantidade de “leigos” usando é bem menor.

Bom, não sei porque eu escreví isso tudo. Finalizando, eu realmente não sou chegado em coisas da Microsoft porém não tenho preconceito contra eles. Acho que eles produzem muitas coisas legais mas eu os admiraria mais se ao invés de lutar contra tudo e todos eles se juntassem com a comunidade e começassem a fazer coisas legais. É como o Google faz, por exemplo, contribuindo com vários projetos e criando os seus próprios.

Você pode desenvolver com .NET sem gastar nada. O framework é de distribuição gratuita e você pode usar IDEs como o SharpDevelop (http://www.icsharpcode.net/opensource/sd/). A Microsoft cobra pelo uso da sua IDE, caso você queira utilizá-la. Não vejo nada errado nisso, é o modelo de negócios deles. Mas, realmente, a empresa é bem “cabeça dura” mas, se você prestar bem atenção e deixar os preconceitos de lado, vai ver que isso vem mudando gradativamente (ou eles mudam, ou morrem).

Quanto à estabilidade, sistemas .NET podem sim ser muito estáveis e há várias iniciativas para suportar o framework em sistemas não-Windows. Vale lembrar também que o .NET framework é gratuito e aberto… o Java era apenas gratuito até pouco tempo atrás e ainda não é completamente aberto. Você pode, a qualquer momento, fazer uma implementação do .NET framework ou uma linguagem sobre ele, já com o Java a história (ainda) é um pouco diferente…

A vantagem que o Java tem hoje é a sua comunidade, que é muito mais madura devido aos “anos de estrada” da plataforma. A comunidade .NET ainda é pobre em comparação e está dandos os primeiros passos… tanto que a maioria das iniciativas para a plataforma são “ports” de ferramentas/frameworks Java (NAnt, NUnit, NHibernate, Spring.NET etc).

Em resumo, não quero criar guerra entre Java e .NET, já sabemos o que dá isso… só achei mesmo que o post ficou um pouco parcial, mas concordo em grande parte com a sua resposta ao meu primeiro comentário.

Parabéns pelo blog e continue o bom trabalho!

Tudo bem. Eu lí novamente e talvez eu realmente tenha exagerado um pouco no meu post e dado uma impressão “anti-Microsoft”. 🙂 Como disse, não tenho nada contra nenhuma plataforma ou linguagem, mas detesto apertadores de botão, sejam eles apertadores de NetBeans, Eclipse, Visual Studio ou o que mais estiver na moda nessa semana (roubei esta frase do Phillip, muito boa)!

Brigado pelos elogios e comente sempre 😀

[ ]s, Guilherme

Boa noite!
E a como fica a produtividade?
Os desenvolvedores que usam .Net conseguem resolver os problemas de seus clientes assim como os desenvolvedores Java certo?
Qual é o problema de apertar botão ou não?
Eu sou iniciante no mundo do desenvolvimento de software, porém eu já reparei que o pessoal que usa Java ou Linux possui está mania de se achar melhor que os outros (Microsoft), pois digitam várias linhas de códigos/comandos, mas a tecnologia está aí não só para facilita a vida do usuário final. Se fosse assim os desenvolvedores ainda estariam levando horas só para fazer uma tela no ms-dos.
Por favor, eu não quero criar nenhuma confusão esse meu comentário é uma forma que eu achei de esclarecer uma questão antiga que ronda a minha cabeça.
Será que os desenvolvedores não têm medo de que um dia seu trabalho não será mais necessário visto o avanço da tecnologia?

Atenciosamente,

Daniel

Daniel,

Não confunda as coisas. Eu acho SIM que devem existir ferramentas para facilitar o seu trabalho. O que eu NÃO acho é que as pessoas devem priorizar aprender sobre ferramentas ao invés de aprender linguagens ou tecnologias.

Por exemplo, quantos botões de ferramenta criam para você um objeto “Observer” (http://en.wikipedia.org/wiki/Observer_pattern)? Quantos botões de ferramenta criam um Webservice REST “canônico”, orientado a recursos, do jeito que deve ser? Quantos botões de ferramenta criam pra você testes unitários com JMock para testar sua aplicação antes mesmo de desenvolvê-la? Quantos botões de ferramenta criam widgets dinâmicos com javascript processado em server-side utilizando Rhino?

Todas estas perguntas têm exatamente a mesma resposta: NENHUMA ferramenta faz isso! E se você acha que estas coisas você raramente utilizará, eu te digo que todas elas e mais algumas fizeram parte da última semana de trabalho da minha equipe na empresa em que trabalho.

Quando eu escreví sobre apertadores de botão, me refiro a pessoas que acham que programar é APRENDER A USAR O VISUAL STUDIO OU ECLIPSE e só. Não é nem perto disso.

Vou repetir mais uma vez, para ficar bem claro:

“Programar é uma atividade intelectual que exige conhecimento técnico (linguagens, plataformas, sistemas operacionais, tecnologias), conhecimento específico sobre o negócio para o qual o sistema é desenvolvido, capacidade de resolver problemas e criatividade.”

Se você é iniciante no mundo de desenvolvimento de software, estude ORIENTAÇÃO A OBJETOS, ALGORÍTMOS, DESIGN PATTERNS, LINGUAGENS DE PROGRAMAÇÃO e etc. Quando você sabe isso tudo, AÍ SIM você terá muita produtividade com as IDEs modernas. Ou este caminho ou então você poderá escolher ser um ótimo apertador de botão, que conhece todos os menus do Visual Studio ou Eclipse e sabe usá-los como ninguém! 🙂

“… é muito legal ter ferramentas visuais para te ajudar a fazer as coisas, note bem, para AJUDAR. Mas se você precisar (e vai), você tem que saber codificar.”

Deu pra entender agora? 😀

Abraços,
Guilherme

Obrigado pelo esclarecimento!
Eu apenas estava pensando no pessoal do outro lado. Pois, eu já estou estudando tudo o que você citou. Eu não quero ser mais um apertador de botão hehehe.

Boa tarde.
Não sou programador mas trabalho com TI a 4 anos.
O que tenho percebido, não só na programação, mas em outras áreas de conhecimento, como linux por exemplo, é que cada vez mais existem ferramentas gráficas que fazem o “trabalho sujo” por vc. Ex: um firewall com interface gráfica, basta vc apertar esse e aquele botão no browser que a regra x está criada, fácil né. Porém pouco se aprende e pouco se sabe com relação ao que está acontecendo “por trás” desses cliques.
É uma pena, mas isso parece uma tendência.

Att.
rafael vergani.

Olá,

Seguindo a linha dos anti “apertadores de botões” eu tenho tentado seguir o caminho do entendimento de como as coisas funcionam ao invés de partir para os wizards, muito em voga no VStudio.
Por isso, hoje estou tentando entender o NHibernate, que é nesse momento pra mim o meu maior desafio.
Tenho visto várias implementações e confesso que tenho um mundo de dúvidas que não tenho tido muita facilidade em achar as respostas, pois o que vejo (infelizmente) ainda são profissionais que não dividem seus conhecimentos e preferem manter aquilo que sabem escondidos, fazendo parecer algo do outro mundo, e com isso, mantendo outros profissionais de fora.
Bem, eu gostaria de aproveitar esse blog e postar aqui um pedido de ajuda no sentido de saber como posso me inteirar mais sobre o NHibernate (fora o site http://www.hibernate.org que já conheço). Tenho visto uma série de outras ferramentas em paralelo como enterprise library, Rhino, Castle (http://www.castleproject.org/) e confesso que não sei pra que isso tudo funciona e como funciona.
Se for possível, agradeço a ajuda, para que assim eu consiga me integrar mais rápido ao grupo dos “Não apertadores de botão” !!!
Abraço forte e parabens pelo site.
Marcelo.

Oi Marcelo,

Você já tentou se inscrever em foruns e listas de discussão sobre estes assuntos? Certamente você encontrará a informação que procura ou alguém poderá te apontar links interessantes.

Desculpe não poder ajudar muito mas .Net não é exatamente a minha especialidade. 🙂

Abraços,
Guilherme

Leave a Reply to Luiz C. F. dos Santos Cancel reply

Your email address will not be published. Required fields are marked *