segunda-feira, julho 31, 2006

Lista: Quatro Livros de Engenharia de Software

Para quem não viu ou não lembra, minhas regras para listas estão aqui.

Os livros listados abaixo discutem a atividade de desenvolvimento de software, apresentando filosofias, dicas e técnicas para ser um desenvolvedor melhor e mais feliz. Para ler e praticar!

  • The Mythical Man Month, Fred Brooks - Escrito há três décadas, por uma pessoa que gerenciou o desenvolvimento de sistema operacional para mainframe (OS/360), muito deste livro continua se aplicando ao dia-a-dia do gerenciamento de desenvolvimento de software. Continua sendo verdade que ao se colocar mais pessoas em um projeto atrasado a tendência é o projeto atrasar mais e nenhuma metodologia ou ferramento é a bala mágica (silver bullet) capaz de reduzir esforçoes de uma ordem de grandeza (de anos para meses, por exemplo). Um livro mais conceitual, não atrelado a nenhuma linguagem ou ambiente.
  • The Pragmatic Programmer, Andrew Hunt & David Thomas: Um livro repleto de filosofias e dicas práticas.
  • The Practice of Programming, Brian Kernighan e Rob Pike: Mais voltado aos detalhes do desenvolvimento em si, contém dicas práticas para o desenvolvimento de software, com exemplos em C, C++ e Java.
  • Rapid Development, Steve McConnel: Um tratado bastante completo sobre como evitar que um projeto vire um martírio. Muito bem organizado e recheado de estatísticas sobre projetos reais.

sexta-feira, julho 28, 2006

"CAPTCHA" nos comentário

Após a terceira visita de bots pelo blog, estou ligando esta chata opção. Vamos ver qual o resultado.

segunda-feira, julho 24, 2006

Lista: Sete Livros Juvenis

Existe uma estranha atração das pessoas por listas, tanto para ler como para escrever.

Este post traz a primeira do que pretendo ser várias listas. Adotei algumas regras para esta lista, que pretendo seguir nas próximas:

  • Não parti de um número pré-definido de itens
  • A lista não é dos melhores, maiores ou coisa parecida, é uma lista dos itens relevantes que me lembrei
  • Não numerei nem ordenei os itens dentro da lista
  • Coloquei apenas uma obra de cada autor. Alguns dos itens fazem parte de coleções (ou pelo menos são apenas uma dentre várias obras do autor que pertencem ao mesmo gênero).
  • Não coloquei os tradicionais links para Amazon ou outras livrarias
Sete Livros Juvenis

