Archive for the ‘livros’ Category

Refletindo sobre Tendências

Friday, July 10th, 2009

Recentemente muita gente tem me procurado nos instant messengers da vida para perguntar sobre tendências. Existe uma idéia no Brasil de que quem está de for a “traz as novidades”. Isso podia ser verdade antes da Internet mas agora as coisas se espalham com tanta velocidade que em muitos aspectos o Brasil está muito na frente da Austrália.

Mas existe o outro lado que é o trabalho na ThoughtWorks. Os projetos que nós enfrentamos geralmente começam da mesma maneira que os que qualquer consultoria, de três letrinhas ou três pessoas, enfrenta. O diferencial que faz ser um lugar interessante para se trabalhar é o que acontece durante o projeto.

O que segue neste post é uma amarrado de impressões pessoais sobre os últimos doze meses, tanto sobre a Austrália quanto o que sei de outros escritórios. Se ele não for coeso ou fácil de ler eu peço desculpas mas encare como um braindump.

Os projetos para bancos e empresas do mercado financeiro em geral continuam bem parecidos. Em 2007 houve uma euforia em torno da bolha econômica e muitos projetos megalomaníacos –e, por conseqüência, extremamente interessantes do ponto de vista técnico- apareceram mas a crise os tirou do baralho nos tempos recentes. Os bancos estão gastando menos e buscando fazer mais dinheiro reutilizando a estrutura existente. A maioria dos projetos que eu tenho conhecimento dentro de bancos é para estender uma determinada oferta para novos clientes ou é para migrar de uma plataforma legada para algo menos dispendioso.

O interessante sobre o “legado dispendioso”, dentro e fora de bancos, é que muitas vezes ele se trata de coisinhas como WebSphere, Aqualogic, Biztalk, Tibco e produtos parecidos. Apos gastar rios de dinheiro implantando estes e não ver nenhum centavo de retorno real muitos dos grandes estão migrando para plataformas mais eficientes, quase sempre baseadas em software livre. Hoje em dia são comuns projetos de migração de Websphere para Jetty ou de BizTalk para serviços RESTful usando IIS, JSON e ASP.Net MVC, por exemplo.

Na parte de aplicações para Internet, onde geralmente eu me envolvo mais, as coisas também têm mudado bastante. Basicamente os projetos têm se dividido em startups e legado. As startups aparecem com um problema e algum montante de dinheiro. A plataforma mais utilizada para atender estes cenários é Ruby on Rails, geralmente fazendo deployment em algum serviço de Cloud Computing.

Cloud Computing é um tópico extremamente relevante tanto para ThoughtWorks quanto nos nossos clientes. Uma das coisas interessantes que fizemos no início do ano foi trabalhar junto com o Google no lançamento da AppEngine em Java (e outras linguagens).

As empresas com legado de Internet são sempre interessantes. Geralmente elas são algum grande prestador de serviço na área de mídia e possuem um ou mais websites antigos que têm aquela arquitetura manjada de rodar em um Weblogic ou Tomcat com um Apache de front-end. O problema é que hoje em dia o numero de usuários é muito superior e a velocidade com que funcionalidades têm que ser adicionadas e alteradas é muito maior. Após entender que os Googles e Facebooks da vida não usam Java EE e não pagam licença para a IBM as empresas estão desesperadas para atingir o mesmo nível de eficiência.

O que temos feito nesta área é utilizar a já citada Cloud Computing para realizar tarefas que não precisam ser executadas dentro do firewall (de crawling até rodar teste de carga), refatorar aplicações grandes para atingir escalabilidade horizontal e simplificar processos de deployment e gerenciamento de recursos.

Na área mais de programação em si as coisas não têm sido lá muito excitantes. As plataformas em específico não têm nenhuma novidade marcante mas a programação poliglota é uma realidade. Até hoje todos os projetos que tive alguma participação dentro da ThoughtWorks utilizavam mais de uma linguagem de programação (já descontando Bash e JavaScript).

