Algunas tareas son técnicamente inviables. Por ejemplo…
En los años 90 hubo un proyecto basado en CD donde el gerente del proyecto solicitó a los programadores que encendieran la computadora cuando se insertó el disco. En aquellos días, las unidades de CD no podían funcionar a menos que el sistema ya estuviera encendido. Entonces la característica era “técnicamente inviable”.
¿Fue una tarea imposible? En realidad no. Muchos dispositivos ópticos modernos responden adecuadamente cuando presiona el botón de expulsión o inserta un disco. Esto se debe a que están “siempre encendidos” (aunque en un estado de baja potencia).
- Soy un programador de sofware. ¿Qué especializaciones de MBA puedo hacer que me hagan trabajar en la industria de TI pero en una posición gerencial?
- ¿Por qué la gente máxima (cliente) supone que el desarrollo de software es gratuito?
- ¿Cuáles son algunos ejemplos en los que ir en contra del desarrollo de software funcionó la sabiduría convencional?
- Readify, Kiandra o Thoughtworks: ¿en cuál es mejor trabajar para un apasionado desarrollador australiano de .NET con sede en Melbourne?
- ¿Qué aptitud matemática se necesita para convertirse en desarrollador de software?
Para ofrecer esa funcionalidad en los años 90 habría requerido el desarrollo y la implementación de hardware de baja potencia para cada sistema que contenga una unidad óptica. Si bien dicha característica habría sido teóricamente posible, habría requerido millones de dólares para desarrollarse, miles de millones se gastarían en actualizaciones de hardware y la implementación tomaría varios años o más.
Entonces, ¿qué debe hacer un gerente cuando un desarrollador dice que una tarea no es factible?
Comprenda las limitaciones de los problemas y busque alternativas.
- Pregúntele al desarrollador por qué la tarea no es factible.
- ¿Podría resolverse el problema con más tiempo / dinero / recursos ? (La mayoría de los problemas pueden, aunque debe solicitar una estimación aproximada de cuánto más se necesitaría).
- ¿El problema está demasiado limitado o en desacuerdo con otros objetivos del proyecto?
- ¿Es la solicitud incompatible con las primitivas subyacentes ? (Como con el ejemplo de CD anterior).
- ¿El problema está fuera de la experiencia de dominio del equipo que trabaja en el proyecto? Por ejemplo, ¿se requeriría una solución de hardware, pero el equipo está formado solo por ingenieros de software?
- ¿Hay restricciones operativas ? (Por ejemplo, “Podríamos migrar la base de datos, pero requeriría desconectar el sitio durante dos días”).
- Discutir alternativas.
- ¿Se puede reducir la función?
- ¿Podrían modificarse o reducirse otras funciones para acomodar esta función?
- ¿Se podría construir una característica diferente? En el caso del ejemplo de CD, habría sido simple iniciar automáticamente el CD cuando se inserta en una computadora con alimentación . (autorun.inf FTW)
- Obtenga una segunda opinión.
- Es posible que el desarrollador no tenga los antecedentes o la experiencia para proporcionar información precisa.
- A veces puede ser útil intercambiar ideas de otros ingenieros. Hacer que algunos de los mejores ingenieros de su equipo se sienten en una habitación y hagan una lluvia de ideas juntos podría generar soluciones / alternativas mucho mejores que las que cualquier desarrollador pueda ofrecer.