Mostrando postagens com marcador Informática. Mostrar todas as postagens
Mostrando postagens com marcador Informática. Mostrar todas as postagens

Intel Centrino Duo. Revolutionary Mobile Performance. (With Jacques Villeneuve)


Contratando desenvolvedores: você está fazendo errado

Texto original em Inglês de Udo Schroeter disponível em http://devinterviews.pen.io

Quando Evan Carmi postou sua experiência em uma entrevista de emprego no Google (http://ecarmi.org/writing/google-internship) no HN, eu me lembrei dos meus dias iniciais. Em mais de uma década de entrevistas para empresas startups de TI, não fizemos nenhum progresso. Eu fui parte do problema por alguns anos. Eu simplesmente copiava um mecanismo de contratação que parecia padrão na época e, ao fazer isso, falhei miseravelmente no que dizia respeito ao principal objetivo que uma empresa deve ter ao contratar desenvolvedores. Hoje, as primeiras páginas de tecnologia estão cheias de esforços de Larry Page para transformar a empresa, mas acredito que os problemas de performance em empresas focadas em desenvolvimento podem estar atrelados a seu DNA devido a um processo falho de contratação.

Como nós fazíamos

Meu co-fundador e eu estávamos administrando uma pequena loja de desenvolvimento web na Alemanha. Começamos literalmente do porão da casa de nosso amigo. Com o tempo crescemos, e nos mudamos para um escritório de verdade. No início foi fácil encontrar novos colaboradores, nós podíamos apenas pedir para nossos amigos virem trabalhar para nós. Claro que esse modelo não funcionava em grande escala, mas ele fazia uma determinada função muito bem: garantia que contratássemos pessoas que eram boas para a empresa, tanto no sentindo pessoal quanto no profissional. Até que chegou o dia em que tivemos que preencher posições para as quais precisávamos trazer pessoas de fora.

Uma das características do serviço regional de desemprego na Alemanha é que eles te enviam uma pilha enorme de CVs, poucas horas depois de você ter falado com eles no telefone. Eu fiquei felizmente surpreso que não tivemos que contratar uma agência para fazer isso. Juntamente com os CVs que já havíamos recebido de pessoas que se inscreveram para a posição através de nosso site, agora tínhamos que fazer uma triagem. No final das contas, concordamos sobre 12 os melhores e os convidamos para uma entrevista. Essa é a parte em que tudo deu errado.

A entrevista padrão para desenvolvedores

Um candidato chegaria, normalmente usando seu melhor terno e sua melhor gravata, e nós sentaríamos para ter uma conversa. Essa conversa era algo essencialmente parecido com um exame oral de faculdade. Eu pediria a ele para codificar algoritmos para todos os problemas de CS bonitinhos, e obteria respostas com vários níveis de qualidade. Alguns deles atiravam suas respostas prontas em uma velocidade absurda. Eles estavam preparados exatamente para aquele tipo de entrevista. Outros se renderiam à pressão, quase incapazes de conseguir terminar a entrevista.

Para ser sincero, quando começamos a fazer isso, eu tinha que dar uma olhada nesses quebra-cabeças antes, principalmente para garantir que eu não passaria vergonha. Este deveria ter sido o primeiro sinal de que talvez não estivéssemos testando as habilidades mais relevantes para nossos requisitos. Se essas dúvidas passaram pela minha cabeça, eu deveria tê-las deixado de lado rapidamente. Afinal de contas, era a maneira como todo mundo fazia entrevistas.

Claro que optamos por contratar o funcionário com as respostas mais inteligentes. Inevitavelmente, outras posições se tornaram disponíveis, e nós repetimos o processo inúmeras vezes, por todo o tempo de vida da empresa. Se isso soa familiar para você, certamente você não está sozinho.

Performance real de trabalho

Mas como medimos o trabalho dos candidatos que selecionamos? A verdade é que tivemos resultados bastante variados. Muitos deles estavam dentro da média, muito poucos eram excelentes e alguns eram simplesmente horríveis em suas posições. Portanto, a entrevista não tinha nenhum efeito real sobre a qualidade das pessoas que estávamos selecionando, e receio que esse processo pode ser sido mais favorável à seleção de pessoas ruins.

O que de bom e de ruim isso significa nesse contexto? Vamos dar uma olhada em alguns benchmarks que considero importantes:

Cultura da Organização: Olhando para trás, uma das qualidades mais importantes que um novo funcionário deve ter é compatibilidade com o espírito das pessoas que já trabalham na empresa. A entrevista padrão teve o pior desempenho nesse quesito, por razões óbvias. É difícil julgar a personalidade das pessoas em entrevistas, porque elas não são exatamente elas mesmas naquele momento. Na verdade, são incentivadas a não serem elas mesmas.

Competência em Programação: De alguma maneira, contrariando minha intuição, os exemplos de códigos feitos durante a entrevista foram um indicador ruim da real competência no trabalho. Projetos do mundo real raramente consistem em implementar buscar binárias sem acesso a um analisador ou literatura. O que aconteceu foi que os empregados que se deram melhor nos exemplos de código nem sempre eram capazes de trazer seu conhecimento teórico para soluções práticas. Ter candidatos escrevendo algoritmos sortidos no whiteboard é um método que beneficia pessoas com ótima memória a curto prazo, que vêm preparadas exatamente para esses tipos de perguntas. No nosso caso, precisávamos de codificadores engenhosos, que escrevessem softwares organizados, estáveis e elegantes – e o processo de entrevista não estava os selecionando.

Gerenciamento de Projetos: Pessoas que foram bem na entrevista não são, necessariamente, bons colegas de equipe ou até bons apresentadores perante os clientes. Esse resultado foi surpreendente para mim. Acontece que aguentar uma entrevista por uma hora é uma habilidade completamente diferente de, digamos, ser bom em coordenar seus colegas de trabalho ou a pessoa que paga suas contas. A performance da entrevista também não indicava a habilidade de escrever uma boa documentação, ou como se comportar em comunicações online.
O resultado

O resultado de um processo seletivo como esse pode ser um dos fatores responsáveis pela perda do espírito de startup da empresa e sua alma criativa. Esse foi, definitivamente, o caso da nossa empresa. Como CEO, a maior falha foi certamente minha. No entanto, ter as pessoas erradas para o trabalho foi em grande parte a causa da incapacidade da empresa de entregar a quantidade e a qualidade necessárias para se sustentar. As brigas internas envenenaram nossos times. A incompetência era mascarada com boas capacidades de apresentação e puxação de saco. Boas pessoas deixaram a empresa porque elas odiavam essa nova atmosfera.

Apesar de eu ter dispensado várias pessoas por razões distintas ao longo dos anos, no final das contas, eu tive que fazer o discurso mais difícil da minha vida na manhã em que dissolvi a empresa.

Claro que esse é um exemplo extremo. A maioria das empresas prospera, apesar disso tudo. Mas eu ainda acredito que podemos melhorar muito as chances de encontrar os candidatos certos, ao mudar radicalmente a maneira como fazemos entrevistas. E, no nosso caso, isso provavelmente teria feito toda a diferença do mundo.
Uma alternativa

Como seria, então, uma entrevista para desenvolvedores? Simples: elimine a parte dos exames completamente da entrevista. Em vez disso, pergunte questões em aberto, que convidem seus candidatos a elaborar sobre seu trabalho de programação.

Qual foi o último projeto no qual você trabalhou no seu último emprego?

Me conte sobre seus projetos preferidos.

Em que projetos você está trabalhando no seu tempo livre?

De quais comunidades online hackers você participa?

Me conte sobre alguns pontos (técnicos/de programação) pelos quais você se sente entusiasmado.

Essas questões foram formuladas para revelar bastante sobre a pessoa que você tem na sua frente. Elas podem te ajudar a decidir se o candidato está interessado nas mesmas coisas que você, se você gosta do seu jeito de pensar e onde seus interesses reais estão. É mais difícil para eles conseguirem a vaga na malandragem, porque o entrevistador pode investigar questões mais profundas à medida que eles vão se apresentando.

Mas e a habilidade de codificação? Bom, pegue alguns minutos após a entrevista para dar uma olhada em alguns códigos que o candidato escreveu. Talvez para um projeto open source, talvez eles tenham que te enviar algo que não é publico, não importa. Olhar para a produção real do código pode te falar muito mais do que as linhas artificiais escritas no whiteboard.

Tenho certeza de que você pode criar outras questões e outras maneiras de engajar o entrevistado. Nesse ponto, qualquer ideia já indicaria uma melhora.

Ditados

A maioria das pessoas é rápida ao defender seu status quo, e com certeza essa é uma posição gratificante de se segurar. É livre de riscos e você sempre pode recorrer ao argumento “muitas pessoas inteligentes, ricas e bem sucedidas fazem as coisas do jeito antigo, então meu dinheiro está no que eles estiverem fazendo”.

"Legal, mas isso não funciona pra empresas grandes de sucesso. Sua idéia não é escalável."

Claro que é escalável. Em termos de esforço por entrevista não é diferente. Não existe razão por que isso não deveria funcionar em empresas grandes. No final das contas, o entrevistado sempre toma uma decisão pessoal e subjetiva. Estou meramente sugerindo uma maneira que entregue informações mais relevantes para aquele objetivo.

"Os melhores programadores não executam projetos em seu tempo livre" ou: "As pessoas mais talentosas que conheço trabalham de 9 às 5 E então vão para casa assistir futebol/estar com suas famílias/ou qualquer outra coisa."

Essa não é minha experiência. Não estou dizendo que um bom programador não deveria ter uma vida. Mas eu acredito que uma certa quantidade de entusiasmo por programação é necessária. E, realmente, se você tem uma ótima habilidade, não usá-la parece um grande desperdício para mim.

"No meu tempo livre, estou trabalhando pelo próximo milhão da minha empresa. Oh, quando não estou trabalhando para minha empresa? Estou com minha família e amigos." (verbete de http://news.ycombinator.com/item?id=2385148)

isso é ótimo, essas pessoas podem de fato me mostrar algo em que elas estavam trabalhando. No entanto, eu consideraria a falta de hobbies um problema para alguns trabalhos de desenvolvimento.

Pensamentos finais

Na minha experiência, a entrevista tradicional para desenvolvedores é insuficiente para encontrar bons candidatos. Enquanto os exercícios típicos de whiteboard se relacionam de alguma maneira com a competência em CS, eles são um indicador limitado de performance real de programação.

Discordo do processo e acredito que temos feito as entrevistas dessa maneira por anos simplesmente porque assim elas são mais fáceis de administrar, mas os dados gerados por essas entrevistas são amplamente irrelevantes – para não falar outra coisa. Nós, como parte da indústria, deveríamos apresentar questões mais personalizadas nas entrevistas, completamente focadas nas habilidades do candidato. Também acredito que é mais produtivo julgar a produção de código em oposto a quebra-cabeças modulares abstratos que não têm conexão real com o trabalho em si.

Mais importante, estou convencido de que conhecer a personalidade real do desenvolvedor é tão importante quanto checar sua competência profissional, porque uma escolha errada pode destruiu o time inteiro.

iMasters

Htaccess direto ao ponto

Os arquivos .htaccess oferecem um meio de fazer mudanças nas configurações do diretório. Um arquivo contendo uma ou mais diretrizes de configurações é colocado em um diretório em particular. Enquanto isso as diretrizes se aplicam para aquele diretório e todos os seu subdiretórios subseqüentes. No geral, se usa arquivos .htaccess quando você não tem acesso ao arquivo de configuração principal do servidor.

Confira o modelo abaixo que apresenta uma coleção de dicas para otimização de performance, de fácil entendimento e manipulação. Este modelo não prescreve nenhuma filosofia, apenas auxilia o desenvolvimento.

# Fontes de Kroc Camen: camendesign.com/.htaccess
# Adaptação de Leonardo Moreira: leonardomoreira.com.br/htaccess

RewriteEngine on

# Definindo o idioma. Recursos como x-webkit-speech (http://migre.me/46mS9) usam o idioma padrão.
DefaultLanguage pt-BR

# Se você usa uma index page diferente do padrão do servidor, defina abaixo:
DirectoryIndex main.html

# Definindo o fuso horário do servidor
SetEnv TZ America/Sao Paulo

# Remove assinatura do servidor
ServerSignature Off

# Exibe 404 para uma reescrita se uma pasta de mesmo nome não existir
Options -MultiViews 

# Impede de navegar em pastas sem um documento padrão (index)
Options -Indexes

# Para habilitar a navegação no diretório use:
# Options +Indexes

# Página 404
ErrorDocument 404 /404.html

# Previnindo acesso
<filesmatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"="">
 Order Allow,Deny
 Deny from all
</filesmatch>

#
# Forçando a última versão do IE, em vários casos quando ele poderia voltar ao modo IE7
# Use ChromeFrame se estiver instalado
#

<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    BrowserMatch MSIE ie
    Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
  </IfModule>
</IfModule>

#
# É preciso informar os proxies alterações de conteúdo baseado em UA
#
<IfModule mod_headers.c>
  Header append Vary User-Agent
</IfModule>

#
# Permite o acesso de todos os domínios para as web fontes.
#

<FilesMatch ".(ttf|otf|eot|woff|font.css)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

# Forçando a codificação
AddDefaultCharset utf-8
AddCharset utf-8 .html .css .js .xml .json .rss

#
# Filetypes adicionais
#

# video
AddType video/ogg                      ogg ogv
AddType video/mp4                      mp4
AddType video/webm                     webm

# Servindo SVG do jeito certo. Necessário para webfonts SVG no iPad
# twitter.com/FontSquirrel/status/14855840545
AddType     image/svg+xml              svg svgz
AddEncoding gzip                       svgz

# webfonts
AddType application/vnd.ms-fontobject  eot
AddType font/truetype                  ttf
AddType font/opentype                  otf
AddType font/woff                      woff

# variados
AddType image/vnd.microsoft.icon       ico
AddType image/webp                     webp
AddType text/cache-manifest            manifest
AddType text/x-component               htc
AddType application/x-chrome-extension crx

AddType application/rss+xml .rss
AddType text/remarkable  .rem
AddType text/plain  .do # “to.do” files

# Compressão gzip
<IfModule mod_deflate.c>

  # html, txt, css, js, json, xml, htc:
  AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript
  AddOutputFilterByType DEFLATE text/xml application/xml text/x-component

  # webfonts e svg:
  <FilesMatch ".(ttf|otf|eot|svg)$" >

    SetOutputFilter DEFLATE
  </FilesMatch>

</IfModule>

#
# Fazendo cache de recursos com Expires HTTP
# Lembre-se de assumir controle de versão com cache-busting
#
# Ex. <script src="master.js?20100608"></script>
#
# Mais detalhes em: stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/
#

<IfModule mod_expires.c>
  Header set Cache-Control "public"
  ExpiresActive on

  ExpiresDefault                          "access plus 1 month"
  ExpiresByType text/cache-manifest       "access plus 0 seconds"
  ExpiresByType text/html                 "access plus 0 seconds"

  # Dados
  ExpiresByType text/xml                  "access plus 0 seconds"
  ExpiresByType application/xml           "access plus 0 seconds"
  ExpiresByType application/json          "access plus 0 seconds"

  # Feed RSS
  ExpiresByType application/rss+xml       "access plus 1 hour"

  # Favicon (não pode ser renomeado)
  ExpiresByType image/vnd.microsoft.icon  "access plus 1 week" 

  # Imagens, vídeo, audio;
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"

  ExpiresByType video/ogg                 "access plus 1 month"
  ExpiresByType audio/ogg                 "access plus 1 month"
  ExpiresByType video/mp4                 "access plus 1 month"
  ExpiresByType video/webm                "access plus 1 month"

  # Webfonts
  ExpiresByType font/truetype             "access plus 1 month"
  ExpiresByType font/opentype             "access plus 1 month"
  ExpiresByType font/woff                 "access plus 1 month"
  ExpiresByType image/svg+xml             "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"

  # CSS / jScript
  ExpiresByType text/css                  "access plus 1 month"
  ExpiresByType application/javascript    "access plus 1 month"
  ExpiresByType text/javascript           "access plus 1 month"
</IfModule>

#
# Estamos usando HTTP Expires, não precisamos do ETag, desativar!
#
FileETag None

# Permite que cookies sejam enviados por iframes (somente IE). Descomentar para usar.
#
# <IfModule mod_headers.c>
#   <Location />
#     Header set P3P "policyref="/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT""
#   </Location>
# </IfModule>

# no-www, retira o "www" e redireciona.
<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

iMasters

Verdades não tão conhecidas sobre programação

Este artigo é a tradução de um excelente texto escrito por David Veksler, no qual ele conta o que sua experiência como programador lhe ensinou.

O texto original pode ser encontrado aqui.

A tradução segue abaixo:

* Um programador gasta cerca de 10% a 20% do seu tempo escrevendo código. Normalmente escreve entre 10 e 12 linhas por dia, que estarão presentes no produto final independentemente do seu nível de perícia ou experiência. Bons programadores gastam cerca de 90% do seu tempo pensando, pesquisando e experimentando maneiras de encontrar a solução ótima. Os programadores ruins gastam quase 90% do tempo debugando e fazendo alterações muitas vezes aleatórias na tentativa de "fazer funcionar".

* Um bom programador é dez vezes mais produtivo do que um programador comum. Um excelente programador é entre 20 e 100 vezes mais produtivo do que um convencional. Não é um exagero. Estudos desde os anos 60 têm mostrado isso consistentemente. Um mau programador não é só improdutivo - além de não concluir o trabalho com êxito, gera dores de cabeça e trabalho extra para outras pessoas consertarem.

* Excelentes programadores gastam pouco do seu tempo escrevendo (código que de fato estará no resultado final). Os programadores que gastam muito do seu tempo escrevendo provavelmente não estão encontrando e utilizando soluções existentes para problemas antigos. Bons programadores são ótimos em reconhecer e em reutilizar padrões comuns e não têm medo de refatorar seu código constantemente, a fim de atingir a solução ótima. Programadores ruins escrevem código que falha em integridade conceitual, não-redundância, hierarquia e padrões, tornando complicada a refatoração, fazendo com que seja mais fácil jogar fora todo o trabalho e recomeçar.

* Software, como qualquer coisa, obedece às leis da entropia. Contínuas mudanças levam ao desgaste do software e de sua integridade conceitual planejada originalmente. A entropia é inevitável, no entanto, programadores que falham ao estabelecer a integridade conceitual criam sistemas que se desgastam tão rapidamente, que muitas vezes se tornam inúteis e caóticos demais mesmo antes de serem concluídos. Possivelmente, o motivo mais comum para falha em projetos é o rompimento da integridade conceitual devido à entropia descontrolada (o segundo mais comum é a entrega de um produto diferente do que o cliente esperava). A entropia desacelera exponencialmente o desenvolvimento e é o principal motivo para deadlines desesperadoras.

* Um estudo realizado em 2004 revelou que 51% dos projetos falham ou irão falhar em alguma funcionalidade importante e que 15% simplesmente vão falhar como um todo, o que é um grande avanço desde 1994, quando 31% dos projetos falhavam criticamente.

* Embora muitos softwares sejam desenvolvidos em equipe, não se trata de uma atividade democrática. Geralmente somente uma pessoa é responsável pelo “design” do sistema e o resto do time o completa com detalhes.

* Programar é um trabalho pesado. É uma atividade mental intensa. Bons programadores pensam sobre seu trabalho 24/7. Eles escrevem seu código mais importante no chuveiro, sonhando etc., porque o trabalho mais importante é feito longe do teclado. Projetos não são concluídos mais rapidamente gastando mais tempo no escritório ou adicionando pessoas novas ao projeto.

"Um excelente operário pode ser duas ou até três vezes mais produtivo que um operário comum, já um bom programador pode fazer com que seu trabalho seja mais do que 10 mil vezes mais produtivo do que um programador comum" Bill Gates

iMasters

O problema da viseira (parte 2: plugando a mente)

O artigo anterior tratou do "problema da viseira", que consiste no fato de que muitas pessoas acham que a universidade é suficiente para a formação profissional, que o que se aprende é o que existe de melhor e mais útil na sua área. Na prática, sabemos que não é bem assim.

Depois de arrancar o que o impedia de enxergar além do que colocam exatamente a sua frente, o próximo passo é se conectar para enxergar além do alcance da própria visão. É hora de plugar sua mente na rede.

A internet é cheia de porcaria e de conteúdo de origem duvidosa. De fato. Por isso, a intenção é guiar vocês a se conectarem direito. Apenas ter acesso à grande rede não significa muita coisa.

Onde obter informações?

Temos a nossa disposição algumas ferramentas que ajudam a nos conectar a outras pessoas. A primeira, e uma das mais importantes atualmente, é o Twitter. Você pode seguir qualquer pessoa, ela não precisa aceitar sua amizade, e a partir disso você passa a receber tudo que ela deseja compartilhar. Pensamentos, textos, vídeos, imagens. Vale muito a pena seguir alguns perfis, o aprendizado é grande, você pode ter acesso a materiais geniais a que pessoas igualmente geniais têm acesso.

Para área de informática, recomenda-se algumas pessoas: @mauriciojr, @dttg, @rafaelcaricio, @alganet, @thiagoarrais, @tapajos, @henriquebastos, @gchapiewski, @dhh, @AkitaOnRails, @thiago_silva, @viniciusteles, @fnando, @osantana, @allisson, @mariacarol, @jonnyken, @srlm.

E os feeds? Eles estão se tornando secundários. Praticamente todos os perfis sugeridos acima possuem um blog e eles vão publicar os links de suas postagens no Twitter. Um leitor de feeds organiza melhor os posts que o Twitter, então se você quiser usar um, assine os blogs dos perfis acima.

Agora você está imerso em várias novas fontes de informação, mas não podemos nos esquecer de duas que existem há muito tempo, mesmo antes da internet. A primeira: livros. Eles são ótimos, não os abandone. A segunda: pessoas. Uma conversa pode valer muito mais que dezenas de posts num blog ou centenas de tweets.

É importante deixar claro que essas fontes de informações são dinâmicas, mas, com o tempo, alguns temas vão perdendo a importância na sua vida e outros aparecerão. Continue andando em frente. É fácil apagar um feed e assinar outro, você pode deixar de seguir uma pessoa e resolver acompanhar outra. As fontes não são para sempre, e você não precisa ficar amarrado ao que tem hoje.

iMasters

O problema da viseira (parte 1: as fontes de informação)

A graduação de computação é certa ou errada? Não sou o primeiro a perguntar isso, nem serei o último. Ela me foi útil, consigo perceber sua influência na minha formação facilmente. Mas sempre faltou algo. É ainda mais fácil perceber o vazio ao terminar o curso.

Durante a graduação, eu fiz coisas que nem todo mundo faz. Aprender tecnologias por fora, criar projetos, só um louco para arranjar tempo entre trabalhos, churrascos e pesquisas. Eu aprendi Delphi, HTML, CSS, JavaScript e PHP por curiosidade, obtive a certificação Zend Certified Engineer, criei softwares por pura vontade de fazer algo que outras pessoas pudessem usar. Eu gostaria que mais alunos seguissem um caminho menos trivial.

Todos querem seguir um caminho diferente? Não, é normal. Eu só acho que todos deveriam vivenciar uma cultura de criação na universidade. De criação de produtos reais. Não estou dizendo para jogar pesquisas científicas fora, longe disso, elas podem ser um grande impulso. Eu só não concordo com pesquisar para no final engavetar.

Faltava para mim o conhecimento de tecnologias novas que estivessem sendo usadas. Eu fui atrás, até hoje faço isso. A universidade não poderia ter me mostrado?

O primeiro passo para despertar essa inquietação é tomar consciência de que você não sairá pronto da graduação. Esse conceito de "pronto" nem deveria existir. Se você também gosta de criar suas coisas e tem interesse em fazer algo útil para as pessoas, então corra atrás. Leia, estude, codifique, converse, conheça pessoas com interesses parecidos. Procure saber se existe um "hora extra" na sua cidade.

Não apresentar algumas tecnologias não é o ponto mais grave, pois é impossível mesmo ter aulas de tudo que estiver sendo usado no mundo da computação. O grande problema em alguns alunos é o que eu vou chamar de "problema da viseira" (do cavalo). Não estou comparando ninguém ao animal, foque na viseira. Muita gente acha que a universidade é suficiente e o que você aprende é o que existe de melhor e mais útil na sua área. Isso limita demais a visão das pessoas, inclusive de pessoas inteligentes e com bastante potencial.

Arranque sua viseira fora e entre no maravilhoso mundo da internet. Parece tolo dizer isso, já que todo estudante de computação conhece a internet. Mas será que é assim mesmo?

A internet hoje é em tempo real, as coisas aparecem e desaparecem rapidamente, não deixe a correnteza passar sem que você pesque alguns peixes. Junte uma base sólida da graduação e o que há de mais novo que ótimos resultados poderão aparecer.

iMasters

Steering Wheel Buyers Guide


A Inside Sim Racing fez um guia definitivo em vídeo com os melhores volantes disponíveis no mercado para a utilização em simuladores de corridas de carros. Do Logitech Momo Racing ao Thrustmaster T500RS, cabe a você tirar suas próprias conclusões antes de adquirir seu modelo.

DreamPlug: PC do tamanho de um carregador


Ainda neste mês, a GlobalScale inicia as vendas de um computador do tamanho de um carregador de bateria e que roda Linux. O equipamento, chamado DreamPlug, apresenta apenas 10 centímetros de comprimento e tem algumas restrições, como não contar com uma placa de vídeo e não rodar com um monitor externo.

O DreamPlug tem processador de 1.2 GHz Marvell Sheeva, 1 GB de RAM e um diversas portas, incluindo duas Ethernet, duas USB e uma eSATA 2.0. Também tem Wi-Fi e Bluetooth, além de saídas analógicas e digitais de áudio, caso o usuário queira usá-lo como um servidor de música.

O equipamento é mais indicado para uso como servidor web ou de aplicação. No site da fabricante, o DreamPlug é oferecido a US$ 149 dólares para os Estados Unidos.

is_utf8 - Como verificar se um string está codificado em UTF-8

Quando você usa uma mescla de arquivos PHP com envios de formulários usando jQuery.ajax(), é quase impossível precisar quando o envio dos dados é feito pelo usuário através do submit normal da tag FORM ou se vem através do JavaScript.

Como o jQuery converte os dados do formulário para o formato UTF-8 antes de enviá-los, é necessário usar a função utf8_decode para utilizar os dados do formulário enviados.

Como, às vezes, pode haver arrays extensos, com muitos itens e índices, há duas funções interessantes para resolver esse problema, e são a solução para muitas dores de cabeça.
function is_utf8 ($str) {
    $len = strlen($str);

    for ($i=0; $i<$len; $i++){
        $c = ord($str[$i]);

        if ($c > 128) {
             if ($c > 247) return false;
            elseif ($c > 239) $bytes = 4;
            elseif ($c > 223) $bytes = 3;
            elseif ($c > 191) $bytes = 2;
            else return false;

            if (($i + $bytes) > $len) return false;

            while ($bytes > 1) {
                $i++;
                $b = ord($str[$i]);
                if ($b < 128 || $b > 191) return false;
                $bytes--;
            }
        }
    }

    return true;
}

function array_utf8_decode ($a) {
    foreach ($a as $k => $v) {
        $a[$k] = is_array($v) ? array_utf8_decode($v) : (is_string($v) && is_utf8($v) ? utf8_decode($v) : $v);
    }

    return $a;
}

$_POST = array_utf8_decode($_POST);
$_GET = array_utf8_decode($_GET);

Gran Turismo 5 Offline Update


Se você não possui uma conexão veloz à internet na residência onde seu PlayStation 3 está, ou fica furioso com o fato de ter que esperar por volta de dez horas para o seu console efetuar o pesado download de 608 MB da versão 1.05 do Gran Turismo 5, seus problemas acabaram! Só que a solução NÃO foi desenvolvida pelas Organizações Tabajara, portanto, funciona!

Para resolver esse percalço, você só precisa baixar o arquivo de atualização no seu PC e de um servidor proxy, além de uma estrutura de rede local em sua casa, ou um cabo crossover, cujos terminais RJ45 são ligados de forma a criar uma conexão entre dois aparelhos sem a necessidade de um roteador ou switch entre eles.

Agora, irei explicar o processo de atualização offline do Gran Turismo 5.

Para início de conversa, faça o download do PS3 Proxy Server. É ele que fará o "meio-de-campo" entre seu PC e o seu PlayStation 3, fazendo o console "pensar" que o PC é o servidor de download da Sony.

Instale e execute o PS3 Proxy Server. Ele não cria ícones no desktop nem no menu Iniciar, então, vá ao Windows Explorer e acesse a pasta C:\Arquivos de Programas\CF3B5\PS3.ProxyServer, e faça um duplo clique no arquivo PS3.ProxyServer.GUI.exe.

Enquanto você configura sua rede local, você pode baixar o arquivo de atualização do Gran Turismo 5 através deste link. Escolha o arquivo da versão que corresponde à sua midia, se é americana, europeia ou japonesa. Caso não queira baixá-lo agora, espere para fazê-lo durante o processo de atualização.

No PS3 Proxy Server, na aba Proxy Setting, digite, no campo IP Address, o endereço IP correspondente ao seu PC. Você pode verificar isso na linha de comando, digitando ipconfig e teclando ENTER, ou acessando as propriedades de sua conexão de rede local. No campo Port, digite 8080. Selecione a opção PS3 Mode. Aperte Start. O servidor proxy será iniciado e receberá as requisições de acesso à internet de seu PlayStation 3.

Vá ao seu console. Conecte-o à sua rede local e ligue-o. Vá em Network Settings, depois em Internet Connection Settings, e escolha se sua rede é cabeada ou wireless. Entre com as configurações necessárias para o acesso à sua rede local, caso seja a primeira vez que o PlayStation 3 acessará sua rede. Caso seu console já esteja configurado, você pode ignorar esta parte.

Agora vem a parte mais importante: a configuração de proxy. Escolha para usar um servidor proxy, e digite o endereço IP e a porta que você configurou no PS3 Proxy Server. Saia da configuração e inicie o Gran Turismo 5.

Ele verificará, através da conexão com o seu computador, que existe atualização para o software do jogo. Inicie o download. Aguarde de cinco a dez segundos e interrompa o download. Ele voltará para a tela principal do sistema operacional do PlayStation 3. Isso é normal. O Gran Turismo 5 não iniciará mais enquanto seu console estiver conectado à internet e "saber" que existem atualizações.

Volte ao seu PC. Vá ao PS3 Proxy Server e abra a aba Logs. Haverá alguns registros de requisições a um endereço de internet semelhante a este: http://b0.ww.np.dl.playstation.net/tppkg/np/BCUS98114/BCUS98114_T13/7325c8d19af454e3/UP9000-BCUS98114_00-0000000000000000-A0105-V0100-PE.pkg. Esta é a localização do arquivo de atualização que o Gran Turismo 5 tenta baixar. Copie este URL para a área de transferência, o famoso CTRL + C. Caso você ainda não tenha baixado este arquivo pelo método mencionado acima, vá a um navegador de internet e faça o download.

Com o arquivo de atualização salvo em seu PC, vá à aba Replace Files. Clique em Add. Aparecerá uma linha com duas colunas. Na coluna esquerda, cole o endereço do arquivo de atualização. Na coluna direita, aperte no botão cinza existente. Aparecerá uma janela de seleção de arquivo. Selecione o arquivo baixado. É isto que fará a "mágica".

Volte ao seu PlayStation 3. Inicie o Gran Turismo 5. Faça o download da atualização normalmente, como se fosse pela internet. O download será muito rápido, visto que será feito com a velocidade da sua rede local, através do PS3 Proxy Server, que enviará o arquivo de atualização do PC ao seu console. Espere que o PlayStation 3 realize todo o processo de download e instalação, que levará por volta de dez minutos.

Pronto! Depois de reiniciado o Gran Turismo 5, feche o PS3 Proxy Server. Caso preferir, pode excluir o arquivo de atualização do seu PC ou faça backup. O seu Gran Turismo 5 estará atualizado. Entre as principais novidades, existe a opção de defeitos mecânicos no veículo em virtude de colisões, para que surtam efeito apenas por alguns segundos ou se será preciso ir ao pit lane para consertá-los, além de áreas online no GT Mode, como o Open Lobby e os Seasonal Events.

Este procedimento funciona não só para o Gran Turismo 5, mas para qualquer outro título do PlayStation 3. Basta executar as mesmas tarefas descritas acima para verificar se o processo de atualização é executado da mesma maneira. Inclusive, é possível fazer downloads de add-ons adquiridos de graça ou mediante pagamento. Basta verificar pelo log o URL do arquivo, baixá-lo em um navegador ou gerenciador de downloads, e realizar o processo de substituição do endereço de internet pelo local do arquivo em disco, na aba "Replace Files".

Jack PC: CPU de tomada!


O Jack PC, da Chip PC Technologies, é um dos mais compactos desktops já produzidos, com dimensões de 6,96 x 11,4 x 3,95 cm e pesa apenas 350 gramas. Todo o conteúdo do computador fica dentro de um soquete, que pode ser encaixado na parede, como um plug de tomada normal, ou em um orifício de uma mesa, criado especialmente para encaixar o PC.

O Jack PC possui um processador de 1,2 GHz, tem suporte para dois monitores simultâneos, rede wireless e capacidade de armazenamento on board de até 128 Mb, e quatro entradas USB, que podem ser usadas como entradas de mouse e teclado.

A energia elétrica necessária para o Jack PC funcionar é proveniente do cabo Ethernet. O aparelho possui um consumo baixo, de 5 Watts no modo de operação normal, ou 0,35 Watts em stand by. A página do produto pode ser acessada em www.chippc.com/thin-clients/jack-pc.

Empresas procuram mão de obra na área de tecnologia da informação


As empresas de tecnologia da informação pagam bem, têm vagas sobrando e sofrem cada vez mais para conseguir profissionais qualificados



Um computador desacompanhado, mais um, outro. Uma empresa procura por 200 profissionais em tecnologia da informação e não encontra. O salário pode chegar a R$ 15 mil para consultores com nível senior e gerentes de projeto.

Está tão difícil preencher essas vagas que a empresa abriu um escritório dentro de uma faculdade para atrair estagiários e recém-formados, criou um programa de treinamento pra formar mão-de-obra e, olha só, dá até prêmio para os funcionários quando eles indicam algum parente ou amigo para trabalhar.

Se o indicado é contratado, o funcionário ganha um vale-compras de R$ 200 e a gratidão do amigo. "Olha, até que ele merece receber uma cervejinha", brinca o analista de sistemas, Renato Tavares

Renato ficou desempregado e, uma semana depois, já estava trabalhando na empresa, graças ao André, que também emplacou um outro amigo. "Eu ganhei dois vales em um valor de R$ 400".

Por causa da falta de funcionários, a empresa deixa de ganhar cerca de R$ 3 milhões por mês, segundo o presidente da companhia, Benjamin Quadros.

"Hoje a nossa empresa forma muito mais gente do que formava cinco anos atrás. A cada ano que passa, o nosso negócio se torna muito mais de formação de gente do que seleção de pessoas".

Uma pesquisa com as empresas de tecnologia da informação, ou TI como são conhecidas, mostra que 86% delas estão precisando de programadores; 50% de analistas de sistemas; 34% de técnicos de suporte, o chamado help-desk.

Segundo a Fundação Getúlio Vargas, até 2014, haverá um déficit de 800 mil vagas no setor. "Nós não temos gente se formando, em volume que essa demanda apresenta hoje", afirma o professor da FGV, Fernando Meirelles.

A Associação Brasileira das Empresas de TI, diz que representa as indústrias de tecnologia da informação, diz que também é preciso alinhar o ensino ao mercado.

"Há uma defasagem tecnológica entre os profissionais que são formados e a tecnologia que é aplicada no mercado. Então precisa haver essa sintonia fina entre universidades, centros formadores de mão de obra e as necessidades das empresas", afirma o diretor da Associação, Sérgio Sgobbi.

Jornal da Globo

Os Macs são imunes aos vírus?

Muita gente já ouviu falar que os computadores da Apple, os chamados de Macs, são imunes aos vírus. Mas isso é um mito ou realmente acontece?

Vamos iniciar nossa análise com alguns fatos.

Como qualquer aplicativo que usamos em outros sistemas operacionais, os programas dos Macs também apresentam vulnerabilidades, como por exemplo, as brechas conhecidas no navegador Safari. A diferença é que elas ainda não foram exploradas por muitos ataques. Mas não conte que a situação vai ficar assim por muito tempo.

Hoje encontramos na Web muitos códigos maliciosos do tipo "cavalos de troia" para o Mac, e já começam a aparecer sites e programas piratas criados especialmente para infectar usuários deste sistema.

Mesmo assim muitos afirmam que "não existe vírus para Mac", baseados na informação de que não existe uma praga que se espalha automaticamente em computadores da Apple. Uma definição pelo menos estranha, pois os vírus não são apenas aqueles programas que se propagam automaticamente. Muitos vírus são criados apenas para roubar informações ou dar acesso ao micro pelo atacante.

A verdade é que esses vírus existem, o que falta é ficarem populares.

Todos esses fatos levaram a Apple a incluir na versão mais recente do MacOS X, o Snow Leopard, um antivírus simples, com o objetivo de tentar barrar algumas das pragas mais comuns. Os fabricantes de antivírus também já estão atentos a esse mercado e passaram a oferecer opções de seus produtos para o Mac OS.

A questão é que os Macs eram pouco visados por serem uma minoria dentro do mar de computadores com a configuração Windows + Intel. A partir do momento em que eles se tornaram uma parte importante do mercado atraíram o interesse dos hackers.

Por último, chamou a atenção nesta semana a entrevista de Marc Maiffret, ex-hacker (se isto é possível) e especialista em segurança, sobre o nível de segurança dos sistemas atuais. Ele afirma que a plataforma da Microsoft é, hoje, mais segura que os produtos da Apple ou da Adobe. Certamente isso vai irritar muitos defensores dos produtos da Apple.

Se você, assim como eu, tem um Mac, fique atento, pois os vírus estão por perto. Infelizmente esse é o o preço a ser pago pelo sucesso.

iMasters

SaaS: confiar ou não confiar?

A diminuição dos custos e o aumento da segurança do sistema informatizado nas empresas passa por uma profunda revisão de conceitos. Mas a terceirização dos serviços de TI com o chamado Software as a Service, por exemplo, ainda suscita a desconfiança de muitos.

O SaaS é um sistema pelo qual a empresa repassa suas tarefas informatizadas a fornecedores especializados e deixa de se preocupar com manutenção de servidores, atualização de aplicativos, antivírus, back ups, licenciamento de softwares e mesmo aquisição de hardware. Trata-se de uma opção prática para gerenciar tarefas desde folha de pagamentos, departamento financeiro, comercial e manufatura, que suporta toda a gestão e deixa mais tempo para que a empresa se concentre no seu próprio desenvolvimento.

Recentemente, a brasileira Totvs, que é a 7a. maior desenvolvedora de softwares empresariais (ERPs) do mundo para pequenas e médias empresas, fechou acordo com a IBM Brasil para ofertar essa tecnologia ao mercado. Mas os brasileiros permanecem um tanto receosos com a terceirização do serviço por medo de que o sigilo seja quebrado. Contudo, qualquer correntista de banco hoje em dia tem seus dados seguros o suficiente para poder acessá-los via internet, fazer transferências e pagamentos, aplicações e alterações cadastrais. Nem todos se dão conta de que os softwares que permitem esses serviços e o dinheiro não estão fisicamente em seu poder. É uma relação de confiança.

O SaaS funciona de forma bem similar ao sistema bancário. De maneira inversa à ideia que se tem do SaaS no Brasil, já tive a oportunidade de atender um cliente norteamericano que se recusava a ter serviços de TI dentro da empresa, justamente para ter mais segurança, estrutura enxuta e se livrar de maiores problemas. O uso da tecnologia SaaS permite que o cliente pague somente pelo que realmente usa, através de uma tarifa mensal, como a internet banda larga, celular ou tevê por assinatura. O Brasil tem ido quase na contramão dessas vantagens: pesquisa recente da consultoria norteamericana AMI-Partners mostrou que, aqui, o interesse das pequenas empresas em SaaS caiu dos 73% detectados em uma sondagem anterior para 54%. As empresas de porte médio, porém, mantiveram os 86% de interesse. Quem é do setor de TI fala em amadurecimento do mercado.

De acordo com o presidente da Assespro (Associação das Empresas Brasileiras de Tecnologia da Informação) no Paraná, Mauro Sorgenfrei, há quatro ou cinco anos, a infraestrutura disponível para o uso do SaaS não inspirava muita confiança. O problema é que ter dados armazenados fora da empresa e serviços operados remotamente requer uma relação de extrema confiança com o fornecedor, algo que ultrapassa cláusulas contratuais de perdas e danos, porque nada compensa a indisponibilidade das informações de uma corporação. Daí a relutância em partir para um novo modelo, mesmo que mais barato, que dispense a manutenção de hardwares, softwares e contratação de funcionários extras só para a monitoração de toda essa estrutura. É uma mudança que também exige a readequação de plataformas, de aplicativos, mas uma mudança em andamento. Para a Assespro, a consolidação do SaaS acontece nos próximos dois anos e algumas das suas maiores afiliadas já estão migrando para o novo sistema. A maior resistência, diz a associação, vem das corporações estatais.

Edemar Kluck
Totvs

iMasters

Fazendo um carro pegar com fonte de alimentação de PC

Precisando de uma "chupeta" no carro? Não tem a possibilidade de pedir emprestado o carro ou outro veículo de um amigo. Uma fonte de alimentação GX de 750 W da Cooler Master pode ser a solução.

Isto mesmo que você leu! Esta fonte é capaz de fornecer corrente elétrica suficiente para ligar um carro cuja bateria descarregou. Uma demonstração feita pela equipe da Cooler Master mostra que é possível ligar um BMW M3 com a ajuda da fonte de alimentação da marca.



Esta fonte será lançada no mercado norte-americano na primeira semana de fevereiro. É claro que a Cooler Master não recomenda que se faça o mesmo teste em casa.

Os quarentões de 2009

Veja alguns músicos, desportistas e personalidades que chegaram à faixa dos quarenta anos no ano de 2009:

Michael Schumacher - 03/01
Dave Grohl - 14/01
Gabriel Batistuta - 01/02
Steffi Graf - 14/06
Oliver Kahn - 15/06
Paul Tergat - 17/06
Fernando Couto - 02/08
Max Cavalera - 04/08
Vanderlei Cordeiro de Lima - 11/08
Gwen Stefani - 03/10

Ferrari cria o mais sofisticado simulador de corridas do mundo




Para economizar tempo e esforços no desenvolvimento de seus monopostos e aprimoramento dos seus pilotos para a temporada 2010 da Fórmula 1, a Ferrari criou o mais sofisticado simulador de corridas do mundo. A máquina, que levou dois anos para ser completada, pesa mais de 200 toneladas e conta com 10 computadores, cinco telas gigantescas de LCD, que oferecem um ângulo de visão superior a 180 graus, e um sistema de som de 3.500 watts para emular da maneira mais fiel possível a experiência de corrida.

A capacidade de processamento é invejável: são mais de 60 gigabytes de memória RAM, capazes de gerar mais de 5 GB de dados diariamente. O sistema foi criado com o auxílio da Moog, que criou para as Forças Armadas norte-americanas um simulador do novo caça F-35 Joint Strike Fighter. A máquina é feita de uma estrutura de alumínio e materiais compostos, na qual é montada um cockpit de um carro de Fórmula 1. Toda a plataforma é movimentada por mecanismos hidráulicos comandados eletronicamente. Todo o sistema consome o equivalente a 176 CV de potência, um número de fazer inveja a muitos carros esportivos.

Hard Disc em formato de carro




Que tal um dispositivo de backup ou armazenamento portátil de dados com um disco rígido extra poderoso e com formato de um carro? O acessório, vendido na internet, é oferecido com memória de até 640 GB e na escala 1:18, no site Flashrods, que também disponibiliza outros hard disks com formato de carros e que custam a partir de US$ 210. Entre a variedade de modelos estão os hot rods, de estilo retrô.

Microsoft apresenta mouses com suporte para multitoque

A equipe do Microsoft Research apresentou diversos protótipos de mouses com suporte para multitoque. Eles usam métodos diferentes para a detecção de toques e parecem ser bem confortáveis.

O protótipo com o design mais "diferente" é o Arty. Ele tem dois braços articulados e na ponta de cada um deles está um sensor ótico. O "Side Mouse" não utiliza botões e detecta os toques dos dedos na mesa imediatamente na frente do descanso da palma da mão (a parte curvada em cima dele).

Outros protótipos apresentados incluem o FTIR, Orb Mouse e o Cap Mouse, que utilizam uma câmera interna, uma câmera infravermelha e um sistema de detecção capacitivo, respectivamente.


Sistemas personalizados de TI: o código fonte é seu!

Por Flávio Luis Piccolo Ferrer, sócio-diretor da GDR7, empresa desenvolvedora de sistemas de TI

De uns anos para cá, não são raras as vezes que ouvimos falar da tendência de customização de produtos e serviços no mercado de consumo. São inúmeras as empresas que passaram a adotar estratégias que fogem da comoditização para atender a necessidades de uma demanda cada vez mais exigente. No segmento de tecnologia da informação, o cenário não é diferente.

Sistemas personalizados de TI, cujas implementações podem ser modularmente feitas por etapas, permitem com que o empresário experimente um retorno sobre o investimento antes mesmo do fim de seu desenvolvimento, vantagem considerável para modelos pequenos ou recém-estruturados de negócios.

Mas não apenas a questão financeira ajuda a explicar a adesão crescente aos aplicativos customizados de informática. Se por um lado há setores de atuação em que os softwares personalizados não se enquadram – como pizzarias, locadoras de dvds, farmácias e outras tantas em que o formato de negócios não é um grande diferencial entre os concorrentes – por outro lado, softwares prontos de mercado podem engessar as operações e comprometer certas vantagens competitivas na produtividade empresarial. Basta pensarmos na liberdade e na autonomia que uma empresa pode ter ao informatizar seu próprio sistema de trabalho.

Outro comparativo interessante é na questão que envolve a aquisição dos aplicativos. O que uma grande empresa de softwares corporativos de mercado disponibiliza para venda é sua licença de uso, à qual vem atrelado um contrato de manutenção dispendioso, o que limita o campo de escolhas por parte do contratante. Em contrapartida, companhias que fazem uso de ferramentas personalizadas de TI adquirem sua propriedade intelectual, ou seja, compram não apenas a licença de uso, mas o código fonte do sistema, de modo a possibilitar sua manutenção pelo programador de sistemas de sua preferência, sem custos derivativos impostos pelo fornecedor.

Não é necessário ser um especialista no campo do business para saber que a engrenagem dos negócios de uma empresa passa por evoluções por via reflexa do próprio andamento do mercado corporativo. A rapidez com que isso vem acontecendo é tamanha, que sistemas pré-desenvolvidos têm maior dificuldade em atingir o mesmo grau de atualização que os modelos personalizados, suscetíveis a constantes ampliações e adaptações recorrentes.

Além disso, existem casos específicos, como empresas atuantes em segmentos novos de mercado ou empresas que desenvolvem sua própria metodologia de trabalho, em que softwares prontos não preveem seus modelos de negócios, o que faz dos sistemas personalizados o único meio para que suas necessidades sejam atendidas.

Portanto, executivos interessados em informatizar os processos da empresa devem analisar com cautela os benefícios e a viabilidade da implantação de um sistema de TI personalizado em contraste com as ferramentas pré-fabricadas de mercado. Aplicativos desenvolvidos exclusivamente para determinado modelo de negócios podem representar autonomia de processos com o consequente aumento da produtividade, sem engessamentos operacionais que servirão de obstáculo para a rápida modernização da empresa.