SlideShare una empresa de Scribd logo
1 de 97
SystemsThinking and
Software Craftsmanship
Una visión holística sobre la Ingeniería de Software
@lorenzo_solano
lorenzo.sm
lorenzo-solano-a8455133
+LorenzoSolano
1
SystemsThinking
• Contextos
• Desarrollo de Software Sostenible
• Visión Compartida y Estratégica
• Devolver a la Comunidad
2
¿Cual es su relación?
3
Contextos
"Systems thinking is a discipline for seeing wholes
rather than parts, for seeing patterns of change
rather than static snapshots, and for
understanding the subtle interconnectedness that
gives living systems their unique character."
Peter Senge
The Fifth Discipline:The Art and Practice of the Learning Organization
4
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Los Sistemas
▪ Tienen múltiples capas de contexto
▪ [Abiertos] tienen entradas, procesos, y
salidas
▪ Pueden ser optimizados
▪ Economizando recursos escasos
▪ Removiendo bloqueos / barreras
▪ Mejorando herramientas
5
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Personal
▪ ¿Cómo encajo en las otras capas?
▪ ¿Cuál es mi estrategia para este periodo
(año, semestre, mes, …)?
▪ ¿Cuáles elementos están bloqueando mi
desempeño?
▪ ¿Cuáles herramientas necesito adquirir /
mejorar?
6
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Familiar
▪ ¿Cómo encaja mi familia en las otras capas?
▪ ¿Cuál es nuestra estrategia en el tiempo?
▪ ¿Cuáles elementos están bloqueando
nuestro desempeño?
▪ ¿Cuáles herramientas necesitamos adquirir /
mejorar?
7
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Laboral
▪ ¿Cómo encaja mi organización en las otras
capas?
▪ ¿Cuál es nuestra estrategia en el tiempo?
▪ ¿Cuáles elementos están bloqueando
nuestro desempeño?
▪ ¿Cuáles herramientas necesitamos adquirir /
mejorar?
8
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Nacional
▪ ¿Cómo encaja nuestro país en las otras
capas?
▪ ¿Cuál es nuestra estrategia en el tiempo?
▪ ¿Cuáles elementos están bloqueando
nuestro desempeño?
▪ ¿Cuáles herramientas necesitamos adquirir /
mejorar?
9
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Regional
▪ ¿Cómo encaja nuestro región en las otras
capas?
▪ ¿Cuál es nuestra estrategia en el tiempo?
▪ ¿Cuáles elementos están bloqueando
nuestro desempeño?
▪ ¿Cuáles herramientas necesitamos adquirir /
mejorar?
10
Global
Regional
Nacional
Laboral
Familiar
Personal
Contextos
Global
▪ ¿Hacia donde vamos como especie?
▪ ¿Cuál es nuestra estrategia en el tiempo?
▪ ¿Cuáles elementos están bloqueando
nuestro desempeño?
▪ ¿Cuáles herramientas necesitamos adquirir /
mejorar?
11
Global
Regional
Nacional
Laboral
Familiar
Personal
Volviendo al Patio
12
Volviendo al Patio
Visión de País a Largo Plazo
"República Dominicana es un país próspero, donde las
personas viven dignamente, apegadas a valores éticos y en el
marco de una democracia participativa que garantiza el
Estado social y democrático de derecho y promueve y
aprovecha sus recursos para desarrollarse de forma
innovadora, sostenible y territorialmente equilibrada e
integrada y se inserta competitivamente en la economía
global"
13
Volviendo al Patio
Visión de país a largo plazo
▪ Cuatro ejes estratégicos
▪ 19 objetivos generales
▪ 58 objetivos específicos
▪ 460 líneas estratégicas de acción
▪ Múltiples metas e indicadores
14
Volviendo al Patio
Prioridades
1. Confianza en los Partidos Políticos
2. Percepción de la corrupción
3. Educación
4. Salud
5. Medio Ambiente
6. …
15
¿Cuál es su relación?
16
¿Alguna idea?
Una historia de Mosquitos, Avispas, Geckos, Ratas,
Gatos, Personas, ... 1950's @ isla de Borneo
▪ Brote de Malaria, (vector: Mosquitos)
▪ Piden ayuda a la Organización Mundial de la
Salud (OMS)
▪ La OMS envía ayuda fumigando con DDT
▪ Mosquitos mueren, Malaria controlada
17
DDT
Una historia de Mosquitos, Avispas, Geckos, Ratas,
Gatos, Personas, ... 1950's @ isla de Borneo
▪ También, mueren otros insectos: Avispas locales
▪ Techos tradicionales hechos de paja
▪ Avispas se alimentan de orugas comedoras de
paja
▪ Las orugas proliferan y destruyen los techos
18
DDT
Una historia de Mosquitos, Avispas, Geckos, Ratas,
Gatos, Personas, ... 1950's @ isla de Borneo
▪ Geckos comen insectos con DDT => no mueren,
acumulan DDT
▪ Gatos comenGeckos, se frotan de paredes con DDT y
luego lo lamen => los gatos mueren por DDT
▪ Ratas proliferan
▪ Destruyen cultivos
▪ Transmiten enfermedades (rabia, peste)
▪ La OMS decide “importar” gatos 19
+ DDT
DDT
Una historia de Mosquitos, Avispas, Geckos, Ratas,
Gatos, Personas, ... 1950's @ isla de Borneo
▪ Si no entendemos las interrelaciones de las cosas, las soluciones pueden causar
más problemas
▪ Preguntas sencillas con frecuencia requieren pensamiento complejo y reflexivo
si se quieren encontrar buenas soluciones
▪ Es mejor administrar por diseño que por defecto
20
Desarrollo de software sostenible
▪ ¿Cuál es nuestro ecosistema?
▪ Individuos
▪ Familias
▪ Comunidades
▪ Empresas e Industrias
▪ Sistema Educativo
▪ Gobierno
21
Desarrollo de software sostenible
▪ ¿Cuál es nuestro ecosistema?
▪ Región, Mundo
22
Ecosistema
Nicho
Especie
Desarrollo de software sostenible
▪ Especie, Nicho, Ecosistema
▪ Especie: conjunto de individuos con características similares
▪ Nicho: posición relacional de una especie dentro de un
ecosistema
▪ Ecosistema: Sistema compuesto por organismos (y especies)
interdependientes compartiendo el mismo habitad
23
Ecosistema
Nicho
Especie
Desarrollo de software sostenible: Individuos
▪ Ser ético con los clientes / empleadores
▪ Crear software de calidad
▪ Cobrar lo justo
▪ Ser eficiente
▪ Analizar las problemáticas desde todos los ángulos
posibles
▪ Evitar re-trabajo (gasto)
▪ Aportar a mi comunidad
24
Ecosistema
Nicho
Especie
Desarrollo de software sostenible: Comunidades
▪ Seguir y establecer estándares de trabajo
▪ Denunciar irregularidades
▪ Fomentar el desarrollo de los miembros
▪ Crear apalancamiento para aprovechar
oportunidades
25
Ecosistema
Nicho
Especie
Desarrollo de software sostenible: Empresas
▪ Fomentar el desarrollo de sus colaboradores
▪ Permitir el desarrollo de sus colaboradores
▪ Diseñar sus procesos en torno a la gente
▪ Crear espacios para integrar la familia con la
empresa
▪ Evitar la estigmatización del trabajo por parte de
familiares y amigos
26
Ecosistema
Nicho
Especie
Desarrollo de software sostenible: Sistema Educativo
▪ Crear perfiles requeridos por la industria
▪ Pagar lo justo a los educadores
▪ Integrar la academia con las empresas
▪ Mantener su staff actualizado en técnicas de
enseñanza
▪ Mantener su staff actualizado en la práctica de las
profesiones ofertadas
27
Ecosistema
Nicho
Especie
Desarrollo de software sostenible: Gobierno
▪ Trazar estrategias a largo y mediano plazo
▪ Traducir estrategias en planes de acción
▪ Orientar los individuos y comunidades en torno a la
estrategia
▪ Dar sentido de dirección
▪ Medir desempeño y corregir el curso
28
Visión compartida y estratégica: La Rep. Dom. es...
▪ ¿Un país agrícola?
▪ ¿Un destino turístico?
▪ ¿Mano de obra especializada a precios
competitivos?
▪ ¿Un país minero?
▪ ¿Un centro de manufactura?
▪ …
29
Visión compartida y estratégica
▪ Como industria (de software),
debemos enfocarnos en:
▪ Apoyar la agricultura
▪ Apoyar el turismo
▪ Exportar nuestros servicios
▪ Apoyar la minería
▪ Apoyar la industria manufacturera
▪ …
30
Falla Sistémica
▪ Puede afectar al sistema completo o sus componentes de alto nivel
▪ Sucede entre los componentes (procesos) de un sistema
▪ Los componentes deberían trabajar juntos para buscar el éxito
31
ÉxitoFracaso
Falla Sistémica: Factores (causas)
▪ Objetivos confusos
▪ Pobre entendimiento del sistema como un todo
▪ Diseño defectuoso
▪ Incentivos individuales promoviendo objetivos sub-ordinados en lugar de
globales (individualismo)
32
ÉxitoFracaso
Falla Sistémica: Factores (causas)
▪ Retroalimentación inadecuada
▪ Pobre cooperación
▪ Falta de responsabilidad / rendición de cuentas
33
ÉxitoFracaso
Visión compartida y estratégica : Ideas
▪ Falta de Desarrolladores en Estados Unidos y Canadá (1, 2, 3)
34
Visión compartida y estratégica : Ideas
▪ Falta de Desarrolladores en Estados Unidos y Canadá
In a survey of 760 employers across 29 states in the United
States and three Canadian provinces, 83 percent of
respondents reported a
shortage of software development professionals,
due mostly to the lack of qualified local talent.
More than two-thirds ….
35
Visión compartida y estratégica : Ideas
68% 64%
53% 51%
42% 38%
29% 24%
0%
10%
20%
30%
40%
50%
60%
70%
80%
36
Falta de Desarrolladores en Estados Unidos y Canadá: Estrategias de Mitigación
Visión compartida y estratégica : Ideas
▪ Falta de Desarrolladores en Estados Unidos y Canadá: Oportunidades
Software development professionals held more than 1 million jobs in the
United States in 2012, and that number is expected to increase by 22 percent to more
than 1.2 million jobs by 2022, significantly faster than average job growth for all
occupations, according to the U.S. Department of Labor.
37
Visión compartida y estratégica : Ideas
Acaparar un x% del mercado de
outsourcing de USA
▪ 1.0% entre 2012 y 2016
▪ 1.5% entre 2017 y 2019
▪ 2.0% entre 2020 y 2022
Año Puestos (MM) % Objetivo
2012 1.00 1.0% 10,200
… … … …
2016 1.06 1.0% 10,800
2017 1.08 1.5% 16,500
2018 1.10 1.5% 16,800
2019 1.12 1.5% 17,100
2020 1.16 2.0% 23,200
2021 1.18 2.0% 23,600
2022 1.20 2.0% 24,000
38
Visión compartida y estratégica :Tendencias
39
Jóvenes entre 15-24 que ni estudian ni trabajan “Ninis” (4)
320,000
340,000
360,000
380,000
400,000
420,000
440,000
2008 2009 2010 2011 2012 2013 2014
TotalAnual
1,400,000
1,450,000
1,500,000
1,550,000
1,600,000
1,650,000
1,700,000
2008 2009 2010 2011 2012 2013 2014
Primario
Visión compartida y estratégica :Tendencias
40
Población Ocupada (PO) según nivel educativo (4)
0
200,000
400,000
600,000
800,000
1,000,000
1,200,000
1,400,000
1,600,000
2008 2009 2010 2011 2012 2013 2014
Secundario
Visión compartida y estratégica :Tendencias
41
Población Ocupada (PO) según nivel educativo (4)
0
200,000
400,000
600,000
800,000
1,000,000
2008 2009 2010 2011 2012 2013 2014
Universitario
Visión compartida y estratégica :Tendencias
42
Población Ocupada (PO) según nivel educativo (4)
0
5,000
10,000
15,000
20,000
25,000
30,000
35,000
40,000
45,000
50,000
2008 2009 2010 2011 2012 2013 2014
Post-universitario
Visión compartida y estratégica :Tendencias
43
Población Ocupada (PO) según nivel educativo (4)
0
50,000
100,000
150,000
200,000
250,000
300,000
350,000
2008 2009 2010 2011 2012 2013 2014
Ninguno
Visión compartida y estratégica :Tendencias
44
Población Ocupada (PO) según nivel educativo (4)
Visión compartida y estratégica
45
▪ ¿Tengo un Plan Estratégico claro como individuo?
▪ ¿Lo tiene mi empresa?
▪ ¿Mi estrategia personal coincide con la de mi organización?
▪ ¿Tiene el país un Plan Estratégico claro?
▪ ¿Entiendo claramente cual es mi contribución a la Estrategia Nacional?
¿Y qué con las palabras Rimbombantes del título?
46
▪ Holismo
▪ (del griego ὅλος [hólos]: "todo", "por entero", "totalidad")
▪ Posición que postula cómo los sistemas y sus propiedades deben ser analizados en su conjunto
▪ No solo a través de las partes que los componen
▪ Los sistemas pueden ser físicos, biológicos, sociales, económicos, mentales, lingüísticos, etc.
Ing. de
Software
Sociedad Individuos
Industrias Gobierno
…
…
¿Y qué con las palabras Rimbombantes del título?
47
▪ Responsabilidad Social
▪ Carga, compromiso u obligación de los miembros de una
sociedad
▪ Ya sea como individuos o como miembros de algún grupo
tienen, tanto entre sí como para la sociedad en su conjunto
▪ No es lo mismo que la reciprocidad
▪ Implica deberes hacia nuestro entorno, sin esperar algo en
retorno
¿Y qué con las palabras Rimbombantes del título?
48
▪ Reciprocidad
▪ Del latín reciprocĭtas
▪ Correspondencia mutua de una persona o cosa con otra
▪ Aquello que se hace como devolución, compensación o
restitución.
▪ “Hoy por ti, mañana por mí“
▪ Implica cierto nivel de “interés”
▪ Sirvo esperando algo a cambio
¿Y qué con las palabras Rimbombantes del título?
49
▪ Craftsmanship (Artesanía)
▪ Habilidad en un arte u oficio en particular
▪ (Software) Movimiento que busca la excelencia técnica
▪ (Software) Busca mejorar las habilidades de los desarrolladores
▪ No niega la necesidad de otras habilidades (blandas, liderazgo,
etc.)
▪ Pero exige que se vele por la excelencia técnica y la atención por
los detalles
Devolver a la comunidad: pasar de la reciprocidad a la
responsabilidad social
50
▪ [Individuos] Estoy siendo eficiente en mi trabajo
▪ [Empresas] Estoy permitiendo que el ecosistema se regenere
▪ [Comunidades] Estamos velando por el desarrollo de nuestros miembros
▪ [País] Estamos trazando estrategias claras para el desarrollo común
▪ [País] Estamos tratando de equilibrar la balanza de pago, en el contexto de las
TICs
< Aspectos Técnicos >
• Clean Code: Motivaciones
• Calidad sin compromisos
• Fanatismo por Herramientas vs Cultivo
de profesión
• Automatización
• Sumergir la cabeza
51
Clean Code: Motivaciones
52
▪ Riesgo de Default
▪ Evento en el cual compañías o individuos no serán capaces de cumplir con sus obligaciones
▪ Pagar deudas
▪ Producir rentabilidad esperada
▪ Mitigación: exigir mayor tasa de retorno (rentabilidad)
Clean Code: Motivaciones
53
Imagina que…
▪ Eres un inversionista con un capital disponible de USD$3MM
▪ Te presentan dos proyectos de software cada uno por una empresa distinta
▪ Uno de tus asesores técnicos te aconseja indagar un poco sobre los procesos de
cada empresa y ver su desempeño en proyectos pasados
Clean Code: Motivaciones | Evidencias “Concursante A”
54
(5)
Clean Code: Motivaciones | Evidencias “Concursante B”
Para construir el URI (BuildURI) a partir de Request
REST se debe:
▪ Realizar las siguientes validaciones:
▪ El URL base no puede ser nulo
▪ Ningún parámetro puede tener valor nulo
▪ Reemplazar todos los parámetros nombrados de la URL
con su valor
▪ Conformar el nuevo URL Base
▪ Conformar el recurso, si existe
▪ Reemplazar el URL base con el nuevo
▪ Construir el URL final
▪ Obtener los parámetros del Query String
▪ Combinar el recurso con los parámetros
▪ Si no hay parámetros en el Query String retornar recurso
actual
▪ De lo contrario agregar parámetros al recurso
55
Clean Code: Motivaciones | Evidencias “Concursante B”
56
Clean Code: Motivaciones
57
▪ Riesgo de Default
▪ En el tiempo, ¿Cuál concursante (A ó B) tiene mas probabilidades de completar el
proyecto respetando Calidad, Costo yTiempo
▪ ¿Cuál de los dos es mas riesgoso
▪ ¿Cuál de los dos puede incumplir con más facilidad?
Clean Code: Motivaciones
58
▪ Riesgo de Maturity
▪ Posibilidad de que las tasas de intereses cambien drásticamente, mientras su dinero está atado a
una inversión
▪ Mitigación: Inversionistas cargan una prima (seguro) mientras mas alto sea este riesgo
▪ “En español” mientras más tiempo sea necesario para recuperar una inversión, mas alto el riesgo
Clean Code: Motivaciones
59
Imagina que…
▪ Eres un inversionista con un capital disponible de USD$3MM
▪ Te presentan dos proyectos de software, cada uno por una empresa distinta
▪ Uno de tus asesores técnicos te aconseja indagar un poco sobre los procesos de
cada empresa y ver su desempeño en proyectos pasados
Clean Code: Motivaciones | Evidencias “Concursante A”
60
0
10
20
30
40
50
60
0 1 2 3 4 5 6 7 8 9 10 11 12
2 años:Trabajo Estimado vs. Completado
Trabajo Estimado Trabajo Completado
Esfuerzo entregado (periodo): 545
Clean Code: Motivaciones | Evidencias “Concursante B”
61
0
20
40
60
80
100
120
140
160
0 1 2 3 4 5 6 7 8 9 10 11 12
2 años:Trabajo Estimado vs. Completado
Trabajo Estimado Trabajo Completado
Esfuerzo entregado (periodo): 994
Clean Code: Motivaciones
▪ Claramente el Concursante B entrega más valor por unidad de tiempo (iteración)
▪ Veamos la misma data desde otros ángulos
62
Clean Code: Motivaciones | Evidencias “Concursante A”
63
0
5
10
15
20
25
30
35
40
45
50
0 1 2 3 4 5 6 7 8 9 10 11 12
Velocidad por Iteración
Clean Code: Motivaciones | Evidencias “Concursante B”
64
0
20
40
60
80
100
120
140
0 1 2 3 4 5 6 7 8 9 10 11 12
Velocidad por Iteración
Clean Code: Motivaciones
Indagando sobre el deterioro constante de la velocidad, el asesor
en Gestión delTalento Humano, le pide a los concursantes otras
evidencias, entre ellas las estadísticas de Rotación de Personal
65
Clean Code: Motivaciones | Evidencias “Concursante A”
66
0.00%
0.10%
0.20%
0.30%
0.40%
0.50%
0.60%
0.70%
0.80%
0.90%
0 1 2 3 4 5 6 7 8 9 10 11 12
Rotació Personal
Clean Code: Motivaciones | Evidencias “Concursante B”
67
0.00%
2.00%
4.00%
6.00%
8.00%
10.00%
12.00%
0 1 2 3 4 5 6 7 8 9 10 11 12
Rotació Personal
Clean Code: Motivaciones
68
▪ Riesgo de Maturity
▪ ¿ Cuál de los dos equipos es más certero en sus estimaciones
▪ ¿ Cuál da menos sorpresas?
▪ ¿ Cuál está tendiendo al colapso?
▪ ¿ Cuál tiene un paso sostenido?
Clean Code: Motivaciones
69
▪ Riesgo de Liquidity
▪ Esfuerzo / Perdida potencial para transformar "liquidar" activos
▪ Llevarlos a su manera más liquida ($ efectivo)
▪ ¿Cuánto debo perder para liquidar los activos ante una situación adversa?
▪ Mitigación: crear entregables parciales útiles (código productivo:Agile?)
▪ Mitigación: respetar estándares y buenas prácticas, promoviendo la continuidad del trabajo en
caso de venta del proyecto
Clean Code: Motivaciones
70
Imagina que…
▪ Digamos que decidiste invertir en uno de los dos proyectos tus USD$3MM
▪ Y que ya ha pasado el 90% del tiempo estimado e (idealmente) se han erogado el
90% de los USD$3MM => 2.7MM
▪ Quedando USD$0.3MM líquidos en el presupuesto
▪ Y de repente, el proyecto aborta: ¿Qué hacemos?
Clean Code: Motivaciones
71
¿Cómo liquidar tu inversión?
▪ Vender el proyecto a otro inversionista
▪ Comercializar el producto como este
▪ Buscar financiamiento, reactivar el proyecto y esperar que resulte
▪ …
Clean Code: Motivaciones
72
Tienes 2 escenarios posibles: Equipo A o Equipo B
Trabajando con el Equipo A
• Base de código limpia y mantenible
• Velocidad constante
• Equipo motivado
• Equipo energético
Trabajando con el Equipo B
• Base de código insostenible
• Velocidad prácticamente nula
• Equipo desmotivado
• Equipo desgastado
Clean Code: Motivaciones
73
▪ Competitividad
▪ Las buenas prácticas de ingeniera de software son una ventaja competitiva
▪ Reduce el tiempo de ciclo
▪ Equipos motivados
▪ Bajo nivel de estrés
▪ Mas tiempo para investigación y desarrollo
▪ Menor tasa de defectos
▪ Imagen corporativa / Marca con mayor valor ante clientes
Clean Code: Motivaciones
74
▪ Work / Life balance
▪ Menos problemas en producción
▪ Menos retrasos en fechas de compromiso
▪ Menos estrés
▪ Más tiempo para estar con familiares y amigos
▪ Más tiempo para hacer actividades de esparcimiento
Clean Code: Motivaciones
75
▪ Confianza: Propia, Colegas y Clientes
▪ Moral alta, creación constante de productos de calidad
▪ Colegas pueden confiar entre sí, debido al apego a estándares
▪ Evitar la frase “este código es de …”, y cuando el “dueño” falta?
▪ Empleadores / Clientes más satisfechos con el valor ganado
▪ Más libertad de acción menos fiscalizaciones absurdas: “látigo”, “vestimenta”, “horarios”, …
¿Por qué no debemos comprometer la calidad de
nuestras creaciones?
76
▪ Refactorizar código (método RestClient.BuildUri())
▪ Mantenibilidad: capacidad del código de dejarse tocar sin infundir un miedo paralizante
▪ La mejora continua de la base de código (refactoring) ayuda a tener una alta mantenibilidad
▪ Evitando la Codfobia (fobia al código): miedo irracional percibido por el programador vago ante
sus propias creaciones cuando estas salen de su control
▪ Ejemplos de código sucio en herramienta open source
▪ 2K LOC file: SimpleJson.cs [RestSharp v105.2.3 @ GitHub]
▪ Método sobre-complicado: RestClient.BuildUri(IRestRequest) [RestSharp v105.2.3 @ GitHub]
"No es la flecha, es el indio”: pasar del fanatismo por
herramientas al cultivo de nuestra profesión
77
▪ Herramientas
▪ ¿Prefieres un ingeniero civil experto en Martillos y Niveles o uno que domine bien el diseño de
estructuras y cargas de la edificación?
▪ El primero te construirá una casa con excelente terminación, pero que puede colapsar
▪ El segundo se asegura de que los elementos principales estén en su punto,
▪ y además se fija en los detalles de terminación
▪ En nuestra profesión los Lenguajes y Frameworks son Herramientas, no conocimientos claves
▪ Debemos utilizarlos, pero no sobredimensionarlos, vale más cultivar la profesión
"No es la flecha, es el indio”: pasar del fanatismo por
herramientas al cultivo de nuestra profesión
78
▪ Ejemplo: BoundaryTest & JSON [de]serialization
▪ Ver caso en mi blog BoundaryTest:JSON De-serialization with Json.NET
▪ @ http://tales-of-agile-adoption.blogspot.com/2015/05/boundary-test-json-de-
serialization.html
▪ Resumen: Aislar los frameworks y las herramientas lo más posible del core de nuestro aplicativo
▪ Degradándolos(as) a su justo Segundo oTercer lugar en nuestra arquitectura
"No es la flecha, es el indio”: pasar del fanatismo por
herramientas al cultivo de nuestra profesión
79
▪ Arquitectura de una Casa (a)
"No es la flecha es el indio”: pasar del fanatismo por
herramientas al cultivo de nuestra profesión
80
▪ Arquitectura de una Casa (b)
“Libera tu mente”: ¡Automatiza!
81
▪ Imagina que trabajas en un ERP o POS
▪ Aplicativos de mediano a gran tamaño en cuanto a características
▪ Estas “listo” para liberar una nueva versión
▪ Pero tienes que realizar todo el Q.A. manual
▪ ¿Cuánto tiempo te tomara este esfuerzo? Días, semanas, meses, ?, …
“Libera tu mente”: ¡Automatiza!
82
▪ Los pequeños detalles cuentan
▪ Ahora supón que estás en el Nirvana del desarrollo
▪ Tienes todas tus pruebas automatizadas
▪ Todos los niveles cubiertos: unitario, integración, aceptación, …
▪ Pero el proceso de “liberar” tus entregables sigue siendo manual
▪ Si haces liberaciones semestrales, probablemente no te impacte, pero
▪ Y si queremos hacer liberaciones semanales, o diarias …
“Libera tu mente”: ¡Automatiza!
83
▪ Los pequeños detalles cuentan
▪ Debemos automatizar cada detalle posible del ciclo de desarrollo
▪ Cada intervención manual, distinta a escribir el código fuente, es gasto
▪ Son pequeños bloqueos a nuestro sistema
▪ Se pueden acumular y llevarnos a una Falla Sistémica
“Libera tu mente”: ¡Automatiza!
Script para marcar (tag) y crear releases en GitHub
84
“Libera tu mente”: ¡Automatiza!
85
Objetivo
▪ Automatizar la creación de los releases de un API en GitHub
▪ Marcar (tag) el release, y publicar los artefactos asociados
▪ Crear versiones semanales con el siguiente formato
vYYYY.WW.99Constante ‘v’
Año: 4
dígitos
Semana (01-
53): 2 dígitos
Hot-fixes
“Libera tu mente”: ¡Automatiza!
86
Pasos => Probar en línea @TutorialsPoint
▪ Crear script para evaluar la versión siguiente
▪ Incluir en el CI Server como tarea calendarizada semanalmente
▪ Completar con github-release @ https://github.com/aktau/github-release (o similar)
▪ Un cambio sencillo, pequeño y efectivo
▪ Evitar grandes proyectos de “mejoras”
▪ los cuales son cancelados por “falta de tiempo”
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
87
▪ ¿Me sirve de algo saber cómo funcionan los Discos Duros?
▪ ¿Cuál es la utilidad de saber como funciona el protocolo UDP?
▪ ¿La CPU?
▪ ¿La RAM?
▪ …
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
88
▪ Ejemplo:
▪ Inicialización de una Matriz
(arreglo 2D) Tamaño x
dimensión (8K x
8K) elementos
Cantidad de accesos
(método ‘C’)
C/u hace 3 corridas
mide tiempo y toma
promedio al final
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
89
-
500,000,000
1,000,000,000
1,500,000,000
2,000,000,000
2,500,000,000
3,000,000,000
3,500,000,000
4,000,000,000
Init A Init B Init C
Nano-segundos por Método de Inicialización
1x
96x
61x
The box
Java SE 1.8u65
Windows 8.1 Pro N 64-bit
16GB RAM 2x @ 1,333MHz
Intel Core i7 @ 2.30GHz
HP Pavillion m7
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
90
Código @ https://github.com/lsolano/array_init_demo
¿Qué está pasando?
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
91
▪ ¿Qué está pasando?
▪ Hardware optimizado para leer bloques contiguos de RAM
▪ Buffer de trabajo de la CPU pequeño en relación a la RAM
▪ Si la data buscada esta en bloques de RAM distintos
▪ Se carga el 1er bloque, luego se lee / escribe la celda
▪ Se carga el 2do bloque, luego se lee / escribe la celda
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
92
▪ ¿Qué está pasando?
▪ El Hardware esta leyendo “bloques” grandes
▪ Nuestra abstracción (array) nos hace creer que podemos acceder a
celdas individuales en O(1)
“Sumerge la cabeza”: beneficios de conocer las capas
inferiores a la nuestra
93
1 2 3 4 5 6 7 8
9 … 16
17 … 24
1 4 7 16
2 5 8 17
3 6 9 24
Columnas Filas
Load [RAM => Cache]
1-8 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
9 - 16 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
17-24 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
1 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
2 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
3 Cache <=> CPU
Store [Cache => RAM]
Load [RAM => Cache]
…
Leídos, no
utilizados:
Desperdicio
Referencias
▪ (1) Research Shows Employers Struggle with Shortage in Software Development
Talent @Yahoo Finance
▪ http://finance.yahoo.com/news/research-shows-employers-struggle-shortage-130000477.html.
▪ (2)Technology Councils of North America
▪ http://www.tecna.org/
▪ (3)TECNA's Software Development Skills Survey
▪ http://www.tecna.org/software-development-talent-survey.html#sthash.PNuhbBO0.dpbs
94
Referencias
▪ (4) Oficina Nacional de Estadística, estadísticas sobre Mercado de trabajo
▪ http://www.one.gob.do/Estadisticas/9/mercado-de-trabajo-
▪ (5) RestSharp 105.2.3 @ GitHub: RestClient.BuildUri(IRestRequest)
▪ https://github.com/restsharp/RestSharp/blob/105.2.3/RestSharp/RestClient.cs
95
96
Voy de salida…
¡Gracias por
su atención!
¿Cuál es su relación?
97
¿Alguna idea?

