A Maldita “Parte Teórica”

Uma das frases que eu mais odeio, quando converso com alguém muito estudioso mas com pouca prática, é a frase “mas você sabe que, por definição…”. Isso sempre me lembra o velho ditado “na prática, a teoria é outra” e o post de hoje é sobre isso: como eu odeio teoria não aplicada.

Isso é especialmente verdade em programação. Graças à frase “mas por definição, a equipe que testa tem que ser diferente de quem desenvolve” atrasa ou freia completamente Test-Driven Development, assim como várias outras “verdades” são seguidas, metodicamente, desde os primórdios da programação e as pessoas nem sequer sabem se é ainda válido.

Pegando, por exemplo, Design Patterns. Eu não sou contra a idéia geral dos design patterns, apenas questiono (e questiono MUITO mesmo) quando usá-los. É comum ver códigos que são relativamente simples que usam três ou quatro patterns diferentes, sem nenhum motivo aparente.
(more…)

Minha Saída de um Cargo Público

Bom, para os que não sabem, eu deixei um cargo público, estatutário, numa universidade federal. Na verdade, pedi um afastamento, mas gostaria de não voltar para lá e conseguir guiar minha vida de outras formas. O motivo é muito parecido com outros que já vi, mas acho legal contar um pouco da história também.

Quando se usa o termo “a máquina do governo”, acredito sinceramente que o termo é bem apropriado. Quando se fala a palavra “máquina”, eu pelo menos imagino aquelas máquinas antigas, totalmente mecânicas, que fazem um barulho absurdo e soltam fumaça e cheiros enquanto funcionam. O engraçado dessas máquinas antigas é que, mesmo com essas características peculiares, digamos assim, elas funcionam. Claro, comparando com modelos mais modernos, elas são BEM piores, são mais lentas, tem BEM menos recursos, mas com essas máquinas antigas, mesmo acumulando um pouco de ferrugem aqui, ou arrebentando uma correia ali, elas continuam funcionando como se nada tivesse acontecido. Detalhe que essas máquinas antigas gastam mais de energia, combustível, etc, e isso também é uma metáfora apropriada…

Assim é o governo. Pior ainda, há uma completa resistência em adotar coisas mais modernas, em mudar algo que funciona mal, mas que está em produção há anos, ou de arriscar algo novo: desde linguagens até frameworks diferentes.

E isso não é a pior parte.
(more…)

Ensaio Sobre Tesouras de Plástico sem Ponta

Pode parecer estranho o título deste post, mas na verdade ele não é apenas sobre aquelas tesouras de criança, mas sobre segurança e como ela afeta nossa vida. Mas, para isto, é melhor começar com uma história simples de diferença de cultura:

Na pré-escola, professores e professoras sempre insistiam para usarmos “tesouras sem ponta”, que normalmente significava aquelas tesouras minúsculas com cabo de plástico e que não cortavam nem uma folha de papel direito. Quando você é criança, porém, tudo é divertido (até o fato da tesoura não cortar), e no fim você ou pede emprestada uma tesoura de outra criança, que ainda não perdeu o corte, ou acaba cortando na mão, quando o corte for reto.

Agora, vamos para outra cultura: Japão. Em animes, você normalmente vê crianças e adolescentes com aulas de culinária, prendas domésticas, ou semelhantes. Nestas aulas, os adultos supervisionam, mas são os alunos quem realmente acendem o fogo, usam facas pontudas, etc. A idéia, até onde eu sei, é ensinar desde pequeno como usar uma ferramenta que pode potencialmente ser perigosa, como ensinar a ter cautela.

Imagine, agora, você com trinta anos, um cabeleireiro, estilista, artista plástico, sendo obrigado a usar uma tesoura de plástico sem ponta? Um cozinheiro que precisa de “provadores”, “acendedores de fogão”, porque, ora, no primeiro caso ele pode queimar a língua, no segundo, ele pode explodir o fogão. Ou então, usando o fogão X, porque ele tem um acendedor automático de bocas, e assa um bolo em alguns dias, afinal, com um fogo BEEEM baixo, a chance de queimar o bolo é bem menor… certo? O que isso nos diz? Na minha opinião, tudo se resume a apenas uma palavra:

Confiança.
(more…)

O Vendedor de Sonhos

Estes dias, li o livro O Vendedor de Sonhos. Basicamente, o livro é uma ficção disfarçada de auto-ajuda, ou uma auto-ajuda disfarçada de ficção – eu não saberia dizer, embora se fosse para chutar, diria que é o segundo. Basicamente, é a história de um personagem que tenta se suicidar, e encontra um homem que diz que vende sonhos, e o convida para acompanhá-lo na empreitada. É uma ficção, o que talvez tenha me motivado a ler até o fim do livro, ao invés daqueles livros que repetem diversas vezes “você é a pessoa mais importante da sua vida” e mais blá blás. Mas há alguns pontos muito positivos que eu gostaria de mencionar.

Primeiro, o personagem é bem identificável – talvez, porque o autor do livro é psicólogo, então ele não inventou personagem cheio de problemas sem explicações. Talvez, alguns personagens sejam estereotipados demais, talvez tenham menções demais a religião, talvez o autor tenha desejado dar a idéia de que ninguém é culpado pelos seus atos, são apenas vítimas de um sistema que engole a todos, mas em linhas gerais, é uma boa história. Porém, algo me chamou mais a atenção neste livro do que simplesmente a história ou a auto-ajuda (que eu, particularmente, não suporto, mas tudo bem):

Lições.
(more…)

A arte de desenvolver

Pode parecer estranho, mas desenvolver aplicativos é uma arte. É difícil, de verdade, fazer as pessoas entenderem isso.

Programação precisa de conceitos? Ótimo, música e pintura também. Também é necessário aprender a pensar da forma que a ferramenta que você usa para desenvolver (ou tocar, em caso de música) pede. Provavelmente, o improviso que você faria em um violão não será o mesmo de um violino, ou de um piano – da mesma forma, o código que se escreve em uma linguagem não segue os mesmos padrões de outras linguagens, e tentar negar isso é absurdo no mínimo.

Para os que programam mesmo, sempre há aquele amigo que quando lê um código, praticamente em qualquer linguagem, aponta na hora aonde está o erro. Ele está simplesmente adivinhando? Há uma máxima que a maioria das pessoas de desenvolvimento de sistemas esquece: “O código é muito mais lido do que escrito”. Da mesma forma, há uma citação atribuída à Donald Knuth, professor de renome da universidade de Stanford que diz: “Code is written for humans to read and only incidentally for computers to execute”. Continuando com o compacto, ao mesmo tempo em que um desenhista precisa ver muitos desenhos, visitar galerias de arte, ver as tendências, o programador deve também estar atento a essas coisas. Há um framework muito legal que as pessoas estão falando? Leia o código dele. Faça um pequeno projeto. Aprenda uma nova linguagem, nem que seja Haskell, Lisp, Smalltalk, ou outras linguagens que quase não tem repercursão comercial. No mínimo, você terá feito algo inútil. No máximo, você estudará uma linguagem nova e tentará aproveitar conceitos interessantes dela em outros projetos.

(more…)