Conheçam o PODebug

podebug-logoGosto muito de conversar sobre qualquer assunto. Um assunto em especial é sobre trabalho. Não sou daquelas pessoas que interrompe uma conversa dizendo: “Se for pra falar de trabalho eu vou embora”. Acho muito prazeiroso falar sobre desenvolvimento de software. A evolução natural é a amplificação dessas conversas através de um podcast.

Minha primeira tentativa foi a criação do podcast Atalho. O formato do Atalho era uma mesa redonda sobre as notícias recentes com pessoas aqui do CESAR. O mediador (eu) trazia as notícias e cada participante dava sua opinião sobre o assunto. Muitas vezes o assunto era polêmico e gerava discussão boa. 2 episódios foram gravados e divulgados internamente, mas a repercussão foi pequena o trabalho era grande e eu abandonei a iniciativa.

A segunda tentativa aconteceu quando fui provocado por Marcelo LV Cabral, amigo de longas datas. Como ele mora em Tucson, nos reunimos no Google Hangout e gravamos um piloto com video. Dessa vez nos mesmos não gostamos do resultado e a iniciativa foi abandonada.

Há algumas semanas atrás Marcelo me procurou novamente com um novo projeto, o PODebug. Dessa vez tanto ele já tinha mais experiência, pelo lançamento do Conversando Miolo de Pote, bem como angariado mais um parceiro, Vladimir Cezar. O entrosamento entre os 3 foi rápido e acho que fizemos um bom trabalho desde o piloto. Enviamos esse piloto para algumas pessoas e todos nos encorajaram a seguir em frente. E nós seguimos…

Eu lhes apresento o PODebug, um podcast sobre o mundo da programação. Escutem, assinem e nos dêem seu feedback, seja através da nossa página, facebook, twitter ou mesmo por email.

Dias do Futuro Presente da Programação

Que linguagens de programação vamos usar daqui a 15 anos? Como será o futuro da programação? Nesta palestra faço uma reflexão sobre a evolução da programação avaliando as tendências atuais. Minha ideia é que o futuro já está presente hoje. Das 25 linguagens mais populares hoje em dia, apenas 1 não existia em 2001. A maior chance é que as linguagens do futuro já existam hoje. Sendo assim, quais são essas linguagens? Que características elas tem em comum? Em quais devemos investir?

O Fim dos Design Patterns

O livro Design Patterns foi publicado em 1994 e influencia fortemente a forma com que escrevemos software. Essa grande influência é resultado direto da qualidade do livro, mas também pelo contexto da popularização das linguagens orientadas a objeto e imperativas. Em 2010, eu fiz uma apresentação que demonstrava a tendência das principais linguagens evoluirem para incorporar conceitos de programação funcional. Hoje em dia isso já não é uma mera tendência, é uma realidade. As linguagens de programação mais populares já são orientadas a objetos, imperativas e funcionais. Agora que isso já faz parte da nossa realidade, vamos descobrir rapidamente que boa parte dos padrões de projeto adotados popularmente, podem ser refeitos com melhor qualidade e simplicidade. Temos que reescrever nossos catálogos de padrões. Na segunda parte da apresentação, com forma de exemplificar essa teoria, falo sobre Monads, um dos padrões funcionais, e demonstro que como ele já está sendo usado em várias partes das bibliotecas padrão das principais linguagens.

Microsoft abre o .NET

dot net logoA Microsoft anunciou hoje que está portando o .NET para Linux e Mac e vai libera-lo de forma open source. Este movimento de mudança estratégica não é novidade, basta lembrar que a MS também liberou de forma free o Office para IOS e Android na semana passada. Além disso, eu mesmo também já havia testemunhado pessoalmente essa mudança quanto estive na Build 2013 (vejam em especial o slide 40). Uma coisa coisa interessante é que essas mudanças estão sendo atribuídas a Satya Nadella, mas não vejo desta forma.

