diciembre 17, 2007

Frightening conclusion - Conclusión Aterradora

Una de las frases que leí por ahí, un día de este año. Altamente recomendable.
One of the phrases I read somewhere, sometime, in this year. Highly recommended.

"He llegado a la conclusión aterradora de que yo soy el elemento decisivo. Es mi acercamiento personal el que crea el ambiente. Es mi humor diario, el que crea el clima. Yo poseo un poder tremendo para hacer la vida miserable o jovial. Yo puedo ser una herramienta de tortura o un instrumento de inspiración, yo puedo humillar o humorizar, lastimar o curar. Es mi respuesta a todas las situaciones, la que decide si una crisis se acrecienta o disminuye, y si una persona es humanizada o des-humanizada. Si nosotros tratamos a la gente como son, los hacemos peores. Si nosotros tratamos a la gente como debiera ser, los ayudamos a convertirse en los que son capaces de transformarse”
“I have come to the frightening conclusion that I am the decisive element. It is my personal approach that creates the climate. It is my daily mood that makes the weather. I possess tremendous power to make life miserable or joyous. I can be a tool of torture or an instrument of inspiration, I can humiliate or humor, hurt or heal. In all situations, it is my response that decides whether a crisis is escalated or de-escalated, and a person is humanized or de-humanized. If we treat people as they are, we make them worse. If we treat people as they ought to be, we help them become what they are capable of becoming.”
Goethe

A mi me pareció muy bueno, tanto cada una de las sentencias como su conjunto.
Very good for me, even each sentence, as well as all of them as a whole.

junio 27, 2007

Travel broadens your mind

7 months ago, I did not have idea I was going to travel beyond the sea... Maybe it was a gift from God to teach me new lessons. And now I have new opinions, new ideas in my mind, new memories to tell, new people to miss, new places to see in pictures.

Somewhere you can listen: "When the student is ready, the teacher appears"... Well, for me is true. You can find "new lessons" not only in your town, in your language, if you have your eyes, ears and mind opened, every moment is a new opportunity to grow, as a person, as a man, as a engineer, or whatever you want if you are determined and willing to do it.

I have high standards for myself. Even when I am not satisfied with my achieves or my status, I am really happy to have traveled to other country. Different language, different culture, and, at the bottom, more or less the same thoughts of life...

Well, China, I am not disappointed. I am very thankful.

Destiny

Here we have, persons who believe our life depends on our own decisions and nothing more...

On the other hand, we have persons who believe in luck, in God, or just a life that follows a path traced by some other intelligence or power. Of course, some others call this "the force" or just like this title: Destiny.

I believe in our own decisions, choices (or resolutions), but also in a mixture of events. Surely, no one else is going to take care of us forever than ourselves.

I know I am young, and it doesn't matter how many things I have read, or I have seen or I have lived, there is at least someone else wiser than me in the world. When I was 15 aprox, I remember I wanted to change the world, and sometimes create a new one, where all the problems disappear or at least some place where more people could be happy... now I feel satisfied with myself when I continue "dreaming" or "wishing" the same things... even when I know it is a hard work, but not impossible. Luck is not for everyone (in that case no body could be called "lucky") and I think God sometimes gives us "life tests" in order to improve our own capabilities and knowledge... I do not think God is bad, but many millions of people and animals and worlds to manage is a considerable work.

I wonder if that "Destiny" is in charge to decide if Justice should appear or not; if we will have Love or misfortune; or perhaps I am wrong, and along all our life we have a complete mixture of events; or even another idea is that after many "lives" we have experienced all different layers of happiness: in some lives poor, in some other rich, handsome, ugly, fat or thin...

Who will know...

febrero 12, 2007

Memorandum de un programador

Sé que no soy un erudito en la materia, y que probablemente lo aquí escrito ya lo haya dicho, pensado o escrito alguien más, hasta el momento lo desconozco, si uds. lo saben favor de mencionármelo; pero en lo personal, los años que estudié del 2001 al 2005, además de todo el 2006 a la fecha en la experiencia de prácticas y trabajo en mi área, me hicieron llegar en distintos momentos a pensar en alguno de estos puntos. Por supuesto, los puntos personales, como ambición, ganas, esfuerzo, disciplina, moralidad, ética, tenacidad, proactividad, gentileza, humildad son siempre puntos a favor, y aplican para toda la vida no importando el tipo de trabajo. No sé si uds coincidan, o quieran tomarlos como "mandamientos" o técnicas de programación, análisis, o tomarlo como una analogía al juramento Hipocrático, no creo que llegue a tanto, pero al menos para mí, creo que me servirá bastante como referencia.

