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.

Don't Feed The Zombies!

1,047 views

Published on

Don't feed the zombies!

How to maintain zombie projects in the land of the walking dead.

A brief talk about how to build "quality software" and save zombie projects.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Don't Feed The Zombies!

  1. 1. DON’T FEED THE ZOMBIES! Ernesto Tagwerker @etagwerker
  2. 2. MEET THE ZOMBIES
  3. 3. ¿Cuántos zombies conocés?
  4. 4. Nuestro mundo está lleno de zombies
  5. 5. ERNESTO TAGWERKER Co-Founder @ Ombu Labs
  6. 6. 1. Construimos 2. Construimos PMVs 3. Mantenemos zombies
  7. 7. Mantenibilidad no es algo sexy
  8. 8. Node.js, Clojure, Scala, etc. No es
  9. 9. Aún así es más importante
  10. 10. ¿Qué es la calidad?
  11. 11. “Que cumpla con los requerimientos”
  12. 12. Calidad (ISO 9126) • Funcionalidad • Confiabilidad • Usabilidad • Eficiencia • Mantenibilidad • Portabilidad
  13. 13. 1. Funcionalidad ISO 9126
  14. 14. 2. Confiabilidad ISO 9126
  15. 15. 3. Usabilidad ISO 9126
  16. 16. 4. Eficiencia ISO 9126
  17. 17. 5. Mantenibilidad ISO 9126
  18. 18. 6. Portabilidad ISO 9126
  19. 19. Cómo construir software mantenible
  20. 20. Paradigmas de programación
  21. 21. Diseño orientado a objetos
  22. 22. Patrones de diseño
  23. 23. TDD is not dead
  24. 24. Testing
  25. 25. Experiencia
  26. 26. Un problema real
  27. 27. Tu próximo proyecto
  28. 28. “Si igual yo no lo voy a mantener”
  29. 29. Deuda técnica Decisiones pobres
  30. 30. Menos tests Deuda técnica
  31. 31. Menos mantenible Menos tests
  32. 32. 0 tests
  33. 33. “El código tiene calidad”
  34. 34. Alternativas
  35. 35. “Mata a ese zombie”
  36. 36. “Noooooooo”
  37. 37. Mantener o no mantener
  38. 38. Culpa del otro desarrollador
  39. 39. The sleepless developer
  40. 40. Cómo convivir con un zombie
  41. 41. Crear tests de integración
  42. 42. describe 'the homepage' do it 'should not explode' do visit '/home' expect(page).to have_content 'Welcome!' end end
  43. 43. Configurar integración continua
  44. 44. • Travis CI • Circle CI • TDDium (Solano Labs) • Codeship
  45. 45. Run flog
  46. 46. ombushop$ flog -g .! 24226.6: flog total! 9.7: flog/method average! ! 2511.0: Admin total! 87.7: Admin::TaxonsController#update_before ./ app/controllers/admin/taxons_controller.rb:59! 79.1: Admin::ApplicationHelper#show_wizard? ./ app/helpers/admin/application_helper.rb:114! 60.3: Admin::VariantsController#create ./app/ controllers/admin/variants_controller.rb:92! 48.7: Admin::OrdersController#update ./app/ controllers/admin/orders_controller.rb:24! ...!
  47. 47. dinero_mail_ipn$ flog -g .! 584.9: flog total! 8.0: flog/method average! ! 189.1: TestDineroMailIpn total! 62.7: TestDineroMailIpn::context(when I query the Dinero Mail API via GET)::should#return OK with 1 payment ./test/test_dinero_mail_ipn.rb:20! 62.7: TestDineroMailIpn::context(when I query the Dinero Mail API via GET)::should#return OK with 2 payments ./test/test_dinero_mail_ipn.rb:43! 19.2: TestDineroMailIpn::context(when I query the Dinero Mail API via GET)::should#return Error for the query ./test/test_dinero_mail_ipn.rb:66!
  48. 48. Code Climate
  49. 49. Divide and conquer
  50. 50. OmbuShop
  51. 51. OmbuShop Admin Core Jobs Ayuda Router API
  52. 52. CSS
  53. 53. CSS utilities quarks atoms molecules pages
  54. 54. CSS Utilities • _clearfix.scss • _reset.scss • _grid.scss • _mixins_ombu.scss
  55. 55. CSS Quarks • _lists.scss • _paragraphs.scss • _tables.scss
  56. 56. CSS Atoms • _errors.scss • _buttons.scss • _forms.scss
  57. 57. CSS Molecules • _marketing_footer.scss • _navbar.scss • _dialog.scss
  58. 58. CSS Pages • _marketing_jobs.scss • _marketing_partners.scss • _admin_products.scss
  59. 59. Conclusión
  60. 60. Further Reading • http://12factor.net/ • http://en.wikipedia.org/wiki/ISO/IEC_9126 • http://blog.codeclimate.com/blog/2013/08/07/deciphering-ruby-code-metrics/ • http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/ dp/0201633612 • http://www.amazon.com/Extreme-Programming-Explained-Embrace-Edition/ dp/0321278658 • http://www.smashingmagazine.com/2013/08/02/other-interface-atomic- design-sass/
  61. 61. ¡Gracias! Ernesto Tagwerker @etagwerker

×