Cómo tomar decisiones técnicas significativas con muy poco tiempo

36

Tengo 2 días para tomar una decisión muy seria sobre las herramientas y plataformas que utilizará mi empresa para portar su aplicación WPF a Linux / Android / iOS.

Obviamente puedo señalar a mis mayores que 2 días no son suficientes para leer sobre todas las opciones posibles, y qué hay de intentar, hacer prototipos, etc. Puedo decirlo, no me ayudará un poco, tengo 2 días, y después de 2 días se tomaría la decisión. Período.

Por un lado, estoy frustrado, por el otro lado, creo que hay una gran verdad en este enfoque, de lo contrario, puedo encontrarme fácilmente enterrado bajo docenas de SDK descargados, marcos, API, artículos de blog, etc., haciendo trabajos de banco, ejecutando muestras y olvidando en el proceso para qué fue todo.

Sin embargo, me temo que una decisión equivocada le costará caro a la compañía. Entonces, ¿cuál crees que es un proceso "ideal" para tomar tales decisiones?

Flot2011
fuente
44
Escriba en alguna parte que la decisión es casi imposible de tomar en dos días. Luego trate de tomar una decisión no muy mala y documente que su decisión no es la mejor. En otras palabras, cubre tu trasero. Qt5 podría ser considerado. O haga de su producto una aplicación web HTML5 (posiblemente utilizando alguna biblioteca de servidor HTTP, por ejemplo, libonion o FastCGI)
Basile Starynkevitch
2
@gnat No estoy de acuerdo, que es una pregunta subjetiva, incluso si hay más de una respuesta posible, todos podemos obtener de la experiencia de otros.
Flot2011
99
No hay una 'mejor opción' en muchos casos, podría escribirla como una aplicación web PHP y funcionaría. O podría escribirlo como un programa Qt y funcionaría. Podría ser una interfaz de usuario de interfaz de juego openGL. Todas estas son opciones aceptables, el truco es elegir una y luego hacer que funcione. No se paralice con dudas una vez que elija algo.
gbjbaanb
55
Muy mal ejemplo porque en el caso del ejemplo hay una tecnología que es una opción obvia para esto: Xamarin. Mantenga el código de back-end de .NET, simplemente reemplace la interfaz de usuario con algo. Maneja todos los casos dados. Entonces, este es más un caso de "No sé nada sobre sistemas multiplataforma para .NET".
TomTom
77
Decir que 2 días no es suficiente no es muy constructivo. ¿Serán suficientes 3 días? ¿O realmente quieres pasar 2 meses en él? ¿Y cuánto mejor es probable que sea tu decisión? ~~~~ Si dice que necesita una semana y está seguro de que esto le ahorrará fácilmente cientos de horas de desarrollo en el futuro, asegúrese de mencionar esto. Puede que no ayude, pero siempre existe la posibilidad de que a las partes interesadas les guste su caso de negocios.
Dennis Jaheruddin

Respuestas:

48

Si todo lo que tiene son 2 días y no hay tiempo para crear prototipos o incluso leer todas las alternativas, entonces solo hay 2 opciones:

  1. Pregúntale a alguien que sepa y sigue sus consejos. Esto puede no necesariamente significar preguntarle a un individuo, sino pasar los 2 días buscando en blogs y artículos para obtener suficiente información para tomar una decisión un poco mejor que desinformada.

  2. Investigue un poco sobre todas las opciones principales y luego elija una. A veces, el liderazgo significa no tener miedo de tomar una decisión equivocada, a menudo es más importante tomar una decisión firme que vacilar.

Puede cubrirse creando arquitecturas que estén más desacopladas y, por lo tanto, más fáciles de cambiar, por ejemplo, un modelo cliente / servidor le permitirá reemplazar su tecnología de interfaz de usuario por otra con una interrupción mínima.