Uma surpresa agradável foi a que tive no meu projeto atual, em que voltei a programar em .Net após 3 anos afastado. A maioria das coisas que eu realmente não gostava sobre C# e seu ecossistema foram removidos (exceto Windows e Visual Studio, duas peças que eu considero de qualidade inferior). A Microsoft continua enfiando frameworks e ferramentas terríveis pela guela dos seus clientes (MSBuild? TFS? WCF? WTF?!?) mas no geral as coisas estão bem melhores.

Em termos de livros sobre programação eu tenho me focado quase que exclusivamente nos conceitos presentes em linguagens e paradigmas de programação. Esta é a lista de livros relacionados que eu li desde que cheguei aqui:



Esta é a fila dos que faltam:


(fora os que ainda estão no meu carrinho de compras na Amazon. Livro na Austrália é ridiculamente caro)

Na parte de gerenciamento de projetos e metodologias as coisas estão engraçadas. Tem horas que a euforia anima, tem hora que dá náusea. Eu acho que o Bellware resumiu muito bem:

early agile adopters were looking for a way to do things better. later adopters are just trying to do agile, thus the failures

Eu vim para a ThoughtWorks para ver como é que quem introduz métodos ágeis há anos trabalha. Nos últimos meses eu trabalhei com pessoas que fazem isto há mais de dez anos e em empresas que adotaram agile antes de eu saber que ele existia. O que eu aprendi neste período inicial é exatamente o descrito acima: quando seu objetivo é ser ágil você falha, quando seu objetivo é sempre melhorar você tem chances de sucesso.

Todos os projetos que participei foram bem sucedidos? Depende de para quem você pergunta. Mesmo os clientes mais difíceis que tive acabaram ficando satisfeitos no final mas muitos projetos que participei (e o número de projetos é bem maior que o número de clientes) foram executados de uma maneira que o time não ficou satisfeito. Eu acho que neste caso é perspectiva. Como a maioria dos projetos são um fracasso colossal basta ter algum nível de sucesso que o projeto vira referência. O time, em compensação, tem um critério de sucesso muito mais alto e não considera o projeto como bem-sucedido.

É claro que no fim das contas o que vale mais é a opinião do cliente –tanto porque o problema dele foi solucionado bem como porque é ele quem paga a conta no final- mas eu já vi diversos problemas decorrentes deste tipo de coisa. De builds que começaram em 10 minutos e terminaram em duas horas de duração até um time que perde 50% do seu tempo corrigindo defeitos por falta de uma suíte de testes decente. Os problemas podem não ser grandes para aquele projeto em específico mas não prestar atenção há eles é mortal em médio prazo.

Minha conclusão é que a indústria está num estado melhor do que há alguns anos atrás. Tecnicamente estamos entrando em uma espécie de renascimento e isso promete render muito material para posts aqui. Em termos de gerencia de projetos e processos as pessoas estão finalmente se convencendo que tudo tem limite, até ineficiência.

Patterns de Adoção Ágil

Sunday, August 3rd, 2008

Uma pergunta frequente é: Como eu introduzo Agilidade na minha empresa?

Recentemente eu fiz uma revisão do Agile Adoption Patterns. Este livro é fantástico para você conhecer diversas técnicas e seus impactos. Mais importante ainda: sem ficar preso à uma metodologia de caixinha.

Sinal de Vida

Wednesday, March 12th, 2008

Nossa, tanta coisa que nem sei o que postar. Neste tempo que fiquei afastado –quase um mês!- juntei um bando de idéias para postas mas agora falta tempo.

Neste período terminei mais um projeto. Estou alocado no mesmo cliente e temos dezenas de pequenos projetos que fazem parte de um projeto maior que faz parte de um projeto tão gigantesco que toda semana tem uma festa para comemorar que alguém lá em Perth terminou uma parte que você nem sabia que existia. Segunda-feira devo ser movido para outra parte, desta vez é apenas para prestar ajudar um grupo de desenvolvedores do cliente que está com problemas num sistema baseado em mensagens assíncronas. Deve durar até Maio, creio.

