PDA

Ver la Versión Completa : Miedo a la nada


dec
24-10-2006, 16:34:38
Miedo a la nada

No sé si me ocurrirá a mí sólo o, por el contrario, es algo más o menos común entre programadores. Ciertamente yo no tengo estudios académicos de programación ni de nada, prácticamente, sólos los veinte duros de informática que he podido recoger por mi cuenta en ciertos libros, páginas Web, comunidades, foros como este del ClubDelphi, etc.

¿Qué es el miedo a la nada? ¿de qué voy a escribir? Pues del miedo que siente un programador a que su sistema falle en determinado punto, precisamente, un punto que en su momento fue probado y vuelto a probar no pocas veces, pero, que, parece que se nos olvida, se nos olvidan aquellas pruebas y vueltas a probar y resulta que nos da miedo que pueda fallar... sin más ni más.

Será que tengo poca memoria. Debe ser que la confianza que tengo en mí mismo y por tanto en los sistemas que pueda llevar a cabo no es ni la suficiente ni una mínima adecuada para continuar adelante sin este miedo pánico de que pretendo hablar aquí.

Pondré un ejemplo: el sistema de registro de Loturak. Sí; otra vez voy a hablar de Loturak, lo siento. Los que no conozcan qué es esto que no se preocupen, al fin y al cabo lo expongo así para clarificar, pero, igual podría tratarse de otra aplicación, lo mismo podría generalizar, pero, me es imposible porque Loturak me obsesiona últimamente, estoy encima de esta aplicación y así me será más sencillo referirme a ella a modo de ejemplo.

¿Qué pasa con el sistema de registro de usuarios en Loturak? Nada; ahí está la cosa: no pasa absolutamente nada, funciona bien, por el momento no ha causado problemas y cumple con su función... y, sin embargo, no me es posible dejar de pensar en que puede fallar, en que "seguro" que falla, en que hoy mismo fallará porque veo que se han registrado un par de usuarios y... ¿Pero no hemos quedado en que funciona? ¿Por qué habría de fallar entonces, ahora, precisamente?

No lo sé; es el miedo a la nada. Porque además dicho sistema de registro de usuarios se ha probado, obviamente, en más de una ocasión, mucho antes de que Loturak estuviera públicamente disponible. Es cierto que el registro de usuarios en Loturak implica varias cuestiones que, digamos, podrían separarse:

1º El usuario rellena un formulario de registro
2º El formulario de registro es procesado convenientemente
3º Loturak envía al usuario un correo para que pueda activar su cuenta
4º El usuario recibe el correo, sigue un enlace y activa su cuenta
5º Eso es todo. El registro de usuario ha terminado.

Son varios pasos... varios "frentes" que pueden causar problemas, y así, el miedo a la nada se multiplica por tantos puntos cuantos tenga que pasar el usuario hasta que finalmente sea registrado en la aplicación. Pero no deja de ser miedo a la nada, porque, aunque varios puntos, todos ellos fueron probados en su momento, varias veces, claro está, ¡y lo más importante, no fallan, por el momento van bien, funcionan como se espera que funcionen!

¿Entonces porqué ese miedo a la nada? Porque no tiene razón de ser, no tiene lógica. Cuando algo funciona no tiene por qué dejar de hacerlo sin más y, sin embargo... bueno, aquí estoy escribiendo sobre este tema.

Hace cierto tiempo leí un artículo de Joel Spolsky (joelonsoftware.com) que algunos de vosotros también habréis leído. No recuerdo el título del artículo, porque lo leí en su momento junto con todos los que este autor tenía traducidos al español, y así todo se mezcló en cierto modo en mi cabeza. Pero, venía a decir más o menos esto: el código fuente no se oxida, no es como otras cosas, lo que está bien está bien y no va a dejar de estarlo sin más.

Él se estaba refiriendo (si no recuerdo mal) a la tendencia que tenemos a veces de comenzar las cosas de cero, incluso cuando las cosas parecen estar funcionando razonablemente bien. Yo esto lo he vivido también con Loturak. Y de hecho no puedo estar más contento de que en cierto momento decidiera, cuando pretendía yo mismo convencerme de lo contrario, que no iba a empezar a escribir el sistema de cero.

Tuve cierta confianza en el trabajo que llevaba hecho, pensaba que, aunque no perfecto, podría seguirse con él, y, como digo, aunque pensaba por otro lado que no, que no podía ser, que lo mejor era empezar de cero, tomé la determinación de no hacerlo,... de continuar adelante... y hasta hoy.

