SlideShare una empresa de Scribd logo
1 de 137
El Desarrollo de Software
como debería Ser
Hernán A. Wilkinson
@hernanwilkinson
agile software development & services
¡Seamos
LIBRES que lo
demás
NO IMPORTA
NADA!
Matemática!
Gauss
Cantor
Fermat
Física
Newton Einstein
Kelvin Maxwell
Bohr
John McCarthy
Douglas Engelbart
Peter Naur
Fred Brooks
Alan Kay
DRY
¿Éter?
¡Ética!
¿Estimar?
Descubrir vs. Entregar
Cocomo - Cocomo 2 - Function Points
Taylor
Trabajo Manual
Trabajo Creativo
Taylorismo + Ingeniería
Fordismo
Rotación = 963 para quedarse con 100
Software
Modelo Computable de
un Dominio de Problema
Simula 67
Ole-Johan Dahl y Kristen Nygaard
¡Buen Modelo!
Cómo representamos Feb/2018? (un mes de año)
Cómo representamos Feb/2018? (un mes de año)
(Java 1.8)
(Smalltalk)
Cómo representamos Feb/2018? (un mes de año)
Cómo representamos Feb/2018? (un mes de año)
Ruby - Go - Java pre 1.8 – ¡NO SE PUEDE!
¿Deberíamos poder representar 31 de Feb de 2018?
03/03/2018 !!!
¿Deberíamos poder representar 31 de Feb de 2018?
¡Excepción!
¿Deberíamos poder representar 31 de Feb de 2018?
Java 1.8
(A point based model of the Gregorian Calendar – H. Wilkinson et al)
¿Deberíamos poder representar 31 de Feb de 2018?
Smalltalk
¡Excepción!
¿Qué sucede con esta relación?
Account
...
¡Complejidad!
¡Nadie hace esto! – Pocos casos
¡Ni loco!
1
1 $
1 litro
1 metro
¡Ni loco!
Números solos ¡NUNCA!
null
Variable no inicializada
El cliente no tiene dirección
El teléfono no es válido
¡Ni loco!
¿Cómo se construye un Modelo?
¿Cómo un Auto? ¿Cómo una Casa?
(¿Es construye la palabra adecuada?)
Hacer crecer un Modelo
es un “proceso de
aprendizaje”
“Constructivismo”
TDD
¿Lenguaje? de Programación
Propósito:
Proveer un marco para la comunicación
(Design Principles Behind Smalltalk - Dan Ingalls)
“The design of a language for using computers must deal with internal models,
external media, and the interaction between these in both the human and the
computer”
(Design Principles Behind Smalltalk - Dan Ingalls - 1981)
Castellano Castellano
casa palabra de 4 letras
¡Por eso hacemos nuestras
propias herramientas!
En casa de herrero cuchillo de palo
I invented the term
Object-Oriented and I can
tell you I did not have C++
in mind.
Dynabook
Complejidad = Esencial + Accidental
¡Nunca!
Java = JaJa
JEE != OO
¡Educación Universitaria Conceptual!
¡No se mueve por modas!
¿Qué hacemos?
¡LEER!
¿Qué más hacemos?
¡LEER MAS!
¿¿¡¡Qué más
podemos hacer!!??
¡PODEMOS LEER!
¡Pero de lo bueno, de lo
añejo!
¡Ah! y ¡PRACTICAR lo
que LEIMOS!
¿¿Y qué más??
¡Volver a PRACTICAR y
PRACTICAR y
PRACTICAR!
No hay gloria
en la práctica,
pero ¡sin
práctica no
hay gloria!
-Anónimo
¿Cómo ser un
“Buen Desarrollador”?
¿Qué es ser un
“Buen Desarrollador”?
Es NO ser CASCADA
Es NO ser TAYLOREANO
Es NO ESTIMAR lo que no
se conoce
Es entender que la gente
NO SON RECURSOS
Es no aflojar al primer “reto”
Es mantener una ética profesional
Es entender que es una ACTIVIDAD SOCIAL
Es entender que TAMBIEN es una
ACTIVIDAD TECNICA
Es desarrollar de manera
ITERATIVA-INCREMENTAL
Es desarrollar de manera segura con
TESTS AUTOMATIZADOS
Es CONFIAR
Es tener PASION por lo que hacemos
Es ser
CRITICO
con la
actualidad
tecnológica
Es tener
CORAJE
para
generar
un
CAMBIO
Es saborear la
VICTORIA de
una
REVOLUCION
(bien entendida)
¡Seamos
BUENOS DESA-
RROLLADORES
que lo demás
NO IMPORTA
NADA!
agile software development & services
¡Gracias!

