Desenvolvimento de produtos de forma incremental

Agora em Setembro estou completando 1 ano de Yahoo!, vim para assumir uma nova equipe de desenvolvimento de produtos e tecnologia para a América Latina, mas principalmente com foco no mercado Brasileiro. Neste período passei por diversos aprendizados mas finalmente pude colocar em prática algumas das coisas que acredito em relação a desenvolvimento de produtos e processos.

O que queria provar é que é possível desenvolver um produto de forma incremental, feature a feature, aplicando um processo 100% ágil e entregando resultado rápidamente, contando com a participação de usuários reais e não baseado em achismos. Este produto hoje se chama Yahoo! Meme e vou compartilhar aqui pouco de como foi esta experiência.

meme-from-yahoo

Assim que cheguei no Yahoo! tive de montar a equipe, neste quesito eu já tinha certeza dos papéis que precisava:

  • um Designer que escrevesse código e fosse responsável pela implementação 100% da Interface
  • Desenvolvedores que gostassem de TDD e que topassem fazer qualquer coisa: frontend, backend, costurar, cozinhar, etc
  • um Product Owner (PO) que tivesse conhecimento técnico e entendesse de Internet.

Enquanto o processo de entrevistas e seleção da equipe rolava, eu já havia encontrado o nosso PO (Pedro Valente) e começamos a montar alguns processos de Ideation e Filtragem de ideias, começamos a fazer vários brainstorms e o resultado foi um “framework” (ou um arcabouço como diriam alguns teóricos brasileiros :-) ) para selecionar e filtrar ideias de uma forma mais ou menos científica e menos baseada em achismos e sentimentos.

Alguns pontos deste framework:

  • Definir um público alvo: nosso caso Jovens 16-32 anos;
  • Encontrar problemas reais e de grande impacto que ainda não tenham sido totalmente resolvidos;
  • Encontrados os problemas, existem Players no mercado que solucionam este problema? Podemos resolver de uma forma melhor? Podemos simplificar a solução?
  • Com as possíveis soluções, começamos a esboçar em que produtos aplicaríamos as mesmas.
  • Legal, tínhamos encontrado alguns problemas que poderíamos resolver e suas possíveis soluções, neste momento aplicamos alguns filtros para selecionar qual seria o produto que começaríamos a “prototipar”. Este filtros não passam de umas 8 perguntas com respostas binárias (sim e não) que aplicávamos a todas as ideias, depois ordenamos as idéias pelas que tinham mais respostas “sim”

OBS: quando eu falo prototipar estou me referindo a desenvolver as features principais do produto. A entrega do protótipo é software funcionando e não telinhas e flashizinhos ou PPTs

Em paralelo a equipe foi sendo selecionada e já estávamos completos para começar a montar nosso ambiente de desenvolvimento e a escrever as principais User Stories do nosso primeiro protótipo. Este é um dos momentos onde o fato de termos um Product Owner com conhecimento técnico é vital, pois grande parte das primeiras User Stories seriam de infraestrutura básica do produto, o desenvolvimento das provas de conceito para confirmarmos a viabilidade do produto.

A entrega deste Sprint Zero, em Dezembro de 2008, seria algo muito mais técnico e menos visual e ainda teríamos que entregar os ambientes de Desenvolvimento, Continuous Integration, Staging, etc. O PO precisa ter sensibilidade para entender o que é importante ser priorizado e que algumas vezes as entregas serão mais técnicas (mas sempre sem perder o foco no usuário final).

Com as peças em seus devidos lugares, iniciamos o desenvolvimento do nosso primeiro produto e quando participei do primeiro Sprint Review, sabia que tínhamos algo na mão que pudesse dar um bom resultado. O projeto nesse momento tinha o codename de “GoodStuff”, pois queríamos permitir que os usuários tivessem um lugar onde eles pudessem propagar coisas legais (good stuff) que eles encontrassem pela Internet de forma fácil e rápida

E assim começamos a desenvolver User Story a User Story, funcionalidade por funcionalidade e em Fevereiro de 2009 fizemos nosso primeiro release interno dentro da rede do Yahoo!, apenas alguns poucos Yahoos poderiam usar o produto e nos dar feedback. O interessante é que o produto em si, possuía apenas algumas poucas funcionalidades, o que definimos como os maiores diferenciais e precisamos saber se estávamos realmente no caminho certo, para isso nada melhor do que ouvir usuários de verdade.