El punto de ruptura (por decirlo así) que me hizo plantearme la reescritura del sistema fue el siguiente. Quería que los registros que se guardan en la base de datos de Loturak pudieran editarse "vía AJAX", es decir, que no hiciera falta abandonar una página para llegar a un formulario de edición, sino que pudieran editarse y actualizarse sin cambiar de página, simplemente.

Pues bien. No veía la manera de hacerlo. No tenía experiencia en ello y acaso pretendía que por arte de birlibirloque la cosa fuera a ir bien desde un principio... por supuesto que no fue así y me costó hacer unas cuentas pruebas hasta que me ví que era posible,... hasta que conseguí hacerlo... y me dí cuenta de que si hubiera comenzado la reescritura del sistema por ese motivo hubiera metido la pata hasta el fondo.

Ahora mismo es posible editar los registros como digo,... y algo más: se da al usuario de que lo haga como él quiera: mediante un formulario en una página nueva, o de la manera que vengo diciendo, sin necesidad de este formulario, sin necesidad de cambiar de página. Creo, humildemente, que Loturak tenía bases suficientes para aguantar el tirón, para "escalar" en este sentido sin demasiados problemas, ¡y yo quería comenzar de nuevo, porque pensaba justo lo contrario!

Bueno. Quiero terminar diciendo que hay que tener cierta confianza en uno mismo. Que es absolutamente imprescindible para no pasar por el miedo a la nada, que es de los peores miedos posibles, porque se compone de fantasmas que nosotros mismos nos encargamos de poner ahí... de modo que nadie nos convencerá de otra cosa a poco que seamos cabezones... somos nosotros mismos los que nos infundimos el miedo y los que lo soportamos.

Es verdad que un poco de miedo puede ser provechoso: te obliga a cerciorarte de que, efectivamente, las cosas van como se espera que vayan, aunque sea para luego decirte "ya lo sabía, si lo probé varias veces". Sirve para no confiarte y para tener presente que el que tiene boca se equivoca, que en la obra está el yerro, porque quien no obra no puede equivocarse jamás, claro está.

En fin, no quiero aburriros más. Se me ocurrió escribir esto y bueno, ya lo he dicho, ¿en qué mejor sitio que en este para publicarlo? Salvo que penséis de otro modo y me lo hagáis saber a lo mejor os someto a la tortura de estos mis torcidos pensamientos (pero no retorcidos) y demás paranoias mías. Quedáis avisados.

:D :D :D

Ñuño Martínez
24-10-2006, 16:57:59
No eres el único que tiene ese "miedo a la nada". Yo también paso por él de vez en cuando. Por ejemplo, estoy empezando a enfrentarme a él ahora que voy a redefinir el API de Mingro (ya verás, me va a pasar como a tí, que voy a sacar Mingro a relucir siempre que pueda ;) ).

Yo, de hecho, lo tengo demasiado a menudo. Si hiciera caso siempre de ese miedo no habría terminado ningún programa todavía. Afortunadamente hay veces que lo ignoro y así consigo terminar algo.

mamcx
24-10-2006, 17:10:39
Creo que aqui hay varias cosas....

En cuanto a esto, lo unico que digo es:

http://www.python.org/doc/Humor.html#zen

# Lo bello es mejor que lo feo
# Lo explícito es mejor que lo implícito
# Lo simple es mejor que lo complejo
# Lo lineal es mejor que lo anidado
# Escaso es mejor que denso
# La legibilidad cuenta
# Los casos especiales no son tan especiales como para romper las reglas
# El pragmático vence al purista
# Los errores no deben pasar en silencio
# A menos que se silencien explícitamente
# Frente a la ambigüedad, resiste la tentación de adivinar
# Debe haber una, y de preferencia solo una, manera obvia de hacer las cosas
# Ahora es mejor que nunca
# Aunque nunca es mejor que ahora mismo
# Si la implementación resulta difícil de explicar, entonces es una mala idea
# Si la implementación es fácil de explicar, entonces podria ser una buena idea

Primero, porque preocuparse si un programa falla? Porque impedirselo? Acaso es sano "tapar" una gripe?

Si una cosa sale mal, debe salir mal monumentalmente... visiblemente. BLue Screen of Death. Es mucho mejor a los problemas insidiosos. Siempre he tenido en la cabeza que cuando un programa falla, es que se ejecuto *perfectamente*.

La parte dificil es como asegurse que no lo hizo? El que un programa no saque un mensaje de error no garantiza que lo hizo bien.

Para ello es bueno usar unit testing, analisis de cobertura y test de caja blanca... y ni asi se puede garantizar.

