Lo importante es tener detectores de humo que funcionen correctamente, lo urgente
es salir corriendo de tu casa si se está quemando.
"I have two kinds of problems, the urgent and the important. The urgent are not important, and the important are never urgent.", Dwight D. Eisenhower
En nuestra profesión, el desarrollo de software, nos enfrentamos casi exclusivamente
a tener que resolver dos tipos de problemas, los urgentes y los importantes.
Los problemas urgentes son aquellos que tenemos que resolver de forma inmediata
para que el negocio que soporta nuestro sistema siga operativo. Si estos no se resuelven,
se puede generar una situación que conlleve una grave crisis, incluyendo pérdidas
materiales (o en el peor de los casos humanas), y que en última instancia nos acabe
sacando del mercado, con consecuencias de diversa índole.
La resolución de temas importantes, son los que nos ayudan a que nuestros sistemas
siguán vigentes en el futuros, nos ayudan a proyectarnos hacia delante, es la planeación
a gran escala y a mediano y largo plazo.
En la práctica hay que saber balancear adecuadamente las tareas importantes y urgentes.
Una mala gestión de lo que es importante y urgente, lleva siempre al desastre.
Es muy común, olvidarse de las tareas importantes, para ocuparnos exclusivamente
de lo urgente, pero una cosa es innegable, cuando mas postergamos las tareas importantes,
mas se van a convertir en urgentes (además de importantes).
Las tareas importantes son las que generan beneficios (en el negocio) de un sistema,
son las que nos permite adaptarnos adecuadamente y de forma proactiva al mercado,
ser innovadores y poder marca una diferencia y posición.
Las tareas urgentes son tareas enfocadas la reactividad, a reaccionar al mercado
(en lugar de incidir en el), hace que tengamos que centrarnos en la "supervivencia",
y no generan beneficios, son cosas que "tienen que hacerse".
Si clasificamos nuestros issues en mejoras y defectos de nuestros sistemas
productivos, las mejoras serian los cambios importantes, los que generan benéficos
(económicos en última instancia), es la evolución de un sistema hacia nuevos retos
y horizontes, los defectos por otro lado son los elementos urgentes, lo que hacen
que un sistema funcione mal. Corregir defectos no genera beneficios,
sino que hace que un sistema funcione como se supone que debiera funcionar.
Todo el tiempo (y dinero) invertido en corregir un error, son recursos que no se
van poder recuperar y que no van a generar nada.
Otro ejemplo acerca de lo que es importante, es el ejercicio físico y cuidar nuestra
alimentación, eso nos proporciona una vida sana y más placentera, hacia el futuro
y a largo plazo, una enfermedad es algo urgente y que debe ser atendida, en el mejor
de los casos al tratarnos recuperarnos nuestro estado inicial (antes de la enfermedad),
pero nuestro cuerpo no va estar mejor (en todo caso igual), es la diferencia entre
prevenir y curar. Los sistemas, son iguales, pueden considerarse elementos orgánicos
(por eso hablamos del "tiempo de vida de un sistema"), en los que si invertimos
en lo importante (como la arquitectura), nuestro sistema va a estar más sano, mas
adaptable y menos propenso a fallos, que si nos dedicamos solo a lo urgente, el
negocio. Los "urgente", será cada vez mas rápido y sencillo de atender, y podrá
ser resuelto con menos recursos y esfuerzo. Al igual que en el cuerpo humano, si
no atendemos lo urgente, el sistema tampoco funcionara a corto plazo, pero una vida
sana, a la vez que un sistema sano, podrá hacer frente con mas capacidad a los problemas
inmediatos e imprevistos.
Los temas urgentes e importante, se pueden clasificar, según la matriz de Eisenhower,
en los siguientes elementos:
- Urgente e importante: Es necesario realizarlo inmediatamente, con una supervisión cercana, disminuyendo la burocracia y aumentando las facilidades de comunicación entre los diversos miembros del equipo. Las tareas importantes no atendías a tiempo se convierten en urgentes, el negocio (sobretodo) y la arquitectura (en menor media) entran en este rublo.
- No urgente e importante: Es necesario planearlo adecuadamente, decidir cuándo deben realizarse, antes de que se convierta en urgente. Atender un tema aquí es mucho más barato que dejar que se convierta en un problema. La arquitectura (principalmente) y el negocio (en menor medita) entra en este rubro.
- Urgente, pero no importante: Es necesario delegarlo en la medida de lo posible, si no es posible delegarlo, hay que establecer unos tiempos, y espacios de resolución, y resolverlos adecuadamente, suele ser llamadas o correos o interrupciones. El consejo es dedicar una fracción del día en resolver esto problemas, como por ejemplo, una hora en contestar email y llamadas, y el resto de tiempo dedicarlo a la planeación (y ejecución) o los temas urgentes.
- No es importante, ni urgente: No lo hagas, estas tareas no aportan nada, es necesario eliminarlas después de identificarlas apropiadamente .
Mi organización personal de día a día, en estos asuntos, es de la siguiente forma:
Reunión general de equipo, aquí surgen los temas importantes y urgentes del día
a día, lo que se tiene que resolver en el momento y lo que tiene que postergar
Segundo revisar el correo para realizar una planificación del día, es necesario
comenzar a leer los correos, desde el ultimo al primero, el correo más urgente siempre
es el último en ser recibido. Créeme que si tienes un correo importante
que has recibido el primero, te vas a enterar por otro medio, ya sea telefónico
o en persona. Los últimos correos siempre tiene la información más reciente y más
importante, no hay nada más molesto y caótico que alguien que contesta un correo
intermedio de una conversación.
Al leer los correos decide, en ese momento, si es urgente y atiéndelo o si es importante.
si es importante ponle una fecha o delégalo, si no es importante ni urgente bórralo.
A esto le dedico una hora o menos
Si tengo muchos asuntos urgentes que atender… bueno es que estoy haciendo realmente
mal mi trabajo.
Después reviso mis tareas, ya sea por planeación o por un sistema de ticket, si
puedo delegarlo, siempre lo delego, y siempre con una fecha.
Para una planeación correcta es necesario liberar siempre las tareas que crean dependencia
con otras, es decir las tareas que hay que resolver forzosamente antes que otras.
Por ejemplo al momento de crear una componente que sea una API consumible por otros,
hay que definir antes la interfaz, y después implementarla. Es decir, si primero
liberamos la interfaz (entiéndase no la grafica, si no la interfaz de consumo, las
estructura de nuestro sistema), los consumidores de nuestra funcionalidad ya podría
comenzar a desarrollar sus propios componentes, aunque nuestro componente no haga
nada, es decir sean simplemente clases vacías, así es posible realizar un desarrollo
en paralelo en lugar de secuencia.
Aquí se ve otro ejemplo de lo urgente y lo importante, lo urgente es la interfaz
(la API, lo que define lo que hace el negocio), la implementación de dicha API (lo
que realmente hace) no es urgente, es importante y puede ser resuelto mas tarde
Una vez resuelta la planeación es el momento de ponernos manos a la obra, ya hemos
resuelto lo urgente, y podemos dedicarla el tiempo a los seria "trabajar", a implementar
nuestro sistemas o sus mejoras, en mi caso comienzo mis labores de supervisión y
verificación de código