gbjbaanb
fuente
10
+1 para "no tengas miedo de tomar una decisión equivocada" A veces quedar atrapado en la "parálisis de análisis" es peor que no tomar ninguna decisión. Todos somos humanos. Haz tu mejor esfuerzo y sigue con tu vida.
semaj
1
vacilar: alternar o vacilar entre diferentes opiniones o acciones; ser indeciso
TankorSmash
10
+1 para "cúbrete ideando arquitecturas que estén más desacopladas y, por lo tanto, más fáciles de cambiar"
Darth Egregious
2
@emodendroket Windows Workflow Foundation.
MetaFight
2
Si su problema no es convencional, no espere que las soluciones convencionales funcionen bien. Aquí es donde el desacoplamiento y la flexibilidad son cruciales . Busque marcos / bibliotecas que le faciliten hacer sus propias cosas en lugar de hacer que calce algo dentro de sus expectativas cuando no parecen anticipar lo que necesita hacer.
jpmc26
19

Puede parecer que voy en contra de la corriente, pero recientemente leí el libro Creativity, Inc. de Ed Catmull y había un párrafo realmente bueno que abordaba esta situación:

Andrew Stanton habló a continuación. A Andrew le gusta decir que las personas necesitan equivocarse lo más rápido posible. En una batalla, si te enfrentas a dos colinas y no estás seguro de cuál atacar, dice, el curso de acción correcto es apresurarte y elegir. Si descubres que es la colina equivocada, date la vuelta y ataca a la otra. En ese escenario, el único curso de acción inaceptable es correr entre las colinas.

Estoy seguro de que también se puede aplicar a su situación. Tal vez pueda tomar la decisión hoy eligiendo una y comenzar a trabajar en ella. Si funciona, entonces tendrás algo listo en esos dos días y dirás: "Elegí esto, y puedo mostrarte lo que podemos hacer con él porque realicé algunas pruebas ...". Si nota en un día que la solución elegida no vale la pena, puede elegir una diferente y trabajar con eso al día siguiente. El peor de los casos es que usará ambos días para probar dos plataformas, descubriendo que ninguna de ellas funciona, pero esa es la respuesta correcta, ¿no? Elimine la hierba, deshágase de las posibles elecciones incorrectas, por lo que cualquier próxima decisión será mucho mejor que la anterior. El mejor de los casos es que usted '

Obviamente no dominará ninguna plataforma en dos días, pero elegir una ASAP definitivamente le dará una mejor perspectiva sobre cómo funciona (mucho más que solo leer sobre ella) y lo llevará a una mejor respuesta.

Michal
fuente
12
Aunque estoy de acuerdo con usted a nivel mundial, a veces precipitarse en un campo de guerra es bastante suicida.
Flot2011
Sin embargo, nadie mencionó apresurarse. Nunca dije que fuera al jefe hoy y le dijera: "Aquí está la solución. Aquí y ahora". En cambio, propongo elegir uno en la cabeza e intentar ejecutarlo y jugar con él. Simplemente leerlo y discutirlo con alguien más no funcionará. Creo que seguir adelante y probarlo conducirá a una elección que tiene una calidad mucho mayor.
Michal
66
@ Flot2011, aunque si tienes un MBA, te quedas donde estás y envías a todas tus tropas a luchar contra cualquier colina. Si todos mueren, bueno, obtienes más tropas y continúas, pero esta vez diciendo que tu experiencia como general te hace mucho más ... merecedor de un monstruoso salario adicional.
gbjbaanb
1
"Elegir uno lo antes posible, luego el prototipo" me parece un muy mal consejo en esta situación. Sí, la creación de prototipos es importante, pero también requiere mucho tiempo. Los problemas no triviales a menudo tienen más de 2 soluciones posibles, y 2 días no son suficientes para crear prototipos de varias tecnologías.
meriton - en huelga el
@meriton Siento lo que quieres decir: estoy de acuerdo, la creación de prototipos lleva mucho tiempo. No dije explícitamente "hacer prototipos", es por eso que elegí cuidadosamente la palabra tinker : explorar la plataforma, escribir un poco de código, abrir algunos archivos de implementación básicos, ver cómo funciona dentro. Lo más probable es que el tomador de decisiones no obtenga todos los detalles correctos, pero por prueba y error definitivamente puede mejorar la calidad de la decisión.
Michal
10

gbjbaanb hace algunos muy buenos puntos. Solo pensé que agregaría un poco.