Que un programa no se "oxida"? La Ley de las abstracciones imperfectas (que lo escribio el mismo Joel) garantiza que es un axioma falso. Los programas se oxidan y dejan, misteriosamente, de funcionar...

Lo segundo, es que estas complicando mucho la vuelta. Mira (ya que hablamos de proyectos personales ;) ) el formulario de registro de este sitio que estoy levantando:

http://www.paradondevamos.com/accounts/singup/

Cuantas *otras* opciones de registro hay? Ninguna. Como tu, me estaba debatiendo en hacer chorradas en ajax, pero me gusto mas el concepto de "mejora progresiva", o sea, levantas el sitio en html plano con zero diseño y solo html semantico y le vas metiendo chorradas hasta que cumple su objetivo. La unica cosa que me gustaria es hacer un combo dinamico para seleccionar entre las ciudades ya ingresadas, pero la verdad me he resistido la tentacion.

Lo que lleva a lo 3. Hay que usar un bug tracking o mejor dicho, una lista de tareas con prioridades, como expone Joel y como re-expuse en http://bdn.borland.com/article/33656 (que la verdad fue basado en lo de Joel pero con mi experiencia personal)

En eso, soy un desastre. Tengo tantas ideas en mi cabeza y pruebo tantas cosas que avanzar en una unica direccion es como redireccionar un chorro de agua a presion de 100 mt de diametro, tener una herramienta de estas es de gran valor.


Cuarto, no veo el stress con el ingreso de usuarios. La unica cosa que podria faltar es eliminar registros "huerfanos" y ya. Si el usuario siguio el link y se ejecuta la tarea, todo bien, todo bien.

dec
24-10-2006, 18:20:40
Hola,


Si hiciera caso siempre de ese miedo no habría terminado ningún programa todavía. Afortunadamente hay veces que lo ignoro y así consigo terminar algo.


Bueno. Creo saber por dónde vas, pero, efectivamente, no se trata de ignorarlo por completo. En mi caso el miedo indica, claramente, una falta de confianza en mí mismo, y por tanto en todo lo que hago. Vamos, eso creo yo. ;)


Primero, porque preocuparse si un programa falla? Porque impedirselo? Acaso es sano "tapar" una gripe?


Hombre, cuando un programa falla "en producción"... la cosa sí puede resultar preocupante. Los fallos cuando estás probando no son tales, puesto que, precisamente, estás en pruebas... pero cuando el programa se publica ya no es lo mismo... claro que los fallos terminarán por aparecer, pero, en este caso alguien tendrá que sufrir sus consecuencias... y no sólo el programador que tenga que echar un vistazo a ver qué puede estar pasando.


Que un programa no se "oxida"? La Ley de las abstracciones imperfectas (que lo escribio el mismo Joel) garantiza que es un axioma falso. Los programas se oxidan y dejan, misteriosamente, de funcionar...


Pero no tiene mucho sentido, es decir, no ocurrirá "sin más". Evidentemente si haces un sistema para PHP4 y actualizas a PHP5... pues puede que se den problemas, pero, no habrá sido porque el código se oxidase. Cuando una cosa está bien hecha, en el sentido de que funciona como se espera, está probada y vuelta a probar... ¿a qué tenerle miedo de que vaya a fallar? No debería, ¿no? Pues a ese miedo es al que me refería, exactamente cuando has probado algo lo suficiente y de repente, casi como una obsesión, te parece que aquello va a dejar de funcionar... porque sí. De ahí lo del miedo a la nada o a nada, porque no te basas en razones para intuir (y temer) que algo va a fallar.


Cuantas *otras* opciones de registro hay? Ninguna. Como tu, me estaba debatiendo en hacer chorradas en ajax, (...)


