SlideShare uma empresa Scribd logo
Como formar um programador 10x	


 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

Luca Bastos	

 	

 	

 	

 	

 luca.bastos@concretesolutions.com.br	



 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

Agile Brazil 2011	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

 	

Fortaleza, CE
A m a i o r r i q u e z a d o h o m e m 
é a s u a i n c o m p l e t u d e . 
N e s s e p o n t o s o u a b a s t a d o. 
P a l av r a s q u e m e a c e i t a m c o m o s o u - e u n ã o a c e i t o. 

N ã o a g ü e n t o s e r a p e n a s u m s u j e i t o q u e a b r e p o r t a s , 
q u e p u x a v á l v u l a s , q u e o l h a o r e l ó g i o, 
q u e c o m p r a p ã o à s 6 h o r a s d a t a r d e , 
q u e v a i l á f o r a , q u e a p o n t a l á p i s , 
q u e v ê a u v a e t c . e t c . 

Pe r d o a i 
M a s e u p r e c i s o s e r O u t r o s . 
E u p e n s o r e n o v a r o h o m e m u s a n d o b o r b o l e t a s . 

M a n o e l d e B a r ro s
Quem sou:	


Desenvolvedor do tempo da Carochinha, ávido 
leitor e praticante sempre interessado em 
metodologias de desenvolvimento, 

desde antes de surgirem programação modular, 	

programação estruturada e todas as demais até
os dias de hoje.	




                          Meninos, eu vi. E vivi.
Onde trabalho: http://www.concretesolutions.com.br/	


A Concrete tem 10 anos com um portfólio de clientes 
bem variado no Brasil e no exterior. No início a maior 
demanda do mercado era para soluções de integração e 
assim foi natural a parceria com os grandes players como 	

Oracle, Red Hat, etc.

Atualmente a diversificação é bem grande e temos também
ótimos projetos nas áreas de cloud, mobile, web e lean
startups de tecnologia.	

Praticamos e pregamos o desenvolvimento ágil desde 2007.
Hoje temos 56% do faturamento usando Scrum e Kanban e
só 12% de projetos fechados.	
  
“Design and programming are human
  activities; forget that and all is lost.”

    	

 	

 	

 	

 	

 	

 	

 	

 	

Bjarne Stroustrup
    The C++ Programming Language, 2nd Ed, Section11.1, pág.363
Arbitrariamente vou definir um programador 10x
como aquele que sem ser gênio, tem pelo menos
um pouco das seguintes qualidades:	


-  inteligente (e com bons princípios éticos),	


-  personalidade que alie GTD a criatividade e mais 
boa interatividade com time,	


-  sabe programar e conhece as tecnologias do 
projeto 
(melhorar aqui é o foco desta apresentação)
Veremos o que fazer para elevar o nível de um 
programador iniciante	



e como criar condições de um dia ele vir a ser
um programador 10x.
Você conhece um programador 10x?
Melhor dizendo, 

reconhece um programador 10x?
Você contrataria alguém como 
os personagens das fotos seguintes?
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10x
Agile br2011 lucabastos-prog10x
Ops...	


Desculpa aí Milfont ...
Origem do meu interesse
no tema da apresentação	

   Ligue djá
Segundo o prof. Robert Glass, no livro de 2002
Facts and Fallacies of Software Engineering	


Fato 1: 	

O fator mais importante no trabalho com software
é a qualidade dos programadores.	



Fato 2:	

A diferença entre os melhores e os piores 
programadores pode ser de até 28 vezes.
A diferença de produtividade entre programadores
já foi motivo de preocupação de estudiosos como 
Bohem, De Marco, Spolsky e outros.
Steve McConnell também discute o que é um 
programador 10x e se é viável medir variações na 	

produtividade	


Ver último capítulo de Making Software, What
Really Works, and Why We Believe It, O’Reilly 2011
Origem do termo programador 10x	


Segundo um estudo de 1968 (ver *)

