Ir al contenido principal

Define las tareas antes de empezar

Es divertido iniciar proyectos e ir agregando funcionalidad que se nos va ocurriendo. Intentar usar nuevas tecnologías, nuevas formas de resolver problemas. Equivocarnos, aprender y volver a empezar.  Esto lo podemos realizar en un proyecto personal, en un super happy dev house o cualquier otro día.

Pero cuando se trata de entregar un proyecto con presupuesto fijo a tiempo, vale la pena definir desde un principio las tareas por realizar. Pensar qué es lo que queremos lograr y definir los pasos necesarios para llegar a esa meta. Esto no quiere decir que no podemos ajustar el plan después, el plan cambia. Para eso hacemos las iteraciones en el desarrollo. Revisamos como vamos y decidimos qué sigue.

Ha habido ocasiones que por sentir que tenemos el tiempo encima iniciamos el desarrollo del proyecto sin tener el backlog definido completo. Esto con la idea de que en cada iteración podemos irlo modelando, agregando elementos y definiendo el trabajo necesario. Para algunos proyectos ha funcionado más o menos; pero me he dado cuenta que durante el desarrollo del proyecto sentimos que vamos un poco sin rumbo. No sabemos cuánto nos falta o que porcentaje llevamos avanzado.

En cambio, cuando nos tomamos el tiempo de definir los objetivos y tareas necesarias a realizar. Aun cuando parece que no tenemos tiempo que perder y que debemos simplemente ponernos a programar en lugar de estar definiendo tarjetitas en un programa para administrar proyectos. Incluso cuando el proyecto ya se pasó del tiempo de entrega, vale la pena detenerse a pensar y definir eso que vamos a realizar. Con esa información podemos "saber" cuánto tiempo más necesitamos para completar el proyecto. Aunque nos fallen los estimados podemos revisar donde estuvo el error y mejorar el próximo proyecto. Sin tareas definidas y solo codificar es difícil medir el progreso e identificar áreas de oportunidad.

Tener el trabajo definido ayudará también a trabajar más rápido. Se evitan los tiempos muertos que surgen cuando al programar pensamos: "Ya terminé esta tarea... ¿ahora qué sigue?". Si ya tenemos un backlog de cosas por hacer bien definido podemos seguir programando en lugar de detenernos a pensar. Como ya no tenemos que pensar en detalles no técnicos podemos concentrarnos en lo que nos gusta. Disfrutar el viaje programando con nuestra dosis de motivación diaria.

Comentarios

Entradas más populares de este blog

Bloqueos

Una de las preguntas típicas de las juntas matutinas en los equipos de desarrollo de software es ¿Hay algún bloqueo? Si lo hay, se trata de ver qué es lo que está esperando esa persona y encontrar la forma de que se desbloquee; pero ¿Qué son los bloqueos? Los bloqueos son obstáculos que te impiden realizar o avanzar en tu trabajo. Evitan que puedas seguir progresando en el proyecto.

He notado que es común en las personas con menos experiencia decir que tienen un bloqueo cuando están batallando, debido a su poca experiencia, en la forma de resolver un problema. Han intentado varias formas y se empiezan a quedar sin ideas de como puede ser resuelto el problema o como pueden cumplir con el requerimiento especificado. Al quedarse sin opciones de qué intentar dicen que tienen un bloqueo con la tarea y que a menos que alguien les diga como resolverlo, no se puede avanzar en la tarea.

En personas con más experiencia, ese tipo de bloqueos no ocurren, una persona con experiencia ha visto pro…

Firebird 2.1 UPDATE OR INSERT

Another great feature that I like in Firebird 2.1 is the UPDATE OR INSERT statement. It's a really time saver and it makes the SQL cleaner.

For example suppose I have a products table like the one I use in my last post and an inventory table to store the product stock. Before Firebird 2.1 if I want to set the stock for a product I needed to check if a record for that product_id already exists; if the product_id already exists then I write an update. If not then I write an insert statement. So I ended up with something like this:


IF EXISTS(SELECT * FROM inventory WHERE product_id = :product_id ) THEN
UPDATE
inventory
SET
stock = :stock
WHERE
product_id = :product_id;
ELSE
INSERT INTO inventory
(product_id, stock)
VALUES
(:product_id, :stock);

In this example I only update one field but when I have to update a big table I ended up with a big chunk of code and thinking: "there should be another (better) way to do this".

Fortunately now with Firebird 2.1 there…

Database Mail en MS SQL Server 2005

Configuración de Database Mail en MS SQL Server 2005

Primero se debe de habilitar, ya que por omisión el componente esta deshabilitado, Utilizando el SSMS (SQL Server Management Studio)


Si no esta habilitado aparecerá un mensaje preguntado si lo habilita, después aparece esta ventana donde se pregunta al usuario que es lo desea hacer.


Seleccionamos la primera opción para crear un perfil.


Configuramos el perfil y le agregamos por lo menos una cuenta.


Seleccionamos el perfil como public y default.


Para mandar correo se utiliza el procedimiento msdb.sp_send_dbmail por lo tanto el usuario que intente mandar correo debe de tener permiso para la base de datos msdb.

Referencias:
http://www.sqlservercentral.com/columnists/cBunch/introtodatabasemailinsql2005.asp