Es obvio que no tiene tiempo suficiente para tomar una decisión perfectamente informada. Su única opción es intentar tomar una decisión que minimice el dolor futuro. Sugeriría:

  1. Documente claramente la naturaleza de la situación: envíe un correo electrónico a sus gerentes y CC a sus gerentes y partes interesadas. Explique que el problema que le han asignado es complicado, pero que está dispuesto a darlo todo. Pero tenga en cuenta que, dadas las estrictas limitaciones de tiempo, no puede garantizar que sus resultados sean óptimos.

  2. Encuentre un marco / plataforma con una comunidad en línea grande y activa. Lo último que desea es quedarse atascado depurando un marco oscuro solo.

  3. Como mencionó anteriormente gbjbaanb, mitigue sus dolores y riesgos de portabilidad utilizando una arquitectura débilmente acoplada. Si todo tiene forma de pera con una de sus opciones tecnológicas, esto hará que sea más fácil cambiarlo.

He estado en tu situación antes y eventualmente se convirtió en una pesadilla política. Cuando el sistema no funcionaba mágicamente, la gente comenzó a señalar con el dedo y las cosas se pusieron feas. Es por eso que mi recomendación número 1 es documentar claramente que hiciste tu mejor esfuerzo contra probabilidades imposibles .

Buena suerte :)

MetaFight
fuente
17
Re: # 1. A nadie le gusta un perdedor llorón, así que solo resalta que has hecho lo mejor que puedes en circunstancias imposibles, ¡entonces te ves como un ganador proactivo que juega en equipo! A la gerencia le gusta ese tipo de cosas. Por cierto, hay muchas razones por las que la gran reescritura no funciona, la elección de una tecnología sobre otra suele ser el menor problema.
gbjbaanb
Sí, me di cuenta de que era un poco llorón, así que lo modifiqué.
MetaFight
Personalmente, sería más específico que "no óptimo", ya que no especifica la gravedad de la incertidumbre. Un gerente con una mentalidad de "no necesita ser perfecto, solo lo suficientemente bueno" ignorará alegremente esta advertencia, sin darse cuenta de que quiere decir que la tecnología podría no ser lo suficientemente buena.
meriton - en huelga el
3
En cambio, identificaría riesgos concretos y los escalaría a la gerencia. Por ejemplo: "En base a nuestro conocimiento actual, creemos que la tecnología A es la mejor opción. Sin embargo, debido a la corta fecha límite, no pudimos verificar que este enfoque pueda manejar la carga de trabajo esperada de este sistema". La gerencia puede aceptar el riesgo o reducirlo ordenando un análisis adicional.
meriton - en huelga
+1 para el punto No. 2. Busque una solución que tenga una comunidad madura y bien desarrollada. Si encuentra más de una solución, siempre puede navegar en foros en línea, blogs, publicar preguntas, etc. y descubrir cuál le conviene mejor
Arnab Bhagabati
5

Dado que efectivamente le han dado poco tiempo para hacer más que elegir candidatos de un sombrero, adoptaría el siguiente enfoque.

Seleccione tecnologías que:

  • Tener una gran base de usuarios
  • Tener soporte activo (a través de cualquier canal)
  • Se están desarrollando activamente

Por definición, esto descartaría cualquier tecnología de punta, por muy buena que sea.

Además, resista el impulso de seguir con la tecnología X sin más análisis simplemente porque el desarrollador Fred la ha usado en el pasado. Es poco probable que se ajuste perfectamente, y si Fred se pasa a pastos más verdes, ahí va su experto en dominios.

Robbie Dee
fuente
Aunque si la tecnología X es lo suficientemente adecuada, y Fred está dispuesto a educar a los otros desarrolladores, hacerlo puede ser una buena manera de poner en marcha al equipo.
un CVn el
Seguro, si marca las otras casillas ...
Robbie Dee
4

2 días es un período muy corto para tomar ese tipo de decisión, pero dado que debe hacerlo en la siguiente lista de 2 días,

  1. ¿Cuáles son las plataformas de destino?
  2. ¿Cuáles son los componentes personalizados / de terceros utilizados en la aplicación actual donde puede requerir un esfuerzo considerable para portar? por ejemplo: componentes de gráficos, componentes de cuadrícula, componentes de informes, etc.
  3. Cómo se conecta la aplicación actual al mundo y cómo se maneja la seguridad (conexiones de base de datos / servicios web / etc.)
  4. Cómo se distribuye y cómo se proporcionan las actualizaciones

Ahora necesita encontrar alternativas que pueda usar para todos los entornos de destino