Diferenças entre o melhor e o pior entre 	

programadores com 7 anos de experiência, 	


        Tempo para “codar”	

                                   20x	

        Tempo para debugar	

                                   25x	

        Tamanho do código	

                                     5x	

        Tempo de execução do código	

                          10x	



* Making Software, What Really Works, cap.30, What Does 10x Mean? Steve McConnell
Segundo o mesmo McConnell (*), o tal estudo tem falhas
porque compara resultados de programadores usando
linguagens de baixo nível com outros usando linguagens
de alto nível	





       Tempo para “codar”	

                                   20x	

       Tempo para debugar	

                                   25x	

       Tamanho do código	

                                     5x	

       Tempo de execução do código	

                          10x	


 * Making Software, What Really Works, cap.30, What Does 10x Mean? Steve McConnell
Porém McConnell (*) repara que a diferença entre
os melhores e os piores pode ser considerada como
10x 	


   Tempo para “codar”	

                20x	

   Tempo para debugar	

   Tamanho do código	

   Tempo de execução do código	

                                    10 X	

                                        25x	

                                         5x	

                                        10x
Escolhi usar o termo 10x porque meu conceito de
10x está mais para os bons que podemos formar 
do que para os pontos extremos excepcionais que 
poderiam ser os tais 28x.
Mas eu conheço muitos bem acima do 10x	




Chegaram lá por diversos motivos dentre eles 
qualidades pessoais acima da média	




Vamos ver alguns que quase todos conhecem:
Agile br2011 lucabastos-prog10x
Não é com estes que estou preocupado	




É com os novos que contrataremos	




E supondo que nossos iniciantes são inteligentes, 
falarei sobre o que fazer para que se tornem 10x
em menos tempo
Agile br2011 lucabastos-prog10x
#Fatos	


Atualmente está difícil contratar programadores	



O mercado está aquecido e há poucos disponíveis	



Mais fácil contratar iniciantes e treiná-los até o
nível médio da equipe
Desafio número 1:	


Dar condições para o iniciante virar bom 
programador continuando sendo um ser humano 
(sem arrogância).
Opinião do Joel Spolsky:

Contrate um super star caso queira um produto 
acima da média.
Mas todo mundo conhece um super programador 
que ninguém quer na equipe.
Um super piloto de caça nem sempre se sujeitará 
as normas de segurança de um avião de carreira 
ou o barão vermelho pode não ter habilidade para 	

conviver com as demais pessoas.
Desafio número 2:	


Reconhecer os melhores.
E como reconhecer os melhores? 	




   a) Medindo a produtividade?	
  


   b) Existem outros meios de reconhecê-los?
Medir a produtividade	




Será fácil fazer isto?
Linhas de código?	



    Mas programadores espertos produzirão mais 
    escrevendo códigos mais longos

    Lembrando Dilbert: você obtem o que mede
Pontos de função? 

  	

Mas código ruim não gera mais pontos de função. 	
  
Número de histórias prontas?	



   Mas e a complexidade diferente de cada uma?
Então não consigo medir a produtividade?	


Para mim a resposta é não. 	


Parece até perda de tempo tentar. 	


Concordo com Martin Fowler em

http://www.martinfowler.com/bliki/CannotMeasureProductivity.html
Então como saber se um programador já é 10x?	



Se não se pode medir


Quais serão então os tais outros meios?	
  
Minha resposta: 

 	

 	

acompanhamento dia a dia	
  
Para nossa sorte, 

  	

os meios de acompanhamento úteis
  	

para reconhecer um programador 10x
São exatamente os mesmos 

  	

que possibilitam conduzir um iniciante 
  	

ao conceito 10x
- Programação pareada	



- Revisão de código	
  


- Compartilhamento de conhecimento,
workshops, práticas de dojos, etc.	
  


- TDD, boa comunicação, etc.
Primeiro resultado desta apresentação

Não é possível medir a produtividade dos 
programadores	



  	

 	