Para se ter uma ideia de como o produto estava no básico do básico o thumbnail/avatar de todos os usuários era fixo (usavamos uma imagem do Vitor Fasano), que depois virou uma User Story: “Eu como usuário não quero mais ter o thumbnail do Vitor Fasano”.

Assim caminhamos por mais alguns Sprints, repriorizamos as Stories baseadas no feedback dos usuários, mas sem perder o foco no objetivo que traçamos para o Produto, sobre este assunto eu sempre gosto de citar uma frase de Henry Ford na ocasião do lançamento do Ford T.

“Se eu perguntasse para meus clientes o que eles gostariam, eles me responderiam: Cavalos mais rápidos”

É muito importante ter a visão de onde você quer chegar e depois ir adaptando o caminho que você toma com base no que seus usuários dizem e em como o mercado evolui.

Fomos aumentando o número de Yahoos com acesso ao produto, coletando mais feedback e em Abril deste ano chegamos ao ponto onde tínhamos o que classificamos como “good enough” e fizemos um lançamento que chamamos de “Friends and Family“, foi a primeira vez que o produto foi aberto para usuários externos ao Yahoo!, foi neste momento que escolhemos o nome Meme. A equipe convidou alguns familiares e amigos e cada um destes tinha o direito a convidar outros 3 amigos e assim por diante, chamamos esta fase de Private Alpha.

Agora com mais e mais usuários chegando pudemos coletar mais feedback, e assim os usuários passaram a fazer parte do desenvolvimento do produto, nos dando dicas do que eles achavam importante e como podíamos melhorar. Com estes dados repriorizamos coisas que julgávamos como não prioridade. Por exemplo, um dos maiores pedidos era a possibilidade de buscar por outros usuários, então desenvolvemos uma busca de pessoas super simples, e depois comentários, e assim por diante. Internamente o produto fez tanto sucesso que nos foi pedido para fazermos uma versão em Espanhol, que lançamos em meados de Julho e depois uma versão em Inglês que lançamos no final de Agosto. Hoje o Yahoo! Meme esta em Private Alpha em 4 países: Brasil, México, Argentina e Philippines, e quem sabe o que virá mais a frente.

Em Setembro abrimos nossa API, baseada no Yahoo Query Language (YQL), que permite desenvolvedores usarem uma sintaxe similar ao SQL para recuperar dados do Meme. Sem fugir muito do tópico mas já fugindo, este aqui é um exemplo de query YQL que devolve todas as infomações sobre o meu meme.

SELECT * FROM meme.info WHERE name=’acarlos1000′;
Clique aqui para ver o resultado no Console do YQL

Aqui tem um um outro exemplo que mostra 100 dos meus seguidores ordenados por número de seguidores;

SELECT * FROM meme.followers(100) WHERE owner_guid IN (SELECT guid FROM meme.info WHERE name=’acarlos1000′) | sort(field=”followers”) | reverse();
Clique aqui para ver o resultado no Console do YQL

Finalmente, a lição que aprendi neste último ano é que, sim possível desenvolver produtos de forma incremental e que tenham alcance mundial se o problema que você esta resolvendo for grande o suficiente e a sua solução simples o suficiente, de forma a que o produto faça sentido em diversas partes do mundo.

Por último agora em Setembro, nosso time foi eleito um dos 10 melhores times de todo o Yahoo! entre mais de 14.000 funcionários, ganhando um prêmio interno chamado de Yahoo! Super Star Award. Mais uma prova de que se você tiver foco, entregar valor consistentemente e executar com qualidade o reconhecimento sempre virá.

Yahoo Super Star Award, assinado pela CEO Carol Bartz

Yahoo Super Star Award, assinado pela CEO do Yahoo! Carol Bartz

Abs e confiram o meu Meme: http://meme.yahoo.com/acarlos1000, se precisarem de convites para entrar, escrevam um comentário com seu e-mail que eu envio mais tarde.

Tags: , , , , ,
Posted in Agile, Internet, Process, Scrum, Yahoo | 21 Comments »

Novo Amazon Kindle2 – primeiras impressões

