Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

01-a-Intro-BetterDev

304 views

Published on

  • Be the first to comment

  • Be the first to like this

01-a-Intro-BetterDev

  1. 1. Better Developer ([A]: Desenvolvimento a la Eclipse/Canadá) Marcio Marchini www.BetterDeveloper.net
  2. 2. © 2012 Marcio Marchini • Parte 1: Brownfield Development (Legado…) • Parte 2: Greenfield Development (Certo desde o Início…) Visão Geral
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 12. © 2012 Marcio Marchini OTI JIT – O Efeito Colateral Smart People Attract Smart People!!! (experimente um Google dessa frase)  Peopleware!!!!
  13. 13. © 2012 Marcio Marchini Clusterização e Disparidade de Talentos •Produtividade pode variar de 10:1 Dave-ProductivityVaries Dave-ProductivityVaries.m4v
  14. 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. 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. 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. 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. 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. 19. © 2012 Marcio Marchini Empresas Grandes 2003… Ágil!  SCRUM  Sub-conjunto de XP (Extreme Programming)
  20. 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. 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. 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. 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. 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. 25. © 2012 Marcio Marchini Diga Mais Sobre XP + SCRUM Baixe e leia o PDF:
  26. 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. 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. 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. 29. © 2012 Marcio Marchini Lean and Agile In The Large – Formato Eletrônico
  30. 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. 31. © 2012 Marcio Marchini AIL - Envisioning
  32. 32. © 2012 Marcio Marchini AIL - Definition
  33. 33. © 2012 Marcio Marchini AIL - Development
  34. 34. © 2012 Marcio Marchini AIL – Release Engineering
  35. 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. 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!

×