Ainda sobre bananas e diamantes

<img src=”https://ceticismo.net/wp-content/uploads/2006/11/profissionais.jpg&#8221; alt=”profissionais.jpg” style=”margin:4px;” align=”left” border=”0″ /><em>Por <a href=”http://visie.com.br/blog/ainda-sobre-bananas-e-diamantes&#8221; target=”_blank”>Elcio Ferreira</a></em>

Tenho bons amigos empresários e gerentes de projeto, com os quais converso bastante. Um tema comum é o mercado de trabalho. Eles sabem que eu trabalho com treinamento e ocasionalmente me pedem para indicar um profissional. O que eu vou dizer aqui não está baseado em nenhuma pesquisa formal, mas nesses bate-papos com amigos. Parece haver um consenso entre eles: há muita gente despreparada no mercado. Não há falta de vagas, mas falta de desenvolvedores preparados para as vagas existentes.<!–more–>

Aliás, essa foi uma das coisas em que pensamos bastante antes de abrir a Visie. Trabalhar com treinamento para quem já é profissional de web é uma maneira de preencher lacunas no mercado, e isso significa ganhar dinheiro oferecendo algo de valor real, que vai fazer diferença na vida dos alunos.

Conversei anteontem com um amigo que acaba de contratar um bom desenvolvedor VB. Salário de mais de R$ 6000,00, razoável, não? Mas ele teve dificuldades em contratar. Não achava alguém que desse conta do recado.

Veja, por exemplo, essa oferta de emprego: <a href=”http://www.ubuntu.com/employment#head-27c5e9fad34a047bc0b7f0aad9c9736f9173a0d5″>Python Developer para o Ubuntu</a>. Você trabalha em casa, com Python (uau!) e num projeto Open Source. Trabalha com uma equipe grande, faz viagens ocasionais ao exterior para encontrar o resto do time e ganha em Euros!