mas se pode avaliar cada um por meio de 
  	

 	

acompanhamento frequente.
Esta página foi intencionalmente deixada em branco
para que você pense no dia a dia do seu projeto
Impressões minhas:

Algumas práticas do desenvolvimento ágil 	

adequadas a elevar o nível dos iniciantes são 
deixadas de lado ao estimar um projeto. 	
  



Nem sempre o ambiente de desenvolvimento 
facilita o emprego destas práticas.
No seu projeto ou na sua empresa:	


- nas estimativas é previsto o pareamento?	
  
- ou cada desenvolvedor pega uma tarefa?	
  
- e há tempo para revisão de código?	
  
 - há práticas de disseminação de conhecimento? 	
  
 - o ambiente de trabalho facilita o pareamento? 
 existem baias? As mesas permitem pareamento?	
  
 - é fácil trocar de par ou os desenvolvedores tem 
 lugar fixo?
Agile br2011 lucabastos-prog10x
Considerando que uma boa parte dos 
desenvolvedores trabalha alocado nos clientes,


e que dentro do ambiente deles dificilmente
conseguimos tempo no projeto e espaço físico 
ideal,


só pode ser pegadinha do Malandro falar 
destas práticas.
Mesmo nas empresas cujo objetivo principal é o 
desenvolvimento de software, nem sempre há 
espaço físico propício às práticas citadas 


Também não é fácil encontrar imóveis e móveis 
ideais
Muitas vezes por pressões dos clientes ou pelo
exíguo time to market do produto, é difícil subtrair
tempo do projeto para cuidar dos processos (*) de 
melhoria contínua e renovação da equipe.	



* 	

Se não cuidar destes processos, então cuidado com a 
  	

lei de Brooks: “adicionar pessoas a um projeto atrasado 
  	

irá atrasá-lo ainda mais”
Desafio número 3 (este sim o mais difícil)	


1. Convencer os gestores das empresas da
importância destas práticas.	


2. Convencer os clientes que produto feito sob
encomenda só será bom e atualizado, se estiver
sob um processo de melhoria contínua. 
Portanto é preciso reservar tempo para isto.	


3. Convencer os desenvolvedores de são eles os
beneficiados e que também precisam doar tempo.
O passo 1, ao contrário do que dizem, costuma ser
o menos difícil: 
  	

convencer os chefes. 	



E eles tem acesso e mandato para convencer nossos 
clientes.
Porém ninguém se iluda. 	




Muito mais difícil é convencer os colegas, 	



   	

de que são parte interessada no processo de 
   	

melhoria e atualização e que 	
  


     também devem doar tempo.	
  
O desafio 3	



     	

é convencer


     	

 	

 	

convencer


     	

 	

 	

 	

 	

 	

convencer ...
Agile br2011 lucabastos-prog10x
Segundo resultado desta apresentação:

É preciso reservar tempo e esforço em prol da 
melhoria contínua.	




Alguns podem discordar mas para mim isto não 
deve ocorrer só por parte da empresa. 

É preciso convencer o desenvolvedor a também 
fazer a sua parte.
Práticas que ajudam a diminuir o gap técnico da
equipe e conduzem um iniciante ao conceito 10x
Relembrando programação pareada	


•  Fred Brooks e Larry Constantine já falavam disto	


•  Diminui o risco e evita o “truck factor” (Ceci Fernandes)	


•  Resultado do código costuma ser mais legível	


•  Ao contrário do que dizem, pode ser feito remoto	


•  Gasta mais tempo.	


•  Cansa mais a cabeça, nem todos suportam mesmo % / dia
Relembrando revisão de código	


•  Brooks também citava	


•  É uma prática aparentemente esquecida atualmente. 

•  Além de diminuir o “truck factor”, é mais uma chance de
descobrir defeitos

•  Parece funcionar melhor feito em grupo (ou par)

