SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Better Developer
([A]: Desenvolvimento a la Eclipse/Canadá)
Marcio Marchini
www.BetterDeveloper.net
© 2012 Marcio Marchini
• Parte 1: Brownfield Development (Legado…)
• Parte 2: Greenfield Development (Certo desde o Início…)
Visão Geral
© 2012 Marcio Marchini
Márcio Marchini está envolvido em Desenvolvimento de Software Orientado a
Objetos desde o fim dos anos oitenta, usando Smalltalk e depois Java e C#.
Marchini participou do projeto do IBM VisualAge, que originou o Eclipse, na OTI
em Ottawa/Canadá (hoje "OTI IBM Labs" ). Lá tambem participou do
desenvolvimento da Máquina Virtual IBM Java J9 (utilizado em alguns telefones
da Nokia e outros), e do projeto cujo código foi doado pela IBM ao Apache
Harmony (http://harmony.apache.org/). Marchini trabalhou também como
Líder Técnico na área de Telecom na MITEL Networks, também no Canadá, e
posteriormente juntou-se como Pesquisador e Líder de Equipe, Projeto e
Consultor de Desenvolvimento de Software na BRL (Bedarra Research Labs,
Canadá). Junto com o time da Bedarra, Marchini trabalhou apoiando grandes e
pequenas companhias a fazerem a transição para o Desenvolvimento Ágil de
Software. Dentre as empresas que apoiou destacam-se a Cognos (atualmente
parte da IBM) e a Samsung na Coréia do Sul. Marchini também possui
experiência com educação e treinamento à distância, tendo integrado a
parceria com a Online-Learning.com, que preparou a plataforma e o conteúdo
dos cursos SCORM para TDD da Object Mentor e Bedarra. No Brasil, Marchini
implantou, como CTO na Audaces, o desenvolvimento Agile In The Large, onde
os softwares legados foram adaptados a serem produzido com build continuo,
testes automatizados com relatório de cobertura, etc. Marchini é também co-
autor de um método e produto para depuração de máquinas virtuais Java (US
Patent 6,637,024).
Instrutor: Márcio Marchini
© 2012 Marcio Marchini
Segundo Mike Keith...
 
Co-autor da JSR 220 (EJB 3.0) e membro do grupo da JSR 244 (Java EE), bem
como autor dos livros Pro EJB 3: Java Persistence API e Pro JPA 2: Mastering the
Java(TM) Persistence API , Mike Keith tem isso a dizer sobre nosso trabalho,
juntos na IBM/OTI Labs:
 
“I had the opportunity to get to know and work with Marcio at OTI and have
valued my association with him ever since. Marcio is the killer combination of
a very bright mind, a good work ethic, and loads of creativity. Add in his
contagious enthusiasm and friendly character and Marcio is the complete
package: a smart, talented, team builder. Any company Marcio chooses to
work for would be insane to pass up the opportunity to hire him.” May 8, 2011
Recomendações (Mike Keith)
© 2012 Marcio Marchini
Segundo Jeff McAffer...
 
Um dos principais arquitetos do Eclipse e autor do livro Eclipse RCP e de OSGi
atualmente assumindo a posição de arquiteto do Visual Studio na Microsoft,
eis o que Jeff McAffer tem a dizer do nosso trabalho:
 
“I worked with Marcio for a number of years in a diverse set of projects. He
is well-grounded and well-rounded. I greatly appreciate his ability to think
and act at multiple levels from low-level technical detail to high-level design
to organizational/process topics. Very bright, good people skills and an
overall great guy.”May 19, 2011
Recomendações (Jeff McAffer)
© 2012 Marcio Marchini
Segundo Erich Gamma...
 
Nome que dispensa introdução, Erich Gamma escreveu a bíblia de Design
Patterns, cumprindo um papel crucial também na IBM no desenvolvimento do
projeto Eclipse. Eis sua recomendação:
 
“I remember well when we worked together at OTI on Java tools. The
deliverables from Marcio were always on time and with high quality. Marcio
was a pleasure to work with.” June 20, 2011
Recomendações (Erich Gamma)
© 2012 Marcio Marchini
Segundo Dave Thomas...
 
Fundador da OTI, posteriormente comprada pela IBM Canada, e criador do
berço do projeto Eclipse e da máquina virtual Java da IBM, eis as
recomendações de Dave Thomas:
 
“I strongly recommend Marcio, to the extend that I would gladly hire him
again. I've worked with him since the 90s in different companies. He is an
strong technical leader, mentor and an outstanding team player. He knows
how to build and deploy commercial software products as well as how to work
in a speculative R&D environment.” April 25, 2011
Recomendações (Dave Thomas)
© 2012 Marcio Marchini
Entendendo nosso background profissional…
• Carreira Profissional em Software Industrial no Canadá
• Inicialmente na empresa OTI, que foi o berço do Eclipse
• Antes do Eclipse havia Leapfrog, VisualAge, Smalltalk…
• Bedarra / Dave Thomas novamente
• A seguir: entendendo nosso background e o que queremos
transferir nesse curso. (O que nos moldou profissionalmente)
© 2012 Marcio Marchini
OTI – Breve Histórico
Fonte: http://www-03.ibm.com/software/ca/en/ottawalab/roots.html
Object Technology International (OTI): 1988-2002 
A world leader in object-oriented technology founded in 1988, OTI is the company behind big-
name products like VisualAge for Java, VisualAge Smalltalk, VisualAge Micro Edition,
WebSphere® Studio Device Developer, WebSphere Micro Environment, WebSphere Custom
Environment, WebSphere Studio Workbench, and Eclipse.
OTI is known for its lead role in the design and development of IBM's IDEs for Java, Smalltalk
and embedded systems. More recently, OTI led in developing Eclipse, the open source, next-
generation application development tools platform, and WebSphere Studio Workbench, the
IBM supported version of Eclipse technology. 
OTI was acquired by IBM in 1996, and operated as a wholly owned subsidiary for seven
years. In 2003, OTI transitioned to become a full part of IBM with the formation of the new
IBM Ottawa Software Lab.
Founder: Dave Thomas (see http://en.wikipedia.org/wiki/David_A._Thomas_
%28software_developer%29 )
© 2012 Marcio Marchini
OTI/Canadá –1994
Chegando no Mundo OTI:
 Vários Regression Tests de ENVY/Swapper. Hmmm, na universidade não
tinha disso.
 Swapper: Legado que precisa evoluir. Hmmm, na universidade não tinha
disso.
 Time de Release Engineering, com builds. Hmmm, na universidade não
tinha disso.
 Milhares de clientes grandes pelo mundo, inclusive IBM, mainframes, etc.
Tem que rodar bem e sem erro. Hmmm, na universidade não tinha disso.
 Ninguém seguindo Waterfall ou usando OMT (precursor do UML). Mas
também nada de prototipação. Hmm... O que é que esses caras usam??
 Componentes. APIs bem definidas nas “boundaries”. Times pequenos com
Team Leaders. Sem Managers.
 “Eat Our Own Dog Food” (or “Drink Our Own Champagne”): Bug/Ticket
System em Smalltalk. IDE em Smalltalk. Team tool em Smalltalk
(ENVY/Developer). Mailer em Smalltalk!!!! Etc.
 CEO: Dave Thomas. Professor / Carleton University. ACM Distinguished
Engineer.
© 2012 Marcio Marchini
OTI JIT – O Segredo
Segredo do Dave Thomas:
JIT: Just-In-Time Software Development
 Inspirado em Lean/Toyota
 Secreto/interno. “Competitive Advantage”
Nomes Modernos: Lean, Ágil
© 2012 Marcio Marchini
OTI JIT – O Efeito Colateral
Smart People Attract Smart People!!! (experimente um Google
dessa frase)
 Peopleware!!!!
© 2012 Marcio Marchini
Clusterização e Disparidade de Talentos
•Produtividade pode variar de 10:1
Dave-ProductivityVaries
Dave-ProductivityVaries.m4v
© 2012 Marcio Marchini
OTI JIT – Mais Efeito Colateral
Assmimilação Borg Reversa
 IBM Compra OTI e assimila o know-how. (ex. Erich Gamma,
OTI Zurich)
 VMs Smalltalk, VMs Java. (John Duimovich & VM team)
 IDEs. (Greg Adams & teams)
 Método JIT de Software. (Dave Thomas & Brian Barry)
 Spin off: Eclipse Foundation. (Mike Millinkovitch: ex-OTI)
 IBM se tornando Ágil ?!?! (início: Websphere)
© 2012 Marcio Marchini
2007 - IBM Jazz – Familiar?
IBM Jazz (Rational Team Concert)
 “People, not organizations, build great software”.
http://jazz.net/pub/index.jsp
 “Jazz is a joint project between IBM Rational and IBM
Research to build a scalable, extensible team
collaboration platform for seamlessly integrating tasks
across the software lifecycle.”
 Soa Familiar???
Jim des Rivieres (“API wizard”) 
© 2012 Marcio Marchini
Software em Empresas Grandes: 1994…2003
(Espera aí... No Canadá não é todo mundo que nem a OTI ???)
MITEL / Ottawa
 PBX: Pascal “envenenado” p/ “baixaria”, compilador in-house.
 Código “massaroca” (emaranhado)
 UML? Não!!!!
 Unit Tests? Não!!!
 Mas... Pelo menos tinha Continuus (version control, Bug Report, etc)
Rational
 Rational Team Concert: Todo analisado/projetado up-front em UML,
certo? Não!!!
© 2012 Marcio Marchini
Software em Empresas Grandes: 1994…2003
(É todo mundo profi que nem a OTI ???)
Time na Samsung / Seul
 UML: Usado entre releases, pros times “descansarem”. Brincar de desenhar
diagramas. O gerente quer.
 Na hora do aperto: Hack and Release
 Mas... Pelo menos tinha JIRA, Perforce. Bedarra CTIP p/ alguns grupos.
Time na Cognos / Ottawa
 Business Intelligence: 6M LOC em C, C++, APL, VB, Java, etc.
 UML? Não!!!!!
 Unit Tests? Não!!!!
 Todos os testes feitos “através da GUI” com ferramentas tipo Mercury.
 Mas... Pelo menos tinha Bug Tracking (in-house), Build System (in-house),
Perforce, Smart Bear (code review)
© 2012 Marcio Marchini
Empresas Grandes 2001…
ISO 900x, 6-Sigma, CMMi
 Teoria: Implante um Processo Rígido, a Qualidade Vai Vir
 “In theory, theory and practice are the same. In pratice, they are
different”.
ISO 900x, CMM etc
 A Máfia da Certificação. Scuba Divers, anybody?
 Consultores querendo vender seus livros
 “Pra Inglês Ver”: No papel a gente faz assim/assado, pro auditor (ISO|
CMMi|<insira sigla aqui>) ver. Na prática, bom, .... É tudo uma questão
de incentivos…
“It’s possible to ship 0 lines of working software, but a pile of
documentation, and be CMM-compliant. Not so with Agile.”
-Bjorn, CTO New Relic (ex-Eclipse Foundation, ex-OTI, ex-
prof. Carleton University)
© 2012 Marcio Marchini
Empresas Grandes 2003…
Ágil!
 SCRUM
 Sub-conjunto de XP (Extreme Programming)
© 2012 Marcio Marchini
Manifesto Ágil (>10 anos!!!)
Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Kent Beck
Mike Beedle
Arie van Bennekum
Alistair Cockburn
Ward Cunningham
Martin Fowler
James Grenning
Jim Highsmith
Andrew Hunt
Ron Jeffries
Jon Kern
Brian Marick
Robert C. Martin
Steve Mellor
Ken Schwaber
Jeff Sutherland
Dave Thomas
© 2012 Marcio Marchini
XP
XP Practices
 Whole Team - a.k.a. "customer present"
 Short Cycles (short iterations)
 User Stories
 Acceptance Tests
 Test Driven Development
 Pair Programming (a.k.a. Continuous Code Review)
 Collective Ownership
 Continuous Integration (detect breaking code early)
 Sustainable Pace (40-h week)
 Open Workspace
 The Planning Game (Business people decide on
priorities, Developers decide on estimates)
 Simple Design (Do the simplest thing that could
possibly work)
 Refactoring
 Metaphor (big picture is shared by all)
• Problemas
• Imagem: Extreme é “coisa
pra jovem". Arriscado.
• Religião: Pair Programming
24/7 ??!!
• Empresas grandes são
geralmente conservadoras
© 2012 Marcio Marchini
Subconjuntos/Paleativos de XP
 Code Review como substituto de Pair
Programming (Smart Bear, etc)
 Unit Tests apenas pra novo código
 Testes via GUI pra depois refatorar
 ...
© 2012 Marcio Marchini
SCRUM
SCRUM
Product
Release
Backlogs
Individual
Sprint
Backlog
Potentially Shippable
Product
Increment
SCRUM
Meeting
The Product Release Backlog
contains all of the work items
required to build a specific
release of the product. An
informed customer or the product
owner acting on behalf of the
customer is responsible for
prioritizing the Product Backlog
into individual Product Release
Backlogs.
The SCRUM produces
potentially shippable
working product increments.
The definition of a
potentially shippable
increment is determined by
an informed customer.
Daily SCRUM
meetings are held
every 24 hours to
monitor progress.
Selected backlog items
are added to a Sprint
Backlog. These backlog
tasks are expanded by the
scrum team and the team
sprints to complete the
items.
Schwaber, Beedle
Scrum
Backlog
Each scrum is assigned
its own Scrum or Team
Backlog containing the
work items for that
specific release
© 2012 Marcio Marchini
SCRUM
SCRUM Practices
 Product Backlog
 Sprint (a.k.a. Short Iterations; Time-boxed)
 Sprint Planning Meeting
 Sprint Backlog
 Daily Scrum Meeting
 Sprint Review Meeting
 Roles
Product Owner
Scrum Master
Scrum Team  Repare: Nada quanto a “Engineering Practices”.
Contraste com XP.
© 2012 Marcio Marchini
Diga Mais Sobre XP + SCRUM
Baixe e leia o PDF:
© 2012 Marcio Marchini
O Lado Negro de Lean/Ágil
 A Máfia da Certificação. Parece com os níveis de Scuba Divers…
• (sim, sim, eu também fiz o curso de Scrum Master)
 A Máfia da Consultoria. Todo mundo agora é expert. Lembram-se de
OO? Mesma estória.
• (sim, sim, eu também dou consultoria em Ágil)
 Micromanagment (O que você fez ontem? O que vai fazer hoje? etc.)
• Algumas pessoas simplesmente não têm Peopleware skills.
 Visão simplória de alguns – falta de conciliação com empresas
grandes, com Legacy Code
Acima de tudo, não esqueça: No Silver Bullet (Fred Brooks)
http://en.wikipedia.org/wiki/No_Silver_Bullet
© 2012 Marcio Marchini
Quão Bem Está Seu Grupo? Joel On Software - Test
 The Joel Test: 12 Steps to Better Code, By Joel Spolsky
 Wednesday, August 09, 2000
 http://www.joelonsoftware.com/articles/fog0000000043.html
1.Do you use source control?
2.Can you make a build in one step?
3.Do you make daily builds?
4.Do you have a bug database?
5.Do you fix bugs before writing new code?
6.Do you have an up-to-date schedule?
7.Do you have a spec?
8.Do programmers have quiet working conditions?
9.Do you use the best tools money can buy?
10.Do you have testers?
11.Do new candidates write code during their interview?
12.Do you do hallway usability testing?
© 2012 Marcio Marchini
Bedarra – Lean and Agile In The Large
• Designed for large and small software development
projects
• Designed for projects that span multiple teams
• Designed for requiring a supplier-customer relationship
• Designed for any type of project such as software
applications, components, internal, third-party, or
consulting projects
© 2012 Marcio Marchini
Lean and Agile In The Large – Formato Eletrônico
© 2012 Marcio Marchini
Process Overview
Release Engineering
Phase
Continuous integration and test
Manage dependencies
Manage the “End Game”
Agile Product Team
Scrums…
Definition
Phase
Convert requirements to features
Design architecture (ADD)
Scrums…
Envisioning
Phase
Assess market risks
Assess R & D risks
Gather requirements
Develop vision
Scrums…
Development
Phase
Adopt test-driven development model
Implement & re-factor code using pair development
Employ a Continuous Integration & Test Environment
Make progress visible to team and management
SCRUMTeam1
Potentially
Shippable
Product
Agile Principles
SCRUMTeam2
SCRUMTeamN
Requirements Backlog
Risk Backlog
Vision Prototypes
Look & Feel Guidelines
Release Backlogs
Product Backlog
Product Architecture
SCRUM
Release
Backlog
Shippable
Code
Increments
Sprint
Release
Backlogs
© 2012 Marcio Marchini
AIL - Envisioning
© 2012 Marcio Marchini
AIL - Definition
© 2012 Marcio Marchini
AIL - Development
© 2012 Marcio Marchini
AIL – Release Engineering
© 2012 Marcio Marchini
OTI em Florianópolis/UFSC/EDUGRAF
• Mais detalhes em
http://xp.edugraf.ufsc.br/bin/view/XP/ODesenvolvimentoAgil
http://palestrajim.edugraf.ufsc.br/
© 2012 Marcio Marchini
Entendendo a Carga do Curso…
 Resumindo: Fomos privilegiados por estar no
lugar certo na hora certa e pudemos aprender
muito trabalhando com os Mestres… Esperamos
aqui poder repassar vários ensinamentos e
experiências adquiridas!

Weitere ähnliche Inhalte

Ähnlich wie 01-a-Intro-BetterDev

Big Event Looping Deck
Big Event Looping DeckBig Event Looping Deck
Big Event Looping DeckSteve Lange
 
Developers Nepal Meetup #4 Report
Developers Nepal Meetup #4 ReportDevelopers Nepal Meetup #4 Report
Developers Nepal Meetup #4 ReportPunit Jajodia
 
Vittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareVittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareNicolò Borghi
 
Vittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareVittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareNicolò Borghi
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要かKohei Otsuka
 
Un Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayUn Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayRikki Wright
 
Journey to the center of the software industry world
Journey to the center of the software industry worldJourney to the center of the software industry world
Journey to the center of the software industry worldAmr Salah
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developerTopu Newaj
 
LJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfLJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfEmilyJiang23
 
Unbundling the Bank
Unbundling the BankUnbundling the Bank
Unbundling the BankMatt Deacon
 
Ibm at sae2012 highlights
Ibm at sae2012 highlightsIbm at sae2012 highlights
Ibm at sae2012 highlightsibmsae
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaWey Wey Web
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's MindShai Yallin
 

Ähnlich wie 01-a-Intro-BetterDev (20)

From open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysferaFrom open source labs to ceo methods and advice by sysfera
From open source labs to ceo methods and advice by sysfera
 
OSGI,
OSGI,OSGI,
OSGI,
 
Big Event Looping Deck
Big Event Looping DeckBig Event Looping Deck
Big Event Looping Deck
 
Developers Nepal Meetup #4 Report
Developers Nepal Meetup #4 ReportDevelopers Nepal Meetup #4 Report
Developers Nepal Meetup #4 Report
 
Final Report_213110090
Final Report_213110090Final Report_213110090
Final Report_213110090
 
Vittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareVittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi software
 
Vittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi softwareVittorio Viarengo, ViVi software
Vittorio Viarengo, ViVi software
 
仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か仕様決定、部品化、ディレクションがなぜ重要か
仕様決定、部品化、ディレクションがなぜ重要か
 
Un Microsystem Company Analysis Essay
Un Microsystem Company Analysis EssayUn Microsystem Company Analysis Essay
Un Microsystem Company Analysis Essay
 
Journey to the center of the software industry world
Journey to the center of the software industry worldJourney to the center of the software industry world
Journey to the center of the software industry world
 
curriculo-sandro-en
curriculo-sandro-encurriculo-sandro-en
curriculo-sandro-en
 
Recipe of a rockstar developer
Recipe of a rockstar developerRecipe of a rockstar developer
Recipe of a rockstar developer
 
LJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdfLJC-Unconference-2023-Keynote.pdf
LJC-Unconference-2023-Keynote.pdf
 
Unbundling the Bank
Unbundling the BankUnbundling the Bank
Unbundling the Bank
 
Mohamed attia farag
Mohamed attia faragMohamed attia farag
Mohamed attia farag
 
Ibm at sae2012 highlights
Ibm at sae2012 highlightsIbm at sae2012 highlights
Ibm at sae2012 highlights
 
MSLC Company Profile
MSLC Company ProfileMSLC Company Profile
MSLC Company Profile
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo Collina
 
Shuzworld Analysis
Shuzworld AnalysisShuzworld Analysis
Shuzworld Analysis
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
 

Mehr von Marcio Marchini

Mehr von Marcio Marchini (8)

Critérios de Aceite de Código Para Times Internos ou Terceirizados
Critérios de Aceite de Código Para Times Internos ou TerceirizadosCritérios de Aceite de Código Para Times Internos ou Terceirizados
Critérios de Aceite de Código Para Times Internos ou Terceirizados
 
É Pythonico, mas... é macarrônico
É Pythonico, mas... é macarrônicoÉ Pythonico, mas... é macarrônico
É Pythonico, mas... é macarrônico
 
Whitepaper-Custos
Whitepaper-CustosWhitepaper-Custos
Whitepaper-Custos
 
OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014OmbrosDeGigantes-TDC2014
OmbrosDeGigantes-TDC2014
 
BDD-NamoroOn
BDD-NamoroOnBDD-NamoroOn
BDD-NamoroOn
 
01-b-Ping
01-b-Ping01-b-Ping
01-b-Ping
 
gae
gaegae
gae
 
Branches-Intro
Branches-IntroBranches-Intro
Branches-Intro
 

01-a-Intro-BetterDev

  • 1. Better Developer ([A]: Desenvolvimento a la Eclipse/Canadá) Marcio Marchini www.BetterDeveloper.net
  • 2. © 2012 Marcio Marchini • Parte 1: Brownfield Development (Legado…) • Parte 2: Greenfield Development (Certo desde o Início…) Visão Geral
  • 3. © 2012 Marcio Marchini Márcio Marchini está envolvido em Desenvolvimento de Software Orientado a Objetos desde o fim dos anos oitenta, usando Smalltalk e depois Java e C#. Marchini participou do projeto do IBM VisualAge, que originou o Eclipse, na OTI em Ottawa/Canadá (hoje "OTI IBM Labs" ). Lá tambem participou do desenvolvimento da Máquina Virtual IBM Java J9 (utilizado em alguns telefones da Nokia e outros), e do projeto cujo código foi doado pela IBM ao Apache Harmony (http://harmony.apache.org/). Marchini trabalhou também como Líder Técnico na área de Telecom na MITEL Networks, também no Canadá, e posteriormente juntou-se como Pesquisador e Líder de Equipe, Projeto e Consultor de Desenvolvimento de Software na BRL (Bedarra Research Labs, Canadá). Junto com o time da Bedarra, Marchini trabalhou apoiando grandes e pequenas companhias a fazerem a transição para o Desenvolvimento Ágil de Software. Dentre as empresas que apoiou destacam-se a Cognos (atualmente parte da IBM) e a Samsung na Coréia do Sul. Marchini também possui experiência com educação e treinamento à distância, tendo integrado a parceria com a Online-Learning.com, que preparou a plataforma e o conteúdo dos cursos SCORM para TDD da Object Mentor e Bedarra. No Brasil, Marchini implantou, como CTO na Audaces, o desenvolvimento Agile In The Large, onde os softwares legados foram adaptados a serem produzido com build continuo, testes automatizados com relatório de cobertura, etc. Marchini é também co- autor de um método e produto para depuração de máquinas virtuais Java (US Patent 6,637,024). Instrutor: Márcio Marchini
  • 4. © 2012 Marcio Marchini Segundo Mike Keith...   Co-autor da JSR 220 (EJB 3.0) e membro do grupo da JSR 244 (Java EE), bem como autor dos livros Pro EJB 3: Java Persistence API e Pro JPA 2: Mastering the Java(TM) Persistence API , Mike Keith tem isso a dizer sobre nosso trabalho, juntos na IBM/OTI Labs:   “I had the opportunity to get to know and work with Marcio at OTI and have valued my association with him ever since. Marcio is the killer combination of a very bright mind, a good work ethic, and loads of creativity. Add in his contagious enthusiasm and friendly character and Marcio is the complete package: a smart, talented, team builder. Any company Marcio chooses to work for would be insane to pass up the opportunity to hire him.” May 8, 2011 Recomendações (Mike Keith)
  • 5. © 2012 Marcio Marchini Segundo Jeff McAffer...   Um dos principais arquitetos do Eclipse e autor do livro Eclipse RCP e de OSGi atualmente assumindo a posição de arquiteto do Visual Studio na Microsoft, eis o que Jeff McAffer tem a dizer do nosso trabalho:   “I worked with Marcio for a number of years in a diverse set of projects. He is well-grounded and well-rounded. I greatly appreciate his ability to think and act at multiple levels from low-level technical detail to high-level design to organizational/process topics. Very bright, good people skills and an overall great guy.”May 19, 2011 Recomendações (Jeff McAffer)
  • 6. © 2012 Marcio Marchini Segundo Erich Gamma...   Nome que dispensa introdução, Erich Gamma escreveu a bíblia de Design Patterns, cumprindo um papel crucial também na IBM no desenvolvimento do projeto Eclipse. Eis sua recomendação:   “I remember well when we worked together at OTI on Java tools. The deliverables from Marcio were always on time and with high quality. Marcio was a pleasure to work with.” June 20, 2011 Recomendações (Erich Gamma)
  • 7. © 2012 Marcio Marchini Segundo Dave Thomas...   Fundador da OTI, posteriormente comprada pela IBM Canada, e criador do berço do projeto Eclipse e da máquina virtual Java da IBM, eis as recomendações de Dave Thomas:   “I strongly recommend Marcio, to the extend that I would gladly hire him again. I've worked with him since the 90s in different companies. He is an strong technical leader, mentor and an outstanding team player. He knows how to build and deploy commercial software products as well as how to work in a speculative R&D environment.” April 25, 2011 Recomendações (Dave Thomas)
  • 8. © 2012 Marcio Marchini Entendendo nosso background profissional… • Carreira Profissional em Software Industrial no Canadá • Inicialmente na empresa OTI, que foi o berço do Eclipse • Antes do Eclipse havia Leapfrog, VisualAge, Smalltalk… • Bedarra / Dave Thomas novamente • A seguir: entendendo nosso background e o que queremos transferir nesse curso. (O que nos moldou profissionalmente)
  • 9. © 2012 Marcio Marchini OTI – Breve Histórico Fonte: http://www-03.ibm.com/software/ca/en/ottawalab/roots.html Object Technology International (OTI): 1988-2002  A world leader in object-oriented technology founded in 1988, OTI is the company behind big- name products like VisualAge for Java, VisualAge Smalltalk, VisualAge Micro Edition, WebSphere® Studio Device Developer, WebSphere Micro Environment, WebSphere Custom Environment, WebSphere Studio Workbench, and Eclipse. OTI is known for its lead role in the design and development of IBM's IDEs for Java, Smalltalk and embedded systems. More recently, OTI led in developing Eclipse, the open source, next- generation application development tools platform, and WebSphere Studio Workbench, the IBM supported version of Eclipse technology.  OTI was acquired by IBM in 1996, and operated as a wholly owned subsidiary for seven years. In 2003, OTI transitioned to become a full part of IBM with the formation of the new IBM Ottawa Software Lab. Founder: Dave Thomas (see http://en.wikipedia.org/wiki/David_A._Thomas_ %28software_developer%29 )
  • 10. © 2012 Marcio Marchini OTI/Canadá –1994 Chegando no Mundo OTI:  Vários Regression Tests de ENVY/Swapper. Hmmm, na universidade não tinha disso.  Swapper: Legado que precisa evoluir. Hmmm, na universidade não tinha disso.  Time de Release Engineering, com builds. Hmmm, na universidade não tinha disso.  Milhares de clientes grandes pelo mundo, inclusive IBM, mainframes, etc. Tem que rodar bem e sem erro. Hmmm, na universidade não tinha disso.  Ninguém seguindo Waterfall ou usando OMT (precursor do UML). Mas também nada de prototipação. Hmm... O que é que esses caras usam??  Componentes. APIs bem definidas nas “boundaries”. Times pequenos com Team Leaders. Sem Managers.  “Eat Our Own Dog Food” (or “Drink Our Own Champagne”): Bug/Ticket System em Smalltalk. IDE em Smalltalk. Team tool em Smalltalk (ENVY/Developer). Mailer em Smalltalk!!!! Etc.  CEO: Dave Thomas. Professor / Carleton University. ACM Distinguished Engineer.
  • 11. © 2012 Marcio Marchini OTI JIT – O Segredo Segredo do Dave Thomas: JIT: Just-In-Time Software Development  Inspirado em Lean/Toyota  Secreto/interno. “Competitive Advantage” Nomes Modernos: Lean, Ágil
  • 12. © 2012 Marcio Marchini OTI JIT – O Efeito Colateral Smart People Attract Smart People!!! (experimente um Google dessa frase)  Peopleware!!!!
  • 13. © 2012 Marcio Marchini Clusterização e Disparidade de Talentos •Produtividade pode variar de 10:1 Dave-ProductivityVaries Dave-ProductivityVaries.m4v
  • 14. © 2012 Marcio Marchini OTI JIT – Mais Efeito Colateral Assmimilação Borg Reversa  IBM Compra OTI e assimila o know-how. (ex. Erich Gamma, OTI Zurich)  VMs Smalltalk, VMs Java. (John Duimovich & VM team)  IDEs. (Greg Adams & teams)  Método JIT de Software. (Dave Thomas & Brian Barry)  Spin off: Eclipse Foundation. (Mike Millinkovitch: ex-OTI)  IBM se tornando Ágil ?!?! (início: Websphere)
  • 15. © 2012 Marcio Marchini 2007 - IBM Jazz – Familiar? IBM Jazz (Rational Team Concert)  “People, not organizations, build great software”. http://jazz.net/pub/index.jsp  “Jazz is a joint project between IBM Rational and IBM Research to build a scalable, extensible team collaboration platform for seamlessly integrating tasks across the software lifecycle.”  Soa Familiar??? Jim des Rivieres (“API wizard”) 
  • 16. © 2012 Marcio Marchini Software em Empresas Grandes: 1994…2003 (Espera aí... No Canadá não é todo mundo que nem a OTI ???) MITEL / Ottawa  PBX: Pascal “envenenado” p/ “baixaria”, compilador in-house.  Código “massaroca” (emaranhado)  UML? Não!!!!  Unit Tests? Não!!!  Mas... Pelo menos tinha Continuus (version control, Bug Report, etc) Rational  Rational Team Concert: Todo analisado/projetado up-front em UML, certo? Não!!!
  • 17. © 2012 Marcio Marchini Software em Empresas Grandes: 1994…2003 (É todo mundo profi que nem a OTI ???) Time na Samsung / Seul  UML: Usado entre releases, pros times “descansarem”. Brincar de desenhar diagramas. O gerente quer.  Na hora do aperto: Hack and Release  Mas... Pelo menos tinha JIRA, Perforce. Bedarra CTIP p/ alguns grupos. Time na Cognos / Ottawa  Business Intelligence: 6M LOC em C, C++, APL, VB, Java, etc.  UML? Não!!!!!  Unit Tests? Não!!!!  Todos os testes feitos “através da GUI” com ferramentas tipo Mercury.  Mas... Pelo menos tinha Bug Tracking (in-house), Build System (in-house), Perforce, Smart Bear (code review)
  • 18. © 2012 Marcio Marchini Empresas Grandes 2001… ISO 900x, 6-Sigma, CMMi  Teoria: Implante um Processo Rígido, a Qualidade Vai Vir  “In theory, theory and practice are the same. In pratice, they are different”. ISO 900x, CMM etc  A Máfia da Certificação. Scuba Divers, anybody?  Consultores querendo vender seus livros  “Pra Inglês Ver”: No papel a gente faz assim/assado, pro auditor (ISO| CMMi|<insira sigla aqui>) ver. Na prática, bom, .... É tudo uma questão de incentivos… “It’s possible to ship 0 lines of working software, but a pile of documentation, and be CMM-compliant. Not so with Agile.” -Bjorn, CTO New Relic (ex-Eclipse Foundation, ex-OTI, ex- prof. Carleton University)
  • 19. © 2012 Marcio Marchini Empresas Grandes 2003… Ágil!  SCRUM  Sub-conjunto de XP (Extreme Programming)
  • 20. © 2012 Marcio Marchini Manifesto Ágil (>10 anos!!!) Manifesto for Agile Software Development We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more. Kent Beck Mike Beedle Arie van Bennekum Alistair Cockburn Ward Cunningham Martin Fowler James Grenning Jim Highsmith Andrew Hunt Ron Jeffries Jon Kern Brian Marick Robert C. Martin Steve Mellor Ken Schwaber Jeff Sutherland Dave Thomas
  • 21. © 2012 Marcio Marchini XP XP Practices  Whole Team - a.k.a. "customer present"  Short Cycles (short iterations)  User Stories  Acceptance Tests  Test Driven Development  Pair Programming (a.k.a. Continuous Code Review)  Collective Ownership  Continuous Integration (detect breaking code early)  Sustainable Pace (40-h week)  Open Workspace  The Planning Game (Business people decide on priorities, Developers decide on estimates)  Simple Design (Do the simplest thing that could possibly work)  Refactoring  Metaphor (big picture is shared by all) • Problemas • Imagem: Extreme é “coisa pra jovem". Arriscado. • Religião: Pair Programming 24/7 ??!! • Empresas grandes são geralmente conservadoras
  • 22. © 2012 Marcio Marchini Subconjuntos/Paleativos de XP  Code Review como substituto de Pair Programming (Smart Bear, etc)  Unit Tests apenas pra novo código  Testes via GUI pra depois refatorar  ...
  • 23. © 2012 Marcio Marchini SCRUM SCRUM Product Release Backlogs Individual Sprint Backlog Potentially Shippable Product Increment SCRUM Meeting The Product Release Backlog contains all of the work items required to build a specific release of the product. An informed customer or the product owner acting on behalf of the customer is responsible for prioritizing the Product Backlog into individual Product Release Backlogs. The SCRUM produces potentially shippable working product increments. The definition of a potentially shippable increment is determined by an informed customer. Daily SCRUM meetings are held every 24 hours to monitor progress. Selected backlog items are added to a Sprint Backlog. These backlog tasks are expanded by the scrum team and the team sprints to complete the items. Schwaber, Beedle Scrum Backlog Each scrum is assigned its own Scrum or Team Backlog containing the work items for that specific release
  • 24. © 2012 Marcio Marchini SCRUM SCRUM Practices  Product Backlog  Sprint (a.k.a. Short Iterations; Time-boxed)  Sprint Planning Meeting  Sprint Backlog  Daily Scrum Meeting  Sprint Review Meeting  Roles Product Owner Scrum Master Scrum Team  Repare: Nada quanto a “Engineering Practices”. Contraste com XP.
  • 25. © 2012 Marcio Marchini Diga Mais Sobre XP + SCRUM Baixe e leia o PDF:
  • 26. © 2012 Marcio Marchini O Lado Negro de Lean/Ágil  A Máfia da Certificação. Parece com os níveis de Scuba Divers… • (sim, sim, eu também fiz o curso de Scrum Master)  A Máfia da Consultoria. Todo mundo agora é expert. Lembram-se de OO? Mesma estória. • (sim, sim, eu também dou consultoria em Ágil)  Micromanagment (O que você fez ontem? O que vai fazer hoje? etc.) • Algumas pessoas simplesmente não têm Peopleware skills.  Visão simplória de alguns – falta de conciliação com empresas grandes, com Legacy Code Acima de tudo, não esqueça: No Silver Bullet (Fred Brooks) http://en.wikipedia.org/wiki/No_Silver_Bullet
  • 27. © 2012 Marcio Marchini Quão Bem Está Seu Grupo? Joel On Software - Test  The Joel Test: 12 Steps to Better Code, By Joel Spolsky  Wednesday, August 09, 2000  http://www.joelonsoftware.com/articles/fog0000000043.html 1.Do you use source control? 2.Can you make a build in one step? 3.Do you make daily builds? 4.Do you have a bug database? 5.Do you fix bugs before writing new code? 6.Do you have an up-to-date schedule? 7.Do you have a spec? 8.Do programmers have quiet working conditions? 9.Do you use the best tools money can buy? 10.Do you have testers? 11.Do new candidates write code during their interview? 12.Do you do hallway usability testing?
  • 28. © 2012 Marcio Marchini Bedarra – Lean and Agile In The Large • Designed for large and small software development projects • Designed for projects that span multiple teams • Designed for requiring a supplier-customer relationship • Designed for any type of project such as software applications, components, internal, third-party, or consulting projects
  • 29. © 2012 Marcio Marchini Lean and Agile In The Large – Formato Eletrônico
  • 30. © 2012 Marcio Marchini Process Overview Release Engineering Phase Continuous integration and test Manage dependencies Manage the “End Game” Agile Product Team Scrums… Definition Phase Convert requirements to features Design architecture (ADD) Scrums… Envisioning Phase Assess market risks Assess R & D risks Gather requirements Develop vision Scrums… Development Phase Adopt test-driven development model Implement & re-factor code using pair development Employ a Continuous Integration & Test Environment Make progress visible to team and management SCRUMTeam1 Potentially Shippable Product Agile Principles SCRUMTeam2 SCRUMTeamN Requirements Backlog Risk Backlog Vision Prototypes Look & Feel Guidelines Release Backlogs Product Backlog Product Architecture SCRUM Release Backlog Shippable Code Increments Sprint Release Backlogs
  • 31. © 2012 Marcio Marchini AIL - Envisioning
  • 32. © 2012 Marcio Marchini AIL - Definition
  • 33. © 2012 Marcio Marchini AIL - Development
  • 34. © 2012 Marcio Marchini AIL – Release Engineering
  • 35. © 2012 Marcio Marchini OTI em Florianópolis/UFSC/EDUGRAF • Mais detalhes em http://xp.edugraf.ufsc.br/bin/view/XP/ODesenvolvimentoAgil http://palestrajim.edugraf.ufsc.br/
  • 36. © 2012 Marcio Marchini Entendendo a Carga do Curso…  Resumindo: Fomos privilegiados por estar no lugar certo na hora certa e pudemos aprender muito trabalhando com os Mestres… Esperamos aqui poder repassar vários ensinamentos e experiências adquiridas!