Código eficiente ainda é importante

Estou utilizando o Google App Engine para desenvolver alguns projetos e, no processo de aprendizado do seu funcionamento e seu sistema de cobrança, me vi pensando na eficiência do código que estou escrevendo.

Código FonteDepois que hardware virou commodity, no sentido de que se tornou muito barato e sem muita diferenciação, código ruim e ineficiente deixou de ser importante para muita gente. Muitos programadores simplesmente desenvolveram a mentalidade de que podem fazer qualquer código “monstro” que o hardware para dar conta disso é mais barato do que melhorar o código. E em parte isso é verdade, pois código bem feito requer programadores bons que não cobram barato.

Mas ultimamente alguns novos conceitos de plataforma podem fazer com que isso mude, coisas como Cloud Computing e Virtualização estão colocando a qualidade e eficiência do código em evidência novamente.

A partir do momento que sistemas como Google AppEngine, Amazon EC2 e Windows Azure (entre outros) permitem que você pague somente pelo poder computacional que utiliza e permitem que suas aplicações cresçam sem com que você se preocupe com o hardware em que sua aplicação roda, as preocupações se voltam novamente para a eficiência do software ao invés do hardware. Principalmente porque isso é o que vai definir se sua aplicação vai ter um alto custo de manutenção ou se você vai na verdade economizar por estar utilizando estas plataformas.

Mas não é somente nesses casos que a eficiência do código é importante, as tecnologias de Virtualização já estão bem difundidas e muitas empresas estão consolidando sua estrutura computacional (servidores e datacenters) em cima disso. Então se um sistema pode rodar em cima de 5 computadores ao invés de 20, isso é economia de dinheiro e energia.

E eu não separei energia de dinheiro sem um motivo. O fato dessas estruturas computacionais economizarem engergia é muito importante do ponto de vista ambiental. Muito se fala hoje em TI Verde e iniciativas que visam diminuir o impacto que a tecnologia tem causado na natureza. Logo, já estamos começando a escutar o termo “código verde” para definir software que é criado com foco na eficiência e na diminuição do consumo de recursos.

Não que não exista preocupação com a eficiência do código em sistemas e sites atualmente, mas normalmente isso é deixado por último e somente quando os problemas surgem é que os desenvolvedores se preocupam com isso. Mas com as tendências de computação em nuvem e SaaS (Software como um Serviço), isso deve ser pensado desde o início.

Quem sabe não deixaremos de encontrar coisas como:

SELECT * FROM users WHERE 1=1

Anúncios

Desenvolvimento Web: Por onde começar?

Algumas pessoas já me perguntaram: Como desenvolver para a Web? Por onde começo? Qual a melhor linguagem? Onde tem mais oportunidades? O que paga mais? A lista de perguntas deste tipo é imensa.

Eu já me fiz essa pergunta algumas vezes, não só para desenvolvimento Web como para quase tudo o que já estudei ou me dediquei. Ainda não tenho todas as respostas, até porque ainda tenho muito a aprender e muita experiência para adquirir, mas posso falar de algumas coisas pelas quais já passei e minha percepção do mercado.

Mercado

Mercado

Aproveitando que já falei nele, como funciona o mercado? De diversas maneiras, na verdade existem vários “mercados” mas duas coisas são certas: está sempre mudando e há espaço para tudo. Você precisa estudar e se atualizar sempre, estar preparado para mudar seus conceitos e ter a certeza que você não sabe tudo. Pode parecer bobagem, mas muita gente acha que porque adquiriu um bom nível de conhecimento sobre determinado assunto pode simplesmente estacionar. Errado. A carreira de desenvolvedor, na verdade qualquer carreira em Tecnologia, exige um constante processo de renovação e aprimoramento dos seus conhecimentos. E estudar coisas novas é sempre bom, vai te transformar num profissional com uma visão ampla e você nunca sabe quando uma oportunidade diferente pode surgir.

Comece olhando para onde você está e para onde quer ir. Se conhecer, suas qualidades e limitações, é muito importante para definir o que focar.

Sendo mais pragmático agora, alguns pontos-chave que você pode considerar:

  • Inglês é fundamental. De novo não só na carreira de desenvolvedor, mas em qualquer carreira na área de tecnologia. Claro que você pode aprender muita coisa sabendo somente Português, mas seu leque de opções é muito mais amplo quando se sabe inglês. Digo isso por experiência própria, pois quando comecei a aprender programação e desenvolvimento eu já tinha uma bagagem muito boa de inglês e isso facilitou muito as coisas para mim.
  • Comece pelo início. Parece estranho ter que falar isso, mas é algo muito comum. Muita gente começa logo aprendendo alguma linguagem server-side como PHP, ASP.Net ou Ruby, ou alguma espécie de front-end como Flash ou Silverlight e esquece do principal, a base de toda a Web: HTML. Isso mesmo, se você quiser ser um bom desenvolvedor Web tem que aprender HTML (e depois XML e XHTML). Num outro texto entro em mais detalhes sobre essa parte.
  • Aprenda algo que você goste. Sério, não é auto-ajuda. Simplesmente é algo que entendi depois de um tempo. Algumas pessoas gostam de design, e podem estudar CSS, Flash (sim, você leu certo), Flex ou até mesmo Silverlight. Quem quer programar pode optar por Java, PHP, ASP.Net, Python, Perl, Ruby etc. O que é melhor? Depende de você, tem gente que diz que Java é mais “enterprise” ou que ASP.Net é horrível, que Python é mais fácil ou que Ruby não “escala”. No final das contas isso não importa muito, primeiro porque você não pode saber apenas uma linguagem, é inevitável que você venha a estudar outras, mesmo que trabalhe mais com uma. Depois porque as tecnologias evoluem muito rápido e se PHP não era suficiente orientada-a-objetos ontem, hoje é. Se Ruby não “escalava” ontem, hoje é usada em projetos enormes como o Twitter. Então se você gosta de alguma tecnologia e quer aprender vá em frente, conheço um cara que trabalhava com Delphi, gostava e sabia muito de Java e hoje está super feliz trabalhando com Ruby on Rails porque o código é bonito (ele diz que tem outras coisas, mas eu sei que é só por isso).

Bom, o texto já ficou muito longo e acho que ninguém vai ler. Nada do que eu disse é novidade, apenas condensei algumas dicas num texto para quem está procurando algum indicativo. Claro que não é o único caminho a seguir e não sei se vai funcionar para você, mas está funcionando comigo. Para finalizar, eu deixo um vídeo muito conhecido do Steve Jobs um tanto fora de contexto, mas que serve para agregar algo de bom ao texto se todo o resto não lhe servir de nada. No vídeo ele discursa para uma turma de formandos da Universidade de Stanford e dá um show de inspiração.

Mantenham-se com fome. Mantenham-se tolos.