Testes – A importância em um projeto

Na indústria de software, o processo de testes é algo que normalmente não tem a importância devidamente merecida. Apesar do surgimento de metodologias de desenvolvimento baseadas em teste nos últimos anos, grande parte da indústria na verdade não adota testes mínimos necessários para garantir a qualidade de uma aplicação, seja ela desktop, mobile ou web.

Hoje por acaso estava navegando em um site de uma empresa que produz canetas inteligentes e, depois de ter me interessado por um modelo, resolvi clicar no ícone de compra.

Listagem de produtos do site da Livescribe

Qual foi minha surpresa ao cair em uma página desfigurada. Como a empresa sempre me passou uma imagem séria e já está no mercado tem anos, imaginei: ok, deve ser mais um daqueles sites que só funcionam no IE. Perplexo mas já acostumado com esta realidade, lá fui eu para o Internet Explorer para tentar concluir minha compra. Qual foi minha surpresa? Nada também! Ou seja, por causa da falta de testes no desenvolvimento esta empresa não está vendendo seu produto.

Processo de compra da Livescribe com erro

Por mais que a fase de testes seja um custo a mais no projeto, tanto de tempo quanto financeiro, negligenciar esta fase em muitos casos pode significar prejuízo.

Saiba o que é CDN e por que você deve implementar em seu site

Todo webmaster e gestor de projetos web é familiar com a máxima que conteúdo é a arma de seu negócio. Porém, muitos não levam em consideração pequenos detalhes que podem diminuir a experiência de uso de sua audiência: o tempo de carregamento de uma pagina. Por mais irresistível que seja seu conteúdo, se ele demora a carregar, não irá atrair tanta atenção dos usuários e consequentemente provocar uma evasão de consumidores.

Então, qual solução devo adotar? A resposta é contratar um Content Deliver Network (CDN). Veja abaixo cinco razões:

  1. PerformanceO mais óbvio dos benefícios do CDN. Pela existência de cache, distribuição geográfica de servidores, o conteúdo é servido de maneira rápida, considerando o nó de rede mais próximo de seu requisitante. Isto reduz a latência e perda de pacotes, permitindo menor tempo de carga e maior qualidade em streaming.
  2. ConfiabilidadeCom a distribuição de seu conteúdo por vários servidores, uma eventual queda de rede de alguma rota não irá afetar em nada seu conteúdo. Mesmo sob ataques hacker como o DoS, a infra distribuída é capaz de neutralizar o impacto, mantendo a disponibilidade de seu site.
  3. Escalabilidade 

    Com o aumento crescente de dados (textos, imagens, vídeos, etc), você deve estar preparado para picos de tráfego com alto consumo de banda.

  4. Economia financeira 

    A partir do momento que você repassa conteúdos estáticos para servidores específicos para tal, o poder de processamento diminui e fica direcionado nos servidores de negócio, deixando a cargo do CDN o provimento desse conteúdo, reduzindo o custo total de hospedagem.

  5. Posicionamento no resultado de sistemas de busca 

    Além dos quatro benefícios citados acima, um outro ponto bastante importante surge em contexto: o posicionamento em sites de busca. Google e outros sites de busca possuem em seu algorítimo de posicionamento o tempo de carga de cada página. Quanto maior a velocidade de carga de seu site, maiores as chances de ter um bom posicionamento nos resultados de busca.

Empresas de todos os portes estão adotando esta solução. Microsoft, Oracle, IBM, portais de conteúdo e muitos outros já estão aproveitando os benefícios do CDN. E você, o que está esperando?

6 razões para utilizar Big Data

O conceito Big Data vem ganhando importância nos últimos anos. Com a crescente coleta de informações e a necessidade de produzir dados para apoiar decisões cada vez mais precisas, bancos de dados convencionais por si só não vem atendendo a demanda de capacidade para interpretar e gerenciar tal volume enorme de dados.

Áreas como a militar, médica, científica, meteorológica, biológica, biofísica, física, bioquímica, ambiental, econômica, genômica e geológica foram as primeiras a esbarrar com as limitações de capacidade de processamento de dados com bancos de dados convencionais. Terabytes de dados com demanda de processamento em um intervalo mínimo de tempo se tornou um desafio que somente a tecnologia Big Data pode atender. Esta análise pode produzir visões sobre tendências de mercado, prevenir doenças, correlacionar assuntos jurídicos, determinar melhores rotas logísticas, dentre outras aplicações.

