86
Gerenciando times de software remotamente Mario Nogueira Ramos 07 de novembro de 2009 Tuesday, December 22, 2009

Gerenciando times de software remotamente

Embed Size (px)

DESCRIPTION

Começar uma startup web envolve muitas questões diferentes, dentre as quais o desenvolvimento de software é crucial, embora esteja longe de ser a única que importa. Esta apresentação é uma breve introdução sobre o processo de criação dessa operação numa startup web. Ela é especialmente voltada a não-desenvolvedores de software, procura desfazer alguns mitos (como o de que é preciso ser um programador para começar empresas web bem-sucedidas) e contém muitas referências que podem ser seguidas posteriormente.

Citation preview

Page 1: Gerenciando times de software remotamente

Gerenciando times de software remotamente

Mario Nogueira Ramos

07 de novembro de 2009

Tuesday, December 22, 2009

Page 2: Gerenciando times de software remotamente

• ou: “quero começar uma startup web mas não sei como”

Tuesday, December 22, 2009

Page 3: Gerenciando times de software remotamente

• capítulo: desenvolvimento de software

Tuesday, December 22, 2009

Page 4: Gerenciando times de software remotamente

• audiência: não-programadores

Tuesday, December 22, 2009

Page 5: Gerenciando times de software remotamente

O que vamos ouvir?

• com a própria web é possível criar times de desenvolvimento muito rapidamente

• com ferramentas e processos simples, não importa se seu time de desenvolvedores trabalha remotamente ou não

• há vantagens em times remotos

• custa muito pouco por em prática

• nada substiui a disciplina

Tuesday, December 22, 2009

Page 6: Gerenciando times de software remotamente

Por que eu deveria me importar?

• você quer ser um empreendedor digital, certo?

• o que empresas como Google, Apple, Facebook, Twitter e YouTube têm em comum?

• estratégia, investimento, criatividade?

Tuesday, December 22, 2009

Page 7: Gerenciando times de software remotamente

Por que eu deveria me importar?

• elas conseguem produzir software!

Tuesday, December 22, 2009

Page 8: Gerenciando times de software remotamente

Por que eu deveria me importar?

• arrume a casa primeiro: aprenda a entregar software, com qualidade, prazos e custos bem controlados

• seja “criativo” depois: estratégia, criatividade e tudo mais devem vir depois disso

Tuesday, December 22, 2009

Page 9: Gerenciando times de software remotamente

Por que eu deveria me importar?

• a propósito: nem todas foram fundadas ou são administradas por engenheiros de software

Tuesday, December 22, 2009

Page 10: Gerenciando times de software remotamente

“Por que eu deveria me importar com você?”

• Pagestacker:

• ótimo time (quase todos no mesmo local)

• ainda não foi um grande sucesso (em reformulação)

• primariamente questões de gestão

Tuesday, December 22, 2009

Page 11: Gerenciando times de software remotamente

“Por que eu deveria me importar com você?”

• Amanaiê:

• ótimo time (quase todos remotos)

• ótimos resultados

• ótimas perspectivas

• o mérito é do time

Tuesday, December 22, 2009

Page 12: Gerenciando times de software remotamente

“Por que eu deveria me importar com você?”

• são paulo, sp

• vitória, es

• toledo, pr

• maceió, al

• teresina, pi

• new york, ny

nosso time hoje está nas seguintes cidades:

Tuesday, December 22, 2009

Page 13: Gerenciando times de software remotamente

Por onde eu começo?

• Time

Tuesday, December 22, 2009

Page 14: Gerenciando times de software remotamente

Time

• “A players hire A players”

• competência sustentada

• “B players hire C players... C players hire D players...”

• incompetência exponencial

Tuesday, December 22, 2009

Page 15: Gerenciando times de software remotamente

Time

• competência vs. potencial

Tuesday, December 22, 2009

Page 16: Gerenciando times de software remotamente

Time

• competência é prática!

Tuesday, December 22, 2009

Page 17: Gerenciando times de software remotamente

Time

• contratação ou sócios

Tuesday, December 22, 2009

Page 18: Gerenciando times de software remotamente

Time• onde?

• faculdade

• escola

• amigos e colegas

• recomendações da sua rede de contatos

• mercado

• ferramentas online: LinkedIn, WorkingWithRails, fórums

Tuesday, December 22, 2009

Page 19: Gerenciando times de software remotamente

Time

