O uso racional de recursos só é possível se você conhece bem o sistema para o qual está programando. Conhecer bem o sistema não quer dizer que você precise entrar nos detalhes do kernel. Basta, para isso, entender quais são os recursos que estão disponíveis e como fazer para gerenciá-los.
O uso de recursos em computação exige mais do que o simples conhecimento da plataforma. Também exige conhecimentos específicos como algoritmos e estruturas de dados. Os algoritmos são essenciais para minimizar o uso de processamento e as estruturas de dados são essenciais para descrever a informação de maneira mínima e racional.
Eu sempre bato nesta mesma tecla: algoritmos e estruturas de dados. Os estudantes de computação são levados a crer que é importante conhecer uma linguagem de programação em detrimento do conhecimento de algoritmos e estruturas de dados. Infelizmente, não poderiam estar mais enganados. Sem o bom conhecimento de algoritmos e estruturas de dados o resultado sempre é um programa excessivo: excesso de consumo de recursos, excesso de código desnecessário, etc.
Sou de opinião que a programação deve sempre orientar-se ao uso racional de recursos, ou seja, nunca partir da suposição que os recursos necessários estarão sempre disponíveis. Essa forma de pensar leva ao desenvolvimento de aplicações eficientes. Não basta apenas ser bonitinha: a aplicação precisa, também, ser rápida e responder prontamente ao usuário. Quanto mais uma aplicação demora, menor será a possibilidade de permanecer em uso. Afinal, o principal motivo das aplicações existirem são os usuários.
Muita gente acredita que nunca mais vai estudar depois de deixar a faculdade. Ledo engano. Depois que a faculdade termina é que o estudo de verdade começa. Em qualquer área do conhecimento o estudo contínuo é o que diferencia o conhecimento técnico do profissional no mercado de trabalho. Porém, não se deve sair estudando tudo o que aparece pela frente. Aqui vão algumas dicas para você manter-se atualizado sem precisar morrer doido.
Reserve um horário do dia
Reserve um horário para estudar. Que seja meia-hora. Que seja no seu trabalho. O seu patrão vai agradecer depois, pois você está, na verdade, tornando-se um profissional melhor. Tire o telefone do gancho, saia do seu e-mail e dos messengers. E estude profundamente, de preferência ouvindo alguma música agitada. Música relaxante vai te fazer dormir. Prefira rock.
Estude o que pode usar imediatamente
Seja seletivo ao estudar. Procure estudar algum assunto que tenha a ver com o que está fazendo atualmente. Estude o assunto que possa melhorar o seu trabalho, tornando-o mais fácil para você. A equação aqui é bem simples: trabalho mais fácil, lucro mais alto. Você lucra por fazer o mesmo trabalho mais rápido e terá tempo mais livre para fazer as coisas realmente relevantes na sua empresa.
Varie linguagens de programação
Se você for programador, procure estudar outras linguagens de programação. O objetivo não é tornar-se um mestre Jedi de todas as linguagens, mas aprender paradigmas diferentes que podem ser aplicados na sua linguagem atual. Por exemplo, o estudo de TCL pode lhe ajudar a ter uma visão melhor de listas de dados e essa visão pode ajudá-lo a desenvolver rotinas mais eficientes em linguagens como C ou C++.
Não é incomum ver código de produção que quando compilado apresenta uma quantidade enorme de advertências geradas pelo compilador. Normalmente este é primeiro teste que executo quando estou avaliando a qualidade de um código: a quantidade de advertências que este gera ao ser compilado. Advertências deixadas para trás denotam duas coisas: negligência por parte do programador e baixa qualidade do código final.
As advertências existem para demonstrar que há pontos de problemas potenciais no seu código. Estes problemas não são suficientemente graves para impedir a geração do código executável, mas são problemas ainda assim. O fato do executável final ser gerado não significa que ele presta. As advertências são um aviso sobre a má qualidade do executável final.
O código precisa compilar sem nenhuma advertência. Ponto final. O programador que deixa advertências no código que escreve é negligente. Os problemas estão lá. E vão acontecer quando forem para a produção. O primeiro teste que precisa ser feito é a compilação do código. Código com advertências não pode, jamais, ir para a produção. Nunca!
Até hoje não entendo por que os programadores, principalmente os mais inexperientes, ignoram as advertências acreditando que seu código é livre de suspeitas. A advertência, em si, já é um indício de que algo não vai bem.
A palavra de ordem é objetividade. O grande desafio de qualquer programador é escrever código que seja objetivo, ou seja, a menor quantidade de código possível que resolva um problema proposto. Sem frescura, sem invenção de moda, sem a preocupação de demonstrar conhecimento. Curto e grosso. No entanto, não é sempre assim na área de computação. É comum encontrar engenharia de foguete onde deveria ter, no máximo, uma casinha de sapé.
Design Pattern à força
Há programadores que querem usar design patterns de qualquer maneira em seus códigos. É bonito, é elegante, mas em grande parte do tempo desnecessário. Você deve usar design patterns onde eles são necessários e não por que você os conhece. Infelizmente há programadores que forçam o uso de design patterns para a resolução de problemas de programação. O efeito colateral é código complexo, altos footprint e consumo de recursos.
O resultado é apenas um: código desnecessariamente complexo, de difícil manutenção e com problemas que não acabam mais. Não é incomum ver software coberto de defeitos sem fim que nunca são totalmente consertados.
Desenhe antes de programar!
Gaste todo o tempo do mundo desenhando e planejando o que você vai fazer antes de sair programando como um animal de carga que não olha para os lados. É possível fazer desenvolvimento e design incrementais, mas isso exige muita disciplina. Desenhe antes! Faça esquemas, use papel, lápis, caneta, faça disso uma arte. Não comece a programar a menos que você já tenha estruturado tudo o que você vai fazer antes.
A falta de desenho antes de iniciar a programação leva a código confuso, principalmente para programadores sem muita experiência. Código sem desenho é altamente acoplado, com falhas de encapsulamento e com problemas tais que chegam a ser gritantes. Desenhe antes, programe depois. E entenda que mesmo depois de haver desenhado o que você vai fazer, você precisará ajustar seu desenho durante a escrita do código. É um trabalho interativo.
Leia e pesquise
Pesquise sobre a linguagem e o ambiente que você vai utilizar antes de sair programando. Por que isso? Para evitar quer você saia escrevendo código que já existe. Não acredite e não seja pretensioso de achar que seu código é melhor do que o código de um SDK ou biblioteca. O seu código nunca foi testado pois você o está escrevendo agora. O código do SDK ou biblioteca já foi muito testado, consertado, alterado e evoluído. Programe com humildade.
Replicar em código o que já existe é comum de quem sai programando com viseira, sem olhar para os lados, preocupado apenas com o prazo final. Sim, o prazo de entrega é importante. Mas é importante, também, que o software chegue lá funcionando. Não adianta nada atingir um prazo final com um software cheio de problemas. Isso irá te ocupar desnecessariamente e consumirá os recursos do projeto a ponto de levá-lo ao prejuízo. Dependendo do tamanho do prejuízo seu emprego estará em xeque.
As aplicações de mensagens instantâneas hoje são lugar comum. O ICQ, pioneiro nesta classe de aplicações, não é mais popular. As aplicações mais populares são o MSN da Microsoft, Skype, recém comprado pela Microsoft e o gTalk. E nesse meio há os softwares integrados que permitem usar vários protocolos na mesma aplicação.
Sou usuário do Skype há bastante tempo e também há bastante tempo que a qualidade da aplicação vem decaindo. As chamadas peer to peer, a principal característica do software, caiu de qualidade com interrupções frequentes, baixa qualidade de recepção e travamentos diversos. O MSN nunca teve muita qualidade nas conversas peer to peer, sendo bom para o envio de mensagens instantâneas.
Ontem tive a oportunidade de usar o protocolo do gTalk através do iChat, um software integrado da Apple para o Mac. O resultado foi agradável: excelente qualidade do vídeo transmitido e recebido bem como excelente qualidade de áudio. Houveram algumas pequenas interrupções na conversa, mas nada que fosse suficientemente gritante como vem ocorrendo com o Skype.
De uma forma geral, a aplicação é simples e não permite, por exemplo, a conferência com várias pessoas, uma feature importante e que diferencia o Skype dos seus concorrentes.
