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.
Más allá del honor.
Transición de un desarrollador de software tradicional a un
desarrollador ágil
David Caicedo Castro
David Caicedo
• Agile Coach/DevOps Coach
• Ing. Sistemas
• Oracle Certified Java Profesional
• Certified Scrum Professiona...
Malos Olores
Malos Olores
Malos Olores
Malos Olores
Malos Olores
#masalládelhonor
Clean Code
• Código Simple
• Código Expresivo
• 0% Duplicidad
• Hace una sola cosa…. bien
Autores
• Somos @author
10:1
Nombres Significativos
• Utilizar nombres que revelen la intención
del código
Nombres Significativos
• Utilizar nombres que revelen la intención
del código
Nombres Significativos
• Utilizar nombres que revelen la intención
del código
Nombres Significativos
• Utilizar nombres que revelen la intención
del código
Nombres Pronunciables
Nombres Pronunciables
Nombres de Búsqueda
#masalládelhonor
#masalládelhonor
#masalládelhonor
Utilizar TDD (Test Driven Development)
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutterGame() throws Excep...
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutterGame() throws Excep...
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La primera prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
public void testGutter...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
La segunda prueba.
import junit.framework.TestCase;
public class BowlingGameTest extends TestCase {
private Game g;
protec...
#masalládelhonor
Qué es TDD
• Es una Técnica de Aprendizaje
– Iterativa e Incremental
– Constructivista
• Basada en Feedback inmediato
• Re...
#masalládelhonor
VÍCTIMA
MENTALIDA
FIJA
NO NECESITO
IR MÁS ALLÁ
RESPONSABLE
MENTALIDAD DE
CRECIMIENTO
DEBO IR MÁS
ALLÁ
#masalládelhonor
#masalládelhonor
PREGUNTAS
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Más allá del honor
Upcoming SlideShare
Loading in …5
×

Más allá del honor

21 views

Published on

Presentación acerca de las formas que debemos mejorar para construir un mejor código fuente.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Más allá del honor