En realidad no se trataba de eso en Loturak. En un principio no se exigía al usuario que activase su cuenta (esto es, que validase su correo electrónico), pero, un día Loturak apareció en cierta página Web (Genbeta.com (http://www.genbeta.com)) que le reportó no pocas visitas... ese día se registró más gente en Loturak que en todo el tiempo que esta aplicación está disponible, pero, no queríamos que eso fuera la norma, precisamente, porque no queremos usuarios "de paso", sino usuarios que utilizen Loturak porque lo crean conveniente.

Así que no se trata de "Ajax", de hecho en el caso que nos ocupa no se utiliza para nada, sino, sencillamente, de que el usuario no se registrara sin más, de que fuera consciente que tendría que revisar su correo electrónico (por tanto la dirección de correo que proporcionase tendría que ser "real") y activar su cuenta de usuario antes de poder acceder a su cuenta en la aplicación.

Desde ese momento existe en la aplicación "usuarios inactivos", es decir, existen por un plazo de tiempo determinado, porque los usuarios inactivos, sus cuentas correspondientes, se disponen para borrarse luego de dos días que permanezcan desactivadas. No nos pareció mal hacerlo de este modo, ya digo, aunque tal vez otros lo vean de otro modo y bueno, puede que lleven razón o que tengan sus razones.

Lepe
25-10-2006, 11:40:38
Hombre, cuando un programa falla "en producción"... la cosa sí puede resultar preocupante. [...] claro que los fallos terminarán por aparecer, pero, en este caso alguien tendrá que sufrir sus consecuencias... y no sólo el programador que tenga que echar un vistazo a ver qué puede estar pasando.


Resulta evidente teniendo en cuenta IE 7 :D :D ... ¿ha pasado algo con el bug encontrado? Pues no, parche al canto y compilando que es gerundio :D

Saludos

dec
25-10-2006, 11:59:17
Hola,

Sí; llevas razón Lepe, empero, hay errores y errores. En Loturak (prometo no mencionar esta palabra en mis próximos 500 mensajes por lo menos), digo, hemos solucionado algunos errores de bulto de los que acaso nadie tuviera constancia. Sin embargo, un error que no permita a tus usuarios registrarse en el sistema... o bien te avisa un usuario que quiere hacerlo y no encuentra cómo (como así ocurrió en verdad) o bien te hace "perder" usuarios que además se irán pensando (gerundio también) "¿Pero esto qué es lo que es?"... ;)

Casimiro Notevi
26-10-2006, 22:52:27
Una vez tuve miedo, fue mi primer gran proyecto, yo esperaba que fuesen sustituyendo los papeles poco a poco y se pasaran al ordenador progresivamente, pero no, de un día para otro, sin pensarlo, así sin más, dejaron arrinconado los papeles, las fichas de cartulina, las anotaciones en bolígrafo y papel... y empezaron a usar el software que les acababa de instalar. Yo no dormía tranquilo pensando que se me podía haber pasado algo que estropeara los datos, que corrompiera la base de datos y se perdiera toda la información. Yo llamaba todos los días: "¿Qué tal, cómo van las cosas por ahí?, ¿habéis hecho copias de seguridad por si acaso?", pero las respuestas siempre eran las mismas: "Bien, sin problemas, todo perfecto y muy rápido, qué diferencia, no sé cómo hemos tardado tanto en dar el paso a estas nuevas tecnologías. Y no, todavía no hemos hecho copias de seguridad".
Pasado un tiempo ya lo tenía asumido, todo funcionaba perfecto, por suerte, menos mal.

Ahora recuerdo que tuve miedo otra vez, pero eso fue distinto, la bestia medía casi 2 metros y lanzaba una coz tras otra, suerte que mis reflejos eran entonces bastante mejores que ahora, pero eso es otra historia.

dec
26-10-2006, 23:00:25
Hola,

Bueno... es que eso último que dices no es precisamente miedo a la nada... yo veo algo mayor que un gato y el que se sube a un árbol soy yo. :D

Héctor Randolph
26-10-2006, 23:15:01
En Loturak (prometo no mencionar esta palabra en mis próximos 500 mensajes por lo menos)


Oye David, para ti será fácil prometer y cumplir esta afirmación porque tu contador de mensaje lleva más revoluciones por minuto. Mi contador es más lento, en dos años no ha llegado aún a los 500. :eek:


No importa que tengas que
Comenzar de nuevo la cuenta (http://www.clubdelphi.com/foros/showpost.php?p=164268&postcount=38) :D

Saludos

dec
26-10-2006, 23:19:28
Hola,

Bueno... no se lo digas a nadie, pero, hace tiempo inyecté en el ClubDelphi cierto código (made in dec) que lo que hace por las noches (cuando todos los gatos son pardos) es decrementar mensajes del resto y añadirlos a mi contador... pero tú no se lo vayas a decir a nadie, ¿eh? :D

egostar
26-10-2006, 23:25:26
Hola,

Bueno... no se lo digas a nadie, pero, hace tiempo inyecté en el ClubDelphi cierto código (made in dec) que lo que hace por las noches (cuando todos los gatos son pardos) es decrementar mensajes del resto y añadirlos a mi contador... pero tú no se lo vayas a decir a nadie, ¿eh? :D

:confused: :confused: acuerdate de mi contador de vez en cuando :D:D

Saludos.