Como programador, analista, ingeniero o licenciado en sistemas:

  1. Debo dedicarle el mejor tiempo al buen análisis del problema. Sin que esto lleve a dejar muy poco tiempo a las demás tareas de diseño, programación, pruebas y depuración.
  2. Debo explicar en lenguaje común, entendible y lo más simple posible qué hacen los programas, funciones, o para qué se necesitan ciertas variables en el código, de modo que cualquier otro pueda tener idea de lo que se necesita y lo que se propuso para solucionarlo.
  3. Debo documentar lo que hago.
  4. Debo respaldar siempre.
  5. Debo llevar un control de versiones.
  6. Debo tratar de usar ambientes de desarrollo, pruebas (test) y final (productivo, estable o como se le llame).
  7. Debo probar en distintos sistemas operativos, hardware, diversos escenarios de prueba, para evaluar el rendimiento o impacto.
  8. Debo establecer estándares de programación.
  9. Debo seguir los estándares de programación: nombrado de variables, funciones.
  10. Debo inicializar variables.
  11. Tratar de reutilizar código.
  12. Trataré de que mis códigos sean modulares, orientados a objetos o sencillos, ya que el avance en puntos clímax o clave conlleva a códigos cada vez más complejos que en la medida de lo posible deben ser entendibles.
  13. El código debe ser eficiente. Tomando en cuenta longitudes de variables, uso de memoria, requerimientos de usuario.
  14. Trataré de que las características sean personalizables, con roles, con categorias o catalogos, y evitar lo mas posible el código duro.
  15. Las bajas de ser posible deberán ser lógicas y no físicas, en caso de que se desee borrar, puede ser conveniente llevar bitácoras o respaldos de tablas a determinada fecha.
  16. De ser posible llevar logs o bitácoras de acciones en los procesos críticos.
  17. Debo otorgar y denegar privilegios a archivos, carpetas, tablas, usuarios, módulos, acciones.
  18. Debo tener scripts de mis bases de datos.
  19. Debo tomar en cuenta las sugerencias de los demás, el proyecto y código es un producto humano y por tanto sujeto a errores, involuntarios o no previstos; cualquier otra persona, sea más joven o más experimentada puede encontrar errores en mi código, no deberé enojarme sino más bien agradecer la observación y aprender de estas situaciones.
  20. Debo someter a testeo y stress a mis proyectos.
  21. En la medida de lo posible debo delegar y asignar tareas de autorización, validación o evaluación a TERCERAS personas. Ya sea antes de agregar nuevos campos a las tablas, modificar funciones, borrar código, deberé consultarlo y tener el visto bueno de la mayoría, hasta llegar a un concenso.
  22. Debo capturar, cachar o dar tratamiento a errores o excepciones lo más particular posible sin que moleste al usuario con demasiados mensajes de error, validación o notificación, sino sólo lo necesario.
  23. Debo tener eventual comunicación (no tanto que sea diaria ni tan esporádica que sean sólo una o dos veces) y revisión de avances con los usuarios, para que no se llegue a avanzar o trabajar en módulos o puntos que no serán utilizados en vez de otros necesarios, o revisar antes de tener malinterpretaciones por ambos lados.
  24. Debo recordar mis errores para que mis agendas de trabajo se apeguen lo mas cercanos a lo establecido y el próximo proyecto sea de mejor calidad.
  25. Debo leer y mantenerme actualizado, lenguajes, tecnologías, metodologías, diagramas, hardware, software, sistemas operativos, bases de datos, redes, i.a... El mundo cambia, los sistemas cambian, yo cambio. No debo cambiar porque los demás lo digan o yo lo piense una sola vez. Más que cambio, debe ser evolución. Tomar lo mejor de cada experiencia, asimilarla, entenderla, aplicarla, y decidir si el cambio ha sido el mejor para vivir en adelante con él, entonces, habrá evolución.
  26. Algunos dicen: especialízate, otros, aprende de todo un poco. Yo no digo qué cosa hacer, que cada quien decida su vida. Simplemente me escribo, para recordarme algunas cosas, porque yo no tengo memoria para toda la vida...

Enlaces de mi agrado (no porque necesariamente deba creerlo, pero da qué pensar):

¿Viejos Lenguajes?

Keep it Simple

De todo un poco:

¿Por qué es tan difícil desarrollar software de calidad en plazo?

http://news-service.stanford.edu/news/2005/june15/jobs-061505.html

http://www.microsiervos.com/archivo/ordenadores/sistema-orion.html

Tareas (tentativas) a hacer (To Do):

  • Dejar el post tal como está.
  • Agrupar los puntos por tipo de proyecto (para todos los proyectos, proyectos chicos, medianos, grandes) .
  • Agrupar por rol (programador, analista, tester, responsable de aplicación, líder de proyecto).

Imágenes del flujo de un sistema


Se aceptan sugerencias, quejas, comentarios, nuevos títulos, más puntos, actualizaciones, traducciones, aportaciones, seguimientos o siguientes versiones (creo que ésta ya puede catalogarse como una 1.0).

:)



Actualización 2007-11-26 (Otros puntos de vista):

20 tips para ser un mejor programador
Los principios del programador