Aversión al riesgo en un contexto decisorio de marco estrecho

En mis 15 años de experiencia no he visto nunca un proyecto donde lo que se definió en los requisitos es lo que se quería al final

Sin embargo sí me he topado con proyectos de los de cuadernos de carga, donde despues de prácticamente 1 año de definiciones, 2 de implementación, y otro de modificación, se ha tenido que tirar todo el software a la basura por haber cambiado completamente el contexto y las necesidades entre medias.

Creo que algo de ésto tiene también el sesgo del que nos habla @Helm. Creo que biológicamente somos muy malos prediciendo, y la naturaleza es un entorno cambiante en el que hemos tenido que evolucionar sin certezas. El descubrimiento de las matemáticas y las certezas absolutas es mucho posterior y requiere un entrenamiento, cableado fuera de lo normal y sobre todo esfuerzo, pasar por encima de nuestro “sistema 1” diseñado biológicamente para evitar riesgos a toda costa. Y esto es independiente de todas las otras ventajas que nos puede aportar actuar de otro modo (ya sea aumentar la probabilidad de ganancias o la utilidad de un software)

9 Me gusta

Siento decir esto pero indica malos profesionales, no me deja otra. La disciplina es la que es, el que no la cumpla no puede aludir al entorno, además que la mal definición de requisitos y disipar incertidumbres primaria afectan gravemente al proyecto en sus fases posteriores y el fracaso viene de ahí en un porcentaje muy alto.

Vale lo que le digo en el párrafo anterior.

Que no es predicción, que no son brujos los que hacen software, que es una disciplina, un know how, saber entrevistar, hacer pruebas de concepto, demos con dibujitos, prototípados, yo que sé hay mil formas de obtener la información y reitero, es absolutamente necesario que se sepa qué debe hacer el software y qué no debe hacer, además de cargas, disponibilidades, etc…

Sinceramente sé que este mundo existe, pero que profesionales lo defiendan me deja a cuadros y me da pena, pensé que eran sólo los comerciales.

Estimado @autoinmune, con sus comentarios deja claro y patente, y no se ofenda, que no tiene la menor idea de lo que habla. De verdad, no se empecine. No existe nadie capaz de preveer todo lo que puede salir mal en un proyecto y especificarlo a priori, por eso existen técnicas iterativas que dan infinitamente mejor resultado y aún más con el software, que es un mundo con infinitas variables. En un simple desarrollo web puede combinar, diferentes tipos de navegador, diferentes tipos de usabilidad, diferentes tipos de pantallas, la estética subjetiva, tipos de dispositivos, sistemas operativos, requisitos diversos de datos, infinitos tipos de validación de datos, etc etc y todo ello generando una serie de combinaciones que es totalmente imposible predecir y por lo que se hacen rondas analizando el resultado para dar un feedback.

18 Me gusta

Me ha gustado mucho su post. Muchas gracias.

Sin embargo, no estoy del todo de acuerdo con lo que usted propone en el ejemplo de Adarve. Los fundamentales del grupo pueden parecernos razonablemente buenos. Pero tal vez haya una de las empresas que tiene un P/E estrepitosamente bajo (cosa que normalmente viene dada porque dicha empresa tiene un problema asociado). En tal caso, dicha empresa estaría tirando de la media del P/E para abajo, haciéndonos pensar, con un marco ancho, que el conjunto tiene un valor bueno, pero perdiendo parte de la información.

Igual podría pasar con el resto de fundamentales. Dando lugar a que tuviéramos un conjunto de empresas potencialmente fallidas, con una media en sus fundamentales muy agradable al ojo.

Tal vez lo ideal fuera combinar análisis de marco ancho y estrecho, pero, por supuesto, esto llevaría una carga de trabajo muy elevada.

9 Me gusta

Tiene Vd razón. Es como el salario medio en una habitación cuando entra @Fernando. Por eso precisamente intentamos dar información más representativa