Captura, curadoria, armazenamento, busca, análise e visualização são os seis pilares básicos para determinar se você precisa adotar esta tecnologia.

Você ou sua empresa enfrentam problemas similares? Então este é o momento de iniciar a implantação de Big Data em seu negócio.

Dicas para usuários do browser Google Chrome

Se você é usuário do Browser Google Chrome e utiliza o mesmo como ferramenta de trabalho de desenvolvimento vai aodrar este post. Abaixo listo alguns comandos que permitem realizar diversas tarefas “ocultas”, que não estão no menu. Veja a lista:

chrome://dns
Lista os servidores de DNS que foram consultados durante a navegação.

chrome://memory
Lista o uso de memória do programa. Também lista a quantidade de memória utilizada por outros browsers.

chrome://net-internals
Lista informações de rede.

chrome://quota-internals
Exibe informações de uso de disco, inclusive subdividido por sites.

chrome://sessions
Exibe a quantidade de instâncias da aplicação.

chrome://sync-internals
Informações sobre o serviço de sincronia.

chrome://commands
Lista os comandos acima e mais alguns outros conhecidos e acessíveis pelo menu.

A lição mais importante deixada por Steve Jobs

No início de Outubro Steve Jobs, um dos principais ícones da indústria tecnológica, teve sua trajetória interrompida por um câncer. Personalidades e desconhecidos lamentaram sua morte, referenciando suas principais conquistas na indústria e a revolução causada pelos produtos desenvolvidos por sua empresa, a Apple.

Pessoa de personalidade forte, Jobs sempre era reconhecido por ser bastante severo com seus companheiros de trabalho e por ter uma característica que, para mim, proporcionou grande parte do que conquistou: a atenção aos detalhes. Olhando a trajetória do profissional Jobs, em inúmeros momentos encontramos produtos que já tinham aparecido ao mercado antes, mas sem a devida atenção nos detalhes. Vejamos por exemplo tocadores de Mp3, quantos não existiram antes do IPod? Eu me lembro de vários, mas qual implacou sua marca? O único produto que teve seu design muito bem trabalhado e que em conjunto possuía uma loja de músicas a disposição. E smartphone? Lembram do Treo? Muitos não, pois o fabricante não tinha a mesma meticulosidade de Jobs e sua trupe para criar um produto com uma ótima usabilidade. Algum tempo depois então surge o IPhone, um smartphone desenvolvido com um alto padrão de usabilidade e que em conjunto também possuia uma loja de aplicativos disponível ao alcance de um dedo.

Muitas pessoas comentaram e comentarão que o maior legado de Jobs foi o IPod, IPhone, IPad, eu digo que seu maior legado foi ter deixado claro a importância existente nos detalhes, proporcionando identificar oportunidades, que podem não ter sido um sucesso em um passado, mas com sua devida atenção, tornaram-se grandes sucessos de vendas.

Ambiente de trabalho – um fator importante porém negligenciado

Ao longo de minha vida profissional tive contato com inúmeras empresas, dos mais variados portes. Independente do tamanho e até das finanças, diria que grande parte delas negligencia um ponto muito importante: o ambiente de trabalho. Cadeiras não confortáveis, mesas pequenas, computadores obsoletos, iluminação inadequada e falta de isolamento acústico mínimo acabam prejudicando a produtividade de qualquer profissional.

Empresas pensam somente no resultado imediato, economizando na compra de mobiliário e equipamentos porém, na verdade, estão promovendo o inverso. Em médio prazo, esta economia traduz-se em gastos crescentes com profissionais tendo sua produtividade afetada. Mobiliário adequado, cadeiras confortáveis e ergonômicas, ambiente bem iluminado são as chaves do sucesso para o aumento da produtividade.

Um exemplo simples e com um investimento baixo e com resultado em curto prazo é o uso de dois monitores, ou mesmo um monitor com tamanho superior ao atual padrão de mercado. Se você não acredita, faça uma experiência. Inicialmente você pode até estranhar, porém, em poucos dias, verá que sua produtividade irá crescer. Faça o teste!

Falando de estações de trabalho, recomendo atualização de hardware anual. A velocidade das inovações disponíveis no mercado justifica tal prazo.

Para empresas de desenvolvimento de software que estão se estruturando para operar a partir de 2011 ou aquelas que pretendem atualizar seu parque de máquinas, recomendo o seguinte setup:

