SlideShare uma empresa Scribd logo
1 de 122
Baixar para ler offline
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
¡Buen Modelo!
Febrero/2018
Febrero/2018
(Smalltalk)
31/Feb/2018
03/03/2018 !!!
31/Feb/2018
Exception!
(A point based model of the Gregorian Calendar – H. Wilkinson et al)
Account
...
¡Complejidad!
¡Ni loco!
1
1 $
1 litro
1 metro
¡Ni loco!
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
Normal Science vs.
Paradigm Shift
Paradigm Shift
I invented the term
Object-Oriented and I
can tell you I did not have
C++ in mind.
Complejidad = Esencial + Accidental
Simula 67
Ole-Johan Dahl y Kristen Nygaard
Dynabook
¡Nunca más!
Java = JaJa
JEE != OO
¿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)
¡Educación Universitaria Conceptual!
¿Qué hacemos?
¡LEER!
¿Qué más hacemos?
¡LEER MAS!
¿¿¡¡Qué más
podemos hacer!!??
¡PODEMOS LEER!
¡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 Ágil?
¿Qué es ser Ágil?
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 entender que es una ACTIVIDAD SOCIAL
Es entender que TAMBIEN es una
ACTIVIDAD TECNICA
Es CONFIAR
Es tener PASION por lo que hacemos
Es ser
CRITICO
con la
actualidad
Es tener
CORAJE
para
generar
un
CAMBIO
Es saborear la
VICTORIA de
una
REVOLUCION
(bien entendida)
¡Seamos AGILES
que lo demás
NO IMPORTA
NADA!
agile software development & services
¡Gracias!

Mais conteúdo relacionado

Mais de Hernan Wilkinson

Lessons Learned Implementing Refactorings
Lessons Learned Implementing RefactoringsLessons Learned Implementing Refactorings
Lessons Learned Implementing RefactoringsHernan Wilkinson
 
El Desarrollo de Software como debería Ser - Nerdear.la 2018
El Desarrollo de Software como debería Ser - Nerdear.la 2018El Desarrollo de Software como debería Ser - Nerdear.la 2018
El Desarrollo de Software como debería Ser - Nerdear.la 2018Hernan 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
 
Arithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languagesArithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languagesHernan Wilkinson
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoHernan Wilkinson
 
Objects: The Misunderstood Paradigm
Objects: The Misunderstood ParadigmObjects: The Misunderstood Paradigm
Objects: The Misunderstood ParadigmHernan Wilkinson
 
Programming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingProgramming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingHernan Wilkinson
 
Cómo Java afecta nuestros Diseños
Cómo Java afecta nuestros DiseñosCómo Java afecta nuestros Diseños
Cómo Java afecta nuestros DiseñosHernan Wilkinson
 

Mais de Hernan Wilkinson (20)

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
 
El Desarrollo de Software como debería Ser - Nerdear.la 2018
El Desarrollo de Software como debería Ser - Nerdear.la 2018El Desarrollo de Software como debería Ser - Nerdear.la 2018
El Desarrollo de Software como debería Ser - Nerdear.la 2018
 
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
 
Arithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languagesArithmetic with measures on dynamically typed object oriented languages
Arithmetic with measures on dynamically typed object oriented languages
 
Como hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intentoComo hacer tdd y no morir en el intento
Como hacer tdd y no morir en el intento
 
Objects: The Misunderstood Paradigm
Objects: The Misunderstood ParadigmObjects: The Misunderstood Paradigm
Objects: The Misunderstood Paradigm
 
Programming Languages and their influence in Thinking
Programming Languages and their influence in ThinkingProgramming Languages and their influence in Thinking
Programming Languages and their influence in Thinking
 
Cómo Java afecta nuestros Diseños
Cómo Java afecta nuestros DiseñosCómo Java afecta nuestros Diseños
Cómo Java afecta nuestros Diseños
 

El Desarrollo de Software como debería Ser