Pero vamos, una vez entendida la intención del ejemplo (o interpretada por lo que mi respecta) los detalles técnicos son menos importantes ¿no le parece?

10 Me gusta

Si, sí. y ahora ponemos 20 caracteres y un poco más que es todo lo que le voy a responder… ahí queda mi idea y suya, para la posteridad.

Usted sí que sabe, pero yo como de esto antes de que usted naciera.

Por supuesto.

Perdoneme, si ha parecido que decía que los valores de Adarve podían ser malos. Lo he usado ya que era el ejemplo, propuesto. Cuando he dicho Adarve, podría haber dicho cualquier otro nombre que hubiera propuesto @Helm, independientemente de lo que llevara en cartera.

En cualquier caso, a mí el razonamiento me ha servido para pensar, y para reforzar el concepto ese de que estoy lejos de la verdad. Y lo seguiré estando.

Así pues, sólo hay que andar el camino. Y disfrutarlo, si se puede.

7 Me gusta

La cuestión aquí radica en el “mi punto de vista es el único bueno”, cuando verdades universales hay pocas y el tiempo en cuanto a cantidad no suele ser sinónimo de calidad: por un lado deja apartada la posibilidad de que el aprendiz pueda enseñar al maestro, y por otro, hay personas, que seguro no es su caso, tienen 30 años de experiencia, repitiendo el primer año.

Una pequeña disertación (mentira, larga):

Si dividimos la forma de afrontar los proyectos en una forma tradicional llamemosle en cascada o waterfall vs una forma moderna llamemosle ágil o “agile”, cada proyecto puede aplicarse mejor siguiendo una o la otra o a veces, mezclando alguna etapa de una en la otra.

Waterfall puede servir para proyectos de envergadura o alcance pequeño y/o muy acotados, con equipos pequeños. Por ej. desarrollar una utilidad, un CLI o librería de conexión a una API o una prueba de concepto para validar una hipótesis. Y aún así, se enriquece si empleamos prácticas típicamente potenciadas con el agile como TDD, CI/CD por nombrar alguna.

Agile sirve para proyectos en los que la única forma de validar el proyecto es entregándolo y hacer, no ya sólo que su cliente lo pruebe y valide, si no que sus usuarios o a su vez clientes (e incluso usuarios de sus clientes) lo validen. Léase validar como hacer que se use. Un software sin usuarios …

La educción de requisitos puede formar parte de los artefactos que utilice para acometer un proyecto, tanto en waterfal como en agile. Pero la literatura e internet están llenas de fracasos de desarrollos puramente waterfal caja negra.

Por otro lado ver a un ente privilegiado y providente (una persona o comité) que es capaz de definir todo lo que debe hacer el software, mitigar el riesgo de desviación en alcance, presupuesto y tiempos, de modo que cuando unos trabajadores de cuello azul lo desarrollen y se entregue dentro del plazo comprometido (¿2-3 años vista?) con el cliente sea lo que este espera (y repito lo anterior que comentaba: que sea lo que usen sus usuarios o clientes), es como hacer sonar la flauta. Los proyectos se enriquecen cuando en ellos participan varios stakeholders: clientes, usuarios y equipo de desarrollo, típicamente multidisciplinar y se entrega de forma continua: cuello blanco

Le recomiendo que revise la historia del desarrollo del software, de cómo cuando al nacer, el desarrollo de software me refiero, nos fijamos en escuelas cercanas como la ingeniería industrial o arquitectura para copiar las mismas etapas (diseño-plano, perfiles-obreros, código-ladrillos) y cómo a través del tiempo y la frustración, se vio que debía haber otras formas de hacer software: movimiento agile y el agile manifiesto y que no eran trasladables 1 a 1 ni mucho menos por los graves problemas de sobrecostes y disgustos a la entrega.

Si necesita enlaces, puede pedírmelos.