•  É mais fácil rever pequenos trechos de código em
pequenas janelas de tempo
Relembrando compartilhamento de conhecimento, 
workshops, práticas de dojos, etc.	


•  Atividades que exigem mais doação dos desenvolvedores
do que da direção da empresa

•  Geralmente feitos fora do horário de trabalho

•  Em alguns casos contam com participação de 
desenvolvedores de outras empresas	


•  Estimulam e dão oportunidade de afirmação aos que se
oferecem para estudar e apresentar temas
Relembrando TDD, boa comunicação, etc.	


• TDD pode diminuir o medo do iniciante de fazer uma
grande bobagem que acarrete muitas horas de debug

• TDD facilita a revisão de código	


• TDD retira bloqueios do tipo “se está funcionando não 
mexe”. Bloqueios deste tipo inibem iniciantes

•  Boa comunicação é como uma plantinha que precisa ser
regada todo dia. Nem sempre todos percebem o exato
momento em que a comunicação começa a ter ruídos.
O iniciante sofre mais com falha de comunicação
Terceiro resultado desta apresentação:

Práticas populares do XP porém já recomendadas 
desde a década de 70, junto com ações de 
disseminação de conhecimento e mais TDD, 
permitem avaliar a produtividade e elevar o nível 
médio dos times.	



De quebra diminuem o risco de falha do projeto e 
ainda preparam a equipe para maiores desafios
E o tal programador 10x?	


Não há como medir a produtividade 	

 	

#fato	
  

Dizer que um vale 10 vezes o outro é chute 	


Daí a definição arbitrária do programador 10x
no início desta apresentação sem comparar 
com nenhum outro 	

 	

 	

 	

 	

#constatação	
  
Moral da história	



Se não podemos medir, não há como colocar 
números comparativos.	
  


O termo programador 10x significa ...	
  

  	

 	

apenas um bom programador (como definido).
?	

luca.bastos@concretesolutions.com.br	





Você conhece um programador 10x?	





                 Obrigado

Mais conteúdo relacionado

PDF
Agile br2011 lucabastos-prog10x-noiteagilcaelum
PDF
Código Limpo
PPTX
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
PPTX
TDC 2012 TDD e 20 coisas que você precisa saber
PPTX
Coding Dojo - Aplicando Princípios Ágeis
PPTX
KEY
Take It To The Next Level
PPTX
Generalização prematura e complexidade acidental, a raiz do mal de todo software
Agile br2011 lucabastos-prog10x-noiteagilcaelum
Código Limpo
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
TDC 2012 TDD e 20 coisas que você precisa saber
Coding Dojo - Aplicando Princípios Ágeis
Take It To The Next Level
Generalização prematura e complexidade acidental, a raiz do mal de todo software

Mais procurados (19)

PPTX
Programação simultânea em pares
PPT
Seja Um Programador Pragmatico
PDF
Entrevista Revista Mundo PM com Ricardo Vargas.
PDF
Tdd na veia
PPTX
Introdução a Modelagem
PDF
Wire 2010 - Entenda Software da Forma Correta
PDF
Revista programar 30
PPTX
Desmistificando Design Patterns
PPTX
Herez m kattan_social_networks_meets_software_development-software
PDF
TDD: A Essência do Mantra
PPSX
Escrevendo C# moderno 2019 - MVPConf
PDF
Revista programar 23
PPTX
Sete Passos Para Um Programador De Sucesso
PDF
Faca seucurta2012
PDF
Revista Programar 41
PDF
Código limpo php
ODP
"Mas eu não tenho experiência..." E daí??? - Como quebrar o ciclo vicioso de...
PDF
Revista Programar 43
PDF
TDD para "meros mortais"
Programação simultânea em pares
Seja Um Programador Pragmatico
Entrevista Revista Mundo PM com Ricardo Vargas.
Tdd na veia
Introdução a Modelagem
Wire 2010 - Entenda Software da Forma Correta
Revista programar 30
Desmistificando Design Patterns
Herez m kattan_social_networks_meets_software_development-software
TDD: A Essência do Mantra
Escrevendo C# moderno 2019 - MVPConf
Revista programar 23
Sete Passos Para Um Programador De Sucesso
Faca seucurta2012
Revista Programar 41
Código limpo php
"Mas eu não tenho experiência..." E daí??? - Como quebrar o ciclo vicioso de...
Revista Programar 43
TDD para "meros mortais"
Anúncio