Alguns meses atrás a Amazon anunciou sua nova versão do leitor eletrônico de livros da Amazon, o Kindle2. Recentemente tive a oportunidade de viajar aos Estados Unidos e não resisti a tentação de comprar o novo Amazon Kindle2.

Primeiramente um aviso: o Kindle2 não é oficialmente suportado fora dos Estados Unidos e seu uso no Brasil acontece com algumas limitações e contornos que precisam ser feitos para que se possa comprar os livros e usá-los por aqui. Outro ponto importante: não há livros em Português na loja do Kindle, apenas em Inglês e outro ponto importante é que a biblioteca digital da Amazon, apesar de extensa, possui uma concentração  grande de livros do tipo “best seller” e poucos livros técnicos, se você trabalha com tecnologia vai sofrer um pouco com a falta de livros especializados para o Kindle.

Abaixo segue o link do vídeo que fiz da abertura da embalagem do novo Kindle2:

Principais Características do novo Kindle2:

Design:
O Design foi muito melhorado, o aparelho esta bem mais fino e agradável de segurar. O posicionamento dos botões também foi melhorado e o problema de passar páginas por engano não acontece mais. Agora a tampa traseira do Kindle é de Alumínio dando um tome muito mais refinado e que em conjunto com a sua nova espessura (mais fino do que um iPhone 3G) trás um ar meio de produto Apple ao leitor da Amazon. As caixas de som estão muito melhor localizadas assim como as teclas de volume e fone de ouvido.

Tela:
A Tela do Kindle2 continua do mesmo tamanho mas agora possui uma nova tela e-ink com 16 tons de cinza, o que melhorou bastante a nitidez, além disso o tempo de resposta na passagem de páginas está bem mais rápido, até 25% segundo dados da Amazon.

Teclado e Direcional:
No novo Kindle2 foram removidos o click-wheel e a barra lateral de navegação, que era um certo diferencial do Kindle1. Agora há um direcional de 4 direções mais o click. Fiquei um pouco pessimista quando vi a primeira vez esta opção, mas ao usar o novo direcional posso concordar que é um avanço, principalmente com a função de consulta rápida ao dicionário (em inglês óbviamente).

O teclado também ficou muito melhor, os botões estão muito melhor desenhados e fáceis de apertar, além de conter novos atalhos para ativar rápidamente alguns comandos sem ter de acionar os menus do aparelho. Parte desta impressão de melhoria esta diretamente ligado ao tempo de resposta da nova tela, já que no antigo modelo ao pressionar uma tecla o kindle demorava uns segundos para responder o que tornava seu uso muito irritante. Agora estou usando muito mais o teclado enquanto uso o Kindle2.

Bateria e Autonomia:
O novo Kindle tem prós e contras neste quesito, agora não há como remover a bateria do aparelho já que sua tampa traseira em alumínio é fixa. sendo assim se houver algum problema com a bateria do Kindle2 é preciso enviar para a Amazon, o que para nós que vivemos no Brasil não é uma boa opção. A boa noticia é que a automonia do aparelho aumentou bem, antes a bateria do meu Kindle1 durava aproximadamente 1 semana e meia. Agora no novo Kindle2 a bateria dura mais de duas semanas.

Memória:
Outra novidade aqui, o Kindle1 possuia um slot para acomodar um cartão de memória SD, o que permitia a expansão da memoria interna do leitor (256MB). Agora no novo modelo não há mais como expandir a memória com cartões, mas ele vem com aproximadamente 2GB de memódia agora, o que comporta aproximadamente 1500 livros segundo a Amazon.

Novidades:

Text-to-Speech (Leitura Eletrônica): Agora o Kindle tem uma opção que permite que o aparelho leia o livro para você, isso é uma das funcionalidades mais legais que surgiram na segunda geração. Você tem algumas opções para usar a leitura eletrônica, escolhendo entre voz masculina e feminina e qual a velocidade de leitura. Estou usando bastante, já que tb sou fã de audiobooks, é um tipo de mistura dos dois tipos de mídia.
Obviamente a leitura eletrônica não é perfeita e é preciso se acostumar para usufruir bem do novo recurso, mas é uma das melhores soluções que já vi funcionando.

