Don't Feed The Zombies!
-
Upload
ernesto-tagwerker -
Category
Software
-
view
334 -
download
0
description
Transcript of Don't Feed The Zombies!
DON’T FEED THE ZOMBIES!
Ernesto Tagwerker @etagwerker
MEET THE ZOMBIES
¿Cuántos zombies conocés?
Nuestro mundo está lleno de
zombies
ERNESTO TAGWERKER
Co-Founder @ Ombu Labs
1. Construimos
2. Construimos PMVs
3. Mantenemos zombies
Mantenibilidad no es algo sexy
Node.js, Clojure, Scala,
etc.
No es
Aún así es más importante
¿Qué es la calidad?
“Que cumpla con los requerimientos”
Calidad (ISO 9126)
• Funcionalidad • Confiabilidad • Usabilidad • Eficiencia • Mantenibilidad • Portabilidad
1. Funcionalidad
ISO 9126
2. Confiabilidad
ISO 9126
3. Usabilidad
ISO 9126
4. Eficiencia
ISO 9126
5. Mantenibilidad
ISO 9126
6. Portabilidad
ISO 9126
Cómo construir software
mantenible
Paradigmas de programación
Diseño orientado a objetos
Patrones de diseño
TDD is not dead
Testing
Experiencia
Un problema real
Tu próximo proyecto
“Si igual yo no lo voy a mantener”
Deuda técnica
Decisiones pobres
Menos tests
Deuda técnica
Menos mantenible
Menos tests
0 tests
“El código tiene
calidad”
Alternativas
“Mata a ese zombie”
“Noooooooo”
Mantener o no mantener
Culpa del otro desarrollador
The sleepless developer
Cómo convivir con un zombie
Crear tests de integración
describe 'the homepage' do it 'should not explode' do visit '/home' expect(page).to have_content 'Welcome!' endend
Configurar integración continua
• Travis CI • Circle CI • TDDium (Solano Labs) • Codeship
Run flog
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! ...!
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!
Code Climate
Divide and conquer
OmbuShop
OmbuShop
Admin
Core
Jobs Ayuda
Router
API
CSS
CSSutilities
quarks
atoms
molecules
pages
CSS Utilities
• _clearfix.scss • _reset.scss • _grid.scss • _mixins_ombu.scss
CSS Quarks
• _lists.scss • _paragraphs.scss • _tables.scss
CSS Atoms
• _errors.scss • _buttons.scss • _forms.scss
CSS Molecules
• _marketing_footer.scss • _navbar.scss • _dialog.scss
CSS Pages
• _marketing_jobs.scss • _marketing_partners.scss • _admin_products.scss
Conclusión
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/
¡Gracias!Ernesto Tagwerker
@etagwerker