SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Code reviews
Improving as a developer through code reviews
I am Anallely Olivares
Backend developer
You can find me at @tsunllly and
anallely.olivares@globant.com
Hello!
Mi código puede ser
mejorado y mucho!
Una revisión de código bastó para darme cuenta
11
Conocía teoría
◉ Buenos nombres
◉ Funciones: una sola cosa, bien hecha
◉ DRY
Mi código funcionaba, pero a pesar de todo bastó
una revisión de código para darme cuenta de
cuánto podía ser mejorado...
Mi peer se tomó la molestia
antes después
A partir de esta experiencia empecé
◉ a aplicar ese estilo al siguiente código
◉ a valorar el conocimiento del equipo
◉ a ver como una inversión el tiempo dedicado a
las revisiones de código
Elementos de un code review
Hay que conocerlos para realmente sacar provecho de la práctica
12
Actors
CODER
● Una sola funcionalidad o aspecto
● Cuidar número de líneas
● Ser claro en el objetivo del
código
● Buenos commit messages
● Pre code review
○ Formato
○ Nombrado de variables
REVIEWER
● Actitud positiva
● Entender el problema a resolver
● Priorizar
● Aportar soluciones
Bad / Good commit messages
Bad examples
◉ “bug fix”, “more work”, “minor changes”, “ups”, “wtf”
◉ “Work on feature blah blah” x 20
◉ Change X constant to be 10
◉ [PPE-7006] - fix :v
Good example (Spring boot)
“
Separate subject from body with a
blank line
1/7
“
Limit the subject line to 50
characters
2/7
“
Use the imperative mood in the
subject line
3/7
● Refactor subsystem X for readability
● Update getting started documentation
● Remove deprecated methods
● Release version 1.0.0
● If applied, this commit will refactor subsystem X for readability
● If applied, this commit will update getting started documentation
● If applied, this commit will remove deprecated methods
● If applied, this commit will release version 1.0.0
● If applied, this commit will merge pull request #123 from user/branch
Close the door!
“
Meaningful: Describe what was
done so we can effectively glance
through the history and find what
we need.
?/7
Recomendaciones adicionales
◉ Usar una herramienta como JIRA
◉ En los PR/commits podemos agregar ID ticket
◉ No commits sin bug/tarea/historia asociada
Estado del arte
Estudios y estadísticas de los code reviews
13
Revisar de 200 a 400 líneas / 60 minutos
◉ El cerebro solo puede procesar efectivamente
estas líneas por evento
◉ Después de las 400 líneas el porcentaje de
defectos encontrados disminuye
◉ 200 - 400 líneas en 60 minutos -> 70-90% defect
discovery
Es mejor cuando el autor comenta
◉ Antes de iniciar el code review hace anotaciones
de lo que hizo y por qué
◉ Brindan contexto
◉ Commit messages
◉ Se encuentran errores aún antes de empezar
Usar checklists
◉ Disminuir errores frecuentes
◉ Organizar prioridades
◉ Recordar omisiones
◉ Se puede ir incrementando con la experiencia
Establecer un proceso para la corrección
◉ Recuperar tiempo invertido
◉ Code review tool
◉ Tomarlo en cuenta en el flujo kanban o scrum
◉ Incrementar pruebas unitarias
◉ Historial de bugs
Establecer una cultura positiva
◉ Cultura de colaboración
◉ Estar en el mismo contexto
◉ No críticas negativas
◉ Bugs son cosa de todos los días
◉ Mejorar la calidad del código / aprender
◉ Romper malos hábitos
◉ Junior -> Senior
Code review es la forma #1 de mejorar la calidad
También es la #1 para incrementar la colaboración
◉ Share technique knowledge
◉ Share project knowledge
◉ Mejora la sinergia
◉ Entender procesos mentales
Obstáculos para hacer code reviews
Beneficios de los code reviews
Errores comunes
Encontrados en code reviews de código JS
14
“
Functions and objects are passed
as arguments to other functions
without any type validation.
¿Existen?
¿Son del tipo?
“
ParseInt without base
Be prepared for crazy inputs!!
“
Some of the code is heavily
blocking
Nominee 1
Nominee 2
Nominee 3
Advocate Screen
October 15, 16:45
Nominee 1
Nominee Screen
October 15, 17:45
A listing of blocking code
“
You’re testing for explicit numeric
equality of a property using the
== operator, but you should
probably be using === instead
“
Using array.length in for loops
“
Reduce switch use
“
Use elegant ways to build strings
“
Say no to hadouken code
Code Reviews Checklist
Aspectos básicos y avanzados
15
Basics
◉ ¿Se sabe lo que se está revisando?
◉ ¿El código funciona?
Basics
More basics
◉ ¿Está debidamente comentado?
◉ ¿Variables no usadas?
◉ ¿Logging innecesario?
◉ ¿Las condiciones de paro son correctas?
◉ ¿Funciona en los edge cases?
◉ ¿No hay librerías o código que ya hace esa
función? → filters :(
Advanced
Unit tests
◉ ¿Existen?
◉ ¿Están probando realmente?
◉ ¿Code coverage adecuado?
◉ ¿Condiciones extremas?
Embrace code reviews
Es una forma de aprender y unir
16
Cultura positiva
◉ No seas overcrítico
◉ Se realista
◉ No te burles
◉ Se constructivo
◉ Aporta soluciones: pseudocódigo, patches
◉ Soluciones primero, estilo después
◉ No digas algo solo para no quedarte callado
Involucra a más personas
◉ 9 Lessons From A Review Of JavaScript Code
https://www.smashingmagazine.com/2011/10/lessons-from-a-review-of-javas
cript-code/
◉ Best Practices for Code Review
https://smartbear.com/learn/code-review/best-practices-for-peer-code-revie
w/
◉ The State of Code Review 2017
https://smartbear.com/resources/ebooks/the-state-of-code-review-2017/?ut
m_source=x-related
◉ How to Write a Git Commit Message https://chris.beams.io/posts/git-commit/
Fuentes
Any questions ?
You can find me at
◉ anallely.olivares@globant.com
◉ @tsunllly
Thanks!

Más contenido relacionado

Similar a Improving as a developer through code reviews

Introduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoIntroduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoAlejandro Hernández
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilJohnny Ordóñez
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweekCarlos Ble
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Bryan Chasiguano
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas.. ..
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDTEdwin Cruz
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOnacho mascort
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadJose Antonio Jimenez Bisbe
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de SoftwareGustavo Bazan Maal
 
Jornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º EdiciónJornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º Ediciónfernando sonego
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programarEduardo Enriquez
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprogramingestudiante
 

Similar a Improving as a developer through code reviews (20)

Unit Testing en iOS
Unit Testing en iOSUnit Testing en iOS
Unit Testing en iOS
 
Introduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamientoIntroduccion al desarrollo guiado por comportamiento
Introduccion al desarrollo guiado por comportamiento
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
Módulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágilMódulo 4. Desarrollador ágil
Módulo 4. Desarrollador ágil
 
5. Métodos de Prueba de Software
5. Métodos de Prueba de Software5. Métodos de Prueba de Software
5. Métodos de Prueba de Software
 
Apuntes #XPweek
Apuntes #XPweekApuntes #XPweek
Apuntes #XPweek
 
El camino de Tester Agil.pdf
El camino de Tester Agil.pdfEl camino de Tester Agil.pdf
El camino de Tester Agil.pdf
 
Cuida tu código: Clean Code
Cuida tu código: Clean CodeCuida tu código: Clean Code
Cuida tu código: Clean Code
 
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021Taller n20 compiladores_optimizacion_codigo_1_julio_2021
Taller n20 compiladores_optimizacion_codigo_1_julio_2021
 
Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Codigo Escalable WDT
Codigo Escalable WDTCodigo Escalable WDT
Codigo Escalable WDT
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEO
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Construccion y Pruebas de Software
Construccion y Pruebas de SoftwareConstruccion y Pruebas de Software
Construccion y Pruebas de Software
 
Jornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º EdiciónJornada de Arquitectura .NET - 2º Edición
Jornada de Arquitectura .NET - 2º Edición
 
Mejores formas de aprender a programar
Mejores formas de aprender a programarMejores formas de aprender a programar
Mejores formas de aprender a programar
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
 
Testing, tipos y otros flamewars
Testing, tipos y otros flamewarsTesting, tipos y otros flamewars
Testing, tipos y otros flamewars
 
Qualitytest
QualitytestQualitytest
Qualitytest
 

Improving as a developer through code reviews

  • 1. Code reviews Improving as a developer through code reviews
  • 2. I am Anallely Olivares Backend developer You can find me at @tsunllly and anallely.olivares@globant.com Hello!
  • 3. Mi código puede ser mejorado y mucho! Una revisión de código bastó para darme cuenta 11
  • 4. Conocía teoría ◉ Buenos nombres ◉ Funciones: una sola cosa, bien hecha ◉ DRY Mi código funcionaba, pero a pesar de todo bastó una revisión de código para darme cuenta de cuánto podía ser mejorado...
  • 5. Mi peer se tomó la molestia antes después
  • 6. A partir de esta experiencia empecé ◉ a aplicar ese estilo al siguiente código ◉ a valorar el conocimiento del equipo ◉ a ver como una inversión el tiempo dedicado a las revisiones de código
  • 7. Elementos de un code review Hay que conocerlos para realmente sacar provecho de la práctica 12
  • 8. Actors CODER ● Una sola funcionalidad o aspecto ● Cuidar número de líneas ● Ser claro en el objetivo del código ● Buenos commit messages ● Pre code review ○ Formato ○ Nombrado de variables REVIEWER ● Actitud positiva ● Entender el problema a resolver ● Priorizar ● Aportar soluciones
  • 9. Bad / Good commit messages
  • 10. Bad examples ◉ “bug fix”, “more work”, “minor changes”, “ups”, “wtf” ◉ “Work on feature blah blah” x 20 ◉ Change X constant to be 10 ◉ [PPE-7006] - fix :v
  • 12. “ Separate subject from body with a blank line 1/7
  • 13.
  • 14. “ Limit the subject line to 50 characters 2/7
  • 15.
  • 16. “ Use the imperative mood in the subject line 3/7
  • 17. ● Refactor subsystem X for readability ● Update getting started documentation ● Remove deprecated methods ● Release version 1.0.0 ● If applied, this commit will refactor subsystem X for readability ● If applied, this commit will update getting started documentation ● If applied, this commit will remove deprecated methods ● If applied, this commit will release version 1.0.0 ● If applied, this commit will merge pull request #123 from user/branch Close the door!
  • 18. “ Meaningful: Describe what was done so we can effectively glance through the history and find what we need. ?/7
  • 19. Recomendaciones adicionales ◉ Usar una herramienta como JIRA ◉ En los PR/commits podemos agregar ID ticket ◉ No commits sin bug/tarea/historia asociada
  • 20. Estado del arte Estudios y estadísticas de los code reviews 13
  • 21. Revisar de 200 a 400 líneas / 60 minutos ◉ El cerebro solo puede procesar efectivamente estas líneas por evento ◉ Después de las 400 líneas el porcentaje de defectos encontrados disminuye ◉ 200 - 400 líneas en 60 minutos -> 70-90% defect discovery
  • 22. Es mejor cuando el autor comenta ◉ Antes de iniciar el code review hace anotaciones de lo que hizo y por qué ◉ Brindan contexto ◉ Commit messages ◉ Se encuentran errores aún antes de empezar
  • 23.
  • 24. Usar checklists ◉ Disminuir errores frecuentes ◉ Organizar prioridades ◉ Recordar omisiones ◉ Se puede ir incrementando con la experiencia
  • 25. Establecer un proceso para la corrección ◉ Recuperar tiempo invertido ◉ Code review tool ◉ Tomarlo en cuenta en el flujo kanban o scrum ◉ Incrementar pruebas unitarias ◉ Historial de bugs
  • 26.
  • 27. Establecer una cultura positiva ◉ Cultura de colaboración ◉ Estar en el mismo contexto ◉ No críticas negativas ◉ Bugs son cosa de todos los días ◉ Mejorar la calidad del código / aprender ◉ Romper malos hábitos ◉ Junior -> Senior
  • 28. Code review es la forma #1 de mejorar la calidad
  • 29. También es la #1 para incrementar la colaboración ◉ Share technique knowledge ◉ Share project knowledge ◉ Mejora la sinergia ◉ Entender procesos mentales
  • 30. Obstáculos para hacer code reviews
  • 31. Beneficios de los code reviews
  • 32. Errores comunes Encontrados en code reviews de código JS 14
  • 33. “ Functions and objects are passed as arguments to other functions without any type validation.
  • 36. Be prepared for crazy inputs!!
  • 37. “ Some of the code is heavily blocking
  • 38. Nominee 1 Nominee 2 Nominee 3 Advocate Screen October 15, 16:45 Nominee 1 Nominee Screen October 15, 17:45
  • 39. A listing of blocking code
  • 40. “ You’re testing for explicit numeric equality of a property using the == operator, but you should probably be using === instead
  • 41.
  • 43.
  • 45.
  • 46. “ Use elegant ways to build strings
  • 47.
  • 48. “ Say no to hadouken code
  • 49.
  • 50. Code Reviews Checklist Aspectos básicos y avanzados 15
  • 51. Basics ◉ ¿Se sabe lo que se está revisando? ◉ ¿El código funciona?
  • 53. More basics ◉ ¿Está debidamente comentado? ◉ ¿Variables no usadas? ◉ ¿Logging innecesario? ◉ ¿Las condiciones de paro son correctas? ◉ ¿Funciona en los edge cases? ◉ ¿No hay librerías o código que ya hace esa función? → filters :(
  • 55. Unit tests ◉ ¿Existen? ◉ ¿Están probando realmente? ◉ ¿Code coverage adecuado? ◉ ¿Condiciones extremas?
  • 56. Embrace code reviews Es una forma de aprender y unir 16
  • 57. Cultura positiva ◉ No seas overcrítico ◉ Se realista ◉ No te burles ◉ Se constructivo ◉ Aporta soluciones: pseudocódigo, patches ◉ Soluciones primero, estilo después ◉ No digas algo solo para no quedarte callado
  • 58. Involucra a más personas
  • 59. ◉ 9 Lessons From A Review Of JavaScript Code https://www.smashingmagazine.com/2011/10/lessons-from-a-review-of-javas cript-code/ ◉ Best Practices for Code Review https://smartbear.com/learn/code-review/best-practices-for-peer-code-revie w/ ◉ The State of Code Review 2017 https://smartbear.com/resources/ebooks/the-state-of-code-review-2017/?ut m_source=x-related ◉ How to Write a Git Commit Message https://chris.beams.io/posts/git-commit/ Fuentes
  • 60. Any questions ? You can find me at ◉ anallely.olivares@globant.com ◉ @tsunllly Thanks!