Más contenido relacionado

Similar a El Desarrollo de Software como debería Ser - Nerdear.la 2018

Hacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHernan Wilkinson
 
Proyecto mecanismos 2012
Proyecto mecanismos 2012Proyecto mecanismos 2012
Proyecto mecanismos 2012Jose
 
Scratch: "Programar y crear para el aprendizaje transversal"
Scratch: "Programar y crear para el aprendizaje transversal"Scratch: "Programar y crear para el aprendizaje transversal"
Scratch: "Programar y crear para el aprendizaje transversal"antjueduland
 
Encontrar y Ser Encontrado
Encontrar y Ser EncontradoEncontrar y Ser Encontrado
Encontrar y Ser Encontradordonoso
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programaciónYoungle
 
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...5o Computacion global 5o Computacion global5o Computacion global5o Computacio...
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...ssuser7458c4
 
Cómo innovar productos de software empleando scrum como metodología ágil
Cómo innovar productos de software empleando scrum como metodología ágilCómo innovar productos de software empleando scrum como metodología ágil
Cómo innovar productos de software empleando scrum como metodología ágilGustavo Quiroz
 
La creatividad, el motor del negocio
La creatividad, el motor del negocioLa creatividad, el motor del negocio
La creatividad, el motor del negocioDaphne Repain
 
Autentia Codemotion2017 - Agile de mercadillo
Autentia Codemotion2017 - Agile de mercadilloAutentia Codemotion2017 - Agile de mercadillo
Autentia Codemotion2017 - Agile de mercadilloYair Segura Albarracín
 
Como Escribir Curriculums con Impacto en Empresas de Tecnologia
Como Escribir Curriculums con Impacto en Empresas de TecnologiaComo Escribir Curriculums con Impacto en Empresas de Tecnologia
Como Escribir Curriculums con Impacto en Empresas de TecnologiaGerardo Pardo-Castellote
 
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdf
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdfHola, Kraken. IA generativa - @zigiella - Julio 2023.pdf
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdfBeatriz Martín @zigiella
 
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...Toni Ferraté
 

Similar a El Desarrollo de Software como debería Ser - Nerdear.la 2018 (20)

Hacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con softwareHacia una síntesis de diseño a partir de entender qué es modelar con software
Hacia una síntesis de diseño a partir de entender qué es modelar con software
 
Kleer yoseki coding dojo - 2012-08-03 - medellín
Kleer   yoseki coding dojo - 2012-08-03 - medellínKleer   yoseki coding dojo - 2012-08-03 - medellín
Kleer yoseki coding dojo - 2012-08-03 - medellín
 
Proyecto mecanismos 2012
Proyecto mecanismos 2012Proyecto mecanismos 2012
Proyecto mecanismos 2012
 
Cob.aula 7
Cob.aula 7Cob.aula 7
Cob.aula 7
 
Taller de Text Mining en Twitter con R
Taller de Text Mining en Twitter con RTaller de Text Mining en Twitter con R
Taller de Text Mining en Twitter con R
 
Scratch: "Programar y crear para el aprendizaje transversal"
Scratch: "Programar y crear para el aprendizaje transversal"Scratch: "Programar y crear para el aprendizaje transversal"
Scratch: "Programar y crear para el aprendizaje transversal"
 
Encontrar y Ser Encontrado
Encontrar y Ser EncontradoEncontrar y Ser Encontrado
Encontrar y Ser Encontrado
 
Introducción a la programación
Introducción a la programaciónIntroducción a la programación
Introducción a la programación
 
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...5o Computacion global 5o Computacion global5o Computacion global5o Computacio...
5o Computacion global 5o Computacion global5o Computacion global5o Computacio...
 