WispherSync: Este é um recurso legal, mas que também não esta disponível fora dos Estados Unidos, ele funciona sincronizando sua leitura em todos os aparelhos que vc esteja lendo. Explicando: Suponha que vc tenha dois Kindles e que vc possui um livro para Kindle, Outliers por exemplo, que esta copiado nos dois aparelhos, o WisperSync manterá a última página que vc leu sempre atualizada não importa em que aparelho vc esta lendo seu livro.

Kindle App para o iPhone: Juntamente com o Kindle2, a Amazon lançou um Aplicativo para o iPhone para que vc possa ler seus livros Kindle no smartphone da Apple. A experiência é bem legal, afinal a tela do iPhone tem uma resolução muito maior que a do Kindle e ainda é colorida. No entanto, depois de um certo tempo de leitura  a  vista começa a ficar cansada. Um dos defeitos do aplicativo é não conseguir dar zoom nas imagens e não ter modo landscape. Parece ser o primeiro passo da Amazon para expandir a loja de livros digitais para além do Kindle, já se fala em um aplicativo para blackberry tb.
Com as recentes notícias do novo iPhone OS 3.0, fica ainda mais evidente de que a Amazon deve fazer uma versão da Kindle Store usando o “In App purchases” que estará disponível na próxima versão do sistema operacional do iPhone.

O que muda para nós no Brasil?