Y por terminar esta parrafada que hasta a mi me está costando leer para repasar (¿quizás no debiera publicarla?) como se suele decir, como muestra vale un botón y partiendo de que la gente puede vivir y comer de muchos tipos de actividades y cómo afrontarlas, me encantaría que me pusiera ejemplos concretos, públicos (webs, Apps, sistemas, etc.) que se acometieron en alcance, presupuesto y tiempo con una estrategia waterfall, con recomendaciones de clientes y buen NPS; no hay más crédulo que el que ve y mete el dedo en el agujero del clavo. No es un reto, o quizás sí, como digo, de todo se aprende y me vendrá bien conocerlos.

Por mi lado, puedo hablarle directamente de www.dialenga.com, producto de mi empresa, desarrollado durante sus 3 años de vida con metodologías ágiles, con el usuario en el centro (product management, hablando con el cliente y usuario constantemente), entregas continuas mensuales y que usamos en nuestra propia empresa (por lo de Taleb y el ingeniero que vive debajo del puente), además de para más de 20 clientes y más 20000 usuarios. Sigue en evolución porque para mi el software es un ente vivo. Y podemos hablar de otros proyectos abordados igualmente si lo desea.

Un saludo.

7 Me gusta

Nada que disculpar. Estamos debatiendo y aprendiendo tod@s de tod@s. Muchas gracias

3 Me gusta

Yo diría que no, diría que radica en distinguir complejo de complicado, algo que no es tan difícil pero que al final acaba en bastante debate en el foro.

Desde mi punto de vista no hay ninguna.

Ya le digo yo que no, aprendo a diario digamos que da bagaje ver 30 años de cambios y asimilarlos… y lo que queda.

Lo que no se puede es afrontar un proyecto por complicado que sea sin definición previa, luego lo gestiona como quiera, el problema de informático es pensar como informático, algo inútil pues la informática sirve para algo, por lo tanto el informático ha de ser ‘mutante’ según el proyecto, si le toca un proyecto de medicina no le vendría mal una semana rotando un hospital por diferentes puestos, viendo las tareas a mecanizar y mejorar, he dicho un hospital como podría haber dicho cualquier otra cosa, esto se ha de hacer siempre, siempre, siempre, se ha de hablar el lenguaje del cliente, abogado, médico, contable, etc… de eso va mecanizar procesos de comprenderlos, organizarlos y mejorarlos. No de probar navegadores precisamente… el que no entienda esto que se dedique a otra cosa, escribir un programa en un lenguaje es como hablar un idioma, se puede aprender más o menos, pero luego hay que tener algo que decir, por lo tanto usted podrá saber chino y podrá dar una conferencia en chino si domina el tema de la conferencia, el chino no es el tema, es el me7dio, por lo tanto o aprende el tema o busca asesoramiento que le escriban la conferencia. Y creo que con esto lo he dicho todo. Luego gestiona el proyecto como quiera, si quiere con una libreta y un lápiz… de hecho he gestionado muchos proyectos así.

No creo que sea necesario comentar más. Yo creo en la reutilización y la escalabilidad del software así como los años aportan conocimiento para dejar unas prácticas y adoptar otras, pero es que no estamos hablando de esto, vuelvo al inicio: complicado vs complejo.

Dígame usted qué proyectos complejos ha realizado o ejemplos si quiere y se podrían analizar si son complejos o complicados. Ese es el tema y en primera fase como se actúa ante una u otra causa, en software y el la vida en general que al fin y al cabo es lo mismo.

Le agradezco de veras el tono y las formas.

2 Me gusta

Complicado vs complejo

Deje que utilice algunas fotos de un viejo libro (aunque no mucho, 2011), Management 3.0 por Jurgen Appelo para establecer un marco sobre el que hablar:


Por si no se lee bien:

Complicated referes to a system’s construction being too intricate to understand, unless you’re an expert, whereas complex and chaotic refer to a system’s behavior which is unpredictable to a small or large degree.

También interesantes en la imagen los dos modelos por David Snowden Cynefin y por Ralph Stacey The agreement and certainty model (o matriz)

Complejidad y predictabilidad

Complejidad en sistemas software

Destaco:

When it requires an expert to understand the structure of your software, I (the author) prefer to say it is complicated. And when the behavior of your system cannot be fully predicted (as in AI, neural networks, or multiplayer games), I say the software is complex.

Los proyectos software como systemas complejos adaptativos

…describes that systems composed of “agents” … can be molecules, neurons, web servers, or people, always organizing and reorganizing themselves into larger structures, and thereby forming new emergent structures with new emergent behaviors.

Resumen complejidad vs complicado
La complejidad aduce a cuán impredecible es un sistema o los sistemas en cuanto a los comportamientos que de ellos se esperan, mientras que el caracter complicado lo fija el nivel de experiencia de la persona que lo aborda.

Un sistema puede ser complejo y muy fácil de programar, por ej. El Juego de la Vida, que con unos patrones sencillos produce resultados inesperados. Y al contrario, un algoritmo u optimización para mejorar el rendimiento de un sistema puede ser muy complicado de conseguir, requiriendo a un experto que lo aborde, pero no afecta a su relación con su entorno y la salida siempre es la esperada.

El debate
Después de esta introducción larga, creo que por un lado podemos decir que estamos de acuerdo, o así lo veo yo, en que para abordar un problema, hay que pensar y rodearse de gente que ayude a descubrir qué se necesita (el gran QUÉ) por parte de clientes y usuarios con ayuda de expertos y el equipo multidisciplinar (recordemos que necesitar es distinto de querer).

Y el quid de la cuestión es la complejidad en las relaciones entre los diversos stakeholders como son clientes, usuarios, equipo de desarrollo (visto como desarrolladores y diseñadores de ux y ui) y otros elementos (márketing, legal, comercial, infraestructura o soporte). Complejidad por los resultados inesperados ante agentes con comportamientos impredecibles: ¿hemos entendido bien lo que nos pedían? ¿Cumplimos con el cliente, pero también con otros stakeholders? ¿Lo usarán los usuarios del cliente? ¿Que a lo mejor son sus propios clientes? Aquí puede haber preguntas mil.

Esta es la raíz del debate para mi, sea el proyecto optimizar el cuello de botella del cliente que ejecuta una transacción por minuto cuando lo deseado es 1 segundo (complicado) o conectarnos con una heterogenidad de sistemas para consultar fuentes de datos metereológicos algunos con APIs poco documentadas, otros con limitaciones de API por consumo temporal y otros a los que hay que hacer ingeniería inversa o web scraping donde cada semana cambián la forma de presentar los datos.

De modo que, complejidad vs complicado o expresado como eliminar la incertidumbre en el mejor de los casos para mi es semántica. Sabemos que queremos que el sistema responda en 1 segundo y no en 1 minuto (despejada la incertidumbre) y convertido en complicado, pero ahora entra la incertidumbre de cómo conseguirlo, aparece otra incertidumbre aunque despejamos la anterior. Puede ser que sea tan fácil como tocar un parámetro en algú sitio, o tener que cambiar media arquitectura o infraestructura.

Pero esto es un ejemplo muy sencillo, cuando hablamos de crear desde cero un software que tienen en la cabeza en forma de nebulosa nuestros clientes, la única forma de eliminar la incertidumbre es publicar cuanto antes, acortar los tiempos de entregabilidad (sic) de software funcionando, haciendo las actividades que sean necesarias para poder ponerlo en marcha cuanto antes, y esto es complejo porque intervienen de nuevo las personas y no sabemos cómo responderán: ¿les gustará a nuestros clientes? ¿les gustará a nuestros usuarios? y lo más importante ¿lo utilizarán? ¿pagarán por utilizarlo? Y no sé si les habrá pasado al resto, pero cuántas veces alguien describía un lanzador de satélites como que era lo que necesitaban, cuando en realidad les servía con un botón que copia&pegara un código.