Mas não é o trabalho que me tem afastado, pelo menos não é o maior causador. O problema é a minha pesquisa. Eu tenho dedicado boa parte do meu tempo livre a me aprofundar nos assuntos necessários para uma boa compreensão de Language-Oriented Programming e Domain-Specific Languages.

Infelizmente existe duas áreas de Ciência da Computação nas quais eu nunca me interessei muito: linguagens de programação e inteligência artificial. IA é algo que eu ainda não estudo mas para entender DSLs uma das coisas mais importantes é entender como as linguagens são criadas. Isso está me fazendo tentar aprender em um mês o que eu negligenciei por anos, incluindo a leitura capa-a-capa do SCIP. Eu sei um pouco de Common Lisp mas ainda que não soubesse não seria problema, o livro usa Scheme mas você não precisa saber Scheme ara começar a ler –bem no estilo de Bertrand Meyer que ensina Eiffel no seu livro de OO.

Depois disso vem o Concepts, Techniques, and Models of Computer Programming - que é uma recomendação do Rafael- e The Seasoned Schemer. For a as dezenas de papers da ACM que tenho pesquisado.

É trabalhoso, é complicado mas é uma das coisas que me fizeram vir ara a Austrália e mudar de emprego. Na ThoughtWorks eu tenho acesso a um material seleto sobre iniciativas no mundo real destas tecnologias, e acesso à pessoas com um conhecimento sobrenatural sobre este assunto. Apesar de eu adorar fazer parte de um time fixo desenvolvendo um produto e focado em melhoria, trabalhar como consultor me dá mais liberdade para focar no meu interesse atual, que em grande parte é essa pesquisa. Eu trabalho de 9 as 17h no cliente -sem hora extra- levanto da minha mesa e em 15 minutos estou no meu apartamento.

Antes que comecem as especulações entre meus três leitores não, eu não pretendo fazer nada de útil com o resultado da pesquisa. O resultado, na verdade, não importa, para mim importa o que eu aprender no caminho.

Se tudo der errado eu faço uma aplicação em Lisp pro Facebook e fico rico :)

Anotações sobre Language-Oriented Programming (LOP)

Friday, October 12th, 2007

Como alguns sabem eu tenho um blog em inglês onde o foco é na minha linha de pesquisa atual: Domain-Specific Languages e Language-Oriented Programming. Eu venho psotando sobre minhas experiências brincando com este “novo” paradigma e acabo de postar o rascunho de um primeiro artigo sobre o tema. Comentários são mais que bem-vindos.

Ricardo Semler & Peer 2 Peer

Tuesday, July 24th, 2007

Estava eu passeando pelo Galeão pensando se meu vôo ia sair apenas atrasado ou se ia ser cancelado (para minha sorte e surpresa ele saiu na hora), dentro da livraria reformada do aeroporto quando encontro um livro que queria muito ler por recomendação do Rodrigo Kumpera “louds”: Você Está louco, de Ricardo Semler. Durante as 12 horas seguintes de baldeações entre 3 aeroportos, cada um num fuso-horário, por 3 horas até chegar em Chicago li o que o tal Semler tinha pra dizer. Desde sempre eu me interesso por leitura de negócios, mas desde sempre eu odeio literatura do tipo Pai Rico, Pai Pobre ou o meu favorito para o ranking de livro mais idiota da história: Quem Mexeu no Meu Queijo (outro dia vi uma variação nova sobre sapos que acham lagoas novas). Por isso eu folheava o livro com bastante receio de ter gasto R$40,00 a toa.

Pois não é que o Semler tem muito a dizer? A idéia básica do livro você pega muito depressa: as idéias ‘loucas’ do autor são apenas aplicações do conceito de ‘power to the people’, tão falado neste mundinho Web 2.0 que estamos inventando e vendendo. É impressionante como quando alguém que pode quer fazer alguma coisa os efeitos são visíveis em pouco tempo, seja em um site de conteúdo colaborativo, em folksonomy, em uma rede de distribuição de conteúdo colaborativa e indestrutível ou mesmo numa fábrica com seus operários.

