Ideas Dispersas

"Si ayudo a una sola persona a tener esperanza, no habré vivido en vano." Martin Luther King (1929-1968)

Friday, March 27, 2009

Administración del Tiempo para Desarrolladores

Tips de Administración del Tiempo para Desarrolladores
By Alexander Fedorenko

Traducción/Adaptación: Cristian Segura
[Version Imprimible]
Existe una manera de hacer mejora la vida. Unos pocos principios de administración del tiempo pueden, realmente, traer el éxito a nuestra vida y mejorar el desarrollo web y de software para obtener niveles fascinantes y lucrativos.
Fuente: CodeProject

Introducción
El desarrollo de software pueder ser realmente excitante, depués de años de desarrollo puede reportarte millones de dólares o puedes estar relajado. Muchos de nosotros solo nos preocupamos de mantener la cabeza apenas sobre el agua (en otras palabras de sobrevivir). Pero pienso que esta no es la meta que habíamos soñado en la escuela o la universidad.
Para ganar más, la mayoría de nosotros busca trabajos adicionales y no se preocupa de nada más que de poner manos a la obra y programar. No podemos descansar, no podemos pasar más tiempo con nuestras familias y amigos, no podemos hacer nada de lo que hacen otras personas que trabajan. Esto nos conduce a una vida estresada e insatisfecha.
Pero esperen!. Existe otra manera de mejorar nuestra vida. Realmente, unos pocos principios de administración del tiempo pueden hacer nuestras vidas exitosas y mejorar el desarrollo de software y aplicaciones web para hacerlo realmente obtener ganancias y un nivel profesional envidiable.

Establece tus metas: largo y corto plazo
Para hacer la vida mejor, primero que todo necesitas conocer qué es "mejor" para tí. Dónde quieres estar la próxima semana, el siguiente cuarto de hora, los próximos dos años o incluso los siguientes 20 años (si eres lo suficientemente joven :-)). Debes decidir por tí mismo qué quieres hacer con tu vida.

No planifiques perezosamente
Napoleón dijo una vez que sólo las cosas bien planificadas pueden producir los resultados deseados. No ignores este principio e invierte tiempo en planificar. Recuerda, meditación no es lo mismo que planificación. Me gusta la cita clásica: "A veces me siento y pienso, y a veces sólo me siento". Usualmente este fenómeno puede consumir mucho tiempo. Si te sorprendes a tí mismo meditando, cambia a otra labor, mira por la ventana o simplemente relaja tu ojos.
Actualiza tus planes regularmente de acuerdo a la realidad.

Si no puedes planificar, sólo sigue el rastro
Si no puedes planificar nada por ahora, no te preocupes podrás hacerlo más tarde. Sólo sigue el rastro de lo que sea que estés haciendo en un papel, una hoja de Excel o usa un software de administración de tareas. Actualiza este registro al menos cada una hora y no al final del día. Esto te ayudará a encontrar las interrupciones comunes y las tareas recurrentes, de esta forma puedes planear las cosas en el futuro.
Mira en tu diario de jornada e intenta averiguar cuáles son las cosas que realmente necesitabas hacer, las cosas que alguien más podría haber hecho, las tareas que podrías haber realizado de manera más eficiente o rápida, las acciones que desperdician el tiempo del resto de la gente, etc.
Puedes descargar una plantilla simple de seguimiento del tiempo aquí.

Agrupa todas las tareas por hacer en una lista (to do list)
A veces no tenemos nada que hacer, y a último minuto recordamos (o tu gerente te las recuerda) algunas tareas importantes y que son muy urgentes. La única manera de evitar tales situaciones es recolectar las tareas en un lista de "cosas por-hacer" (to-do list). Agregar tareas a una lista de donde sea que vengan: de tu jefe, de tus colegas o desde tí mismo. Si no puedes acceder a un computador o no recuerdas las tareas, escríbelas en un libreta de notas o en cualquier otro medio. Transfiérelas a la lista principal cuando te sea posible.
Haz una estimación de cada tarea, establece tus propios plazos. Esto te ayudará a evitar tener cosas que hacer de último minuto.

