Muchas veces cuando pensamos en realizar un trabajo en particular, por más pequeño o grande que sea, no nos detenemos a pensar en la calidad del mismo y como impacta el esfuerzo que empeñamos en el, así como esto se transforma en resultados.
Lo tradicional es pensar que el resultado tiende a óptimo a mayor cantidad de horas de esfuerzo invertidas, por ejemplo, alguien podría pensar que, un programador tarda en realizar un programa de extraordinaria calidad unas 10 horas, y la calidad del mismo va a evolucionando de forma escalonada, como la siguiente imagen:
Como verán los intervalos en que este programador realiza el trabajo y va escalando en cuanto a calidad se refiere esta definido por periodos equitativos. El problema aquí es que este pensamiento es lineal y es completamente incorrecto. Explico mi razonamiento y el porque de que esta gráfica, a mi entender, es completamente incorrecta.Si seguimos esta gráfica el programador hizo:
- 0hs a 2,5hs: El programador en esta etapa estaría haciendo un programa funcional, de cero a una calidad aceptable y funcional, no muy bueno, pero funcional.
- 2,5hs a 5hs: El programador en las siguientes dos horas y media perfeccionaría el programa para llevarlo de una etapa mediocre a un programa de muy buena calidad.
- 5hs a 7,5hs: Continuando con el pensamiento incorrecto, aquí el programador seguiría avanzando el código, haciendo algo muy bueno en excelente.
- 7,5hs a 10hs: Aquí el programador se convertiría en las últimas dos horas en una especie de dios de la programación y haría lo que solo esta al alcance de los dioses, hacer un programa perfecto (también en solo 2,5 hs)
Como se habrán percatado, lo que liste arriba esta lleno de errores, por lo general un programador demora al menos un 50% del tiempo total de un proyecto en tener una copia funcional de su sistema, algo muy distinto al cuarto del tiempo empleado por nuestro ejemplo incorrecto, a su vez también es engañoso que se hable de perfección cuando esta no se alcanza nunca prácticamente. Y por sobre todo estamos dejando muchas variables importantes fuera de la grafica: ¿Donde esta la motivación? ¿Cansancio? ¿Cómo se puede tardar lo mismo en pasar de una etapa a la otra?
Si damos por sentada la gráfica anterior estaríamos diciendo que todos podemos tener un programa perfecto solo empleando mas horas. Pero hace tiempo leyendo una genial entrada de Charlie Gilkey entendí un poco mejor como en verdad funciona esto, y que tan impactante y pequeña es la diferencia entre hacer las cosas bien y excelentes. La gráfica solución al mismo problema es la siguiente:
Y ahora si la gráfica se condice mucho mas con la realidad de todos nosotros, no solamente con la del programador del ejemplo. Como pueden ver en todos nuestros proyectos casi siempre lo que mas tiempo consume es llegar a un punto de calidad aceptable, que podría definirse hasta como mediocre, es casi como aprobar una materia con una nota un poco superior o igual a la necesaria para no aplazar. Pero si nos esforzamos un poco mas, la distancia recorrida es muy inferior a la que ya pasamos para llegar a una calidad muy buena.
Es simple, pero a veces la primera etapa nos desgasta demasiado, pero estoy convencido que podemos llevar todos nuestros trabajos y todo lo que hagamos al próximo nivel, ¿porque quedarnos en simplemente bien cuando podemos ser excelentes?
A mí particularmente, y como programador, me gusta lo que defino como zona clave:
La zona clave es donde radica la diferencia entre un profesional mediocre y uno excelente, muchos se preguntaran porque no marco dentro de esta zona al punto de perfección, la respuesta es simple, no creo que realmente exista ese punto, al menos no en áreas de tecnología o similares, es realmente imposible encontrar la perfección, tecnologías que evolucionan hacen que algo nunca pueda ser perfecto, sino ya tendríamos un sistema operativo sin fallas desde hace mucho tiempo 😛
IgaCrack
15 años ago
Muy bueno… Sinceramente yo era de los que pensaban como en la primera gráfica, ahora lo veo de otra forma… Bastante entendido. Gracias.
Pablo
15 años ago
@IgaCrack: Gracias por tu comentario, te aclaro que a mi me pasaba lo mismo al principio 😀
Saludos!
José Galisteo
15 años ago
Estoy de acuerdo contigo.
Yo más o menos dependiendo de lo que estimé (estimamos) que costaría el producto no ideal pero si entre bién y excelente para el cliente y lo que me está costando para llegar a ese punto lo dejo en un punto u otro de esa linea imaginaria. Pero siempre teniendo en cuenta de que el mejor programa (que soy capaz de imaginar o hacer) no es lo que más necesita el cliente.
En definitiva, cuantas más horas trabaje más le cuesta al cliente y a veces puede que lo que yo cosidere aceptable al cliente le es más que suficiente. Encima creo que es perfecto no se lo parece al cliente y lo que a mi me parece más chorra a él le parece más que suficiente. Por eso también creo que es necesario un feeback periodico del cliente (usuario que compra aplicación o usuarios que la usan).
gss
15 años ago
hola pablo, me parece un buen post, en mi caso y con mi experiencia te puedo comentar que yo alargaría un poco más la brecha entre excelente y perfecto (casi infinita); nosotros los programadores, tenemos que tratar que el software sea lo mejor posible (desde todos los puntos de vista) pero no perfecto, ya que nos quedaríamos sin trabajo… jajaja no mentira, hablando en serio, mi brecha entre esos dos es un poco mas larga por el hecho que nunca logro que algo quede «perfecto», y porque digo asi? porque SIEMPRE podes encontrarle alguna mejora, tanto como programador, como si lo pensas para el usuario, o para el administrador, es un laburo continuo que tiende a hacerse inf largo. Y estoy totalmente de acuerdo en eso de porque quedarse con algo aceptable? me he cansado de ver cosas que decis ¿como pueden haberlo dejado asi? o sea, no soy perfeccionista, pero si me fijo en los detalles, esos minimos detalles que nos diferencian de los demas, y en el dia a dia nos cambian la mirada, y, por lo menos a mi, me hacen sentir satisfecho y bien con mi trabajo.
Un abrazo, buen post.
MAMsaki
15 años ago
Hey genial!, muy buen analisis el cual no solo se aplica a la programacion pero se lleva de la mano, lo que es tardado es llegar ala idea (como das a entender), ya teniendo esa idea ya es más facil, ya que solo son puros retoques y detalles de la idea ya previamente desarrollada, y solo es cuestion de detallarla. Tambien hay factores de tiempo y presion que afectan a la «vision» de los detalles, ya la motivacion es algo un poco aparte pero importe.
Exelentisima entrada, y pues… siendote sincer@ y sin presuncion, yo nunca pense como la primera grafica, si no mucho muy cercana a la segunda, la variante?, que la linea se alarga como en el inicio, ya que para llegar a lo que se consideraria perfeccion, toma más tiempo ya que casi todos los detalles importantes han sido modificados, y para quien lo crea los detalles profundos pasan a ser inperceptibles.
Genial ^w^
Compartidos en el Reader
15 años ago
[…] Matias, Julio y Guille esta semana: ¿Es así España? ¿De verdad?. AvivaGiles: Cómo funciona. La diferencia entre hacer una tarea bien o excelente. Urinal protocol vulnerability. El PP y los dos rombos. Aclaración diputado PP sobre la metida de […]