Más contenido relacionado

Similar a Sistemas de pensamiento y artesanía del software

Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...
Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...
Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...Fundación Taigüey
 
Planeamiento Estratégico
Planeamiento EstratégicoPlaneamiento Estratégico
Planeamiento EstratégicoNicolae Suárez
 
Planificacion proceso estrat
Planificacion proceso estratPlanificacion proceso estrat
Planificacion proceso estratpuchungo1981
 
Plantilla empresarismo sercom
Plantilla empresarismo sercomPlantilla empresarismo sercom
Plantilla empresarismo sercomCAVEGO
 
Elementos para diseñar una empresa de innovación de impacto
Elementos para diseñar una empresa de innovación de impactoElementos para diseñar una empresa de innovación de impacto
Elementos para diseñar una empresa de innovación de impactoPaula Cardenau
 
Gestión del conocimiento en la DRM de SERCOTEC
Gestión del conocimiento en la DRM de SERCOTECGestión del conocimiento en la DRM de SERCOTEC
Gestión del conocimiento en la DRM de SERCOTECSergio Iván Salas Meza
 
Las TIC en el campo espiritual y trascendental
 Las TIC en el campo espiritual y trascendental Las TIC en el campo espiritual y trascendental
Las TIC en el campo espiritual y trascendentalMaestría Tic Pucp
 