  1. 1. Más allá del honor. Transición de un desarrollador de software tradicional a un desarrollador ágil David Caicedo Castro
  2. 2. David Caicedo • Agile Coach/DevOps Coach • Ing. Sistemas • Oracle Certified Java Profesional • Certified Scrum Professional • Certified Scrum Developer • Certified Scrum Master • Certified Scrum Product Owner • Management 3.0 Facilitator • Learning 3.0 Facilitator • Coach Ontológico Profesional -ICF • Coach de Equipos – ICF
  3. 3. Malos Olores
  4. 4. Malos Olores
  5. 5. Malos Olores
  6. 6. Malos Olores
  7. 7. Malos Olores
  8. 8. #masalládelhonor
  9. 9. Clean Code • Código Simple • Código Expresivo • 0% Duplicidad • Hace una sola cosa…. bien
  10. 10. Autores • Somos @author 10:1
  11. 11. Nombres Significativos • Utilizar nombres que revelen la intención del código
  12. 12. Nombres Significativos • Utilizar nombres que revelen la intención del código
  13. 13. Nombres Significativos • Utilizar nombres que revelen la intención del código
  14. 14. Nombres Significativos • Utilizar nombres que revelen la intención del código
  15. 15. Nombres Pronunciables
  16. 16. Nombres Pronunciables
  17. 17. Nombres de Búsqueda
  18. 18. #masalládelhonor
  19. 19. #masalládelhonor
  20. 20. #masalládelhonor
  21. 21. Utilizar TDD (Test Driven Development)
  22. 22. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); } }
  23. 23. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); } } public class Game { }
  24. 24. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); } } public class Game { }
  25. 25. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i=0; i<20; i++) g.roll(0); } } public class Game { }
  26. 26. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i=0; i<20; i++) g.roll(0); } } public class Game { public void roll(int pins) { } } La primera prueba.
  27. 27. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i=0; i<20; i++) g.roll(0); assertEquals(0, g.score()); } } public class Game { public void roll(int pins) { } } La primera prueba.
  28. 28. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i=0; i<20; i++) g.roll(0); assertEquals(0, g.score()); } } public class Game { public void roll(int pins) { } public int score() { return -1; } } expected:<0> but was:<-1>
  29. 29. La primera prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i=0; i<20; i++) g.roll(0); assertEquals(0, g.score()); } } public class Game { public void roll(int pins) { } public int score() { return 0; } }
  30. 30. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(0); assertEquals(0, g.score()); } public void testAllOnes() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { public void roll(int pins) { } public int score() { return 0; } }
  31. 31. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(0); assertEquals(0, g.score()); } public void testAllOnes() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { public void roll(int pins) { } public int score() { return 0; } } - Creación de Game está duplicada - Lazo del roll está duplicado
  32. 32. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { public void testGutterGame() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(0); assertEquals(0, g.score()); } public void testAllOnes() throws Exception { Game g = new Game(); for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { public void roll(int pins) { } public int score() { return 0; } } expected:<20> but was:<0> - Creación de Game está duplicada - Lazo del roll está duplicado
  33. 33. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } public void testGutterGame() throws Exception { for (int i = 0; i < 20; i++) g.roll(0); assertEquals(0, g.score()); } public void testAllOnes() throws Exception { for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } } - Lazo del roll está duplicado
  34. 34. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } public void testGutterGame() throws Exception { int n = 20; int pins = 0; for (int i = 0; i < n; i++) { g.roll(pins); } assertEquals(0, g.score()); } public void testAllOnes() throws Exception { for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } } - Lazo del roll está duplicado
  35. 35. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } public void testGutterGame() throws Exception { int n = 20; int pins = 0; rollMany(n, pins); assertEquals(0, g.score()); } private void rollMany(int n, int pins) { for (int i = 0; i < n; i++) g.roll(pins); } public void testAllOnes() throws Exception { for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } } - Lazo del roll está duplicado
  36. 36. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } public void testGutterGame() throws Exception { rollMany(20, 0); assertEquals(0, g.score()); } private void rollMany(int n, int pins) { for (int i = 0; i < n; i++) g.roll(pins); } public void testAllOnes() throws Exception { for (int i = 0; i < 20; i++) g.roll(1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } } - Lazo del roll está duplicado
  37. 37. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } public void testGutterGame() throws Exception { rollMany(20, 0); assertEquals(0, g.score()); } private void rollMany(int n, int pins) { for (int i = 0; i < n; i++) g.roll(pins); } public void testAllOnes() throws Exception { rollMany(20,1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } } - Lazo del roll está duplicado
  38. 38. La segunda prueba. import junit.framework.TestCase; public class BowlingGameTest extends TestCase { private Game g; protected void setUp() throws Exception { g = new Game(); } private void rollMany(int n, int pins) { for (int i = 0; i < n; i++) g.roll(pins); } public void testGutterGame() throws Exception { rollMany(20, 0); assertEquals(0, g.score()); } public void testAllOnes() throws Exception { rollMany(20,1); assertEquals(20, g.score()); } } public class Game { private int score = 0; public void roll(int pins) { score += pins; } public int score() { return score; } }
  39. 39. #masalládelhonor
  40. 40. Qué es TDD • Es una Técnica de Aprendizaje – Iterativa e Incremental – Constructivista • Basada en Feedback inmediato • Recuerda todo lo aprendido • Y permite asegurarnos de no haber desaprendido • Incluye análisis, diseño, programación y testing
  41. 41. #masalládelhonor
  42. 42. VÍCTIMA MENTALIDA FIJA NO NECESITO IR MÁS ALLÁ RESPONSABLE MENTALIDAD DE CRECIMIENTO DEBO IR MÁS ALLÁ
  43. 43. #masalládelhonor
  44. 44. #masalládelhonor
  45. 45. PREGUNTAS

×