Veja a descrição da vaga. O sujeito precisa saber Python e de experiência com Orientação a Objeto (e citam Python, Ruby, Java, C++ e C#) e com SQL. Essa é parte técnica. Parece fácil?

Além disso, o candidato precisa de um bom inglês, curso superior, responsabilidade e produtividade, trabalhar bem em equipe, conhecer TDD e metodologias ágeis, experiência com padrões de código e com arquitetura cliente/servidor. Pedem também que o sujeito goste de revisar código e discutir design de software com os colegas.

Perceba algo curioso ali. Entre as exigências para o candidato não há muita coisa a respeito da linguagem de programação ou do banco de dados. O foco está na metodologia. A questão não é com “o quê” você trabalha, mas “como”.

Peguei uma vaga pública num projeto Open Source como exemplo, mas há uma porção de oportunidades como essa por aí, com ferramentas Open Source, com .NET, com Java ou com quase qualquer linguagem atual com a qual você preferir trabalhar. Gente que está interessada em alguém que tenha no currículo não uma lista de linguagens, mas conhecimentos, e se possível experiência, que comprovem que ele sabe trabalhar <strong>bem</strong> com essas linguagens.
Veja um currículo como um milhão de outros que recebemos, na parte que diz o que o sujeito sabe fazer:

Conhecimentos avançados:
<ul>
<li>.NET (C# e VB.NET)</li>
<li>MS SQL Server</li>
<li>Oracle</li>
<li>ASP e ASP.NET</li>
<li>HTML, CSS e Javascript</li>
<li>Visual Basic 6 (e anteriores)</li>
<li>Windows DNA</li>
<li>Crystal Reports</li>
<li>Visual Studio .NET</li>
<li>Dreamweaver</li>
<li><em>… e assim por diante …</em></li>
</ul>
Troque .NET e ASP por Java, ou Python, ou Ruby, ou PHP. Troque MS SQL Server por MySQL ou Postgre e Oracle por Sybase. Troque VB 6 por Delphi ou Swing/AWT, e Windows DNA por J2EE, ou LAMP, Visual Studio .NET por Eclipse, Dreamweaver por GoLive, ou FrontPage (argh!) Variando essas opções, você vai ter varrido 95% dos currículos de programadores brasileiros.

O sujeito do currículo aí em cima me deu uma impressionante lista de siglas, mas esqueceu-se de dizer se vai escrever os testes de unidade antes do código, se só fará commit de código funcionando para o controle de versões, se seu código vai estar identado e comentado, se vai refatorar o código até que esteja em sua forma mais simples, se vai escrever pensando em reuso e documentar isso para o resto da equipe, se o HTML gerado será semântico e aproveitável pelos designers, se trabalha bem em equipe, ajuda os colegas menos experientes e escuta os mais experientes e se vai trazer ânimo, energia e bom humor para o time.

Vamos falar sobre <strong>como</strong> você trabalha, tá legal?

É importante ter uma impressionante lista de siglas em seu currículo, principalmente se você for usá-las. Mas apenas conhecer linguagens e ferramentas não faz de você mais do que um <a href=”http://en.wikipedia.org/wiki/Code_monkey”>Code Monkey</a>.

Digamos, por exemplo, que eu precise de um programador com experiência em testes de unidade. Não vou pesquisar por uma linguagem específica porque assim fica mais fácil encontrar algum com experiência em testes de unidade, embora, numa situação real, eu fosse procurar um com experiência em testes de unidade <strong>e</strong> Java (ou Python, ou C#, ou Ruby, ou PHP…) Bom, vamos lá: <a href=”http://www.apinfo.com/”>www.apinfo.com</a&gt;

Veja os resultados da pesquisa agora:
<ul>
<li>TDD: 0 currículos</li>
<li>teste de unidade ou testes de unidade: 0 currículos</li>
<li>teste unitário ou testes unitários: 7 currículos</li>
<li>unit test ou unit tests: 0 currículos</li>
<li>extreme (porque o pessoal da extreme programming trabalha com testes de unidade): 13 currículos</li>
</ul>
Percebeu? Treze currículos no Brasil inteiro. Para comparar, faça uma pesquisa por PHP ou mesmo Python.
Um bom programador aprende uma linguagem nova em uma semana, e se torna fluente e produtivo nela em poucos meses. <strong>Como</strong> você trabalha é muito mais importante que <strong>com o quê</strong>. Como você desenha o software, como você analisa e resolve problemas de software, como você assegura que seu software funciona bem, como você se assegura de que outras pessoas da equipe não irão quebrar seu software, de que outra pessoa poderá continuar seu trabalho, de que não terá que reescrever todo o sistema se o cliente mudar uma regra de negócios?

Um de nossos objetivos para o próximo ano é oferecer a nossos alunos a possibilidade de obter esse conhecimento. Quem for ao <a href=”http://visie.com.br/workshop/&#8221; title=”Workshop Produtividade Web 2.0″>Workshop de Produtividade</a> entenderá do que estamos falando. Chega de perder tempo, você precisar trabalhar rápido e ter completo controle sobre o que está fazendo.

Você pode nos ajudar, deixando o seu comentário, nos dizendo <strong>como</strong> você trabalha. Como faz para ser produtivo e garantir a qualidade do seu trabalho?

Teste de Turing e a “Sala Chinesa”

Este teste foi inventado por Alan M. Turing (1912-1954) e descrito pela primeira vez em seu artigo de 1950. O arranjo básico para o teste inclui duas pessoas e a máquina a ser testada. Uma pessoa é um interrogador e a outra pessoa e o computador são os interrogados. O interrogador e os interrogados ficam em salas diferentes e portanto fisicamente separados. O interrogador pode apenas fazer perguntas utilizando um teclado (por exemplo um terminal de computador). Cada interrogado deve tentar convencer o interrogador de que ele é humano, e não a máquina. Turing sugeriu que o teste deveria durar aproximadamente cinco minutos, mas a duração precisa do teste é um pouco irrelevante.

Diz-se que a máquina passou no teste se o interrogador não pode diferenciar os interrogados, ou “chuta” qual dos interrogados é a máquina. A máquina não passa no teste caso o interrogador consiga identificá-la. A visão de Turing era que qualquer máquina que passa no teste deve ser considerada inteligente, ou mais precisamente, com a habilidade de “pensar”. Em outras palavras, Turing propôs que o teste é um critério adequado para avaliar inteligência artificial.

Muitos outros contestaram a validade do teste de Turing para avaliar inteligência, como Searle, com sua experiência mental da “sala chinesa” , primeiramente formulada em 1980 em seu artigo Minds, brains and programs, para combater a idéia de inteligência artificial “forte”, ou seja, que um computador adequadamente programado não é simplesmente uma simulação ou modelo de uma mente, mas sim uma mente de fato. Isto significa que o computador pensa, apresenta compreensão e estados cognitivos.

Suponha a existência de um computador que se comporta como se compreendesse a língua chinesa. Em outras palavras o computador toma como entrada símbolos em Chinês como entrada(pergunta), consulta um algoritmo e então produz outros símbolos em Chinês como saída (resposta). Suponha também que o computador executa essa função de maneira tão convincente, que passaria facilmente no teste de Turing, ou seja, seria capaz de convencer um nativo da língua chinesa de que ele também fala chinês, e o interrogador pensa que o computador é na realidade um outro chinês. Os defensores da IA(inteligência artificial) forte diriam que o computador realmente compreende o chinês, exatamente como uma pessoa.

Agora Searle nos pede para imaginá-lo no lugar do computador, ou seja, ele agora é quem recebe a entrada, e utilizando o algoritmo produz uma saída. Apesar de produzir a saída, Searle, que não fala chinês, não entende absolutamente nada. Então seu argumento é que, assim como ele, o computador não entende nem a entrada nem a saída, apesar de poder produzí-la. Eles são então apenas manipuladores não conscientes de símbolos. Por exemplo podemos supor que Searle, trancado dentro da sala chinesa, não tivesse sido alimentado por dois dias. Se lhe pedissem uma resposta para uma pergunta em chinês, como “Você quer comer um pato à Peking com rolinhos primavera?” , esta seria respondida por ele, sem a menor compreensão de seu significado, e com certeza sua boca não ficaria cheia de água!

O argumento de Searle é que, como não podemos encontrar onde se encontra a consciência responsável pelas respostas em chinês, tal consciência não existe. Porém há outros pontos de vista em relação a este argumento. Um deles é que o sistema Searle-algoritmo entende chinês, porém cada uma de suas partes em separado não. O contra argumento de Searle a esse respeito é que se o algoritimo fosse memorizado por ele, ainda assim ele não entenderia chinês.


Fonte: Turing e Searle

Informação e Conhecimento

Extraído do livro “O Mundo assombrado pelos demônios”

Quando desci do avião, uma pessoa me esperava, tendo nas mãos um papel com o meu nome. Era o motorista que os organizadores da conferência de cientistas na TV amavelmente haviam me providenciado. “Permite que lhe faça uma pergunta?” ele disse, enquanto esperávamos minha bagagem. “Não dá confusão você ter o mesmo nome do daquele cientista?” Eu não entendi. Estaria ele me gozando? “Sou eu o cientista”, respondi. Ele sorriu: “Desculpe. Pensei que você tinha o mesmo problema que eu”. Estendeu a mão e se apresentou: “Meu nome é William F. Buckley”. O nome era muito parecido com o de um polêmico entrevistador de televisão. Já no carro, me confessou que estava encantado por saber que eu era “aquele cientista” e indagou se havia algum inconveniente em que me fizesse algumas perguntas sobre ciência; mas não foi sobre ciência sobre o que falamos.

Leia o resto deste post »