Mapa estrategico meduca 29-9-2014-supervisores
Mapa estrategico  meduca 29-9-2014-supervisoresMapa estrategico  meduca 29-9-2014-supervisores
Mapa estrategico meduca 29-9-2014-supervisoresenriquelc
 
Globalizaacion
GlobalizaacionGlobalizaacion
Globalizaacionyecazc
 
Principios y buenas prácticas para el trabajo en redes interistitucionales de...
Principios y buenas prácticas para el trabajo en redes interistitucionales de...Principios y buenas prácticas para el trabajo en redes interistitucionales de...
Principios y buenas prácticas para el trabajo en redes interistitucionales de...Rafael Mesen
 
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...EUROsociAL II
 
Redes de colaboración para la sostenibilidad. El caso del itdUPM
Redes de colaboración para la sostenibilidad. El caso del itdUPMRedes de colaboración para la sostenibilidad. El caso del itdUPM
Redes de colaboración para la sostenibilidad. El caso del itdUPMXose Ramil
 
Lectura 1. proceso de planificacion estrategica.
Lectura 1. proceso de planificacion estrategica.Lectura 1. proceso de planificacion estrategica.
Lectura 1. proceso de planificacion estrategica.fannycascone
 
Ciudades inteligentes, datos abiertos y presupuesto participativo
Ciudades inteligentes, datos abiertos y presupuesto participativoCiudades inteligentes, datos abiertos y presupuesto participativo
Ciudades inteligentes, datos abiertos y presupuesto participativojimena sanchez velarde
 
