Don't Feed The Zombies!

Post on 07-May-2015

334 views 0 download

description

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.

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