Uma parte importante, no entanto, é quando Semler explica como fez para que os operários fossem apresentados aos balanços da empresa. Não adiantava mostrar planilhas e gráficos para quem não estava habituado a isso, foi necessário falar a língua do povo.

Não vou estragar o livro, fica a recomendação.

Mauricio Linhares no IMasters!

Sunday, February 18th, 2007

Símbolo brasileiro da primeira bolha da Internet, o IMasters parece tentar retomar sua posição numa internet, ao contrário da anterior, soterrada de informações. Bom, os primeiros passos estão indo bem, pelo menos a publicação do artigo do Maurício Linhares foi sensacional: Ócio como combustível para a inovação.

O texto toca no tema que Tom DeMarco aborda em Slack: Getting Past Burnout, Busywork, and the Myth of Total Efficiency, que apesar de não ter o charme e importância de um Peopleware é uma excelente leitura. Parabéns, Maurício!

Eric Evans no infoQ

Thursday, January 4th, 2007

Ok, notícia velha, me critiquem por ser lerdo, mas não posso deixar de comentar esta excelente entrevista do Eric Evans no infoQ.

The long-term trend is toward applying software to more and more complex problems deeper and deeper into the heart of these businesses. It seems to me this trend was interrupted for a few years, as the web burst upon us. Attention was diverted away from rich logic and deep solutions, because there was so much value in just getting data onto the web, along with very simple behavior. There was a lot of that to do, and just doing simple things on the web was difficult for a while, so that absorbed all the development effort.

But now that basic level of web usage has largely been assimilated, and projects are starting to get more ambitious again about business logic.

Com outro trecho mais adiante…

Combine that with the imperative to produce Web UIs mediated by http and html (which were not designed for that purpose) using quite primitive, first-generation tools. During that period, creating and maintaining a decent UI became so difficult that little attention was left for design of complex internal functionality. Ironically, at the very moment that object technology took over, sophisticated modeling and design took a heavy hit.

Sintetizam as desculpas (esfarrapadas) para se produzir aplicações baseadas em objetos burros nos últimos anos.

For example, SOA, when it is used well, provides us a very useful way of isolating the domain.

Este é outro ponto interessante. Muitas vezes vemos SOA sendo utilizado como desculpa para modelos de objetos burros e fracos, ou até mesmo para uma volta ao Dicionário de Dados. Serviços não trocam, ainda, objetos inteligentes e sim estruturas de dados mas dentro do serviço nós temos um sistema OO e, como tal, deve ser construído utilizando objetos!

E lembrem-se: objetos são dados e comportamento num mesmo conceito.

But back when the J2EE frameworks first came out, it utterly buried that basic expressiveness under mountains of framework code. Following the early conventions (such as EJB home, get/set prefixed accessors for all variables, etc.) produced terrible objects.

Isso eu comentei bastante no artigo sobre VO/BO.

Rails has generated a lot of excitement because it finally seems to make creation of Web UIs as easy as UIs were back in the early 1990s, before the Web. Right now, this capability has mostly been applied to building some of the vast number of Web applications which don’t have much domain richness behind them, since even these have been painfully difficult in the past. But my hope is that, as the UI implementation part of the problem is reduced, that people will see this as an opportunity to focus more of their attention on the domain. If Ruby usage ever starts going in that direction, I think it could provide an excellent platform for DDD. (A few infrastructure pieces would probably have to be filled in.)

Este trecho toca na minha crítica #1 com Rails: domínios fracos baseados em Bancos de Dados. A linguagem Ruby é tão cheia de vantagens que a limitação imposta pelo modelo CRUD do Rails me irrita profundamente. Ok, você não precisa ter um modelo fraco em Rails, mas você também não precisa ter um modelo fraco ao usar EJB 2.1, VB 6 ou Delphi e isso nunca evitou este problema.

More out on the cutting-edge are the efforts in the area of domain-specific languages (DSLs), which I have long believed could be the next big step for DDD. To date, we still don’t have a tool that really gives us what we need. But people are experimenting more than ever in this area, and that makes me hopeful.