Cristobal Cobo - CADE Educación 2017
Cristobal Cobo -  CADE Educación 2017Cristobal Cobo -  CADE Educación 2017
Cristobal Cobo - CADE Educación 2017IPAE
 

Similar a Sistemas de pensamiento y artesanía del software (20)

Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...
Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...
Soluciones Metodológicas TICs para Desarrollo: desde La Ciénaga de Barahona a...
 
Planeamiento Estratégico
Planeamiento EstratégicoPlaneamiento Estratégico
Planeamiento Estratégico
 
Planificacion 300306
Planificacion 300306Planificacion 300306
Planificacion 300306
 
Planificacion 300306
Planificacion 300306Planificacion 300306
Planificacion 300306
 
Planificacion proceso estrat
Planificacion proceso estratPlanificacion proceso estrat
Planificacion proceso estrat
 
Plantilla empresarismo sercom
Plantilla empresarismo sercomPlantilla empresarismo sercom
Plantilla empresarismo sercom
 
Elementos para diseñar una empresa de innovación de impacto
Elementos para diseñar una empresa de innovación de impactoElementos para diseñar una empresa de innovación de impacto
Elementos para diseñar una empresa de innovación de impacto
 
Gestión del conocimiento en la DRM de SERCOTEC
Gestión del conocimiento en la DRM de SERCOTECGestión del conocimiento en la DRM de SERCOTEC
Gestión del conocimiento en la DRM de SERCOTEC
 
