Tip 7: Make Quality a Requirements Issue - Haz la calidad un requerimiento.

El alcance y la calidad de un sistema debería estar especificado en la tabla de requisitos.

Los usuarios finales deberían probar el software e indicar si es lo suficientemente bueno para sus necesidades. Luego se podrá añadir más funcionalidad o no. Un software bueno hoy es preferible a un software perfecto mañana.

Hay que saber cuando parar, se puede echar a perder el código si se intenta refinar en exceso. Puede no ser perfecto, pero no hay que preocuparse, podría no ser perfecto nunca. Hay que dejar un tiempo que haga su trabajo.

Tip 6: Remember the Big Picture

Se debe revisar continuamente lo que pasa alrededor, no sólo lo que estás haciendo tu.

Puede ser que se estén haciendo cambios pequeños que pasan desapercibidos, pero muchos cambios pequeños al final es un cambio muy grande.

Tip 5: Be a Catalyst for Change - Se un catalizador para el cambio.


Hay ocasiones en las que un programador sabe lo que quiere hacer, pero no encuentra apoyo (ya sea de sus superiores o de compañeros) para llevarlo acabo.

En estos casos lo que hay que hacer es trabajar en ello, hacerlo bien y cuando se tengan algunos resultados enseñarlos. Si es interesante te propondrán mejoras, e incluso se unirán al proyecto.

Es más sencillo unirse a algo que ya está en marcha que empezar desde cero.

Tip 4: Don't Live with Broken Windows - No vivas con ventanas rotas.

Las ventanas rotas son en éste caso: un mal diseño, decisiones o código erróneo,... Hay que arreglarlo tan pronto como se descubra. Si no hay tiempo se puede comentar el código, mostrar un mensaje,... lo que sea para evitar un posible problema e indicar que la situación está bajo control.

En general las leyes físicas no afectan al desarrollo de software, aunque la entropía ataca duro. La entropía es un termino de la física que hace referencia a la cantidad de desorden de un sistema. Desafortunadamente las leyes de la termodinámica nos dicen que la entropía en el universo tiende a incrementar.

Un coche abandonado puede pasar meses en perfecto estado, pero como se rompa una sola ventana, en horas estará desguazado.

Si te encuentras trabajado en un proyecto con algunas "ventanas rotas" es muy fácil pensar que todo el proyecto está en el mismo estado y no te molestarás en hacer buenos aportes al proyecto. Por la misma regla, si te encuentras en un proyecto donde el código está bien comentado, ordenado, limpio, elegante,... tendrás mucho cuidado para no desordenarlo.

Tip 3: Provide Options, Don't Make Lame Excuses - Proporciona opciones, No pongas malas excusas.

Un programador no tiene que tener miedo de admitir su ignorancia o un error cometido. Los errores los comete cualquiera, pero hay que tratarlos de manera profesional. Esto significa ser honesto y directo.

Cuando se comete un error hay que admitirlo honestamente y buscar soluciones. No hay que culpar a alguien o algo o poner excusas. En vez de buscar excusas hay que buscar soluciones.

Tip 2: Think! About Your Work - Piensa en tu trabajo.

Un programador debe pensar en lo que está haciendo mientras lo está haciendo. Tiene que hacer una evaluación de cada decisión que tome. Pensar constantemente en su trabajo y criticarlo en tiempo real.

Esto quitará algo de tiempo, pero la recompensa es una implicación activa en el trabajo que le gusta, el sentimiento de dominio sobre un creciente número de materias y el placer de sentir un continuo perfeccionamiento.

A la larga, el tiempo invertido se recompensará convirtiéndolo en un eficiente programador, escribiendo código más sencillo de mantener y pasando menos tiempo en reuniones.

InvokeRequired

Ya se que cuando queremos actualizar un formulario o control desde un thread distinto al que creo el control hay que usar el método Invoke o BeginInvoke pasandole un delegado a ejecutar.

Para no tener que definir el delegado podemos usar los metodos anónimos.


if( this.InvokeRequired )
{
this.Invoke( (System.Threading.ParameterizedThreadStart)delegate( object o )
{ UpdateProgressBar( current ); } , current );
}


o este si no necesitamos pasar parámetros


if( InvokeRequired )
{
this.Invoke( (MethodInvoker)delegate() { StopTest(); } );
}

Tip 1: Care About Your Craft - Preocupate de tu oficio

Cada programador es único, con sus puntos fuertes y sus puntos débiles, pero los programadores pragmáticos comparten las siguientes características:
  • Se adapta rápidamente a nuevas técnicas y tecnologías. Le gusta intentar cosas nuevas.

  • Es curioso. Se pregunta qué son y como estarán hechas las cosas.

  • Es un pensador critico, no toma las cosas sin antes cuestionarlas.

  • Es realista, intenta comprender el fondo de cada problema para así conocer su dificultad.

  • Es un manitas, intenta familiarizarse y mantenerse al día con un amplio rango de entornos y tecnologías aunque en su trabajo sea un especialista en alguna materia.
  • Pragmatic Programmer, The: From Journeyman to Master


    Este es el título de un libro que dice que me ayudará a ser un mejor programador, a hacer mejor mi trabajo. A ver si ses verdad.

    Se basa en la experiencia de 2 programadores, Dave and Andy, que a lo largo de su carrera han recopilado información de como hacer las cosas para hacer mejor su trabajo, la han usado para superarse ellos mismos y han desechado lo que no funcionaba.
    No es una teoría del desarrollo del software. Nos cuentan como programan ellos.
    Programar es un trabajo lleno de detalles, no es sólo teclear comandos en un lenguaje de programación, es un arte.

    A lo largo del libro va dando una serie de consejos para convertirse en un buen programador. Cada consejo está basado en su experiencia.

    Aquí intentaré ir haciendo un resumen de cada uno de ellos.