Ajusta tu prioridades
El Discurso de Drucker decía: "Hacer las cosas bien no es tan importante como hacer las cosas correctas". En el desarrollo de software y web es posible gastar un montón de tiempo en tareas son de poco valor para el cliente o incluso al final no tienen ningún valor. Por ejemplo, escribir una expresión regular para dividir un arreglo delimitado por comas o escribir una aplicación CORBA para acceder a un par de métodos en un servidor remoto. No existen balas de plata que puedas disparar en todos los casos de dar prioridades, pero hay algunas recomendaciones que pueden ayudarte:


    1. Pregunta al cliente o al gerente por el orden de las tareas y la prioridad de ellas. Asegúrate de hacer esto con anticipación: .no todos los clientes te responderán de inmediato.
    2. Si alguien más depende de una tarea específica entonces hazla primero.
    3. Para tareas iguales establece prioridades utilizando la dificultad que presentan: Las tareas más complicadas primero.


Cuando sea posible delega tareas

Si conoces a la gente que te rodea, a quién puede tomar una parte de tu trabajo, no lo pienses tanto y delégale el trabajo. Fija objetivos, no procedimientos, asume la responsabilidad y la contabilidad. Describe las tareas claramente. Entrega un ejemplo de "cómo probar".
Las siguientes reglas se pueden utilizar para determinar si delegar o no una tarea específica:

1. ¿El/Ella hará la hará mejor o más rápidamente que yo? Si la respuesta es sí, no dudes en delegarla.
2. ¿Es esta persona capaz de completar un trabajo sin tu asistencia cuando estás fuera de la oficina? Si la respuesta es sí, delega el trabajo.
3. Por supuesto que puedes incluso delegar trabajo a tu jefe, pero no abuses.

En un ambiente multiproyecto, el trabajo del equipo completo no se puede distribuir igualitariamente a todos los miembros. Algunos tendrán que hacer más y otros menos. Utilizando la Teoría de las Restricciones de Goldratt, un proyecto no se puede terminar hasta que el miembro más lento no haya completado su trabajo. De esta forma la delegación debe hacerse dentro de un equipo y no sólo desde el gerente a los desarrolladores. Este proceso puede ser efectivo únicamente en equipos donde existe una comunicación honesta y abierta, como en los equipos de XP (eXtreme Programming).

Lo perfecto no es siempre lo mejor

Por ejemplo, mientras escribimos código, es más importante terminar a tiempo que preocuparse acerca de llegar a la solución perfecta que funcione para todos. Logra la meta y luego podrás agregar más características. Haz lo mejor que puedas y "Hazlo correctamente la primera vez". No ahorres en convenciones de codificación y calidad del código. El puro código acarreará muchos problemas posteriormente y una pérdida innecesaria de tiempo en arreglos y depuración. Utiliza unidades de prueba, ellas acelerarán el desarrollo de buena calidad y te darán más confianza en tu código.

Divide tareas difíciles en partes pequeñas

La gente usualmente evita las tareas difíciles. Las separa en pequeños escalones. Pedazos perfectamente manejables y pronto te darás cuenta que el problema está resuelto. Un approach que ayuda bastante es agregar un "cómo lo pruebo" a cada tarea. Esto supondrá un micro-meta y te ayudará a determinar la completación de la tarea. Por supuesto, si estos tests están automatizados esto reducirá el tiempo empleado en las tareas repetitivas.

Identifica tus desperdiciadores de tiempo

Usualmente tratamos con personas alrededor nuestro. Ellas pueden ser nuestros colegas, amigos o parientes. Pueden contactarse contigo directamente o por teléfono, mensajería instantánea o email. Esto conduce tanto a interrupciones como a desperdicio de tiempo. Una interrupción de 6-9 minutos tomará otros 4-5 minutos para recuperarse. Cinco interrupciones pueden quitarte una hora. Debes reducir la frecuencia y el tiempo de tales interrupciones. Pero no puedes poner una barrera e ignorar al resto. Por ejemplo ignorar las llamadas de tu esposa puede ser realmente malo para tí. La única manera de reducir tales pérdidas de tiempo es estos desperdiciadores de tiempo repetitivos. Depués que tengas el panorama completo puedes decidir donde ahorrar y donde no hacerlo. Asegúrate que tu jefe no sea en ningún caso un desperdiciador de tiempo.