Para os fins desta lista estou considerando "livro juvenil" um livro clássico (ou perto disso) que li quando estava no ginásio ou colégio.

  • O Filho de Tarzan, Edgar Rice Burroughs: Os livros de Tarzan fizeram parte da minha infância, eu adorava lê-los no alto de uma árvore. Além dos exemplares que a minha mãe comprava, tinha também alguns volumes antigos de um primo do meu pai (ambos da mesma coleção, Terramarear). Minha mãe se desesperava com a possibilidade de eu aprender português errado por causa da ortografia nos livros antigos (perda de tempo, já que a ortografia mudou de novo pouco depois que eu me alfabetizei). Apesar dos recentes desenhos animados da Disney, as obras não estão disponíveis em português. Por outro lado, os primeiros livros em inglês já estão no dominio público e podem ser encontrados no Projeto Gutemberg.
  • O Mistério da Ilha da Cabana, Franklin W Dixon: A coleção Hardy Boys é uma tradição americana. Conheci quando a Abril publicou no começo dos anos 70, no começo não gostei muito, mas no terceiro livro já estava viciado. Após o fim da publicação pela editora Abril (no volume 18), descobri que a coleção americana tinha mais de 50 livros, que fui comprando aos poucos (livro importado era difícl de achar e caro nos anos 70 e 80). Somente com a Internet fiquei sabendo como o Franklin W Dixon escreve livros de 1927 até os dias de hoje e o porque de alguns livros antigos (comprados em vendas de garagem) tinham o texto tão diferente. Aliás, quem se aventurar a comprar na Amazon tem a opção de comprar os livros com o texto original (publicados pela Applewood books).
  • A Ilha Misteriosa, Jules Verne: Meu pai sempre foi um grande fã de Jules Verne. Por coincidência, o que considero o meu primeiro livro foi uma versão da Disney de 20000 Léguas Submarinas (convenci a minha mãe a comprar no supermercado, foi complicado pois não tinha preço e naquele tempo ainda não tinha computador nas lojas). Posteriormente meu pai comprava de tempos em tempos um volume de uma coleção portuguesa (para mais desespero da minha mãe). Embora os livros mais famosos do Jules Verne sejam Da Terra a Lua (que eu achei muito chato) e Viagem ao Centro da Terra (divertido), o meu predileto é A Ilha Misteriosa, com o relato de um bando de náufragos sobrevivendo em uma ilha com a ajuda da ciência e um benfeitor misterioso. Também disponível no Projeto Gutemberg.
  • O Médico e o Monstro, R. L. Stevenson: Um dos primeiros livros que eu peguei na biblioteca do ginásio. Também disponível no Projeto Gutemberg.
  • Um Estudo em Vermelho, Conan Doyle: O primeiro livro do Sherlock Homes. Outro que eu peguei na biblioteca do ginásio e também disponível no Projeto Gutemberg.
  • Reinações de Narizinho, Monteiro Lobato: outra coleção que meu pai foi comprando aos poucos.
  • As Minas do Rei Salomão, Rider Haggard: Este eu peguei emprestado na casa de um visinho, também estava com ortográfia muito antiga; minha mãe comprou correndo uma versão mais nova. Este exemplar sumiu, mas comprei alguns anos atrás um novo da coleção L&PM Pocket (que você acha até em bancas de jornal). Era a mesma tradução de Eça de Queiroz "que muito consideram superior ao original" (destaque na capa). Disponível no Projeto Gutemberg (o original, não a tradução).

domingo, julho 23, 2006

Certificação Microsoft

Na minha opinião, os envolvidos com informática se dividem em dois grupos quando o assunto é certificação Microsoft. Existe uma minoria que tem experiência própria com isto e fala siglas estranhas como MCSE, MCAD, MCP e menciona o tempo todos números cabalísticos como 70-290 e 70-316. E existe a grande maioria que vive feliz ignorando tudo isto. O objetivo deste post é estragar a felicidade desde segundo grupo :)

As descrições abaixo podem conter erros ou ficarem desatualizadas, a página da Microsoft sobre certificação é www.microsoft.com/learning (pelo menos atualmente).

Como se obtem uma Certificação Microsoft

Com um exceção recente, as certificações Microsoft são obtidas passando em exames. Os exames são realizados em micros e, em grande parte, são compostos de questões de múltipla escolha. Não existe nenhum pré-requisito (curso, anos de experiência comprovada, etc); qualquer um pode fazer um exame e, se atingir a nota mínima, está aprovado.

Os exames são desenvolvidos pela Microsoft, porém a aplicação dos exames é feita por duas empresas americanas, a Pearson Vue e a Prometric. Estas empresas, por sua vez, credenciam centenas (milhares?) de centros de teste espalhados pelo globo. Atualmente os exames custam US$80, existem com frequência promoções envolvendo vales (vouchers) que cobrem parte ou todo o custo.

Ao passar no primeiro exame você se torna um MCP (Microsoft Certified Professional). Outros títulos são obtidos passando em combinações de provas.

O que você ganha sendo certificado

Fama, fortuna, mulheres lindas (ou homens lindos, se for o caso) - se você quer tudo isto é melhor tratar de aprender a jogar bola (ou a desfilar na passarela no cado das mulheres).

Para você mesmo, você poderá ganhar um pouco de auto-confiança. Para aquela minoria que conhece o assunto, você ganhará algum respeito pois eles sabem das dificuldades para obter uma certificação. O resto do mundo não vai saber exatamente do que se trata e, na sua maioria, vai ser indiferente.