Mudanças desse calibre são cozinhadas durante anos antes de aparecer para o grande público. Sinais dessas mudanças já assistimos ainda durante o final da gestão de Steve Ballmer, o problema é que Ballmer era um representante legítimo da velha empresa de software, do velhos modelos de negócio, não dava para liderar a Microsoft neste nova fase. Sorte da MS, porque Satya Nadella vem fazendo um excelente trabalho liderando uma corporação gigantesca neste movimento de mudança.

Para mim, o que importa mesmo é que a MS está cravando uma estaca no coração do ultrapassados modelos de negócios das empresas de software. Não que eu esteja dizendo que empresas como a Oracle (empresa pela qual não tenho a menor simpatia, basta ver aqui e aqui) estão acabadas, mas não acredito que haja condições para surgir novas grandes corporações compartilhando o velho modus operandi.

Sobre o .NET, seja bem vindo ao mundo. Porque suportada por uma empresa que tá montada na grana, demonstrando evoluções animadoras no C# e F# e mantendo na folha de pagamento um dos meus ídolos (Simon Peyton Jones), agora posso considerar seriamente o uso de .NET.

Afinal, não dava para levar a sério uma tecnologia que suportava apenas Windows, não acha?

A insustentável leveza dos games

Essa semana a King anunciou os resultados financeiros para o segundo trimestre de 2014. Os resultados mostram queda de 5% em relação ao trimestre anterior, confirmando a decadência de seu principal produto, o Candy Crush. O mercado reagiu de imediato e as ações caíram 20%. Esse reação do mercado me fez refletir um pouco sobre o mercado de games.

Ações da King

A King existe desde 2003, mas só conseguiu ganhar destaque, notoriedade e grande faturamento quando lançou o Candy Crush. Este comportamento não é incomum, na verdade quase todas as grandes empresas funcionam desta forma. A busca pelo grande HIT.

candy crush

A questão é que esses hits passam naturalmente por um ciclo de crescimento e decadência. A galera enjoa. Aconteceu com Farmville, Draw Something, está acontecendo com Candy Crush e vai acontecer com 2048 e Clash of Clans. A solução então é ir esticando a corda para adiar ao máximo a inevitável decadência. A Rovio é exemplar nisso pelo que fez com a franquia Angry Birds, que hoje tem bonecos, roupas, jogos e até desenho animado com a marca. Certamente o faturamento com licenciamento supera em muito o faturamento com o jogo eletrônico. Entretanto, mesmo um sucesso do tamanho do Angry Birds também acaba, e quando acabar, é bom a Rovio já ter lançado algum outro hit, caso contrário vai ser difícil manter a empresa. E o grande problema é justamente esse… não existe fórmula para conseguir o grande hit.

O grande hit é algo mágico. Alguma coisa acontece quando esses jogos atingem o usuário. Algo que não pode ser explicado nem replicado com perfeição. Um bom exemplo disso é o Flappy Bird, um jogo que tinha tudo para ficar no ostracismo mas virou um grande sucesso. Outros exemplos são as tentativas fracassadas da Zynga, OMGPop (depois comprada pela própria Zynga), Supercell, Rovio e King de criar novos jogos de sucesso. O que sobra é a criação de outros jogos com a mesma mecânica do original na tentativa de esticar a corda.

Naturalmente o modelo de negócios dessas empresas (com honrosas exceções) passou a ser conseguir um hit, ganhar visibilidade (e dinheiro) e antes de entrar em decadência, ser vendida ou fazer o IPO. Essa operação remunera os investidores originais, mas deixa em risco os novos investidores. Zynga e agora King são dois exemplos de empresas que estão encrencadas, contando quase simplesmente com a sorte para encontrar um milagroso novo hit, antes que o dinheiro acabe.

O Mundo dá Voltas

Planeta Terra