Las TIC en el campo espiritual y trascendental
 Las TIC en el campo espiritual y trascendental Las TIC en el campo espiritual y trascendental
Las TIC en el campo espiritual y trascendental
 
Mapa estrategico meduca 29-9-2014-supervisores
Mapa estrategico  meduca 29-9-2014-supervisoresMapa estrategico  meduca 29-9-2014-supervisores
Mapa estrategico meduca 29-9-2014-supervisores
 
Globalizaacion
GlobalizaacionGlobalizaacion
Globalizaacion
 
Principios y buenas prácticas para el trabajo en redes interistitucionales de...
Principios y buenas prácticas para el trabajo en redes interistitucionales de...Principios y buenas prácticas para el trabajo en redes interistitucionales de...
Principios y buenas prácticas para el trabajo en redes interistitucionales de...
 
Presentación internacionalizacion responsable
Presentación internacionalizacion responsablePresentación internacionalizacion responsable
Presentación internacionalizacion responsable
 
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...
Marco Estratégico Institucional 2012-2016. Plan Operativo Anual 2014 / Minist...
 
Digital Soft Skills amb Andrés Raya
Digital Soft Skills amb Andrés RayaDigital Soft Skills amb Andrés Raya
Digital Soft Skills amb Andrés Raya
 
Redes de colaboración para la sostenibilidad. El caso del itdUPM
Redes de colaboración para la sostenibilidad. El caso del itdUPMRedes de colaboración para la sostenibilidad. El caso del itdUPM
Redes de colaboración para la sostenibilidad. El caso del itdUPM
 
Clase1 Marketing Social
Clase1 Marketing SocialClase1 Marketing Social
Clase1 Marketing Social
 
Lectura 1. proceso de planificacion estrategica.
Lectura 1. proceso de planificacion estrategica.Lectura 1. proceso de planificacion estrategica.
Lectura 1. proceso de planificacion estrategica.
 
Ciudades inteligentes, datos abiertos y presupuesto participativo
Ciudades inteligentes, datos abiertos y presupuesto participativoCiudades inteligentes, datos abiertos y presupuesto participativo
Ciudades inteligentes, datos abiertos y presupuesto participativo
 
Cristobal Cobo - CADE Educación 2017
Cristobal Cobo -  CADE Educación 2017Cristobal Cobo -  CADE Educación 2017
Cristobal Cobo - CADE Educación 2017
 

