Ir al contenido principal

Café filosófico para programadores (y otros)

Compartimos algunos conceptos algo "filosóficos" en una charla con amigos/colegas.

Seguramente todos estos conceptos están mejor explicados, desarrollados y pensados en infinitas fuentes, pero esto es un buen resumen de una charla de café que me aportó y eventualmente le aporta a alguien:

Deuda Técnica

¿Qué hay que hacer para pagar deuda?
Lo primero es no generar más deuda, ralentizar el crecimiento de la misma y luego pagar lo viejo.

Tiempo

No es válido decir "no tengo tiempo". Todos tenemos 24hs horas al día, lo que elegimos es qué hacer con esas 24hs.

En este sentido, cuando alguien dice “no tengo tiempo” está diciendo “preciso ayuda con las prioridades”.

Renunciar

Es de las cosas más difíciles. Dado que el tiempo es limitado por definición, hay que priorizar, priorizar es elegir, elegir es renunciar.

Esto nos cuesta a todos, especialmente cuando es renunciar en el corto plazo (dolor ahora) para ganar en el largo plazo (placer en el futuro).

La inversa (no renunciar) es placer en el corto y dolor en el futuro. Esa será la tendencia "natural".

Es bien embromado porque tomás la decisión de renunciar y eso seguro da dolor ahora por un posible placer futuro…. ¡Nada fácil!

Evangelizar/Convencer

Evangelizar lleva tiempo.

Evangelizar no es imponer, es convencer y convencer lleva tiempo. 

El laburo de evangelizador es muy difícil, para arrancar tiene que invertir del 2 (tiempo) y aplicar mucho el 3 (renunciar a cosas). 

Algunas personas no son fáciles de convencer porque están aferradas a la teoría, los libros y las "best practices" y  terminan confundiendo el mapa con el terreno, otras aferradas a las costumbres (muchas veces basadas en éxitos pasados), otras simplemente por inercia o desinterés. Sobre estas últimas la evangelización es casi imposible, por lo cual la imposición puede ser el camino.
En todo caso, identificar los motivos es un desafío en sí mismo. Decaro siempre dice: "el real interés".  

Por otra parte, la "pasión" del evangelizar lo puede pasar a pasarse de revoluciones, avasallar y generar una actitud defensiva, lo cual obviamente es contraproducente al fin buscado. Dosificar esa pasión es otro desafío para el evangelizador. Debe mantener la rienda de su pasión corta en todo momento.

Receta

No existe el "receta perfecta".

Dependiendo del contexto es la adecuada, eventualmente la óptima.

Sea cual sea la receta: requerirá tiempo de las personas, por lo cual tendrán que renunciar a cosas, para lo cual hay que convencerlas.

De hecho, acabo de renunciar a otras cosas para dedicar tiempo a este post porque estoy razonablemente convencido que le pueda servir a alguien. Siendo que no se lo debía a nadie 😉

Comentarios

Publicar un comentario

Entradas más populares de este blog

Abrir links con aplicaciones nativas y no el browser (deeplinking)

El problema que tengo con algunas aplicaciones Android/iOS es que cuando recibo un link por algún medio (mail, tweet, etc) al abrirlo me lo abre con el browser, en lugar de abrirlo con una aplicación nativa asociada a ese “contenido”. Por ejemplo, si recibo un link a un tweet espero que lo abra con alguna aplicación de twitter que tenga instalada y no con el browser. De modo análogo si recibo un mail con una nota de prensa de un medio X y tengo la aplicación de ese medio X instalada, espero que el link lo abra con la aplicación nativa y no con el browser. Lo mismo quisiera con mi aplicación de "banking" o cualquiera que tenga instalada y sepa manejar ese "contenido" (link). Los motivos son bastante obvios pero los resumo en: la experiencia de usuario es mucho mejor en la aplicación nativa que en el navegador. Parte importante del tema es que el mismo link sea válido tanto para ver el contenido en el browser como para verlo en la aplicación, porque como prove

¡A la salud de mi KB!

Es bueno, especialmente en "bases de conocimiento" (KB) que han pasado por varias versiones de Genexus, chequear su "estado de salud". En este sentido KBDoctor  es una herramienta que ayuda mucho, principalmente desde el punto de vista del "modelo" Genexus (atributos, calls, definiciones de variables, etc) representado en una KB. También es útil revisar la salud de los archivos que lo soportan. Hasta la 9.0 eran archivos C-tree (los famosos .DAT) que tenían indices (los famosos .IDX) y teníamos en "rebuild -y" que mejoraba esos archivos y sobre todo reconstruía los indices. A partir de la X las KBs se almacenan en MS SQL Server por lo cual la administración de la misma pasó de ser un "file server" a un "database server". En este sentido algo que me ha dado muy buenos resultados es el "CheckKnowledgeBase".

Rocha:Constantes tipo fecha

En la Rocha se soportan constantes del tipo fecha o fecha-hora con formato ANSI/ISO (AAAA-MM-DD HH:MM:SS).  Tecnicamente (Sintáxis): <date>::=    [0-9]{1,4}"/"[0-9]{1,2}"/"[0-9]{1,2} | [0-9]{1,4}"."[0-9]{1,2}"."[0-9]{1,2} | [0-9]{1,4}"-"[0-9]{1,2}"-"[0-9]{1,2} <hms>::=    [0-9]{1,2}[ap] | [0-9]{1,2}":"[0-9]{1,2}[ap]? | [0-9]{1,2}":"[0-9]{1,2}":"[0-9]{1,2}[ap]? <constant> ::=   "#"<date>"#" | "#"<date> <hms>"#" | "#"<hms>"#" Funcionalmente Se pueden utilizar esas constantes en las reglas, eventos, propiedades, etc (todo lugar donde se utilice el parser): Algunos ejemplos básicos: &FechaInicial=#2007-01-01# &FechaHoraInicial=#07-1-1 11:15a# &HoraInicial=#11a# Me parece bueno no tener que escribir funciones (CTOD, TTOC) sobre constantes tipo char para lograr una fecha y mucho mejor aun en