• por que alguém trabalharia comigo ou pra mim?

Tuesday, December 22, 2009

Page 20: Gerenciando times de software remotamente

Time

• quem são os demais membros do time?

Tuesday, December 22, 2009

Page 21: Gerenciando times de software remotamente

Time

• reputação: “contrate” ou desenvolva uma

Tuesday, December 22, 2009

Page 22: Gerenciando times de software remotamente

Time

• visão, estratégia, valores e criatividade podem ajudar a atrair talentos

Tuesday, December 22, 2009

Page 23: Gerenciando times de software remotamente

Time

• software é custo ou é receita?

Tuesday, December 22, 2009

Page 24: Gerenciando times de software remotamente

Time

• projetos ou produtos?

Tuesday, December 22, 2009

Page 25: Gerenciando times de software remotamente

Time

• empowerment

• empresa menor

• agilidade

• impacto individual

Tuesday, December 22, 2009

Page 26: Gerenciando times de software remotamente

Time

• que tecnologias são empregadas?

Tuesday, December 22, 2009

Page 27: Gerenciando times de software remotamente

Time

• trabalhos menos prazerosos às vezes pagam melhor

• não raramente, bons programadores preferem ganhar menos se puderem ter benefícios nos itens anteriores

Tuesday, December 22, 2009

Page 28: Gerenciando times de software remotamente

Time

• selecionando:

• “smart & gets things done”

Tuesday, December 22, 2009

Page 29: Gerenciando times de software remotamente

Time

• smart:

• o que já sabe fazer?

• o que já fez?

• consegue aprender rápido?

Tuesday, December 22, 2009

Page 30: Gerenciando times de software remotamente

Time

• get things done:

• o que já fez? terminou? qual foi o resultado?

• precisa ser “gerenciado”?

• com quem trabalhou? (cheque referências)

• por que saiu?

Tuesday, December 22, 2009

Page 31: Gerenciando times de software remotamente

Time

• blog?

• open source?

• “show me the code!”

Tuesday, December 22, 2009

Page 32: Gerenciando times de software remotamente

• Time

• Ferramentas

Por onde eu começo?

Tuesday, December 22, 2009

Page 33: Gerenciando times de software remotamente

Ferramentas

• equipamentos

• programação & operação

• comunicação

• gestão de projeto

Tuesday, December 22, 2009

Page 34: Gerenciando times de software remotamente

Ferramentas

• equipamentos:

• notebooks

• banda larga

Tuesday, December 22, 2009

Page 35: Gerenciando times de software remotamente

Ferramentas

• programação & operação

• python, php, java, ruby, javascript

• apache, nginx, mongrel

• linux, unix

• mysql, couchdb, mongodb, memcached

• monit, god, dtrace

Tuesday, December 22, 2009

Page 36: Gerenciando times de software remotamente

Ferramentas

• operação:

• locaweb

• slicehost

• amazon web services

Tuesday, December 22, 2009

Page 37: Gerenciando times de software remotamente

Ferramentas

• comunicação;

• chat/IM: gtalk, campfire etc.

• skype

• google docs

• dropbox

Tuesday, December 22, 2009

Page 38: Gerenciando times de software remotamente

Ferramentas

• gestão de projeto:

• basecamp, pivotal tracker

• trac, fogbugz, bugzilla

• subversion, git, github

Tuesday, December 22, 2009

Page 39: Gerenciando times de software remotamente

Ferramentas

• como nós trabalhamos:

• campfire, skype;

• google docs, dropbox;

• basecamp, pivotal tracker, github;

• slicehost, rubyonrails, javascript, mysql;

Tuesday, December 22, 2009

Page 40: Gerenciando times de software remotamente

• Time

• Ferramentas

• Processos

Por onde eu começo?

Tuesday, December 22, 2009

Page 41: Gerenciando times de software remotamente

Processos

• técnicas ágeis de desenvolvimento de software

• XP

• Scrum

• Kanban

Tuesday, December 22, 2009

Page 42: Gerenciando times de software remotamente

Processos

• times pequenos

• cross functional

• processo iterativo

• ciclos curtos

Tuesday, December 22, 2009

Page 43: Gerenciando times de software remotamente

Processos

• foco em software funcional vs. documentação extensa

Tuesday, December 22, 2009

Page 44: Gerenciando times de software remotamente

Processos

• foco em cenários de uso

Tuesday, December 22, 2009