Outro ponto muito bom. DSLs são iminentes mas as ferramentas simplesmente ainda não chegaram lá. O grande perigo é que o conceito está se tornando popular mas não existem ferramentas. Algo semelhante aconteceu com OOP, as linguagens eram procedurais mas todo mundo falava em OO, gerando a célebre consideração sobre C++ que eu traduzo mal e porcamente abaixo:

C++ é como sexo para adolescentes

  • Está na sua cabeça o tempo todo.
  • Todo mundo fala disso o tempo todo.
  • Todo mundo acha que todo mundo está fazendo o tempo todo.
  • Quase ninguém está fazendo de fato.
  • Os poucos que fazem:
    • estão fazendo mal e porcamente.
    • têm certeza que da próxima farão melhor.
    • não fazem com segurança.
  • Ainda assim todo mundo fala sobre como estão tendo sucesso com isso, ainda que uns poucos tiveram qualquer nível de sucesso

Bom, não percam!

Caindo na Real? Nem tanto, nem tanto…

Tuesday, December 26th, 2006

Continuando nosso ciclo de resenhas e análises fragmentais causadas por uma imensa falta de tempo para escrever algo melhor, acabo de ler o Getting Real da 37Signals, empresa originária do Ruby on Rails e de aplicativos muito interessantes.

Adquiri a cópia impressa do livro (o mesmo pode ser lido de graça online) na lulu.com. A Lulu.com é um conceito recente (não novo) em publicação e está fazendo sucesso até na mídia tradicional de um país que costuma sempre ser atrasado em tudo (encontrem um erro tosco nessa matéria) mas ainda não tem a estrutura de uma Amazon. O livro demorou uns bons 30 dias para chegar…

A leitura em si foi rápida, trata-se de um apanhado de textos curtos, e foi relativamente decepcionante. A postura “nós somos a internet 2.0, nos ouça ou saia do playground” é incômoda mas nada que estrague a leitura. O problema real é que a temática do livro é a mesma de tantos outros textos… não há no livro nada que o faça especial.

Não me entenda mal, é um bom livro se você ainda não leu muito sobre coisas básicas como dar mais importância aos clientes, saber dizer não, etc., mas não vai mudar o mercado ou causar muito barulho.

Freakonomics: Morte ao Senso Comum!

Monday, June 12th, 2006

Acabo de ler Freakonomics, de Steven D. Levitt e Stephen J. Dubner. O livro é muito bom.

Eu não sabia bem o que esperar mas as ótimas revisões e o fato de eu achar uma versão pocket em inglês na livraria do saguão de Congonhas me fez comprar. Basicamente o livro examina dados sobre fenômenos inusitados, como a influência de nomes exóticos na vida das pessoas ou lutadores de sumô trapaceiros. A linha de pesquisa de Levitt é focada em trapaças que as pessoas fazem e como as descobrir com dados, ele fala de crime, educação pública e muito mais. Muito recomendado.

Além dos Malditos Tópicos

Monday, April 17th, 2006

Acabei hoje de ler um dos livros da lista, o Beyond Bulltet Points, de Cliff Atkinson (e acabo de saber que vai sair uma versão atualizada).

É o segundo livro sobre falar em público e preparar apresentações que leio este ano. Este se foca exclusivamente em como preparar uma apresentação de slides no Powerpoint. Sim, em negrito porque o livro se torna irritante quando começa a mandar você clicar em File>Presentation… e outras coisas específicas do editor de slides da Microsoft (o livro é da MS Press).

BBB

É uma pena, porque Cliff tem muito a falar (você pode sentir pelo blog dele). Dicas preciosas sobre como organizar um slide e uma metodologia para criar apresentações bem razoável. Eu diria que vale comprar o livro se você, como eu, tem se vido muito frequentemente pensando em como diabos combinar um diagrama com texto e headlines. O livro não fala sobre falar em público, é apenas sobre organizar uma apresentação, no Powerpoint.

Estou numa dúvida sobre qual vai ser o próximo livro… amanhã de manhã eu decido.