– Processador de seis núcleos com clock de 3GHz
– 4GB de memória RAM
– Dois monitores de 19”
– Disco rígido de 1TB 7200 RPM
– SSD de 256GB

Ressalto que a empresa deve adequar o hardware à sua área operacional. Uma empresa que desenvolve jogos, por exemplo, deve investir em uma placa de vídeo mais potente.

Outro ponto importante é a constante evolução dos softwares utilizados, mas este será o tema de um outro post.

O cliente auto-destrutivo

Um website é composto da união entre marketing, design e tecnologia da informação. Portanto, o planejamento deve estar presente na concepção estratégica, na criação do projeto gráfico e no desenvolvimento tecnológico. Quando uma empresa busca um profissional ou uma empresa para a implementação de um projeto web, na maioria das vezes as premissas básicas de projeto não foram cumpridas.

Um projeto web, assim como qualquer projeto, deve possuir um planejamento bem elaborado e com objetivos claros. O planejamento é uma técnica e, como tal, se aplica de acordo com a situação e a finalidade. O papel do planejamento é orientar o esforço do trabalho para a obtenção de um resultado.

Um website tem como objetivo principal atingir um nicho de consumidores e/ou potenciais consumidores. Para atingir este público é necessário estudo e criatividade. Qualquer atividade que envolva criação em seu processo, depende da liberdade para atingir seu objetivo com êxito. Diferente do trabalho executado por um arquiteto de casas, onde o objetivo principal é elaborar uma construção de acordo com os anseios do cliente, um arquiteto web deve implementar o projeto pensando no público alvo que, na maioria dos casos, não é a empresa contratante, e sim, os clientes desta empresa.

O principal, ao meu ver, é compreender exatamente o que o cliente precisa e então argumentar com o mesmo a melhor solução para as questões apresentadas. Clientes dos mais variados segmentos tendem a opinar no design e na navegabilidade do projeto web.

O papel de um arquiteto web é mapear o perfil do público alvo de um produto ou serviço e desenvolver o projeto de design e usabilidade focado neste público. Quando o cliente interfere incisivamente neste processo, o resultado final certamente fica comprometido. O cliente, por incrível que pareça, é um dos maiores responsáveis pelo fracasso de um projeto web.

Não adianta projetar um site de óculos para leitura baseado em uma resolução de vídeo de 1280×1024 e uma tipografia estilizada tamanho mínimo para um público que está buscando o site justamente para encontrar o produto que resolva seu problema.

Não há mais espaço para amadorismo. Se um cliente contratar você ou sua empresa para desenvolver um projeto web, busque sempre o êxito máximo. Somente profissionais qualificados tem a competência para elaborar e implementar um projeto alcançando o resultado esperado pela empresa. Portanto, estude e mantenha-se atualizado.

Empresas x Processos x Metodologias

Atuando como consultor me deparo com realidades diferentes em empresas dos mais variados segmentos e portes. O que mais me intriga é que, na maioria delas, metodologias são apenas buzz words (recursos comerciais) para se vender um projeto. O mais chocante é que nem mesmo processos existem!

Falando de ambiente de desenvolvimento, a realidade é ainda mais caótica. Falta de controle de versão, codificação sem padrão, arquitetura capenga, inexistência de testes e ambiente de homologação. Quando adentramos a plataforma de desenvolvimento a nuvem negra só aumenta. Um exemplo corriqueiro é a utilização de orientação a objeto de forma completamente distorcida, não aproveitando os benefícios da reutilização, herança, interfaces, entre outros.

A realidade é que as empresas ainda tem muito que evoluir, a área de desenvolvimento está muito aquém de sua capacidade produtiva.

E você, caro leitor, também constata esta realidade?

Que tal utilizar ferramentas do Google por linha de comando?

Que tal adicionar um contato a sua agenda de contatos do Google direto da linha de comando? E adicionar um vídeo ao YouTube? Pois é, tudo isso já é possível graças a um projeto open source chamado GoogleCL.

Desenvolvido em Python, o projeto utiliza os recursos da API do Google para permitir tal integração.

Alguns exemplos de comandos possíveis:

google picasa create –title “Trip para Fortaleza” ~/fotos/fortaleza/*.jpg
google blogger post –blog “Meu Blog” –tags “viagem, fortaleza” meupost.html
google calendar add “Almoço com cliente”
google docs edit –title “Lista de supermercado” –editor vim

Ótima ferramenta pra quem utiliza as ferramentas do Google!

GoogleCL
http://code.google.com/p/googlecl