Page 45: Gerenciando times de software remotamente

Processos

• papéis:

• “dono” do produto

• facilitador

• desenvolvedores

Tuesday, December 22, 2009

Page 46: Gerenciando times de software remotamente

Processos

• “dono” do produto:

• voz do usuário final do software

• responsável pela documentação dos cenários de uso

Tuesday, December 22, 2009

Page 47: Gerenciando times de software remotamente

Processos

• facilitador:

• mediador da comunicação

• removedor de impedimentos

• “juiz”

Tuesday, December 22, 2009

Page 48: Gerenciando times de software remotamente

Processos

• desenvolvedores:

• responsáveis diretos pela criação das funcionalidades do software e de sua interface de apresentação e uso para o usuário

• auto-gerenciados

• proativos

• comunicação

Tuesday, December 22, 2009

Page 49: Gerenciando times de software remotamente

Processos

• documentação

• backlog de produto

• backlog de sprint

• gráfico de burndown

Tuesday, December 22, 2009

Page 50: Gerenciando times de software remotamente

Processos• backlog de produto:

• “dono” do produto

• “o que”

• cenários de uso

• orientação comercial

• priorização

Tuesday, December 22, 2009

Page 51: Gerenciando times de software remotamente

Processos

• backlog de sprint:

• desenvolvedores

• “como”

• janelas de tempo curtas (dias ou semanas)

• tarefas técnicas precisas

• estimativas curtas (horas)

Tuesday, December 22, 2009

Page 52: Gerenciando times de software remotamente

Processos• gráfico de burndown:

• performance do sprint

• ferramenta visual

• trabalho restante vs. tempo

• estimativa vs. realidade

Tuesday, December 22, 2009

Page 53: Gerenciando times de software remotamente

Processos

• típico dia de trabalho:

• reunião diária no começo do dia

• 15 min

• o que foi feito ontem?

• o que vai ser feito hoje?

• dependências entre tarefas?

• problemas ou impedimentos?

Tuesday, December 22, 2009

Page 54: Gerenciando times de software remotamente

Processos

• típica semana de trabalho:

• planejamento de sprint

• revisão de sprint

• testes e demonstrações

Tuesday, December 22, 2009

Page 55: Gerenciando times de software remotamente

Processos

• resultados:

• previsibilidade

• agilidade

• adaptação

• transparência

• controle de custos

Tuesday, December 22, 2009

Page 56: Gerenciando times de software remotamente

Processos• particularmente adequado para aplicativos web:

• distribuição instantânea

• lançar cedo e com frequência

• “se a sua primeira versão não for constrangedora, demorou demais”

Tuesday, December 22, 2009

Page 57: Gerenciando times de software remotamente

Processos• particularmente adequado para aplicativos web:

• assimilação de feedback

• expansão incremental

• educação do usuário

Tuesday, December 22, 2009

Page 58: Gerenciando times de software remotamente

• Time

• Ferramentas

• Processos

• Time remoto vs. Time presencial?

Por onde eu começo?

Tuesday, December 22, 2009

Page 59: Gerenciando times de software remotamente

Time Remoto

• Vantagens

• Desvantagens

Tuesday, December 22, 2009

Page 60: Gerenciando times de software remotamente

Time Remoto

• Vantagens

• alcance geográfico

• custo

• eficiência

• produtividade

Tuesday, December 22, 2009

Page 61: Gerenciando times de software remotamente

Time Remoto

• Desvantagens:

• menos proximidade social;

• menos informalidade;

• ambiente de trabalho vs. ambiente de casa

Tuesday, December 22, 2009

Page 62: Gerenciando times de software remotamente

• Time

• Ferramentas

• Processos

• Time remoto vs. Time presencial?

• Outsourcing

Por onde eu começo?

Tuesday, December 22, 2009

Page 63: Gerenciando times de software remotamente

Outsourcing

• vantagens

• desvantagens

Tuesday, December 22, 2009

Page 64: Gerenciando times de software remotamente

Outsourcing

• vantagens

• atendimento de demandas específicas

• custos

• networking

• aprendizado

Tuesday, December 22, 2009

Page 65: Gerenciando times de software remotamente

Outsourcing

• desvantagens

• menos compromisso ou paixão (“gun for hire, not a true believer”)

• retenção de conhecimento acumulado

• sigilo

Tuesday, December 22, 2009

Page 66: Gerenciando times de software remotamente