Planifica tiempos de relajación y recreación

Keith Frayn, profesor de metabolismo humano en la Universidad de Oxford, dijo en el canal TV Plus. "Cualquier persona normal puede sobrevivir hasta 60 días sin alimento o agua". Pero sin dormir puede ceder rápidamente. En 1964, el estudiante secundario Randy Gardner intentó romper el record Guiness de la mayor cantidad de tiempo despierto-260 horas. Stanley Coren describe el impacto día-a-día en Randy en el libro Sleep Thieves, como documentó John Ross miembro de la Navy Medical euro-psychiatric Research Unit en San Diego. Randy tuvo problemas para enfocar la vista a los dos días, alucionaciones al cuarto día, y problemas del habla y disminución del lapso de atención para el último día.

No esperes lograr tener una alta productividad si estas cansado. El sueño recarga a nuestros cerebros y nos ayuda a pensar más claramente. Planifica tu día adecuadamente, no ahorres tiempo de sueño. Los desarrolladores generalmente pasan 8 horas o más al día sentados en el lugar de trabajo cerca del computador. Esto causa enfermedades emocionales y físicas. Uno de nuestros organismos expuestos son los ojos. Mirar el monitor por períodos largos, incluso los que son costosos, arruinará tu visión. Para reducir la influencia perniciosa en nuestros ojos de existen varias técnicas para el entrenamiento visual. Tipea "training eyes" en Google y encontrarás un entrenamiento adecuado para tí. Agéndalo diariamente, justo antes de cenar o en cualquier otro momento conveniente.

No temas pedirle consejo a amigos o colegas

Casi cualquier proyecto de TIs invloucra riesgo; ellos están ya sea ocultos o visibles desde el comienzo. Los desarrolladores tienen que resolverlos. Trabajar con cualquiera de ellos, incluso con un riesgo pequeño, puede tomar días o incluso semanas. Para evitar estos desperdiciadores de tiempo pide consejos o ayuda a tus colegas o amigos. Tengo muchos ejemplos acerca de cómo esta regla redujo el tiempo ocupado en tareas difíciles y previno fallas en el proyecto. Un ejemplo de mi experiencia: los clientes de nuestro reciente proyecto requerías un nivel extra se de seguridad para preservar las aplicaciones de posibles caídas. Una parte de la protección fué descargar un componente desde el servidor y cargar este DLL a la aplicación sin escribir en el disco. Aún después de dos horas de investigación no pude encontrar ninguna información útil. Me detuve un momentoe intenté llamando a alguien que podría ayudarme con eso. Le consulté a un amigo que había trabajo como desarrollador en otra compañía y me ayudó. Me envió un link al tutorial que estaba buscando y el problema se resolvió.


Recompénsate a Tí Mismo

Todos esperamos una recompensa o un premio por el trabajo que completamos. La falta de recompensas mata nuestro deseo de trabajar duro lo cuaĺ lleva a una reducción de la productividad. Esta es la razón de por qué preferimos trabajar para otros que hacer lo mismo para nosotros mismos. Prométete a tí miso una recompensa después de completar cada tarea o finalizar el trabajo completo. Por ejemplo permítete ver una película interesante cuando termines de desarrollar una página o una nueva característica.


Conclusión

Las lista de consejos acerca de la administración del tiempo es sólo el punto de partida para una nueva y mejorada vida. Seguir estos principios cada día le mostrarán una manera de llevar una carrera exitosa, una salud robusta y tener bienestar.
Mi profesor de la univesidad siempre me de decía que cada detalle es importante. En la mayoría de los casos fallamos en lograr algo, esto sucede debido a una pequeña pero importante cosa que olvidamos u omitimos. Ayúdate a tí mismo a lograr tus sueños. Evita el movimiento caótico, planifica y administra el tiempo en tu vida.

============================================================================

Espero que este artículo les sea de utilidad ya que trata de un tema general

Atte
Cristian Segura L.