Rails escala, um disclaimer

May 26th, 2008 § 6 comments § permalink

Pelo título, você pode pensar que lá vem mais uma discussão longa considerando todos os fatores pelos quais Rails escala ou deixa de escalar. Sem chance nenhuma. Na verdade, minhas considerações são inspiradas pelo fato de que hoje recebi um e-mail bem humorado de um leitor. Depois das devidas permissões e supressões de nome, o conteúdo é o seguinte:

Ronaldo,

Eu leio o seu blog freqüentemente e não pude deixar de notar que você às vezes parece ter uma certa birra com o Rails. E volta e meia você coloca em seu Twitter que o Rails não escala. Mas você não trabalha com [o Rails]? Existe algum motivo para essa birra?

Abraços,

O pessoal do Passenger deu a resposta perfeita: Saying “Rails doesn’t scale” is like saying “my car doesn’t go infinitely fast”.

Como eu não sou tão criativo, vou por uma rota diferente. Apesar dos meus textos um tanto ou quanto provocativos, a resposta é: primeiro, não, eu não tenho uma birra com o Rails; e segundo, não, eu não me importo em absoluto se o Rails escala ou não.

Sendo assim, segue um disclaimer: toda a vez que você me vir usar a frase “Rails não escala”, considere que eu estou tendo uma reação similar à de alguém sentindo calafrios quando outra pessoa passou as unhas lentamente em um quadro negro, fazendo aquele barulho infernal. Eu não me sinto na compulsão de defender o Rails, não vou escrever nenhuma entrada explicando se e porquê escala ou não, não vou evangelizar continuamente e dizer que é inveja dos outros, nem quero saber de qualquer coisa nessa linha. Se alguém precisa escrever um texto quilométrico cheio de justificativas toda a vez que alguém espirra que Rails não escala, bem, isso é um problema entre a pessoa e seu psiquiatra.

Resumindo, é só uma reação alérgica ao debate todo. Nada mais, nada mesmo. Em tempo, Rails escala?

Gerundismos e outras “involuções”

May 25th, 2008 § 5 comments § permalink

Eu confesso que detesto o dito cujo do Gerundismo. “Eu vou estar” qualquer coisa soa feio aos ouvidos, não expressa claramente a idéia em questão e dá a aparência de um desleixo com o idioma falado.

Ainda assim, eu não tenho quase nenhuma dúvida de que em dez ou quinze anos o gerundismo estará tão formalizado em nossa gramática como a hoje quase esquecida transição do “Vossa mercê” para “Você”. Da mesma forma que o “tu” está mudando em várias regiões do país, o gerundismo é só mais um fenômeno lingüístico que se transformará pouco a pouco em algo aceito e que eventualmente ganhará suas próprias regras e aplicações.

Na linha do “você”, uma outra coisa que eu tenho notado é o uso de “agente” ao invés de “a gente”. Ainda não vi, é claro, em linguagem formal–e duvido que veja tão cedo–mas é algo que está aparecendo bastante.

Eu não me importo, mesmo sendo um fã confesso de Letras. Algo que eu acho fantástico em qualquer idioma é a capacidade de mudança que os mesmos possuem, sua adaptabilidade de refletir as necessidades de seus usuários primários. Quem acha que o idioma é feito pelos cultos e literatos não entende nada do assunto.

De qualquer forma, eu vou estar me preocupando bem pouco com isso nos próximos anos. :-)

Removendo as pedras

May 15th, 2008 § 2 comments § permalink

Hoje terminamos nosso quarto sprint. Foram duas semanas intensas e estamos bem satisfeitos com o resultado: não só a nossa velocidade (a referência de execução que o Scrum usa) aumentou significativamente (e ultrapassou as expectativas), como ainda tivemos tempo de experimentar com uma série de técnicas que tínhamos vontade de usar e estabelecemos vários utilitários para o time que ajudaram e vão ajudar ainda mais nos próximos sprints.

Nesse sprint decidimos usar pair-programming e ver qual a diferença isso fazia em nosso processo de desenvolvimento. Não só registramos um aumento de produtividade enorme como a qualidade do código gerado deu um salto impressionante. Um dos pontos fortes do Scrum são as medições realizadas que levam ao gerenciamento de expectativas proposto por metodologias ágeis.

O mais interessante, porém, foi constatar que a velocidade dos times é relativamente constante em relação aos outros, o que indica que pair-programming é uma técnica bem eficiente de disseminação de conhecimento. Como ainda tínhamos pessoas com um contato relativamente recente com Rails, eu acho que esse foi um dos principais fatores para que a equipe pudesse chegar a um ponto de familiarização rápida com a tecnologia sem onerar o desenvolvimento.