Sistemas de pensamiento y artesanía del software

  • 1. SystemsThinking and Software Craftsmanship Una visión holística sobre la Ingeniería de Software @lorenzo_solano lorenzo.sm lorenzo-solano-a8455133 +LorenzoSolano 1
  • 2. SystemsThinking • Contextos • Desarrollo de Software Sostenible • Visión Compartida y Estratégica • Devolver a la Comunidad 2
  • 3. ¿Cual es su relación? 3
  • 4. Contextos "Systems thinking is a discipline for seeing wholes rather than parts, for seeing patterns of change rather than static snapshots, and for understanding the subtle interconnectedness that gives living systems their unique character." Peter Senge The Fifth Discipline:The Art and Practice of the Learning Organization 4 Global Regional Nacional Laboral Familiar Personal
  • 5. Contextos Los Sistemas ▪ Tienen múltiples capas de contexto ▪ [Abiertos] tienen entradas, procesos, y salidas ▪ Pueden ser optimizados ▪ Economizando recursos escasos ▪ Removiendo bloqueos / barreras ▪ Mejorando herramientas 5 Global Regional Nacional Laboral Familiar Personal
  • 6. Contextos Personal ▪ ¿Cómo encajo en las otras capas? ▪ ¿Cuál es mi estrategia para este periodo (año, semestre, mes, …)? ▪ ¿Cuáles elementos están bloqueando mi desempeño? ▪ ¿Cuáles herramientas necesito adquirir / mejorar? 6 Global Regional Nacional Laboral Familiar Personal
  • 7. Contextos Familiar ▪ ¿Cómo encaja mi familia en las otras capas? ▪ ¿Cuál es nuestra estrategia en el tiempo? ▪ ¿Cuáles elementos están bloqueando nuestro desempeño? ▪ ¿Cuáles herramientas necesitamos adquirir / mejorar? 7 Global Regional Nacional Laboral Familiar Personal
  • 8. Contextos Laboral ▪ ¿Cómo encaja mi organización en las otras capas? ▪ ¿Cuál es nuestra estrategia en el tiempo? ▪ ¿Cuáles elementos están bloqueando nuestro desempeño? ▪ ¿Cuáles herramientas necesitamos adquirir / mejorar? 8 Global Regional Nacional Laboral Familiar Personal
  • 9. Contextos Nacional ▪ ¿Cómo encaja nuestro país en las otras capas? ▪ ¿Cuál es nuestra estrategia en el tiempo? ▪ ¿Cuáles elementos están bloqueando nuestro desempeño? ▪ ¿Cuáles herramientas necesitamos adquirir / mejorar? 9 Global Regional Nacional Laboral Familiar Personal
  • 10. Contextos Regional ▪ ¿Cómo encaja nuestro región en las otras capas? ▪ ¿Cuál es nuestra estrategia en el tiempo? ▪ ¿Cuáles elementos están bloqueando nuestro desempeño? ▪ ¿Cuáles herramientas necesitamos adquirir / mejorar? 10 Global Regional Nacional Laboral Familiar Personal
  • 11. Contextos Global ▪ ¿Hacia donde vamos como especie? ▪ ¿Cuál es nuestra estrategia en el tiempo? ▪ ¿Cuáles elementos están bloqueando nuestro desempeño? ▪ ¿Cuáles herramientas necesitamos adquirir / mejorar? 11 Global Regional Nacional Laboral Familiar Personal
  • 13. Volviendo al Patio Visión de País a Largo Plazo "República Dominicana es un país próspero, donde las personas viven dignamente, apegadas a valores éticos y en el marco de una democracia participativa que garantiza el Estado social y democrático de derecho y promueve y aprovecha sus recursos para desarrollarse de forma innovadora, sostenible y territorialmente equilibrada e integrada y se inserta competitivamente en la economía global" 13
  • 14. Volviendo al Patio Visión de país a largo plazo ▪ Cuatro ejes estratégicos ▪ 19 objetivos generales ▪ 58 objetivos específicos ▪ 460 líneas estratégicas de acción ▪ Múltiples metas e indicadores 14
  • 15. Volviendo al Patio Prioridades 1. Confianza en los Partidos Políticos 2. Percepción de la corrupción 3. Educación 4. Salud 5. Medio Ambiente 6. … 15
  • 16. ¿Cuál es su relación? 16 ¿Alguna idea?
  • 17. Una historia de Mosquitos, Avispas, Geckos, Ratas, Gatos, Personas, ... 1950's @ isla de Borneo ▪ Brote de Malaria, (vector: Mosquitos) ▪ Piden ayuda a la Organización Mundial de la Salud (OMS) ▪ La OMS envía ayuda fumigando con DDT ▪ Mosquitos mueren, Malaria controlada 17 DDT
  • 18. Una historia de Mosquitos, Avispas, Geckos, Ratas, Gatos, Personas, ... 1950's @ isla de Borneo ▪ También, mueren otros insectos: Avispas locales ▪ Techos tradicionales hechos de paja ▪ Avispas se alimentan de orugas comedoras de paja ▪ Las orugas proliferan y destruyen los techos 18 DDT
  • 19. Una historia de Mosquitos, Avispas, Geckos, Ratas, Gatos, Personas, ... 1950's @ isla de Borneo ▪ Geckos comen insectos con DDT => no mueren, acumulan DDT ▪ Gatos comenGeckos, se frotan de paredes con DDT y luego lo lamen => los gatos mueren por DDT ▪ Ratas proliferan ▪ Destruyen cultivos ▪ Transmiten enfermedades (rabia, peste) ▪ La OMS decide “importar” gatos 19 + DDT DDT
  • 20. Una historia de Mosquitos, Avispas, Geckos, Ratas, Gatos, Personas, ... 1950's @ isla de Borneo ▪ Si no entendemos las interrelaciones de las cosas, las soluciones pueden causar más problemas ▪ Preguntas sencillas con frecuencia requieren pensamiento complejo y reflexivo si se quieren encontrar buenas soluciones ▪ Es mejor administrar por diseño que por defecto 20
  • 21. Desarrollo de software sostenible ▪ ¿Cuál es nuestro ecosistema? ▪ Individuos ▪ Familias ▪ Comunidades ▪ Empresas e Industrias ▪ Sistema Educativo ▪ Gobierno 21
  • 22. Desarrollo de software sostenible ▪ ¿Cuál es nuestro ecosistema? ▪ Región, Mundo 22
  • 23. Ecosistema Nicho Especie Desarrollo de software sostenible ▪ Especie, Nicho, Ecosistema ▪ Especie: conjunto de individuos con características similares ▪ Nicho: posición relacional de una especie dentro de un ecosistema ▪ Ecosistema: Sistema compuesto por organismos (y especies) interdependientes compartiendo el mismo habitad 23
  • 24. Ecosistema Nicho Especie Desarrollo de software sostenible: Individuos ▪ Ser ético con los clientes / empleadores ▪ Crear software de calidad ▪ Cobrar lo justo ▪ Ser eficiente ▪ Analizar las problemáticas desde todos los ángulos posibles ▪ Evitar re-trabajo (gasto) ▪ Aportar a mi comunidad 24
  • 25. Ecosistema Nicho Especie Desarrollo de software sostenible: Comunidades ▪ Seguir y establecer estándares de trabajo ▪ Denunciar irregularidades ▪ Fomentar el desarrollo de los miembros ▪ Crear apalancamiento para aprovechar oportunidades 25
  • 26. Ecosistema Nicho Especie Desarrollo de software sostenible: Empresas ▪ Fomentar el desarrollo de sus colaboradores ▪ Permitir el desarrollo de sus colaboradores ▪ Diseñar sus procesos en torno a la gente ▪ Crear espacios para integrar la familia con la empresa ▪ Evitar la estigmatización del trabajo por parte de familiares y amigos 26
  • 27. Ecosistema Nicho Especie Desarrollo de software sostenible: Sistema Educativo ▪ Crear perfiles requeridos por la industria ▪ Pagar lo justo a los educadores ▪ Integrar la academia con las empresas ▪ Mantener su staff actualizado en técnicas de enseñanza ▪ Mantener su staff actualizado en la práctica de las profesiones ofertadas 27
  • 28. Ecosistema Nicho Especie Desarrollo de software sostenible: Gobierno ▪ Trazar estrategias a largo y mediano plazo ▪ Traducir estrategias en planes de acción ▪ Orientar los individuos y comunidades en torno a la estrategia ▪ Dar sentido de dirección ▪ Medir desempeño y corregir el curso 28
  • 29. Visión compartida y estratégica: La Rep. Dom. es... ▪ ¿Un país agrícola? ▪ ¿Un destino turístico? ▪ ¿Mano de obra especializada a precios competitivos? ▪ ¿Un país minero? ▪ ¿Un centro de manufactura? ▪ … 29
  • 30. Visión compartida y estratégica ▪ Como industria (de software), debemos enfocarnos en: ▪ Apoyar la agricultura ▪ Apoyar el turismo ▪ Exportar nuestros servicios ▪ Apoyar la minería ▪ Apoyar la industria manufacturera ▪ … 30
  • 31. Falla Sistémica ▪ Puede afectar al sistema completo o sus componentes de alto nivel ▪ Sucede entre los componentes (procesos) de un sistema ▪ Los componentes deberían trabajar juntos para buscar el éxito 31 ÉxitoFracaso
  • 32. Falla Sistémica: Factores (causas) ▪ Objetivos confusos ▪ Pobre entendimiento del sistema como un todo ▪ Diseño defectuoso ▪ Incentivos individuales promoviendo objetivos sub-ordinados en lugar de globales (individualismo) 32 ÉxitoFracaso
  • 33. Falla Sistémica: Factores (causas) ▪ Retroalimentación inadecuada ▪ Pobre cooperación ▪ Falta de responsabilidad / rendición de cuentas 33 ÉxitoFracaso
  • 34. Visión compartida y estratégica : Ideas ▪ Falta de Desarrolladores en Estados Unidos y Canadá (1, 2, 3) 34
  • 35. Visión compartida y estratégica : Ideas ▪ Falta de Desarrolladores en Estados Unidos y Canadá In a survey of 760 employers across 29 states in the United States and three Canadian provinces, 83 percent of respondents reported a shortage of software development professionals, due mostly to the lack of qualified local talent. More than two-thirds …. 35
  • 36. Visión compartida y estratégica : Ideas 68% 64% 53% 51% 42% 38% 29% 24% 0% 10% 20% 30% 40% 50% 60% 70% 80% 36 Falta de Desarrolladores en Estados Unidos y Canadá: Estrategias de Mitigación
  • 37. Visión compartida y estratégica : Ideas ▪ Falta de Desarrolladores en Estados Unidos y Canadá: Oportunidades Software development professionals held more than 1 million jobs in the United States in 2012, and that number is expected to increase by 22 percent to more than 1.2 million jobs by 2022, significantly faster than average job growth for all occupations, according to the U.S. Department of Labor. 37
  • 38. Visión compartida y estratégica : Ideas Acaparar un x% del mercado de outsourcing de USA ▪ 1.0% entre 2012 y 2016 ▪ 1.5% entre 2017 y 2019 ▪ 2.0% entre 2020 y 2022 Año Puestos (MM) % Objetivo 2012 1.00 1.0% 10,200 … … … … 2016 1.06 1.0% 10,800 2017 1.08 1.5% 16,500 2018 1.10 1.5% 16,800 2019 1.12 1.5% 17,100 2020 1.16 2.0% 23,200 2021 1.18 2.0% 23,600 2022 1.20 2.0% 24,000 38
  • 39. Visión compartida y estratégica :Tendencias 39 Jóvenes entre 15-24 que ni estudian ni trabajan “Ninis” (4) 320,000 340,000 360,000 380,000 400,000 420,000 440,000 2008 2009 2010 2011 2012 2013 2014 TotalAnual
  • 40. 1,400,000 1,450,000 1,500,000 1,550,000 1,600,000 1,650,000 1,700,000 2008 2009 2010 2011 2012 2013 2014 Primario Visión compartida y estratégica :Tendencias 40 Población Ocupada (PO) según nivel educativo (4)
  • 41. 0 200,000 400,000 600,000 800,000 1,000,000 1,200,000 1,400,000 1,600,000 2008 2009 2010 2011 2012 2013 2014 Secundario Visión compartida y estratégica :Tendencias 41 Población Ocupada (PO) según nivel educativo (4)
  • 42. 0 200,000 400,000 600,000 800,000 1,000,000 2008 2009 2010 2011 2012 2013 2014 Universitario Visión compartida y estratégica :Tendencias 42 Población Ocupada (PO) según nivel educativo (4)
  • 43. 0 5,000 10,000 15,000 20,000 25,000 30,000 35,000 40,000 45,000 50,000 2008 2009 2010 2011 2012 2013 2014 Post-universitario Visión compartida y estratégica :Tendencias 43 Población Ocupada (PO) según nivel educativo (4)
  • 44. 0 50,000 100,000 150,000 200,000 250,000 300,000 350,000 2008 2009 2010 2011 2012 2013 2014 Ninguno Visión compartida y estratégica :Tendencias 44 Población Ocupada (PO) según nivel educativo (4)
  • 45. Visión compartida y estratégica 45 ▪ ¿Tengo un Plan Estratégico claro como individuo? ▪ ¿Lo tiene mi empresa? ▪ ¿Mi estrategia personal coincide con la de mi organización? ▪ ¿Tiene el país un Plan Estratégico claro? ▪ ¿Entiendo claramente cual es mi contribución a la Estrategia Nacional?
  • 46. ¿Y qué con las palabras Rimbombantes del título? 46 ▪ Holismo ▪ (del griego ὅλος [hólos]: "todo", "por entero", "totalidad") ▪ Posición que postula cómo los sistemas y sus propiedades deben ser analizados en su conjunto ▪ No solo a través de las partes que los componen ▪ Los sistemas pueden ser físicos, biológicos, sociales, económicos, mentales, lingüísticos, etc. Ing. de Software Sociedad Individuos Industrias Gobierno … …
  • 47. ¿Y qué con las palabras Rimbombantes del título? 47 ▪ Responsabilidad Social ▪ Carga, compromiso u obligación de los miembros de una sociedad ▪ Ya sea como individuos o como miembros de algún grupo tienen, tanto entre sí como para la sociedad en su conjunto ▪ No es lo mismo que la reciprocidad ▪ Implica deberes hacia nuestro entorno, sin esperar algo en retorno
  • 48. ¿Y qué con las palabras Rimbombantes del título? 48 ▪ Reciprocidad ▪ Del latín reciprocĭtas ▪ Correspondencia mutua de una persona o cosa con otra ▪ Aquello que se hace como devolución, compensación o restitución. ▪ “Hoy por ti, mañana por mí“ ▪ Implica cierto nivel de “interés” ▪ Sirvo esperando algo a cambio
  • 49. ¿Y qué con las palabras Rimbombantes del título? 49 ▪ Craftsmanship (Artesanía) ▪ Habilidad en un arte u oficio en particular ▪ (Software) Movimiento que busca la excelencia técnica ▪ (Software) Busca mejorar las habilidades de los desarrolladores ▪ No niega la necesidad de otras habilidades (blandas, liderazgo, etc.) ▪ Pero exige que se vele por la excelencia técnica y la atención por los detalles
  • 50. Devolver a la comunidad: pasar de la reciprocidad a la responsabilidad social 50 ▪ [Individuos] Estoy siendo eficiente en mi trabajo ▪ [Empresas] Estoy permitiendo que el ecosistema se regenere ▪ [Comunidades] Estamos velando por el desarrollo de nuestros miembros ▪ [País] Estamos trazando estrategias claras para el desarrollo común ▪ [País] Estamos tratando de equilibrar la balanza de pago, en el contexto de las TICs
  • 51. < Aspectos Técnicos > • Clean Code: Motivaciones • Calidad sin compromisos • Fanatismo por Herramientas vs Cultivo de profesión • Automatización • Sumergir la cabeza 51
  • 52. Clean Code: Motivaciones 52 ▪ Riesgo de Default ▪ Evento en el cual compañías o individuos no serán capaces de cumplir con sus obligaciones ▪ Pagar deudas ▪ Producir rentabilidad esperada ▪ Mitigación: exigir mayor tasa de retorno (rentabilidad)
  • 53. Clean Code: Motivaciones 53 Imagina que… ▪ Eres un inversionista con un capital disponible de USD$3MM ▪ Te presentan dos proyectos de software cada uno por una empresa distinta ▪ Uno de tus asesores técnicos te aconseja indagar un poco sobre los procesos de cada empresa y ver su desempeño en proyectos pasados
  • 54. Clean Code: Motivaciones | Evidencias “Concursante A” 54 (5)
  • 55. Clean Code: Motivaciones | Evidencias “Concursante B” Para construir el URI (BuildURI) a partir de Request REST se debe: ▪ Realizar las siguientes validaciones: ▪ El URL base no puede ser nulo ▪ Ningún parámetro puede tener valor nulo ▪ Reemplazar todos los parámetros nombrados de la URL con su valor ▪ Conformar el nuevo URL Base ▪ Conformar el recurso, si existe ▪ Reemplazar el URL base con el nuevo ▪ Construir el URL final ▪ Obtener los parámetros del Query String ▪ Combinar el recurso con los parámetros ▪ Si no hay parámetros en el Query String retornar recurso actual ▪ De lo contrario agregar parámetros al recurso 55
  • 56. Clean Code: Motivaciones | Evidencias “Concursante B” 56
  • 57. Clean Code: Motivaciones 57 ▪ Riesgo de Default ▪ En el tiempo, ¿Cuál concursante (A ó B) tiene mas probabilidades de completar el proyecto respetando Calidad, Costo yTiempo ▪ ¿Cuál de los dos es mas riesgoso ▪ ¿Cuál de los dos puede incumplir con más facilidad?
  • 58. Clean Code: Motivaciones 58 ▪ Riesgo de Maturity ▪ Posibilidad de que las tasas de intereses cambien drásticamente, mientras su dinero está atado a una inversión ▪ Mitigación: Inversionistas cargan una prima (seguro) mientras mas alto sea este riesgo ▪ “En español” mientras más tiempo sea necesario para recuperar una inversión, mas alto el riesgo
  • 59. Clean Code: Motivaciones 59 Imagina que… ▪ Eres un inversionista con un capital disponible de USD$3MM ▪ Te presentan dos proyectos de software, cada uno por una empresa distinta ▪ Uno de tus asesores técnicos te aconseja indagar un poco sobre los procesos de cada empresa y ver su desempeño en proyectos pasados
  • 60. Clean Code: Motivaciones | Evidencias “Concursante A” 60 0 10 20 30 40 50 60 0 1 2 3 4 5 6 7 8 9 10 11 12 2 años:Trabajo Estimado vs. Completado Trabajo Estimado Trabajo Completado Esfuerzo entregado (periodo): 545
  • 61. Clean Code: Motivaciones | Evidencias “Concursante B” 61 0 20 40 60 80 100 120 140 160 0 1 2 3 4 5 6 7 8 9 10 11 12 2 años:Trabajo Estimado vs. Completado Trabajo Estimado Trabajo Completado Esfuerzo entregado (periodo): 994
  • 62. Clean Code: Motivaciones ▪ Claramente el Concursante B entrega más valor por unidad de tiempo (iteración) ▪ Veamos la misma data desde otros ángulos 62
  • 63. Clean Code: Motivaciones | Evidencias “Concursante A” 63 0 5 10 15 20 25 30 35 40 45 50 0 1 2 3 4 5 6 7 8 9 10 11 12 Velocidad por Iteración
  • 64. Clean Code: Motivaciones | Evidencias “Concursante B” 64 0 20 40 60 80 100 120 140 0 1 2 3 4 5 6 7 8 9 10 11 12 Velocidad por Iteración
  • 65. Clean Code: Motivaciones Indagando sobre el deterioro constante de la velocidad, el asesor en Gestión delTalento Humano, le pide a los concursantes otras evidencias, entre ellas las estadísticas de Rotación de Personal 65
  • 66. Clean Code: Motivaciones | Evidencias “Concursante A” 66 0.00% 0.10% 0.20% 0.30% 0.40% 0.50% 0.60% 0.70% 0.80% 0.90% 0 1 2 3 4 5 6 7 8 9 10 11 12 Rotació Personal
  • 67. Clean Code: Motivaciones | Evidencias “Concursante B” 67 0.00% 2.00% 4.00% 6.00% 8.00% 10.00% 12.00% 0 1 2 3 4 5 6 7 8 9 10 11 12 Rotació Personal
  • 68. Clean Code: Motivaciones 68 ▪ Riesgo de Maturity ▪ ¿ Cuál de los dos equipos es más certero en sus estimaciones ▪ ¿ Cuál da menos sorpresas? ▪ ¿ Cuál está tendiendo al colapso? ▪ ¿ Cuál tiene un paso sostenido?
  • 69. Clean Code: Motivaciones 69 ▪ Riesgo de Liquidity ▪ Esfuerzo / Perdida potencial para transformar "liquidar" activos ▪ Llevarlos a su manera más liquida ($ efectivo) ▪ ¿Cuánto debo perder para liquidar los activos ante una situación adversa? ▪ Mitigación: crear entregables parciales útiles (código productivo:Agile?) ▪ Mitigación: respetar estándares y buenas prácticas, promoviendo la continuidad del trabajo en caso de venta del proyecto
  • 70. Clean Code: Motivaciones 70 Imagina que… ▪ Digamos que decidiste invertir en uno de los dos proyectos tus USD$3MM ▪ Y que ya ha pasado el 90% del tiempo estimado e (idealmente) se han erogado el 90% de los USD$3MM => 2.7MM ▪ Quedando USD$0.3MM líquidos en el presupuesto ▪ Y de repente, el proyecto aborta: ¿Qué hacemos?
  • 71. Clean Code: Motivaciones 71 ¿Cómo liquidar tu inversión? ▪ Vender el proyecto a otro inversionista ▪ Comercializar el producto como este ▪ Buscar financiamiento, reactivar el proyecto y esperar que resulte ▪ …
  • 72. Clean Code: Motivaciones 72 Tienes 2 escenarios posibles: Equipo A o Equipo B Trabajando con el Equipo A • Base de código limpia y mantenible • Velocidad constante • Equipo motivado • Equipo energético Trabajando con el Equipo B • Base de código insostenible • Velocidad prácticamente nula • Equipo desmotivado • Equipo desgastado
  • 73. Clean Code: Motivaciones 73 ▪ Competitividad ▪ Las buenas prácticas de ingeniera de software son una ventaja competitiva ▪ Reduce el tiempo de ciclo ▪ Equipos motivados ▪ Bajo nivel de estrés ▪ Mas tiempo para investigación y desarrollo ▪ Menor tasa de defectos ▪ Imagen corporativa / Marca con mayor valor ante clientes
  • 74. Clean Code: Motivaciones 74 ▪ Work / Life balance ▪ Menos problemas en producción ▪ Menos retrasos en fechas de compromiso ▪ Menos estrés ▪ Más tiempo para estar con familiares y amigos ▪ Más tiempo para hacer actividades de esparcimiento
  • 75. Clean Code: Motivaciones 75 ▪ Confianza: Propia, Colegas y Clientes ▪ Moral alta, creación constante de productos de calidad ▪ Colegas pueden confiar entre sí, debido al apego a estándares ▪ Evitar la frase “este código es de …”, y cuando el “dueño” falta? ▪ Empleadores / Clientes más satisfechos con el valor ganado ▪ Más libertad de acción menos fiscalizaciones absurdas: “látigo”, “vestimenta”, “horarios”, …
  • 76. ¿Por qué no debemos comprometer la calidad de nuestras creaciones? 76 ▪ Refactorizar código (método RestClient.BuildUri()) ▪ Mantenibilidad: capacidad del código de dejarse tocar sin infundir un miedo paralizante ▪ La mejora continua de la base de código (refactoring) ayuda a tener una alta mantenibilidad ▪ Evitando la Codfobia (fobia al código): miedo irracional percibido por el programador vago ante sus propias creaciones cuando estas salen de su control ▪ Ejemplos de código sucio en herramienta open source ▪ 2K LOC file: SimpleJson.cs [RestSharp v105.2.3 @ GitHub] ▪ Método sobre-complicado: RestClient.BuildUri(IRestRequest) [RestSharp v105.2.3 @ GitHub]
  • 77. "No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión 77 ▪ Herramientas ▪ ¿Prefieres un ingeniero civil experto en Martillos y Niveles o uno que domine bien el diseño de estructuras y cargas de la edificación? ▪ El primero te construirá una casa con excelente terminación, pero que puede colapsar ▪ El segundo se asegura de que los elementos principales estén en su punto, ▪ y además se fija en los detalles de terminación ▪ En nuestra profesión los Lenguajes y Frameworks son Herramientas, no conocimientos claves ▪ Debemos utilizarlos, pero no sobredimensionarlos, vale más cultivar la profesión
  • 78. "No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión 78 ▪ Ejemplo: BoundaryTest & JSON [de]serialization ▪ Ver caso en mi blog BoundaryTest:JSON De-serialization with Json.NET ▪ @ http://tales-of-agile-adoption.blogspot.com/2015/05/boundary-test-json-de- serialization.html ▪ Resumen: Aislar los frameworks y las herramientas lo más posible del core de nuestro aplicativo ▪ Degradándolos(as) a su justo Segundo oTercer lugar en nuestra arquitectura
  • 79. "No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión 79 ▪ Arquitectura de una Casa (a)
  • 80. "No es la flecha es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión 80 ▪ Arquitectura de una Casa (b)
  • 81. “Libera tu mente”: ¡Automatiza! 81 ▪ Imagina que trabajas en un ERP o POS ▪ Aplicativos de mediano a gran tamaño en cuanto a características ▪ Estas “listo” para liberar una nueva versión ▪ Pero tienes que realizar todo el Q.A. manual ▪ ¿Cuánto tiempo te tomara este esfuerzo? Días, semanas, meses, ?, …
  • 82. “Libera tu mente”: ¡Automatiza! 82 ▪ Los pequeños detalles cuentan ▪ Ahora supón que estás en el Nirvana del desarrollo ▪ Tienes todas tus pruebas automatizadas ▪ Todos los niveles cubiertos: unitario, integración, aceptación, … ▪ Pero el proceso de “liberar” tus entregables sigue siendo manual ▪ Si haces liberaciones semestrales, probablemente no te impacte, pero ▪ Y si queremos hacer liberaciones semanales, o diarias …
  • 83. “Libera tu mente”: ¡Automatiza! 83 ▪ Los pequeños detalles cuentan ▪ Debemos automatizar cada detalle posible del ciclo de desarrollo ▪ Cada intervención manual, distinta a escribir el código fuente, es gasto ▪ Son pequeños bloqueos a nuestro sistema ▪ Se pueden acumular y llevarnos a una Falla Sistémica
  • 84. “Libera tu mente”: ¡Automatiza! Script para marcar (tag) y crear releases en GitHub 84
  • 85. “Libera tu mente”: ¡Automatiza! 85 Objetivo ▪ Automatizar la creación de los releases de un API en GitHub ▪ Marcar (tag) el release, y publicar los artefactos asociados ▪ Crear versiones semanales con el siguiente formato vYYYY.WW.99Constante ‘v’ Año: 4 dígitos Semana (01- 53): 2 dígitos Hot-fixes
  • 86. “Libera tu mente”: ¡Automatiza! 86 Pasos => Probar en línea @TutorialsPoint ▪ Crear script para evaluar la versión siguiente ▪ Incluir en el CI Server como tarea calendarizada semanalmente ▪ Completar con github-release @ https://github.com/aktau/github-release (o similar) ▪ Un cambio sencillo, pequeño y efectivo ▪ Evitar grandes proyectos de “mejoras” ▪ los cuales son cancelados por “falta de tiempo”
  • 87. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 87 ▪ ¿Me sirve de algo saber cómo funcionan los Discos Duros? ▪ ¿Cuál es la utilidad de saber como funciona el protocolo UDP? ▪ ¿La CPU? ▪ ¿La RAM? ▪ …
  • 88. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 88 ▪ Ejemplo: ▪ Inicialización de una Matriz (arreglo 2D) Tamaño x dimensión (8K x 8K) elementos Cantidad de accesos (método ‘C’) C/u hace 3 corridas mide tiempo y toma promedio al final
  • 89. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 89 - 500,000,000 1,000,000,000 1,500,000,000 2,000,000,000 2,500,000,000 3,000,000,000 3,500,000,000 4,000,000,000 Init A Init B Init C Nano-segundos por Método de Inicialización 1x 96x 61x The box Java SE 1.8u65 Windows 8.1 Pro N 64-bit 16GB RAM 2x @ 1,333MHz Intel Core i7 @ 2.30GHz HP Pavillion m7
  • 90. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 90 Código @ https://github.com/lsolano/array_init_demo ¿Qué está pasando?
  • 91. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 91 ▪ ¿Qué está pasando? ▪ Hardware optimizado para leer bloques contiguos de RAM ▪ Buffer de trabajo de la CPU pequeño en relación a la RAM ▪ Si la data buscada esta en bloques de RAM distintos ▪ Se carga el 1er bloque, luego se lee / escribe la celda ▪ Se carga el 2do bloque, luego se lee / escribe la celda
  • 92. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 92 ▪ ¿Qué está pasando? ▪ El Hardware esta leyendo “bloques” grandes ▪ Nuestra abstracción (array) nos hace creer que podemos acceder a celdas individuales en O(1)
  • 93. “Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra 93 1 2 3 4 5 6 7 8 9 … 16 17 … 24 1 4 7 16 2 5 8 17 3 6 9 24 Columnas Filas Load [RAM => Cache] 1-8 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] 9 - 16 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] 17-24 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] 1 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] 2 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] 3 Cache <=> CPU Store [Cache => RAM] Load [RAM => Cache] … Leídos, no utilizados: Desperdicio
  • 94. Referencias ▪ (1) Research Shows Employers Struggle with Shortage in Software Development Talent @Yahoo Finance ▪ http://finance.yahoo.com/news/research-shows-employers-struggle-shortage-130000477.html. ▪ (2)Technology Councils of North America ▪ http://www.tecna.org/ ▪ (3)TECNA's Software Development Skills Survey ▪ http://www.tecna.org/software-development-talent-survey.html#sthash.PNuhbBO0.dpbs 94
  • 95. Referencias ▪ (4) Oficina Nacional de Estadística, estadísticas sobre Mercado de trabajo ▪ http://www.one.gob.do/Estadisticas/9/mercado-de-trabajo- ▪ (5) RestSharp 105.2.3 @ GitHub: RestClient.BuildUri(IRestRequest) ▪ https://github.com/restsharp/RestSharp/blob/105.2.3/RestSharp/RestClient.cs 95
  • 96. 96 Voy de salida… ¡Gracias por su atención!
  • 97. ¿Cuál es su relación? 97 ¿Alguna idea?