A Microsoft envia um certificado, um broche e um cartão de identificação a cada certificação obtida (não a cada prova), mas você tem que solicitar. Você pode emoldurar o certificado e colocar sobre a mesa (no mínimo a assinatura impressa do Bill Gates vai chamar a atenção). Já experimentei usar o broche em eventos da Microsoft, ninguém prestou atenção. O cartão eu usei como fundo em uma das fotos deste blog (o primeiro uso prático que encontrei).

Nos eventos anuais da Microsoft é comum darem um brinde para os certificados.

Como se preparar para um exame

Ao contrário do que alguns imaginam, experiência profissional com a matéria de um exame não é condição necessária nem suficiente para passar. É perfeitamente possível estudar um assunto que não faça parte do seu dia-a-dia e passar no exame. No meu caso, uso os exames exatamente para me obrigar a estudar aquilo que não uso nem conheço. Por outro lado, uma característica dos exames é ser bastante abrangente enquanto que no trabalho a gente tende a se concentrar em uma faixa estreita.

Isto não significa que a experiência não seja útil, muito menos que o estudo não deva incluir uma parte prática.

Existem diversas formas de estudar para um exame, cada pessoa obtem melhores resultados com uma determinada combinação. As maneiras principais são cursos, livros, simulados e a prática.

Existem cursos voltados diretamente para a preparação aos exames e cursos mais gerais. Em algum ponto entre eles estão os cursos com material oficial da Microsoft (MOC - Microsoft Official Curriculum).

Da mesma forma, existem livros específicos para preparação, inclusive da Microsoft Press. Com uma exceção, usei sempre este tipo de livro como roteiro de estudo, complementando com informações obtidas na internet e livros sobre temas específicos (os bons livros de preparação costumam conter uma bibliografia no final de cada capítulo). Os livros de preparação se concentram na matéria que cai no exame e são bem resumidos, porém (pelo menos os bons) costumam conter também informações úteis para o dia-a-dia.

Várias empresas (como Transcender, ...) comercializam exames simulados, O custo destes simulados é relativamente alto; a única ocasião em que adquiri um foi para o meu primeiro exame de Análise de Requisitos e Definição de Arquiteturas, para me acostumar com o formato das questões. Felizmente as empresas costumam disponibilizar versões demo dos simulados (com poucas questões); vários livros de estudo vem com estas versões. Algumas empresas oferecem simulados com "questões reais de prova", existem questões legais e morais envolvidas (ver braindumps adiante).

Uma forma bastante eficiente de fixar o estudo é através da prática. Muitos livros de estudo contem exercícios práticos descritos passo a passo. Para fazer estes exercícios você vai precisar do produto, se não der para comprá-lo veja se não está disponível uma versão trial.

As Certificações de Desenvolvimento

Quando comecei a me interessar por certificação, a certificação para desenvolvedores era a MCSD (Microsoft Certified Software Developer), retroativamente chamada de MCSD Visual Studio 6. Para obter esta certificação eram necessários 4 exames: um de Análise de Requisitos e Definição de Arquiteturas, um de Desenvolvimento de Aplicação Desktop (com opções de Visual C++, Visual Basic e Visual FoxPro), um de Desenvolvimento de Aplicação Distribuida (também com opções de Visual C++, Visual Basic e Visual FoxPro) e um exame "eletivo" (escolhido livremente em uma lista de cerca de meia dúzia de exames). No meu caso fiz o exame de aplicação desktop para Visual C++, o de aplicação distribuida para Visual Basic e como eletivo o Projeto e Implementação de Base de dados com o SQL Server 2000.