Como já falei aqui, comecei a minha vida profissional trabalhando com C e Assembly, o que me deu uma base de conhecimento muito boa sobre como o computador funciona. Recentemente participei de uma discussão sobre a elaboração de um treinamento sobre programação concorrente. Uma das minha sugestões foi que fizesse parte do escopo do treinamento a criação de um escalonador de tarefas não preemptivo escrito em C para MS-DOS. Pode até parecer loucura e perda de tempo o investimento nessas tecnologias obsoletas, mas me deixe defender essa posição.

Eu acho que a maioria dos novos engenheiros hoje em dia tem dificuldade de dominar certos conceitos porque nunca desenvolveram programas de baixo nível, mais próximos da máquina. Trabalhar exclusivamente em um nível de abstração muito alto dificulta o entendimento do que acontece por baixo dos panos (já falei sobre isso aqui). Criar uma aplicação multitasking em um sistema operacional que não dá suporte multitasking, nos obriga a dominar uma série de conceitos mais próximos da máquina (como interrupções e chaveamento de contexo) para superar esse desafio. Além disso, quero chamar a atenção para outro aspecto.

O NodeJS é uma ferramenta moderna que ganhou bastante popularidade nos últimos anos. O maior apelo dela é a facilidade na criação de aplicações rápidas e escaláveis em Javascript. O pulo do gato do NodeJS é a utilização de uma única thread com um loop de eventos executando fibers. Fiber nada mais é do que um processo de excução não preemptivo. Exatamente a mesma solução que usávamos no MS-DOS em 1990.

O mundo dá voltas, e não é só neste caso. O modelo de programação concorrente com actors foi criado em 1973 e o conceito de map reduce também já existia antes de eu nascer.

Fazer um curso hoje usando tecnologias tão antigas e obsoletas pode nos ajudar a sempre ter um olho atento ao que já passou, porque lá do passado podemos encontrar as soluções para os nossos problemas atuais. De quebra, ia ser bastante divertido fazer o contraste entre as ferramentas antigas e as atuais. Acho que depois de uma experiência dessa eu nunca mais ia reclamar do Java.

O triunfo dos nerds

Fiz uma apresentação para uma turma de Administração na FCAP. Minha ideia era mostrar como a tecnologia (e as pessoas que entendem de tecnologia) estão mudando o panorama das empresas e negócios. A mensagem final é que os líderes do futuro tem que entender de Ge.N.Te (Gente, Negócios e Tecnologia).

Minicurso de GRASP

No final do ano passado, fiz uma experiência de gravar um mini-curso sobre GRASP (General Responsibility Assignment Software Patterns), que é uma técnica que ajuda a escrever código orientado a objetos com melhor qualidade. Como o pessoal que viu gostou, resolvi disponibilizar aqui no blog.

Com vocês, “Melhorando a Qualidade do seu Código com GRASP“.

Merda Acontece (em VIDEO)

Muita gente já tinha reclamado que apenas pelos slides, não era possível entender todo o conteúdo das minhas apresentações. Sempre pensei em gravar para poder colocar aqui, mas ainda não tinha feito… Isso acaba hoje… Ufa… Demorou, mas finalmente pela primeira vez posto aqui o video de uma das minhas apresentações.

A apresentação é o “Merda Acontece“, e foi elaborada originalmente para o evento “Mobilização Sorocaba” e repetida (essa sim a versão gravada) no CESAR no dia 28/08/2013. Trazer esse material para o blog é o resultado do esforço heróico de Mabuse e Marcelo Cabral. Provavelmente amaldiçoada pelo título, nesse dia aconteceu de tudo… faltou energia, faltou bateria na câmera, o som ficou muito baixo, mas como sabemos, Merda Acontece! Marcelo Cabral conseguiu juntar todas as peças e montar esse quebra-cabeça direitinho. Agradeço muito aos dois, sem eles esse post não seria possível.

E agora, com vocês, Merda Acontece.