Lo que aquí se ha comentado que es una receta para el desastre es abordar un desarrollo como un proyecto en cascada, caja negra, (ojo, que yo comentaba que puede tener sus aplicaciones y casos de uso en función del alcance, tipo de proyecto o de equipo) con una fase larga de extracción de requisitos ligándolo con que se eliminará toda la incertidumbre.

Y por enlazarlo algo, mínimamente al hilo, y ya que me perdonen los dioses o demonios del offtopic, nuestro Sistema 1 según Kahneman ha entrado sin pensar a contestar con un No a ¿eliminar incertidumbre por completo, desarrollo caja negra? Conseguir que tras varios meses analizando requisitos, sin validar nada, diseñar su ui, sin validar nada, programarlo, sin validar nada, probarlo, sin validar nada, y el último día, tras varios meses o años presentarlo, vuelvo a decir, que ya puede sonar la flauta (sin validar nada con cliente se refiere). Si esto sí que lo aborda, lo puede llamar agile o fragile, pero a fin de cuentas estaríamos de acuerdo en casi todo, salvo en la parte de eliminar la incertidumbre por completo que para mi, repito, se despeja en la cúspide del cono de incertidumbre.

Un saludo.

14 Me gusta

Ese es el problema, que lo que para ustedes es semántica, no solo usted sino muy buena parte del foro para mí es muy importante y de ahí radica las diferencias en la visión de los problemas, resumiendo:

Complicado: Se puede conocer y resolver.
Complejo: Se desconoce y no se sabe cómo evolucionará en el futuro.

Complicado: Se trabaja, se pule y se entrega controlando errores sobre que lo que no se controla.
Complejo: Averigua tú, fuerza bruta siempre.

Y esto es.

1 me gusta

Para el desastre dependerá de quien lo gestione… digo yo. Y paro aquí.

Es muy difícil sacarle algún estoy de acuerdo :blush:.

Yo sí se lo digo, comparto la definición complejo vs complicado (es la que es). Y no es que no comparta su rigidez con el lenguaje, es semántica porque va más allá de tener razón, va de sea complicado o complejo se parte siempre de presupuesto, alcance y tiempos, con la calidad en el centro.

Usted indica que siendo complicado puede dar un presupuesto que se adecua a presupuesto, alcance y tiempos, con calidad entiendo, porque elimina la incertidumbre y sabe que necesita P programadores, E expertos, D diseñadores, etc. durante T tiempo que supone un P presupuesto, y de ahí no se mueve (quizás le meta un pequeño margen del X% por asegurar). Yo creo que no, y que pasará lo que comentaba @Segado, en unos acertará y en otros no, pero en conjunto le debe compensar (a no ser que quiera cerrar).

Y muchas veces se acierta o se gana porque se renegocia con el cliente según se consume presupuesto, recortando alcance u otras variables anteriores como la calidad.

Y desastre o no, como le decía en algún comentario anterior, me alegra saber que a usted no le pasa, en serio. Me pica la curiosidad sobre los tipos de proyectos que lleva, sin malicia.

Un saludo.

8 Me gusta

Error, vea este vídeo, y los que siguen si quiere más:

Así lo veo y no sólo yo, si a ustedes les va bien otra cosa y la venden perfecto, para gustos los colores. No hay más discusión.

1 me gusta

Sí, dado que es 0 bajará algo la media. :speak_no_evil:

6 Me gusta

image

3 Me gusta

Lamentablemente nadie se ha molestado en ver el vídeo que enlacé para saber de que hablo, pero para dar 16 me gusta a un señor que afirma esto no han tenido que pensar demasiado. Este señor que afirma que la complejidad son los navegadores, pues si atiendo a su popularidad debe ser ¿verdad?

Hola,

Este señor del que usted habla, fundó una empresa de informática que posteriormente vendió a una multinacional y ahora se dedica a tocarse la barriga en su casa a pesar de no haber cumplido aún los 40. Algo debe de saber :grin:

Edito: además, en este hilo, han participado, al menos que yo sepa, un empresario y dos directivos de primer nivel del mundo de las tecnologías.

Saludos!

18 Me gusta