O melhor de tudo foi constatar que nenhum dos nossos temores em relação a tempo ou pressão se concretizou. Isso, pelo menos para mim, representa um dos maiores ganhos do processo: conseguir precisar entregas realísticas e cumprir essas estimativas. Que jogue a primeira pedra quem nunca reclamou de gerentes que passam prazos fora da realidade e que depois sofreu com a queda de qualidade. Combinar prazos satisfatórios a todas as partes e ainda conseguir qualidade é algo que nenhum outro tipo de processo exceto os ágeis é capaz de dar.

Obviamente, isso não implica que eu acho o Scrum perfeito. Há algumas coisas, que eu quero explorar aqui no futuro, que me incomodam. Apesar disso, a experiência tem sido bem interessante. E que venha mais um sprint.

Squeak By Example: Progresso da Tradução

May 13th, 2008 § 3 comments § permalink

O trabalho de tradução do Squeak by Example para português continua indo bem. Considerando o trabalho divido entre tradução e revisão, estamos em 59% do primeiro e 29% do segundo.

Eu acabei de fazer o merge entre todos os clones de tradução e o repositório principal agora está atualizado com todo o trabalho feito até o momento.

Se alguém deseja participar, ainda há espaço para ambas as atividades. Alguns capítulos são bem grandes e podem ser traduzidos simultaneamente e os que já estão traduzidos ou sendo traduzidos precisão de revisão e verificação de estilo e uso de termos.

Só falta agora um wiki ou coisa assim para coordenarmos os detalhes de tradução para que na hora da revisão final seja mais fácil. E toca página para frente. :-)

Multidões

May 10th, 2008 § 8 comments § permalink

Eu me empolguei com computadores na primeira vez em que ouvir falar sobre eles. A possibilidade de comandar uma máquina, fazê-la executar o que eu queria e isso muito mais rápido do que qualquer coisa que eu poderia fazer manualmente era uma coisa saída das páginas de um livro de ficção científica–que, é claro, eu sempre li aos montes.

Minha primeira linguagem foi o Pascal. Eu tive a sorte de pular o Basic e partir direto para um linguagem mais poderosa, mais estruturada. Eu ainda me lembro da sensação de completar um programa particularmente complexo que implementava não só sua própria funcionalidade (um espécie de Paint que era requerido para o trabalho final de programação), como também toda uma família de objetos para interface gráfica com um loop de processamento de mensagens, controle de hardware. Esse era um código que ainda queria ter.

Poucos anos mais tarde eu estava programando na versão mais evoluída do Pascal, o Delphi. Eu já passara então por C, C++, Visual Basic (que me empolgou pela parte visual, é claro, mas cuja linguagem conseguia me irritar nos mínimos detalhes), e já tivera o meu primeiro contato com o mítico Lisp. Foram bons anos com Delphi, dos quais, ironicamente, só saíram três aplicações puramente desktop. Todos os demais anos que eu gastei com o Delphi foram em desenvolvimento Web. Eu perdi a conta de quantos ORM implementei, de quantos frameworks Web, bibliotecas e serviços construí. Foi uma época de aprendizado enorme.

Desde então eu já passei por dezenas de linguagens. Algumas profissionalmente, outras pelo mero prazer de descobrir uma sintaxe nova e ver o que há de interessante. Eu ainda não encontrei uma linguagem que não possui uma característica que a redimisse. Mesmo em linguagens que eu jamais usaria hoje para implementar um projeto a menos que fosse um requisito obrigatório passado pelo cliente, eu encontrei algo de interessante. Pode ser que o resto da linguagem tenha sido descartável, mas alguma coisa sempre era suficiente para justificar a existência da linguagem.

Smalltalk foi a linguagem que mais me fascinou. Foram anos antes que eu publicasse alguma coisa real na mesma, mas eu sempre experimentei com o que havia de interessante. Seaside, no mundo Web, ainda representa para mim o ideal de um framework Web atual.

Linguagens são arte. E arte é algo inteiramente subjetivo no aspecto de gosto e preferências. Mas linguagens também são ferramentas. E para isso, nada melhor do que pragmatismo. Mas a combinação dos dois pode produzir resultados fascinantes.