Semelhante a Agile br2011 lucabastos-prog10x (20)

PPT
Extreme programming explicada
PPT
Extreme Programming Explicada
PDF
Introdução à Programação Extrema (Extreme Programming - XP)
PPT
Introdução ao XP
PDF
introxp-180413013250.pdf
PPTX
Qualidade no desenvolvimento de softwre
PPT
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
PDF
Programacao Extrema
PPTX
Agilidade é para desenvolvedores? Semana da Agilidade
ODP
Conhecendo xp
PDF
programming.success - carreira de programador
KEY
UnP Eng. Software - Aula 12
PPTX
eXtreme Programming (xp)
PPTX
eXtreme Programming (XP)
PDF
PPT
Introdução a Metodologia XP (E Xtreme Programming)
PPTX
XP - Extreme Programming
PDF
PDF
A Carreira de Desenvolvedor: do Jr ao Sênior
PPT
Xp Comdex
Extreme programming explicada
Extreme Programming Explicada
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução ao XP
introxp-180413013250.pdf
Qualidade no desenvolvimento de softwre
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Programacao Extrema
Agilidade é para desenvolvedores? Semana da Agilidade
Conhecendo xp
programming.success - carreira de programador
UnP Eng. Software - Aula 12
eXtreme Programming (xp)
eXtreme Programming (XP)
Introdução a Metodologia XP (E Xtreme Programming)
XP - Extreme Programming
A Carreira de Desenvolvedor: do Jr ao Sênior
Xp Comdex
Anúncio

Mais de Luca Bastos (12)

PDF
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
PDF
A disciplina da inovacao
PDF
Big data e agile analytics
PDF
Da descoberta do Ágil ao Manifesto Luca Bastos Agile Brazil 2013
PDF
Lean Analytics - TDC2013
PDF
Como voce se imagina daqui a 40 anos
PDF
Agile Brazil 2012 Painel com empreendedores digitais
PDF
Ágil como MacGyver - Caipira Ágil -18-08-2012
PDF
Dez Dicas Para Startups - TDC2012
PDF
Machine learning java ce conference 2012 - fortaleza ce
PDF
Transações compensatórias usando REST - QCon SP 2011
PPTX
Lightning talk Luca Bastos no QCon SP 2011
Da Descoberta do Ágil ao Manifesto Luca Bastos AgileVale 2013
A disciplina da inovacao
Big data e agile analytics
Da descoberta do Ágil ao Manifesto Luca Bastos Agile Brazil 2013
Lean Analytics - TDC2013
Como voce se imagina daqui a 40 anos
Agile Brazil 2012 Painel com empreendedores digitais
Ágil como MacGyver - Caipira Ágil -18-08-2012
Dez Dicas Para Startups - TDC2012
Machine learning java ce conference 2012 - fortaleza ce
Transações compensatórias usando REST - QCon SP 2011
Lightning talk Luca Bastos no QCon SP 2011

Último (16)

PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Arquitetura de computadores - Memórias Secundárias
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Processos na gestão de transportes, TM100 Col18
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx

Agile br2011 lucabastos-prog10x

  • 1. Como formar um programador 10x Luca Bastos luca.bastos@concretesolutions.com.br Agile Brazil 2011 Fortaleza, CE
  • 2. A m a i o r r i q u e z a d o h o m e m é a s u a i n c o m p l e t u d e . N e s s e p o n t o s o u a b a s t a d o. P a l av r a s q u e m e a c e i t a m c o m o s o u - e u n ã o a c e i t o. N ã o a g ü e n t o s e r a p e n a s u m s u j e i t o q u e a b r e p o r t a s , q u e p u x a v á l v u l a s , q u e o l h a o r e l ó g i o, q u e c o m p r a p ã o à s 6 h o r a s d a t a r d e , q u e v a i l á f o r a , q u e a p o n t a l á p i s , q u e v ê a u v a e t c . e t c . Pe r d o a i M a s e u p r e c i s o s e r O u t r o s . E u p e n s o r e n o v a r o h o m e m u s a n d o b o r b o l e t a s . M a n o e l d e B a r ro s
  • 3. Quem sou: Desenvolvedor do tempo da Carochinha, ávido leitor e praticante sempre interessado em metodologias de desenvolvimento, desde antes de surgirem programação modular, programação estruturada e todas as demais até os dias de hoje. Meninos, eu vi. E vivi.
  • 4. Onde trabalho: http://www.concretesolutions.com.br/ A Concrete tem 10 anos com um portfólio de clientes bem variado no Brasil e no exterior. No início a maior demanda do mercado era para soluções de integração e assim foi natural a parceria com os grandes players como Oracle, Red Hat, etc. Atualmente a diversificação é bem grande e temos também ótimos projetos nas áreas de cloud, mobile, web e lean startups de tecnologia. Praticamos e pregamos o desenvolvimento ágil desde 2007. Hoje temos 56% do faturamento usando Scrum e Kanban e só 12% de projetos fechados.  
  • 5. “Design and programming are human activities; forget that and all is lost.” Bjarne Stroustrup The C++ Programming Language, 2nd Ed, Section11.1, pág.363
  • 6. Arbitrariamente vou definir um programador 10x como aquele que sem ser gênio, tem pelo menos um pouco das seguintes qualidades: -  inteligente (e com bons princípios éticos), -  personalidade que alie GTD a criatividade e mais boa interatividade com time, -  sabe programar e conhece as tecnologias do projeto (melhorar aqui é o foco desta apresentação)
  • 7. Veremos o que fazer para elevar o nível de um programador iniciante e como criar condições de um dia ele vir a ser um programador 10x.
  • 8. Você conhece um programador 10x?
  • 9. Melhor dizendo, reconhece um programador 10x?
  • 10. Você contrataria alguém como os personagens das fotos seguintes?
  • 17. Origem do meu interesse no tema da apresentação Ligue djá
  • 18. Segundo o prof. Robert Glass, no livro de 2002 Facts and Fallacies of Software Engineering Fato 1: O fator mais importante no trabalho com software é a qualidade dos programadores. Fato 2: A diferença entre os melhores e os piores programadores pode ser de até 28 vezes.
  • 19. A diferença de produtividade entre programadores já foi motivo de preocupação de estudiosos como Bohem, De Marco, Spolsky e outros.
  • 20. Steve McConnell também discute o que é um programador 10x e se é viável medir variações na produtividade Ver último capítulo de Making Software, What Really Works, and Why We Believe It, O’Reilly 2011
  • 21. Origem do termo programador 10x Segundo um estudo de 1968 (ver *) Diferenças entre o melhor e o pior entre programadores com 7 anos de experiência, Tempo para “codar” 20x Tempo para debugar 25x Tamanho do código 5x Tempo de execução do código 10x * Making Software, What Really Works, cap.30, What Does 10x Mean? Steve McConnell
  • 22. Segundo o mesmo McConnell (*), o tal estudo tem falhas porque compara resultados de programadores usando linguagens de baixo nível com outros usando linguagens de alto nível Tempo para “codar” 20x Tempo para debugar 25x Tamanho do código 5x Tempo de execução do código 10x * Making Software, What Really Works, cap.30, What Does 10x Mean? Steve McConnell
  • 23. Porém McConnell (*) repara que a diferença entre os melhores e os piores pode ser considerada como 10x Tempo para “codar” 20x Tempo para debugar Tamanho do código Tempo de execução do código 10 X 25x 5x 10x
  • 24. Escolhi usar o termo 10x porque meu conceito de 10x está mais para os bons que podemos formar do que para os pontos extremos excepcionais que poderiam ser os tais 28x.
  • 25. Mas eu conheço muitos bem acima do 10x Chegaram lá por diversos motivos dentre eles qualidades pessoais acima da média Vamos ver alguns que quase todos conhecem:
  • 27. Não é com estes que estou preocupado É com os novos que contrataremos E supondo que nossos iniciantes são inteligentes, falarei sobre o que fazer para que se tornem 10x em menos tempo
  • 29. #Fatos Atualmente está difícil contratar programadores O mercado está aquecido e há poucos disponíveis Mais fácil contratar iniciantes e treiná-los até o nível médio da equipe
  • 30. Desafio número 1: Dar condições para o iniciante virar bom programador continuando sendo um ser humano (sem arrogância).
  • 31. Opinião do Joel Spolsky: Contrate um super star caso queira um produto acima da média.
  • 32. Mas todo mundo conhece um super programador que ninguém quer na equipe.
  • 33. Um super piloto de caça nem sempre se sujeitará as normas de segurança de um avião de carreira ou o barão vermelho pode não ter habilidade para conviver com as demais pessoas.
  • 35. E como reconhecer os melhores? a) Medindo a produtividade?   b) Existem outros meios de reconhecê-los?
  • 36. Medir a produtividade Será fácil fazer isto?
  • 37. Linhas de código? Mas programadores espertos produzirão mais escrevendo códigos mais longos Lembrando Dilbert: você obtem o que mede
  • 38. Pontos de função? Mas código ruim não gera mais pontos de função.  
  • 39. Número de histórias prontas? Mas e a complexidade diferente de cada uma?
  • 40. Então não consigo medir a produtividade? Para mim a resposta é não. Parece até perda de tempo tentar. Concordo com Martin Fowler em http://www.martinfowler.com/bliki/CannotMeasureProductivity.html
  • 41. Então como saber se um programador já é 10x? Se não se pode medir Quais serão então os tais outros meios?  
  • 42. Minha resposta: acompanhamento dia a dia  
  • 43. Para nossa sorte, os meios de acompanhamento úteis para reconhecer um programador 10x
  • 44. São exatamente os mesmos que possibilitam conduzir um iniciante ao conceito 10x
  • 45. - Programação pareada - Revisão de código   - Compartilhamento de conhecimento, workshops, práticas de dojos, etc.   - TDD, boa comunicação, etc.
  • 46. Primeiro resultado desta apresentação Não é possível medir a produtividade dos programadores mas se pode avaliar cada um por meio de acompanhamento frequente.
  • 47. Esta página foi intencionalmente deixada em branco para que você pense no dia a dia do seu projeto
  • 48. Impressões minhas: Algumas práticas do desenvolvimento ágil adequadas a elevar o nível dos iniciantes são deixadas de lado ao estimar um projeto.   Nem sempre o ambiente de desenvolvimento facilita o emprego destas práticas.
  • 49. No seu projeto ou na sua empresa: - nas estimativas é previsto o pareamento?   - ou cada desenvolvedor pega uma tarefa?   - e há tempo para revisão de código?   - há práticas de disseminação de conhecimento?   - o ambiente de trabalho facilita o pareamento? existem baias? As mesas permitem pareamento?   - é fácil trocar de par ou os desenvolvedores tem lugar fixo?
  • 51. Considerando que uma boa parte dos desenvolvedores trabalha alocado nos clientes, e que dentro do ambiente deles dificilmente conseguimos tempo no projeto e espaço físico ideal, só pode ser pegadinha do Malandro falar destas práticas.
  • 52. Mesmo nas empresas cujo objetivo principal é o desenvolvimento de software, nem sempre há espaço físico propício às práticas citadas Também não é fácil encontrar imóveis e móveis ideais
  • 53. Muitas vezes por pressões dos clientes ou pelo exíguo time to market do produto, é difícil subtrair tempo do projeto para cuidar dos processos (*) de melhoria contínua e renovação da equipe. * Se não cuidar destes processos, então cuidado com a lei de Brooks: “adicionar pessoas a um projeto atrasado irá atrasá-lo ainda mais”
  • 54. Desafio número 3 (este sim o mais difícil) 1. Convencer os gestores das empresas da importância destas práticas. 2. Convencer os clientes que produto feito sob encomenda só será bom e atualizado, se estiver sob um processo de melhoria contínua. Portanto é preciso reservar tempo para isto. 3. Convencer os desenvolvedores de são eles os beneficiados e que também precisam doar tempo.
  • 55. O passo 1, ao contrário do que dizem, costuma ser o menos difícil: convencer os chefes. E eles tem acesso e mandato para convencer nossos clientes.
  • 56. Porém ninguém se iluda. Muito mais difícil é convencer os colegas, de que são parte interessada no processo de melhoria e atualização e que   também devem doar tempo.  
  • 57. O desafio 3 é convencer convencer convencer ...
  • 59. Segundo resultado desta apresentação: É preciso reservar tempo e esforço em prol da melhoria contínua. Alguns podem discordar mas para mim isto não deve ocorrer só por parte da empresa. É preciso convencer o desenvolvedor a também fazer a sua parte.
  • 60. Práticas que ajudam a diminuir o gap técnico da equipe e conduzem um iniciante ao conceito 10x
  • 61. Relembrando programação pareada •  Fred Brooks e Larry Constantine já falavam disto •  Diminui o risco e evita o “truck factor” (Ceci Fernandes) •  Resultado do código costuma ser mais legível •  Ao contrário do que dizem, pode ser feito remoto •  Gasta mais tempo. •  Cansa mais a cabeça, nem todos suportam mesmo % / dia
  • 62. Relembrando revisão de código •  Brooks também citava •  É uma prática aparentemente esquecida atualmente. •  Além de diminuir o “truck factor”, é mais uma chance de descobrir defeitos •  Parece funcionar melhor feito em grupo (ou par) •  É mais fácil rever pequenos trechos de código em pequenas janelas de tempo
  • 63. Relembrando compartilhamento de conhecimento, workshops, práticas de dojos, etc. •  Atividades que exigem mais doação dos desenvolvedores do que da direção da empresa •  Geralmente feitos fora do horário de trabalho •  Em alguns casos contam com participação de desenvolvedores de outras empresas •  Estimulam e dão oportunidade de afirmação aos que se oferecem para estudar e apresentar temas
  • 64. Relembrando TDD, boa comunicação, etc. • TDD pode diminuir o medo do iniciante de fazer uma grande bobagem que acarrete muitas horas de debug • TDD facilita a revisão de código • TDD retira bloqueios do tipo “se está funcionando não mexe”. Bloqueios deste tipo inibem iniciantes •  Boa comunicação é como uma plantinha que precisa ser regada todo dia. Nem sempre todos percebem o exato momento em que a comunicação começa a ter ruídos. O iniciante sofre mais com falha de comunicação
  • 65. Terceiro resultado desta apresentação: Práticas populares do XP porém já recomendadas desde a década de 70, junto com ações de disseminação de conhecimento e mais TDD, permitem avaliar a produtividade e elevar o nível médio dos times. De quebra diminuem o risco de falha do projeto e ainda preparam a equipe para maiores desafios
  • 66. E o tal programador 10x? Não há como medir a produtividade #fato   Dizer que um vale 10 vezes o outro é chute Daí a definição arbitrária do programador 10x no início desta apresentação sem comparar com nenhum outro #constatação  
  • 67. Moral da história Se não podemos medir, não há como colocar números comparativos.   O termo programador 10x significa ...   apenas um bom programador (como definido).