Praticamente nada, o acesso sem fio do novo Kindle2 continua não funcionando aqui no Brasil, isso é um grande ponto negativo pois é muito legal poder ler o Jornal de manhã sem ter de levantar da cama :-) . Como não tem acesso sem fio, também não funciona a loja do Kindle no aparelho, para comprar livros é preciso fazê-lo via a loja digital da Amazon (http://www.amazon.com/kindle), atualmente há mais de 250.000 titulos disponíveis, quando comprei o primeiro modelo havia pouco mais de 90.000. É legal ver que o acervo esta crescendo rapidamente.

O que ainda falta?

OK, o novo kindle melhorou muita coisa em relação ao anterior, mas sinceramente poderia ser mais impactante, ainda há muita coisa a evoluir no aparelho ainda mais por um preço de aproximadamente US$400,00. Coisas que na minha opinião deveriam estar presentes no Kindle2:

  • Tela sensível ao toque: com a introdução do iPhone todos acabam esperando uma tela com resposta ao toque
  • Tela colorida por favor: 16 tons de cinza é sacanagem
  • WiFi: Chega de rede sem fio via celular, habilitando Wifi no Kindle tornaria possível utilizar seus recursos sem fio em qq lugar do mundo
  • Backlight: Um dos grande defeitos do Kindle é não a tela iluminada, uma solução que seria muito simples nos dias de hoje.
  • Suporte a mais formatos de arquivos: é vergonhoso o aparelho não suportar arquivos PDF pelo menos.
  • Ser mais barato: o Kindle ainda é um dispositivo para poucos geeks e “tarados”, ainda é muito caro ter um Kindle.

Tags: , , , , , , ,
Posted in Gadgets | 13 Comments »

Campus Party – Slides sobre Agile Development

Esta semana estive no Campus Party e fiz uma apresentação sobre conceitos básicos em Desenvolvimento Ágil com Scrum, abaixo seguem os slides.

Tags: , , , , , , , ,
Posted in Agile, Scrum, Yahoo | 4 Comments »

Campus Party 2009 – eu vou

Começa esta semana o Campus Party 2009, um dos maiores eventos de tecnologia e “coisas” digitais do Brasil, que possui diversas edições ao redor do mundo.

Neste ano vou fazer uma apresentação na área de Desenvolvimento no dia 22/01 às 18:00, falando, obviamente, sobre desenvolvimento ágil, onde vamos discutir sobre conceitos básicos e trocar algumas experiências sobre agilidade e os principais problemas na implantação destes principios nas empresas. Adicione ao seu Google Calendar ou ao seu Yahoo! Calendar.

O Yahoo! estará presente no Campus Party com dois stands e o patrocínio da área de blogs – a CampusBlog.

Um dos stands terá o Flickr como tema central na parte aberta ao público, próximo a praça de alimentação e o outro stand será na parte interna, junto aos “campuseiros”, ao lado do portão de acesso. Neste último onde haverá uma agenda de bate-papos sobre os produtos Y!, como o novo Yahoo Open Mail, Y! Respostas, Y!OS APIs e Flickr.

Haverão muitas outras apresentações na áre de desenvolvimento que com certeza serão bem legais como as do Fabio Akita sobre Ruby on Rails e do Pedro Valente sobre Y!OS APIs.

Aqui segue a agenda completa da área de desenvolvimento

Tags: , , , , ,
Posted in Agile, eventos | 6 Comments »

Mais pensamentos sobre Agile UX

Continuando no tema de Agile UX, estive pensando bastante sobre a forma de trabalhar quando usamos técnicas ágeis comparando com o ambiente tradicional (waterfall), em paralelo conversei com algumas pessoas (UX guys) para saber o que eles acham, e minhas impressões seguem abaixo.

Adicionando um pouco de contexto, o foco deste post é conversar sobre duas formas de trabalhar em ambientes que envolvam UX no desenvolvimento de projetos Web:

ux_vs1

Quando pensamos com mais calma sobre estas comparações, acho que a conclusão fica meio óbvia, principalmente se o objetivo é ter a melhor qualidade possível como “saída” do nosso trabalho. Explicando: ao desenvolvermos um projeto novo o que é mais fácil? Fazer pequenas partes muito bem, com foco total e com o decorrer do tempo ir desenvolvendo as outras partes enquanto se ve o software funcionando, OU fazer um grande projeto com milhões de partes de uma só vez, para depois de um tempo razoável entregar todas as telas e suas variações para a próxima área responsável? É importante lembrar que em times ágeis o que é definido como entrega é software funcionando e não um monte de telas, especificações, casos de uso ou documentações.

Fazendo um paralelo com o nosso dia a dia (pelo menos eu sou assim), quando tentamos fazer muitas coisas ao mesmo tempo, geralmente não fazemos nada com profundidade e no final acaba tudo ficando “meia boca”. Ao ir desenvolvendo novas funcionalidades ou melhorias a cada 15 dias (citando um exemplo da duração de um Sprint aqui no Yahoo!), podemos pensar bem a respeito do funcionamento de cada item e, mais importante, temos a chance de envolver todos no time nas decisões: desenvolvedores, designers, Produto, QA, etc. Com isso eu sinceramente acredito que a qualidade geral do produto e das decisões tomadas aumentam exponencialmente e ficam cada vez mais consistentes com o tempo.

Sempre que vi um projeto sendo feito da forma tradicional, existia um batalhão de Designers que faziam “milhões” de telas, para que todas as variações possíveis fossem mapeadas antes de serem entregues para a equipe de desenvolvimento, muitas vezes chamavamos estas pessoas de “replicadores de telas”. É óbvio que quando se faz um trabalho em massa, como se fosse uma fábrica, nem tudo terá a melhor solução e alguns parafusos deverão ser apertados mais tarde, algumas partes vão precisar de alguns remendos para encaixarem e com certeza várias das telas criadas nunca serão implementadas representando total perda de tempo e dinheiro. O mesmo acontece com as fábricas de software, elas fazem com que os desenvolvedores trabalhem em paralelo como se cada um fosse uma máquina (os famosos Code monkeys). Os designers “Replicadores de telas”, nada mais são do que uma versão da fábrica de software aplicada ao UX.

Estes são conceitos bem básicos sobre desenvolvimento ágil e que podem ser melhor visualizados através das duas figuras abaixo:

Agile software development sprints

Figura 1: Sprints com entregas constantes

Na Figura 1, temos o modelo ágil onde ao final de cada Sprint sempre haverá uma entrega de software funcionando, ou seja, com entrega de valor para o cliente, valor perceptível e paupável, pois estes poderão ver seu produto funcionando e se tornando real de forma evolutiva. Uma situação interessante é que se o orçamento acabar no Sprint 3, pelo menos o produto terá 3 Sprints completos de funcionalidades entregues e funcionando em produção.

Figura 2: Metodologia Waterfall

Figura 2: Metodologia Waterfall

Na Figura 2, temos o método tradicional, onde vemos que o produto só vai funcionar ao final de quase todas as etapas, o que pode levar a tomadas de decisão preciptadas. Aplicando a mesma situação, se o orçamento acabar na fase 2 (Arq. da Informação e Design) o que podemos entregar para o cliente é uma série de documentos e PSDs, nada de software funcionando.

Tags: , , , , , ,
Posted in Agile, Internet, Process | 9 Comments »