Com o lançamento do .Net, a Microsoft criou duas novas certificações: MCAD (Microsoft Certified Application Developer) e MCSD .Net. Para ser um MCAD são precisos 3 exames: um exame de desenvolvimento de Web Services e Server Components (em C# ou VB.Net), um exame de Desenvolvimento de Aplicações (Windows ou Web, em C# ou VB.Net, num total de quatro opções) e um exame eletivo (com várias opções). Para ser um MCSD .Net são precisos 5 exames: um de Análise de Requisitos e Definição de Arquiteturas, um exame de Desenvolvimento de Web Services e Server Components (em C# ou VB.Net), um exame de Desenvolvimento de Aplicações Windows (em C# ou VB.Net), um exame de desenvolvimento de aplicações Web (em C# ou VB.Net) e um exame eletivo. No meu caso aproveitei o eletivo do MCSD VS6 e fiz os demais exames em C#. O lançamento do Visual Studio 2003 não afetou as certificações nem, até onde sei, os exames.

No final de 2005, junto com o lançamento do Visual Studio 2005, a Microsoft anunciou uma mudança profunda nas certificações. Foi criado o MCTS (Microsoft Certified Technology Specialist), com três credenciais para desenvolvedor, relativas a aplicações Web, Windows e Distribuídas. Cada uma destas credenciais requer apenas 2 exames, um igual para todas (Application Development Foundation) e outro específico. No início dos exames específicos deve-se escolher a linguagem de programação: C#, VB.Net ou C++ (somente para o exame de aplicações Windows). Além do MCTS, foi criado o Microsoft Certified Professional Developer: Enterprise Applications Developer. Para ser um MCPD:EAD é preciso passar nos 4 exames de MCTS e mais o exame Designing and Developing Enterprise Applications. Quem já é MCSD .Net pode obter o MCPD:EAD passando em dois exames de atualização.

Braindumps e Outras Robalheiras

Uma discussão sobre certificação não seria completa sem tocar neste assunto espinhoso (que muita gente prefere ignorar). No início de cada exame o candidato assina um termo de sigilo; a Microsoft protege as questões de prova também por copyright e como segredo industrial. Eventual material de rascunho usado durante a prova deve ser deixado no centro de teste.

Tudo isto não impede que algumas pessoas registrem em sites as suas recordações das questões de prova, gerando os chamados braindumps. Um outro candidato pode então decorar as perguntas e respostas e com isto passar no exame sem saber nada (supondo que o número de variações de perguntas seja baixo frente ao número de braindumpers).

Algumas pessoas são ainda mais preguiçosas e se limitam a falsificar o certificado (ou simplesmente colocar no currículo certificações que não possui).

Isto serve também de materia prima para espertalhões, que revendem os braindumps como material de estudo ou simulados ou até mesmo oferecem certificados falsos.

Como já disse em outra ocasião, tudo isto é imoral e ilegal.

19/out/07: pequenos acertos no texto.

terça-feira, julho 11, 2006

Bugs Estranhos: INTERNAL COMPILER ERROR

O que você faz quando, ao corrigir o último erro de sintaxe em um programa C++, o Visual C++ v6 apresenta a mensagem

G:\Projetos\TOL\CColRF\CColRf.cpp(41) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8966\vc98\p2\src\P2\p2symtab.c', line 932)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information

E uma busca no google devolve um post em um forum de VB?

Felizmente o google achou uma resposta em lugar também improvável: uma lista de discussão do Samba.

Por incrível que parece, o problema todo é que estava compilando diretamente sobre a rede. Para resolver, bastou copiar tudo para uma unidade local.

E para quem está curioso, o VB utiliza (discretamente) o compilador do Visual C++ para gerar código executável.

segunda-feira, julho 10, 2006

Figurinhas e o Paradoxo dos Aniversários

Outro dia eu comprei alguns pacotes de figurinhas para a minha sobrinha e estávamos reclamando da quantidade de repetidas quando percebi que estava vendo uma manifestação do "paradoxo dos aniversários".

Para quem não conhece, este é um problema clássico de estatística: o professor pergunta para uma turma de 30 alunos se eles acham provável que pelo menos dois deles façam aniversário no mesmo dia. Os alunos acham que é improvável, o professor pergunta as datas de aniversário de cada um e, para surpresa dos alunos, encontra dois que fazem anversário no mesmo dia.

O "paradoxo" surge pelo fato de cada aluno pensar na probabilidade de algum dos outros fazer aniversário no mesmo dia que ele (29/365 = 8% *).

Este é daqueles problemas de estatística que se resolve mais facilmente calculando a probabilidade da negação. No caso, a probabilidade de 30 pessoas terem datas de aniversário distintas.

Para a primeira pessoa, a probabilidade é um. Para a segunda pessoa, a probabilidade é 364/365. Para a terceira pessoa é 363/365, múltiplicado pela probabilidade das duas anteriores não fazerem aniversário no mesmo dia (pois queremos que as duas coisas aconteçam simultaneamente), ou seja 364/365 * 363/365. Analogamente, para a quarta pessoa teremos (364*363*362)/(365*365*365). Para trinta pessoas o resultado é aproximadamente 0,29 (29%). Daí se conclui que a probabilidade de pelo menos duas pessoas em um grupo de 30 fazerem aniversário no mesmo dia é de 70%.

E as figurinhas? O album em questão tem 240 figurinhas e cada pacote vem com quatro. Isto resulta nas seguintes probabilidades de termos pelo menos uma figurinha repetida:

1 pacote = 2%
2 pacotes = 11%
3 pacotes = 24%
4 pacotes = 40%
5 pacotes = 55%
6 pacotes = 69%
7 pacotes = 80%
8 pacotes = 88%
9 pacotes = 93%
10 pacotes = 96%

Não é muito animador, certo?

* Estou desconsiderando o 29/fev. Fica como exercício para o leitor corrigir as probabilidades considerando os anos bissextos.

Dica Doméstica: Descongelamento

Quando a minha esposa vai no açogue costuma pedir para embalar a carne em separada em porções mais ou menos diárias. Ao chegar em casa vai tudo para o congelador.

Muito prático mas cria o problema de descongelar. Normalmente o que ela fazia era colocar em um prato fora da geladeira. Após várias hora ainda estava congelado e ela acabava apelando para o micro-ondas, o que acabava deixando as pontas cozidas.

Felizmente achei uma dica em um livro de culinária americano: coloque o produto a descongelar (fechado hermeticamente em um saco plástico, com o mínimo de ar possível) em uma vasilha grande com água a temperatura ambiente. Após algum tempo troque a água. Os resultados são excelentes.

Um comentário de engenheiro filho de físico: o segredo é que o ar é mau condutor de calor e a água é bom.

sexta-feira, julho 07, 2006

Yes, nós temos livrarias II: A Traça

Procurando na Internet informações sobre um livro obscuro que li quando criança, o Google retornou um link para A Traça.

É um simpátivo "sebo virtual" e a experiência de compra foi ótima: imediatamente após colocar o pedido (às 9:07) veio um e-mail confirmando o recebimento do pedido. Pouco depois (12:28) veio a informação de que o livro estava localizado e o débito no cartão tinha sido feito. No final da tarde (18:32), e-mail avisando que o livro tinha sido encaminhado ao correio. Na manhã seguinte (11:00) o Sedex estava sendo entregue. Detalhe: a Traça fica em Porto Alegre e aqui é São Paulo. O Correio foi tão rápido que o livro chegou antes do e-mail informando o identificador do objeto.

terça-feira, julho 04, 2006

World eBook Fair - OnLine

Já está no ar o site do World eBook Fair, porém o acesso está bastante lento.

Em uma olhada rápida, já achei um livro curioso (que eu li anos atrás): Fallen Angels de Larry Niven, Jerry Pournelle e Michael Flynn. É uma sátira à onda anti-ciência que assola o mundo. Num futuro não muito distante, a raça humana se dividiu em dois grupos. A superfície da Terra é controlada por um governo "verde" totalitarista obrigando os que crêem na ciência a morar em estações espaciais. Dois destes astronautas caem na Terra e são salvos pela última resistência pró-tecnologia: os fãs de ficção científica. O livro é repleto de piadas e referências a episódios reais do mundo dos fãs. Uma leitura divertida, mas não para ser levada a sério.