Eu sustento minhas próprias escolhas, entretanto. Eu não preciso de validação externa para entender o que é interessante e o que deixa de ser interessante. Eu acolho novos pontos de vista, e gosto de entender o que os outros vêem. E eu também tenho preferências. Elas mudarão e eu não me preocupo com isso. Há beleza em qualquer lugar–em última instância, programação também é religião.

Eu não…

May 8th, 2008 § 22 comments § permalink

  • Eu não escolheria Rails para escrever uma aplicação Web que consistisse, em sua maior parte, em processamento fora da interface com o usuário, ou cujo maior ponto fosse uma API;

  • Eu não escolheria Django para uma aplicação cujo domínio fosse extremamente complexo, com modelos dinâmicos, tabelas construídas on-the-fly, e funcionalidades similares;

  • Eu não escolheria Seaside para uma aplicação que consistisse em recursos individualizados, independentes e cujo referenciamento fosse essencial;

  • Eu não escolheria ASP.NET para um site inerentemente visual, cuja interface externa com o usuário fosse a parte essencial da aplicação;

  • Eu não escolheria Castle Monorail para aplicações de pequeno ou médio porte em que manutenção fosse mais importante do que o desenvolvimento de nova funcionalidade;

  • Eu não escolheria Ruby para aplicações de rede onde o potencial de instabilidade fosse maior do que o normal;

  • Eu não escolheria Python para um ORM ultra-adaptável;

  • Eu não escolheria ASP clássico ou PHP puro para coisa nenhuma.

O presente do presente

May 6th, 2008 § 4 comments § permalink

Há pouco mais de um mês e meio cheguei em São Paulo para o início de uma aventura. Foi uma mudança em todos os sentidos: de uma cidade grande para uma cidade enorme; de um mercado corporativo, fechado para um mercado genérico, aberto; de uma empresa pequena para uma empresa cujos alvos são muito maiores e mais amplos.

Ainda não concluí o processo de mudança, mas esse está sendo sem dúvida um dos períodos mais empolgantes da minha carreira. Trabalhar no Brasigo tem sido uma experiência fascinante em múltiplos níveis. Fazia tempo que a pergunta “e eu ainda sou pago para fazer isso?” não me ocorria.

Voltar a trabalhar em equipe foi uma das coisas que só percebi como tinha sentido falta até estar no meio da galera. Contribuir para um produto e aprender zilhões de coisas novas–não só profissionalmente, mas pessoalmente–é algo que só um ambiente muito bom pode proporcionar. Poder trabalhar e se divertir, em um local bacana de passar as horas de trabalho é algo que não tem preço. Tem o fato que a equipe não vê a hora em que vou soltar uma palavrão, mas isso é algo em que vai ter que rolar um desapontamento básico. :-)

Mas também, como não fica empolgado: Rails, Wii, Scrum, conversas cabeça no meio do trabalho, BDD, arquitetura de produtos legais, hard-core programming, experimentos malucos, chefe desencanado, e até mesmo a cidade que não para e onde sempre tem alguma coisa interessante para fazer.

Bem, deu para perceber que eu estou gostando da mudança, mesmo com as confusões de arrumar local para morar e trazer a família. E, para não perder a oportunidade, estamos procurando mais gente para a equipe. Gente boa é sempre bem-vinda. :-)

Disciplina é liberdade

May 5th, 2008 § 2 comments § permalink

No que tange a metodologias ágeis, eu concordo com o poeta: disciplina é liberdade. Principalmente quando o ambiente é muito heterogêneo e a entropia começa a tender ao infinitivo. Dito isso, disciplina não é controle e metáforas misturadas são uma porcaria completa.

Uma questão simples

May 5th, 2008 § 8 comments § permalink

Em The Mythical Man-Month, Frederick Brooks afirma que a década após a publicação do livro não traria nenhuma “silver bullet“, isto é, nenhuma mudança de uma ordem de magnitude no processo de desenvolvimento de software através de alguma tecnologia nova. A afirmação já se sustenta há mais de 30 anos.

Pergunta: quando a inexistência de uma silver bullet se tornará um impedimento para a produção de software? Em outras palavras, existe um limite para o desenvolvimento com as tecnologias, ciência e ferramentas que temos hoje?

Pão de Cast S02E08 – Xiitas

May 3rd, 2008 § 2 comments § permalink

Em mais uma edição atrasada, a gangue assume que é completamente xiita e decide falar mal de todas as linguagens de programação, com exceção das eternas favoritas de cada um, é claro.

Divirtam-se!

Where am I?

You are currently viewing the archives for May, 2008 at Superfície Reflexiva.