gerenciando times de software remotamente

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

Upload: mario-nogueira-ramos

Post on 26-Jun-2015

667 views

Category:

Technology


1 download

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.

TRANSCRIPT

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