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!

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