SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
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!'	
end	
end
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
CSS
utilities
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

Contenu connexe

Similaire à Don't Feed The Zombies!

Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidadLeonardo Soto
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de códigoMatias Iacono
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales atSistemas
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simplepsluaces
 
Ponele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu StartupPonele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu StartupMartin Siniawski
 
XP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaXP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaSantiago Blanco
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozjoseluisseijo
 
XP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDXP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDSantiago Blanco
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015Taller Negócio Digitais
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalDavid Gil Sánchez
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizDiego Caballero
 
Clean code 9
Clean code 9Clean code 9
Clean code 9540deg
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mockEloi Poch
 

Similaire à Don't Feed The Zombies! (20)

Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
"Al rico" PHP
"Al rico" PHP"Al rico" PHP
"Al rico" PHP
 
TDD en java script
TDD en java scriptTDD en java script
TDD en java script
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Lo que odiamos de la agilidad
Lo que odiamos de la agilidadLo que odiamos de la agilidad
Lo que odiamos de la agilidad
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
Malas prácticas de código
Malas prácticas de códigoMalas prácticas de código
Malas prácticas de código
 
Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales Cobertura de Código con Tests Funcionales
Cobertura de Código con Tests Funcionales
 
Reglas de Código Simple
Reglas de Código SimpleReglas de Código Simple
Reglas de Código Simple
 
Ponele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu StartupPonele el TURBO al Dev Team de tu Startup
Ponele el TURBO al Dev Team de tu Startup
 
XP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la prácticaXP - Pair Programming y TDD - en la práctica
XP - Pair Programming y TDD - en la práctica
 
Si no testeo no me lo creo
Si no testeo no me lo creoSi no testeo no me lo creo
Si no testeo no me lo creo
 
Joseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñozJoseluisseijoreig samuelsánchezmuñoz
Joseluisseijoreig samuelsánchezmuñoz
 
XP_PairProgramming_y_TDD
XP_PairProgramming_y_TDDXP_PairProgramming_y_TDD
XP_PairProgramming_y_TDD
 
DevOps, por donde comenzar? - DrupalCon Latin America 2015
DevOps, por donde comenzar?  - DrupalCon Latin America 2015DevOps, por donde comenzar?  - DrupalCon Latin America 2015
DevOps, por donde comenzar? - DrupalCon Latin America 2015
 
Casper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end DrupalCasper JS - Asegurando la calidad en front-end Drupal
Casper JS - Asegurando la calidad en front-end Drupal
 
Trabajando con código heredado y ser feliz
Trabajando con código heredado y ser felizTrabajando con código heredado y ser feliz
Trabajando con código heredado y ser feliz
 
Clean code 9
Clean code 9Clean code 9
Clean code 9
 
To mock or not to mock
To mock or not to mockTo mock or not to mock
To mock or not to mock
 
TDD
TDDTDD
TDD
 

Plus de Ernesto Tagwerker

Philly.rb: Sr. + Jr. Pair Night (September 2018)
Philly.rb: Sr. + Jr. Pair Night (September 2018)Philly.rb: Sr. + Jr. Pair Night (September 2018)
Philly.rb: Sr. + Jr. Pair Night (September 2018)Ernesto Tagwerker
 
Harvesting gem: A Ruby Client for the Harvest API v2
Harvesting gem: A Ruby Client for the Harvest API v2 Harvesting gem: A Ruby Client for the Harvest API v2
Harvesting gem: A Ruby Client for the Harvest API v2 Ernesto Tagwerker
 
Philly.rb: Lightning Talks (September 2018)
Philly.rb: Lightning Talks (September 2018)Philly.rb: Lightning Talks (September 2018)
Philly.rb: Lightning Talks (September 2018)Ernesto Tagwerker
 
Open Source At Work: When Nights & Weekends Are Not Enough
Open Source At Work: When Nights & Weekends Are Not EnoughOpen Source At Work: When Nights & Weekends Are Not Enough
Open Source At Work: When Nights & Weekends Are Not EnoughErnesto Tagwerker
 
The Lean Startup @ Startup Oeste
The Lean Startup @ Startup OesteThe Lean Startup @ Startup Oeste
The Lean Startup @ Startup OesteErnesto Tagwerker
 
Como crear una tienda online
Como crear una tienda onlineComo crear una tienda online
Como crear una tienda onlineErnesto Tagwerker
 
Lean Startup BA Meetup: The Successful Pivot!
Lean Startup BA Meetup: The Successful Pivot!Lean Startup BA Meetup: The Successful Pivot!
Lean Startup BA Meetup: The Successful Pivot!Ernesto Tagwerker
 

Plus de Ernesto Tagwerker (8)

Philly.rb: Sr. + Jr. Pair Night (September 2018)
Philly.rb: Sr. + Jr. Pair Night (September 2018)Philly.rb: Sr. + Jr. Pair Night (September 2018)
Philly.rb: Sr. + Jr. Pair Night (September 2018)
 
Harvesting gem: A Ruby Client for the Harvest API v2
Harvesting gem: A Ruby Client for the Harvest API v2 Harvesting gem: A Ruby Client for the Harvest API v2
Harvesting gem: A Ruby Client for the Harvest API v2
 
Philly.rb: Lightning Talks (September 2018)
Philly.rb: Lightning Talks (September 2018)Philly.rb: Lightning Talks (September 2018)
Philly.rb: Lightning Talks (September 2018)
 
Open Source At Work: When Nights & Weekends Are Not Enough
Open Source At Work: When Nights & Weekends Are Not EnoughOpen Source At Work: When Nights & Weekends Are Not Enough
Open Source At Work: When Nights & Weekends Are Not Enough
 
The Lean Startup @ Startup Oeste
The Lean Startup @ Startup OesteThe Lean Startup @ Startup Oeste
The Lean Startup @ Startup Oeste
 
Lean Startup en Español
Lean Startup en EspañolLean Startup en Español
Lean Startup en Español
 
Como crear una tienda online
Como crear una tienda onlineComo crear una tienda online
Como crear una tienda online
 
Lean Startup BA Meetup: The Successful Pivot!
Lean Startup BA Meetup: The Successful Pivot!Lean Startup BA Meetup: The Successful Pivot!
Lean Startup BA Meetup: The Successful Pivot!
 

Don't Feed The Zombies!