Cómo innovar productos de software empleando scrum como metodología ágil
Cómo innovar productos de software empleando scrum como metodología ágilCómo innovar productos de software empleando scrum como metodología ágil
Cómo innovar productos de software empleando scrum como metodología ágil
 
La creatividad, el motor del negocio
La creatividad, el motor del negocioLa creatividad, el motor del negocio
La creatividad, el motor del negocio
 
Autentia Codemotion2017 - Agile de mercadillo
Autentia Codemotion2017 - Agile de mercadilloAutentia Codemotion2017 - Agile de mercadillo
Autentia Codemotion2017 - Agile de mercadillo
 
Homenaje a Steve Jobs
Homenaje a Steve JobsHomenaje a Steve Jobs
Homenaje a Steve Jobs
 
Como Escribir Curriculums con Impacto en Empresas de Tecnologia
Como Escribir Curriculums con Impacto en Empresas de TecnologiaComo Escribir Curriculums con Impacto en Empresas de Tecnologia
Como Escribir Curriculums con Impacto en Empresas de Tecnologia
 
4 hour course
4 hour course4 hour course
4 hour course
 
El Legado de Steve Jobs
El Legado de Steve JobsEl Legado de Steve Jobs
El Legado de Steve Jobs
 
Cob.aula 7
Cob.aula 7Cob.aula 7
Cob.aula 7
 