Outsourcing

• faça o seu dever de casa antes de precisar!

Tuesday, December 22, 2009

Page 67: Gerenciando times de software remotamente

Outsourcing

• ferramentas (Brasil):

• http://www.freela.com.br/

• http://ondetrabalhar.com/

Tuesday, December 22, 2009

Page 68: Gerenciando times de software remotamente

Outsourcing

• ferramentas (internacional):

• http://www.crunchboard.com/jobs/

• http://jobs.joelonsoftware.com/

• http://jobs.37signals.com/jobs

• http://haystack.com/

• http://www.elance.com/

Tuesday, December 22, 2009

Page 69: Gerenciando times de software remotamente

• Time

• Ferramentas

• Processos

• Time remoto vs. Time presencial?

• Outsourcing

Por onde eu começo?

Tuesday, December 22, 2009

Page 70: Gerenciando times de software remotamente

Considerações finais

Tuesday, December 22, 2009

Page 71: Gerenciando times de software remotamente

Considerações finais

• “não sou um programador”

“Nem eu”

Tuesday, December 22, 2009

Page 72: Gerenciando times de software remotamente

Considerações finais

• “o que construir?”

Tuesday, December 22, 2009

Page 73: Gerenciando times de software remotamente

Considerações finais• construa o que as pessoas quiserem usar

• o que falta no mundo?

• cenários de uso

• técnicas ágeis de desenvolvimento e ajustes incrementais

• tecnicamente realista

• modelos comerciais

Tuesday, December 22, 2009

Page 74: Gerenciando times de software remotamente

Considerações finais

• modelos de receita:

• publicidade

• geração de leads de vendas

• assinatura de serviços

• venda de software

Tuesday, December 22, 2009

Page 75: Gerenciando times de software remotamente

Considerações finais

• consultoria vs. produtos

Tuesday, December 22, 2009

Page 76: Gerenciando times de software remotamente

Considerações finais

• Exemplos nacionais:

• Be on the Net (http://beonthe.net/)

• Aprex (http://www.aprex.com.br/)

Tuesday, December 22, 2009

Page 77: Gerenciando times de software remotamente

Considerações finais

• Exemplos nacionais:

• Pagestacker (http://pagestacker.com)

• Buzz Volume (http://buzzvolume.com)

• Spesa (http://spesa.com.br)

Tuesday, December 22, 2009

Page 78: Gerenciando times de software remotamente

Considerações finais

• Exemplos nacionais:

• Buscapé (http://buscapecom.br)

• Compra3 (http://compra3.com.br)

• Amanaiê (http://amanaie.com.br)

Tuesday, December 22, 2009

Page 79: Gerenciando times de software remotamente

Considerações finais

• Exemplos internacionais:

• 37signals (http://37signals.com)

• Balsamiq (http://balsamiq.com)

• Craigslist (http://craigslist.org)

• Apple (http://apple.com)

Tuesday, December 22, 2009

Page 80: Gerenciando times de software remotamente

Considerações finais

• “não tenho capital”

Tuesday, December 22, 2009

Page 81: Gerenciando times de software remotamente

Considerações finais

• “eu não deveria primeiro tentar levantar capital?”

Tuesday, December 22, 2009

Page 82: Gerenciando times de software remotamente

Considerações finais

• Don’t be a dick!!

Tuesday, December 22, 2009

Page 83: Gerenciando times de software remotamente

Leitura recomendada

• blogs (Brasil):

• ReadWriteWeb Brasil (http://readwriteweb.com.br)

• Startupi (http://startupi.com.br)

Tuesday, December 22, 2009

Page 84: Gerenciando times de software remotamente

Leitura recomendada

• blogs (internacionais):

• Paul Graham (http://paulgraham.com)

• Joel on Software (http://joelonsoftware.com)

• Rands in Repose (http://randsinrepose.com)

• Signal vs. Noise (http://37signals.com/svn)

Tuesday, December 22, 2009

Page 85: Gerenciando times de software remotamente

Leitura recomendada

• livros:

• The Art of Start (Guy Kawasaki)

• Founders at Work (Jessica Livingston)

• Smart & Gets Things Done (Joel Spolsky)

• Getting Real (37signals)

• Managing Humans (Michael Lopp)

Tuesday, December 22, 2009

Page 86: Gerenciando times de software remotamente

Obrigado!

[email protected]

• @marionogueira

Tuesday, December 22, 2009