Para cada alternativa, encuentre el soporte para que cada una use la conectividad / seguridad que usa la aplicación actual.

luego, para cada componente personalizado / de terceros, averigüe si hay alternativas fáciles de usar para cada uno.

Y luego piense en cómo se puede hacer la distribución para cada alternativa que encontró.

Creo que durante 2 días este debería ser el alcance que debería poder cubrir y, en función de los resultados, puede proporcionar una solución.

Pelican de bajo vuelo
fuente
4

Por mucho que me guste aprender y experimentar cosas nuevas, bajo restricciones de tiempo, la mejor opción es siempre buscar lo que sea o se sienta más cómodo para trabajar. Quédate con lo que sabes.

Incluso si a la larga queda claro que no eligió la mejor opción, todo lo que desarrolló mientras tanto continúa siendo valioso y envuelve un tipo de conocimiento de campo que todavía es completamente utilizable y portátil. Y eso es exactamente porque el contexto cómodo, las herramientas y la plataforma que elegiste usar se mantienen fuera del camino y te hacen ver lo que realmente importa.

Ando
fuente
2

Haga una lista de los factores que deberían entrar en la elección, cosas como: Costo de seguridad de rendimiento facilidad de uso capacidad de hacer X capacidad de hacer Y familiaridad del desarrollador tiempo de comercialización, etc.

Esto debería tomar menos de una hora (en realidad debería tomar menos de 15 minutos), luego siéntese con la gerencia y pídales que prioricen esos factores. (Las posibilidades de que sus prioridades y las suyas sean las mismas son remotas, aunque puede orientar su elección de alguna manera con sugerencias sobre prioridades). Ahora ya sabe qué evaluar sobre la tecnología.

Elija tres o cuatro soluciones comunes a su problema basándose en una búsqueda en Internet.

Luego, lea lo suficiente como para adivinar qué tan bien cada una de las opciones se ajusta a sus prioridades 3-4 principales. Asigne un valor numérico a cada opción. Haga los cálculos multiplicando la calificación de cada prioridad por el valor establecido en esa prioridad (10 para el número 1, 8 para el número 2, 6 para el número 3 4 para el número 4 o lo que quiera). Ahora tiene una puntuación numérica para cada posibilidad. En general, será obvio cuál cumple mejor las prioridades asignadas. Mejor aún, ahora tienes algo analítico que llevarles para probar tu elección. Por lo general, comprarán su elección porque tiene los números para respaldarla. Si los números no lo admiten, debe preguntarse por qué prefiere el otro y elegir el mejor numérico o volver a visitar los números asignados.

Al concentrarse en cuáles son las verdaderas opciones preferidas, puede reducir mucho tiempo de investigación. Probablemente puedas adivinar en un día y luego te quede un día para aprovechar las 2 principales posibilidades y descargar versiones de prueba si es necesario y jugar un poco con ellas.

HLGEM
fuente
Lo que describió se llama "Proceso de jerarquía analítica". Es la técnica más común que he visto utilizada para realizar estudios comerciales. Su fortaleza es que ayuda a decidir la mejor opción de una manera bastante objetiva y toma en cuenta las opiniones de todos los interesados. Me sorprendió ver lo complicados que los sitios web hacen parecer esta técnica. No deje que la aparente complejidad que muestran los sitios web lo influya, realmente es muy fácil de usar. De todos modos, dado que no pude encontrar un buen ejemplo, supongo que Wikipedia es un punto de partida tan bueno como cualquier en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk
1
Establecer la estructura en una hoja de cálculo lleva menos de diez minutos (la parte más complicada es decidir con qué factores desea comparar las prioridades) y luego es fácil de completar.
HLGEM
Realmente es así de fácil. También hacemos encuestas donde todos asignan un valor a cada categoría para determinar lo que todos piensan que es más importante para que podamos aplicar pesos a cada categoría. Después de todo, el equipo de software cree que la velocidad del procesador y la memoria son siempre la máxima prioridad, pero los chicos del hardware parecen tener opiniones opuestas porque la duración de la batería es importante para ellos. Por supuesto, el cliente generalmente cuenta con al menos la mitad de los pesos de calificación y no le importan las preocupaciones de software o hardware. Las descripciones en línea parecen realmente complicadas cuando no lo es.
Dunk