Cob.aula 7
Cob.aula 7Cob.aula 7
Cob.aula 7
 
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdf
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdfHola, Kraken. IA generativa - @zigiella - Julio 2023.pdf
Hola, Kraken. IA generativa - @zigiella - Julio 2023.pdf
 
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...
ROBÓTICA AL SERVICIO DEL PENSAMIENTO CREATIVO (with Executive Summary of Clou...
 

Más de Hernan Wilkinson

Live Typing - California Smalltalkers
Live Typing - California SmalltalkersLive Typing - California Smalltalkers
Live Typing - California SmalltalkersHernan Wilkinson
 
Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020Hernan Wilkinson
 
LiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicosLiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicosHernan Wilkinson
 
LiveTyping: Update and What is next
LiveTyping: Update and What is nextLiveTyping: Update and What is next
LiveTyping: Update and What is nextHernan Wilkinson
 
Cuis smalltalk past present and future
Cuis smalltalk past present and futureCuis smalltalk past present and future
Cuis smalltalk past present and futureHernan Wilkinson
 
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
Live Typing- Automatic Type Annotation that improves the Programming eXperie...Live Typing- Automatic Type Annotation that improves the Programming eXperie...
Live Typing - Automatic Type Annotation that improves the Programming eXperie...Hernan Wilkinson
 
Lessons Learned Implementing Refactorings
Lessons Learned Implementing RefactoringsLessons Learned Implementing Refactorings
Lessons Learned Implementing RefactoringsHernan Wilkinson
 
Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Hernan Wilkinson
 
Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Hernan Wilkinson
 
Augmenting Smalltalk Syntax
Augmenting Smalltalk SyntaxAugmenting Smalltalk Syntax
Augmenting Smalltalk SyntaxHernan Wilkinson
 
Growing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust companyGrowing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust companyHernan Wilkinson
 
Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDHernan Wilkinson
 
Desarrollando sistemas con metodologías y técnicas agiles
Desarrollando sistemas con metodologías y técnicas agilesDesarrollando sistemas con metodologías y técnicas agiles
Desarrollando sistemas con metodologías y técnicas agilesHernan Wilkinson
 
Técnicas y herramientas para que la computadora haga más y el programador m...
Técnicas y herramientas para que la computadora haga más y el programador m...Técnicas y herramientas para que la computadora haga más y el programador m...
Técnicas y herramientas para que la computadora haga más y el programador m...Hernan Wilkinson
 
Obejct Oriented SCM - OOSCM
Obejct Oriented SCM - OOSCMObejct Oriented SCM - OOSCM
Obejct Oriented SCM - OOSCMHernan Wilkinson
 
A new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendarA new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendarHernan Wilkinson
 

Más de Hernan Wilkinson (20)

Live Typing - California Smalltalkers
Live Typing - California SmalltalkersLive Typing - California Smalltalkers
Live Typing - California Smalltalkers
 
Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020Buenos Aires vs. (London vs. Chicago) Agiles 2020
Buenos Aires vs. (London vs. Chicago) Agiles 2020
 
LiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicosLiveTyping - Anotación automática de tipos para lenguajes dinámicos
LiveTyping - Anotación automática de tipos para lenguajes dinámicos
 
LiveTyping: Update and What is next
LiveTyping: Update and What is nextLiveTyping: Update and What is next
LiveTyping: Update and What is next
 
Cuis smalltalk past present and future
Cuis smalltalk past present and futureCuis smalltalk past present and future
Cuis smalltalk past present and future
 
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
Live Typing- Automatic Type Annotation that improves the Programming eXperie...Live Typing- Automatic Type Annotation that improves the Programming eXperie...
Live Typing - Automatic Type Annotation that improves the Programming eXperie...
 
Lessons Learned Implementing Refactorings
Lessons Learned Implementing RefactoringsLessons Learned Implementing Refactorings
Lessons Learned Implementing Refactorings
 
Dynamic Type Information
Dynamic Type InformationDynamic Type Information
Dynamic Type Information
 
TDD & Refactoring
TDD & RefactoringTDD & Refactoring
TDD & Refactoring
 
Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?Go/Ruby/Java: What's next?
Go/Ruby/Java: What's next?
 
Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!Exceptions: Why, When, How and Where!
Exceptions: Why, When, How and Where!
 
CuisUniversity
CuisUniversityCuisUniversity
CuisUniversity
 
Oop is not Dead
Oop is not DeadOop is not Dead
Oop is not Dead
 
Augmenting Smalltalk Syntax
Augmenting Smalltalk SyntaxAugmenting Smalltalk Syntax
Augmenting Smalltalk Syntax
 
Growing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust companyGrowing an open participative horizontal and based on trust company
Growing an open participative horizontal and based on trust company
 
Como escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDDComo escribir buenos tests al hacer TDD
Como escribir buenos tests al hacer TDD
 
Desarrollando sistemas con metodologías y técnicas agiles
Desarrollando sistemas con metodologías y técnicas agilesDesarrollando sistemas con metodologías y técnicas agiles
Desarrollando sistemas con metodologías y técnicas agiles
 
Técnicas y herramientas para que la computadora haga más y el programador m...
Técnicas y herramientas para que la computadora haga más y el programador m...Técnicas y herramientas para que la computadora haga más y el programador m...
Técnicas y herramientas para que la computadora haga más y el programador m...
 
Obejct Oriented SCM - OOSCM
Obejct Oriented SCM - OOSCMObejct Oriented SCM - OOSCM
Obejct Oriented SCM - OOSCM
 
A new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendarA new object oriented model of the gregorian calendar
A new object oriented model of the gregorian calendar
 

Último

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Opentix
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfmasogeis
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3AlexysCaytanoMelndez1
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTEREMMAFLORESCARMONA
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...ITeC Instituto Tecnología Construcción
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionarmando_cardenas
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOSelenaCoronadoHuaman
 

Último (7)

Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200Caso de éxito de Hervian con el ERP Sage 200
Caso de éxito de Hervian con el ERP Sage 200
 
Manual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdfManual de Usuario APPs_AppInventor-2023.pdf
Manual de Usuario APPs_AppInventor-2023.pdf
 
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3Segmentacion Segmantica_Modelos UNET and DEEPLABV3
Segmentacion Segmantica_Modelos UNET and DEEPLABV3
 
Introducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTERIntroducción a Funciones LENGUAJE DART FLUTTER
Introducción a Funciones LENGUAJE DART FLUTTER
 
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
BREEAM ES Urbanismo como herramienta para un planeamiento sostenible - Miguel...
 
Unidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacionUnidad_3_T1_AutomatasFinitos presentacion
Unidad_3_T1_AutomatasFinitos presentacion
 
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLOPARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
PARTES DEL TECLADO Y SUS FUNCIONES - EJEMPLO
 

El Desarrollo de Software como debería Ser - Nerdear.la 2018