Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)
-
Upload
lorenzo-solano -
Category
Software
-
view
251 -
download
2
Transcript of Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)
![Page 1: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/1.jpg)
1
Systems Thinking and Software CraftsmanshipUna visión holística sobre la Ingeniería de Software
@lorenzo_solanolorenzo.sm
lorenzo-solano-a8455133
+LorenzoSolano
![Page 2: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/2.jpg)
2
Systems Thinking• Contextos• Desarrollo de Software
Sostenible• Visión Compartida y Estratégica
• Devolver a la Comunidad
![Page 3: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/3.jpg)
3
¿Cual es su relación?
![Page 4: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/4.jpg)
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 SengeThe Fifth Discipline: The Art and Practice of the Learning
Organization
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 5: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/5.jpg)
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
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 6: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/6.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 7: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/7.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 8: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/8.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 9: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/9.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 10: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/10.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 11: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/11.jpg)
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?
Global
Regional
Nacional
Laboral
Familiar
Personal
![Page 12: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/12.jpg)
12
Volviendo al Patio
![Page 13: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/13.jpg)
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"
![Page 14: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/14.jpg)
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
![Page 15: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/15.jpg)
15
Volviendo al Patio
Prioridades
1. Confianza en los Partidos Políticos
2. Percepción de la corrupción3. Educación4. Salud5. Medio Ambiente6. …
![Page 16: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/16.jpg)
16
¿Cuál es su relación?
¿Alguna idea?
![Page 17: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/17.jpg)
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
DDT
![Page 18: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/18.jpg)
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
DDT
![Page 19: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/19.jpg)
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 comen Geckos, 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
+ DDT
DDT
![Page 20: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/20.jpg)
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
![Page 21: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/21.jpg)
21
Desarrollo de software sostenible
▪ ¿Cuál es nuestro ecosistema?▪ Individuos▪ Familias▪ Comunidades▪ Empresas e Industrias▪ Sistema Educativo▪ Gobierno
![Page 22: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/22.jpg)
22
Desarrollo de software sostenible
▪ ¿Cuál es nuestro ecosistema?▪ Región, Mundo
![Page 23: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/23.jpg)
23
Ecosistema
Nicho
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
![Page 24: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/24.jpg)
24
Ecosistema
Nicho
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
![Page 25: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/25.jpg)
25
Ecosistema
Nicho
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
![Page 26: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/26.jpg)
26
Ecosistema
Nicho
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
![Page 27: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/27.jpg)
27
Ecosistema
Nicho
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
![Page 28: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/28.jpg)
28
Ecosistema
Nicho
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
![Page 29: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/29.jpg)
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?▪ …
![Page 30: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/30.jpg)
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▪ …
![Page 31: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/31.jpg)
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
ÉxitoFracaso
![Page 32: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/32.jpg)
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)
ÉxitoFracaso
![Page 33: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/33.jpg)
33
Falla Sistémica: Factores (causas)
▪ Retroalimentación inadecuada
▪ Pobre cooperación
▪ Falta de responsabilidad / rendición de cuentas
ÉxitoFracaso
![Page 34: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/34.jpg)
34
Visión compartida y estratégica : Ideas
▪ Falta de Desarrolladores en Estados Unidos y Canadá (1, 2, 3)
![Page 35: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/35.jpg)
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 ….
![Page 36: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/36.jpg)
36
Visión compartida y estratégica : Ideas
Entrenam
iento
inte
rno
Pasantia
Re-entr
enamie
nto e
mple
ados
Redes de re
cluta
mie
nto y
rete
nción
Outsourc
ing
Eventos
especi
ales
Asoci
ación c
on entid
ades educa
tivas
Emple
ados virt
uales
0%10%20%30%40%50%60%70%80%
68% 64% 53% 51% 42% 38% 29% 24%
Falta de Desarrolladores en Estados Unidos y Canadá: Estrategias de Mitigación
![Page 37: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/37.jpg)
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.
![Page 38: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/38.jpg)
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) % Objetiv
o2012 1.00 1.0% 10,200
… … … …2016 1.06 1.0% 10,8002017 1.08 1.5% 16,5002018 1.10 1.5% 16,8002019 1.12 1.5% 17,1002020 1.16 2.0% 23,2002021 1.18 2.0% 23,6002022 1.20 2.0% 24,000
![Page 39: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/39.jpg)
39
Visión compartida y estratégica : TendenciasJóvenes entre 15-24 que ni estudian ni trabajan “Ninis” (4)
2008 2009 2010 2011 2012 2013 2014 320,000
340,000
360,000
380,000
400,000
420,000
440,000 Total Anual
![Page 40: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/40.jpg)
402008 2009 2010 2011 2012 2013 20141,450,000
1,500,000
1,550,000
1,600,000
1,650,000Primario
Visión compartida y estratégica : TendenciasPoblación Ocupada (PO) según nivel educativo (4)
![Page 41: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/41.jpg)
41
2008 2009 2010 2011 2012 2013 20140200,000400,000600,000800,000
1,000,0001,200,0001,400,0001,600,000
Secundario
Visión compartida y estratégica : TendenciasPoblación Ocupada (PO) según nivel educativo (4)
![Page 42: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/42.jpg)
422008 2009 2010 2011 2012 2013 20140
100,000200,000300,000400,000500,000600,000700,000800,000900,000
Universitario
Visión compartida y estratégica : TendenciasPoblación Ocupada (PO) según nivel educativo (4)
![Page 43: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/43.jpg)
432008 2009 2010 2011 2012 2013 20140
5,00010,00015,00020,00025,00030,00035,00040,00045,000
Post-universitario
Visión compartida y estratégica : TendenciasPoblación Ocupada (PO) según nivel educativo (4)
![Page 44: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/44.jpg)
442008 2009 2010 2011 2012 2013 2014230,000
240,000250,000260,000270,000280,000290,000300,000
Ninguno
Visión compartida y estratégica : TendenciasPoblación Ocupada (PO) según nivel educativo (4)
![Page 45: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/45.jpg)
45
Visión compartida y estratégica
▪ ¿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?
![Page 46: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/46.jpg)
46
¿Y qué con las palabras Rimbombantes del título?
▪ 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 Softwar
e
Sociedad Individu
os
Industrias
Gobierno
…
…
![Page 47: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/47.jpg)
47
¿Y qué con las palabras Rimbombantes del título?
▪ 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
![Page 48: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/48.jpg)
48
¿Y qué con las palabras Rimbombantes del título?
▪ 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
![Page 49: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/49.jpg)
49
¿Y qué con las palabras Rimbombantes del título?
▪ 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
![Page 50: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/50.jpg)
50
Devolver a la comunidad: pasar de la reciprocidad a la responsabilidad social
▪ [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
![Page 51: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/51.jpg)
51
< Aspectos Técnicos >• Clean Code: Motivaciones• Calidad sin compromisos• Fanatismo por Herramientas vs
Cultivo de profesión
• Automatización• Sumergir la cabeza
![Page 52: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/52.jpg)
52
Clean Code: Motivaciones
▪ 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)
![Page 53: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/53.jpg)
53
Clean Code: Motivaciones
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
![Page 54: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/54.jpg)
54
Clean Code: Motivaciones | Evidencias “Concursante A”
(5)
![Page 55: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/55.jpg)
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
![Page 56: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/56.jpg)
56
Clean Code: Motivaciones | Evidencias “Concursante B”
![Page 57: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/57.jpg)
57
Clean Code: Motivaciones
▪ Riesgo de Default
▪ En el tiempo, ¿Cuál concursante (A ó B) tiene mas probabilidades de completar el proyecto respetando Calidad, Costo y Tiempo
▪ ¿Cuál de los dos es mas riesgoso
▪ ¿Cuál de los dos puede incumplir con más facilidad?
![Page 58: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/58.jpg)
58
Clean Code: Motivaciones
▪ 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
![Page 59: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/59.jpg)
59
Clean Code: Motivaciones
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
![Page 60: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/60.jpg)
60
Clean Code: Motivaciones | Evidencias “Concursante A”
0 1 2 3 4 5 6 7 8 9 10 11 120
10
20
30
40
50
602 años: Trabajo Estimado vs. Completado
Trabajo Estimado Trabajo Completado
Esfuerzo entregado (periodo): 545
![Page 61: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/61.jpg)
61
Clean Code: Motivaciones | Evidencias “Concursante B”
0 1 2 3 4 5 6 7 8 9 10 11 12020406080
100120140160
2 años: Trabajo Estimado vs. Completado
Trabajo Estimado Trabajo Completado
Esfuerzo entregado (periodo): 994
![Page 62: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/62.jpg)
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
![Page 63: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/63.jpg)
63
Clean Code: Motivaciones | Evidencias “Concursante A”
0 1 2 3 4 5 6 7 8 9 10 11 1205
101520253035404550
Velocidad por Iteración
![Page 64: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/64.jpg)
64
Clean Code: Motivaciones | Evidencias “Concursante B”
0 1 2 3 4 5 6 7 8 9 10 11 120
20
40
60
80
100
120
140Velocidad por Iteración
![Page 65: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/65.jpg)
65
Clean Code: Motivaciones
Indagando sobre el deterioro constante de la velocidad, el asesor en Gestión del Talento Humano,
le pide a los concursantes otras evidencias, entre ellas las estadísticas de Rotación de Personal
![Page 66: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/66.jpg)
66
Clean Code: Motivaciones | Evidencias “Concursante A”
0 1 2 3 4 5 6 7 8 9 10 11 120.00%0.10%0.20%0.30%0.40%0.50%0.60%0.70%0.80%0.90%
Rotació Personal
![Page 67: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/67.jpg)
67
Clean Code: Motivaciones | Evidencias “Concursante B”
0 1 2 3 4 5 6 7 8 9 10 11 120.00%
2.00%
4.00%
6.00%
8.00%
10.00%
12.00%Rotació Personal
![Page 68: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/68.jpg)
68
Clean Code: Motivaciones
▪ 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?
![Page 69: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/69.jpg)
69
Clean Code: Motivaciones
▪ 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
![Page 70: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/70.jpg)
70
Clean Code: Motivaciones
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?
![Page 71: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/71.jpg)
71
Clean Code: Motivaciones
¿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
▪ …
![Page 72: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/72.jpg)
72
Clean Code: Motivaciones
Tienes 2 escenarios posibles: Equipo A o Equipo BTrabajando con el Equipo
A
• Base de código limpia y mantenible
• Velocidad constante• Equipo motivado• Equipo energéticoTrabajando con el Equipo
B
• Base de código insostenible• Velocidad prácticamente nula• Equipo desmotivado• Equipo desgastado
![Page 73: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/73.jpg)
73
Clean Code: Motivaciones
▪ 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
![Page 74: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/74.jpg)
74
Clean Code: Motivaciones
▪ 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
![Page 75: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/75.jpg)
75
Clean Code: Motivaciones
▪ 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”, …
![Page 76: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/76.jpg)
76
¿Por qué no debemos comprometer la calidad de nuestras creaciones?
▪ 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]
![Page 77: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/77.jpg)
77
"No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión
▪ 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
![Page 78: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/78.jpg)
78
"No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión
▪ Ejemplo: Boundary Test & JSON [de]serialization▪ Ver caso en mi blog Boundary Test: 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 o Tercer lugar en nuestra arquitectura
![Page 79: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/79.jpg)
79
"No es la flecha, es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión
▪ Arquitectura de una Casa (a)
![Page 80: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/80.jpg)
80
"No es la flecha es el indio”: pasar del fanatismo por herramientas al cultivo de nuestra profesión
▪ Arquitectura de una Casa (b)
![Page 81: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/81.jpg)
81
“Libera tu mente”: ¡Automatiza!
▪ 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, ?, …
![Page 82: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/82.jpg)
82
“Libera tu mente”: ¡Automatiza!
▪ 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 …
![Page 83: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/83.jpg)
83
“Libera tu mente”: ¡Automatiza!
▪ 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
![Page 84: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/84.jpg)
84
“Libera tu mente”: ¡Automatiza!Script para marcar (tag) y crear releases
en GitHub
![Page 85: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/85.jpg)
85
“Libera tu mente”: ¡Automatiza!
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
![Page 86: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/86.jpg)
86
“Libera tu mente”: ¡Automatiza!
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”
![Page 87: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/87.jpg)
87
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
▪ ¿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?
▪ …
![Page 88: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/88.jpg)
88
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
▪ 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
![Page 89: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/89.jpg)
89
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
Init A Init B Init C - 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
Nano-segundos por Método de Inicialización
1x
96x
61x
The boxJava SE 1.8u65
Windows 8.1 Pro N 64-bit16GB RAM 2x @ 1,333MHzIntel Core i7 @ 2.30GHz
HP Pavillion m7
![Page 90: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/90.jpg)
90
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
Código @ https://github.com/lsolano/array_init_demo
¿Qué está pasando?
![Page 91: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/91.jpg)
91
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
▪ ¿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
![Page 92: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/92.jpg)
92
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
▪ ¿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)
![Page 93: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/93.jpg)
93
“Sumerge la cabeza”: beneficios de conocer las capas inferiores a la nuestra
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 <=>
CPUStore [Cache => RAM]Load [RAM => Cache]
9 - 16 Cache <=> CPUStore [Cache => RAM]Load [RAM => Cache]
17-24 Cache <=> CPUStore [Cache => RAM]
Load [RAM => Cache]1 Cache <=>
CPUStore [Cache => RAM]Load [RAM => Cache]
2 Cache <=> CPUStore [Cache => RAM]Load [RAM => Cache]
3 Cache <=> CPUStore [Cache => RAM]Load [RAM => Cache]
…
Leídos, no utilizados: Desperdi
cio
![Page 94: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/94.jpg)
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
![Page 95: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/95.jpg)
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
![Page 96: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/96.jpg)
96
Voy de salida…
¡Gracias por su
atención!
![Page 97: Systems Thinking and Software Craftsmanship @ #CodeCampSDQ 5.0 (2016)](https://reader031.fdocuments.us/reader031/viewer/2022012923/58816cea1a28abf7478b4ce3/html5/thumbnails/97.jpg)
97
¿Cuál es su relación?
¿Alguna idea?