Category Archives: Pensamientos

The lack in some software engineering glossary of terms and graphical representations.

Software Engineering is one of the most important careers today. Almost every aspect in our life is now surrounded by devices using software. Having said that, why this profession is lack on having their own terms in some of the main aspects.

For example:


Software Architecture, why architecture? Do you know what architecture means?

Architecture is the art and technique of designing, designing and constructing buildings, modifying human habitat and studying, aesthetics, good use and function of spaces, whether architectural or urban.  

For sure there must be a better term to define it in software:

It’s the fundamental structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations.

What about this one:


Software Evangelist? really?

Evangelism is the commitment to or act of publicly preaching (ministry) of the Gospel with the intention of spreading the message and teachings of Jesus Christ.

In software, there must be a better word for:

The person who builds a critical mass of support for a given technology, and then establishes it as a technical standard in a market that is subject to network effects.

This lack in terms applies too in graphical icons widely used.


For example, have you seen a lot of times the rotating sprockets or puzzles to define “integration”?

Or what about the wrench to define “utilities”.



We really need to establish better own terms and icons to really evolve our software engineering profession. Not the cloning way, real professional new words and graphics.


*Some terms extracted from wikipedia.

The infinite human desire to complicate things./El infinito deseo humano de complicar las cosas.

Software development evolved

Since I started to create computer programs (software), I learned how to code, that means I learned the language to tell the computer what to do in a “standard” way, of course that was long time ago, the languages evolved so I needed constantly to improve my knowledge to keep learning the new updates on the language or even learn a brand new one if it was needed. But there is something that never change, “People”, we are the same, same problems, same solutions (with new technology) but finally, the same.

Talking only about software development and a little about project management: We already know how to do things, the patterns of development no matter how you call them have the same fundamental roots. Something need to be done, someone must do that. Simple. Are you sure you know how to do that? No? Then you need to ask and keep asking until you know exactly what to do. Now you start to do the job, are you having problems? are you sure no one else did it already? ok, keep asking or create. Now you ended, you are delivering the solution, it has problems? you must resolve. And that can be called the end.

Is not “rocket science” but every year (sometimes month) a new “study” claims that a new tag for the same tasks that we have been doing the same way all the years has been found…., now it becomes “rocket science”, by trying to remember all those names, tags, abbreviations, etc. that each vendor, each company, each big software creator, want to add to this software development world…. They take very old technologies or procedures, change a few names, add new tasks and voila, a new career to learn. And the roots? the same…. This is challenging ourselves, instead of really evolve in the software world we are delaying it by having “new” procedures always based on something that we already have but confusing us with new fancy names, used only to manipulate people’s mind.

The steps for every project are undeniable: 1. requirements, 2. development, 3. delivering, 4. support, nothing else, each one can have inside a lot of steps, but the whole thing is there. Now all of those steps will work if and only if this fundamental tool is used as is supposed: “Communication”, If the team working in the project have an average communication between their members, the project will end ok, but if the team have wonderful communications, the project will rock the world! Yes, that easy.


Desde que empecé a crear programas de ordenador (software), aprendí cómo codificar, eso significa que aprendí el lenguaje para decirle a la computadora qué hacer de una manera “estándar”, por supuesto, eso fue hace mucho tiempo, las lenguas evolucionaron así que necesité constantemente mejorar mis conocimientos para seguir aprendiendo las nuevas versiones en la lenguaje o incluso aprender uno nuevo si era necesario. Pero hay algo que nunca cambia, “Las Personas”, somos los mismos, los mismos problemas, las mismas soluciones (con nueva tecnología), pero en fin, lo mismo.

Hablando sólo de desarrollo de software y un poco acerca de la gestión de proyectos: Ya sabemos cómo hacer las cosas, los patrones de desarrollo no importa cómo usted los llame tienen las mismas raíces fundamentales. Necesito algo que hacer, alguien tiene que hacerlo. Sencillo. ¿Seguro que sabes cómo hacerlo? ¿No? Debes preguntar y seguir preguntando hasta que usted sepa exactamente qué hacer. Ahora que empieza a hacer el trabajo, estás teniendo problemas? ¿estás seguro de que nadie más lo hizo ya? bien, sigue preguntando o a crear. Ahora que terminó, usted está entregando la solución, tiene problemas? debe resolver. Y eso se puede llamar el final.

¿No es “ciencia espacial”, pero todos los años (a veces meses) un nuevo “estudio” afirma que encontró una nueva etiqueta para las mismas tareas que hemos estado haciendo de la misma manera  todos los años …., ahora sí que se convierte en ” ciencia de cohetes “, tratando de recordar todos esos nombres, etiquetas, abreviaturas, etc., que cada proveedor, cada compañía, cada gran creador de software, desea agregar a este mundo de desarrollo de software …. Ellos toman tecnologías o procedimientos muy antiguos, cambian algunos nombres, añaden nuevas tareas y voalá, una nueva carrera para aprender. Y las raíces? lo mismo …. Este es un desafío a nosotros mismos, en lugar de realmente evolucionar en el mundo del software nos estamos retrasando por tener “nuevos” procedimientos siempre sobre la base de algo que ya tenemos, pero nos confunden con nuevos nombres de fantasía, que se utilizan sólo para manipular la mente de las personas.

Los pasos para cada proyecto son innegables: 1. Requisitos, 2. desarrollo, 3. entrega, 4. soporte, nada más, cada uno puede tener dentro un montón de pasos, pero todo está allí. Ahora todas esas medidas funcionarán si y sólo si la siguiente herramienta fundamental se utiliza como se supone: “Comunicación”, Si el equipo que trabaja en el proyecto tiene una comunicación promedio entre sus miembros, el proyecto va a terminar bien, pero si el equipo tiene comunicaciones maravillosas, el proyecto será fantástico! Sí, así de fácil.

The dream job

Office hours
Working in the office

I have been working more than 20 years, almost all that time going to an office, doing my job between 7am-8am to 5pm-6pm, in a few companies working on Saturday also. I liked very much, I really enjoyed that time, it brings me a lot of good days and bad days too. I don’t regret that. I grew up there.

In all those years I knew a lot of different kind of companies, because I always needed more, on each company: I started, learned, improved a lot of things and when nothing left to improve, I needed to move on, that way I knew companies in different fields like telecommunications, health, insurance, real-state, software, sugar production, universities, oil industries, services and support. I did my best on each one of them, of course not perfect, but I really did my best. And guess what, my dream job wasn’t there, I still needed more.
After years doing the same, a couple of months ago I started to work by myself as a freelancer developer, that helped me to manage better my time and stay longer at home with my family. This is my kind of dreamed job, wake up early in the morning, quick shower, drive my daughters to the school, do some gym, take the shower, get clean clothes, walk a few steps to my study room and start to work!

At home working
Working from home

I love to work from home, it’s 0% stressful, better use of time (no transportation), better food (food from home!) and specially better job environment, this is my place, I can freely investigate, learn, create, do my tasks with passion and finish them.
I have the opportunity right now to join the Web Engineers Group of a company called Toptal“Toptal is a marketplace for top web developers, engineers, programmers, coders, architects, and consultants. Top companies and start-ups choose Toptal web freelancers for their mission critical software projects.”
I really like how that sounds and I strongly believe that working here will keep my idea of the dream job.

This is what I’m talking about:

Administración de Calidad en Software / Software Quality Management


Todas las empresas de desarrollo de software deben tener un protocolo de calidad que consiste en entregar al cliente siempre un software con la menor cantidad de errores posibles. Para lograr esto se han creado normas internacionales que nos ayudan a organizar los procesos de calidad y generar resultados un ejemplo son las normas de calidad ISO.

En resumen las normas de calidad son una guía para ayudarnos a realizar todas las actividades de una forma ordenada, clara y documentada. Lo cual traerá como resultado un beneficio para todos: los empleados porque su trabajo será mejor, los empleadores porque entregarán los productos a tiempo y finalmente los clientes porque recibirán sus pedidos con la calidad y eficiencia que se merecen.

El único problema radica en organizar a toda la empresa para que trabajen unidos utilizando estas normas, debido a que normalmente se usa mucha documentación, los que deben llenarlos se quejan porque este paso les quita mucho tiempo que podrían emplear en su labor ordinaria. Falso, llenar un documento ya sea en papel o electrónico no tiene por que ser traumático, sabiendo que cuando se finalice el trabajo vamos a tener un seguimiento completo de las actividades que realizamos. Pero para sentir esto, se debe promover adecuadamente la aplicación de la norma, es decir, el equipo de calidad debe ser integrado por personas con mucho tacto profesional y personal para que estimulen adecuadamente a todo el personal que debe utilizar las normas de calidad. Si el primer acercamiento al uso de las normas se torna muy complejo y/o tedioso esto hará que falle la implementación de las normas. Toda la empresa debe hacerse participe cuando se desea implementar estos procesos, porque todos deben saber y hacer lo que implica trabajar con calidad.

Si quiere entender un poco más de las normas de calidad lea este documento de los 8 principios de administración de la calidad: Quality Management Principles


All software development companies should have a protocol to deliver quality software to their customer with the least amount of mistakes. To achieve this there are international standards that help us organize quality processes and generate results. An example are ISO quality standards .

In summary, the quality standards are a guide to help us perform all activities in an orderly , clear and documented way . Which will result in a benefit for all: employees because their work will be better, employers because they will deliver products on time and eventually customers will receive their orders with the best quality and efficiency they deserve.

The only problem is to organize the entire enterprise to work together using these standards , since a lot of documentation is normally used, those people which must fill them, will complain because this step takes them a long time that could be used in their ordinary work. Well this is false, fill out a form either on paper or electronically does not have to be traumatic , knowing that when the work is finished we will have a complete monitoring our activities . But to feel this, must be adequately promote the application of the rule , ie , the quality team should be composed of people with a lot of tact and professionalism to adequately encourage all staff to use quality standards . If the first approach to the use of standards becomes very complex and / or tedious this will fail to implement the rules . The whole company should be involved when you want to implement these processes , because everyone should know what it means and work with quality.

If you want to understand a little more about the quality rules, please read this document about the 8 principles of quality management: Quality Management Principles

Algorithm of life / algoritmo de la vida

Algorithm of life
Algorithm of life
This algorithm is easy to resolve for some people, for other not so much. Every process successfully finished will be a good start for the next one. Algorithms normally are used to solve company’s problems using the computer and software engineers perform exact solutions for them. For our life this algorithm must face the free will that we make everyday. So the results are different for everyone no matter if we apply the same algorithm. The interesting fact here is that life (our problem applied in that algorithm) has 2 exact realities: birth and death. What happen in the middle depends on each one of us. The algorithm to maintain a good life it is known by all human kind, the problem is we are living in a society that blind ourselves and we are aware of that.
Este algoritmo es fácil de resolver para algunas personas, para otras no tanto. Cada proceso finalizado correctamente será un buen comienzo para el siguiente. Los algoritmos son normalmente usados para resolver problemas de las empresas usando el computador y los ingenieros de software generan soluciones exactas para ellos. Para nuestra vida estos algoritmos deben enfrentarse al libre albedrío que manifestamos cada día. Así que los resultados serán diferentes para cada uno no importa si aplicamos el mismo algoritmo. El hecho interesante aquí es que nuestra vida (el problema aplicado en ese algoritmo) tiene 2 realidades exactas: nacimiento y muerte. Lo que pasa en la mitad depende de cada uno de nosotros. El algoritmo para mantener una buena vida ya lo conoce la raza humada entera, el problema es que vivimos en una sociedad que dejamos que nos ciegue a esa realidad.


Kids are our future, they deserve to grow being childs

I really want to see our kids playing everyday, learning good teachings from us, and never doing jobs. They need to grow learning from good teachers, understanding how to live good and prosper, avoiding wars, bad feelings and problems. They are our future, don’t you see? every problem we pass to them they will damage their beautiful minds, we are responsible to help these kids to live their best experience while growing. Please help us to stop this abuse. No more children at work. If all of we work together(the old ones) we can prevent this abomination, please let our children free of work.

Kids are not supposed to work.
Kids are not supposed to work.

Tengo muchos deseos de ver a nuestros hijos jugar todos los días, aprendiendo las enseñanzas buenas de nosotros, y nunca haciendo trabajos. Ellos necesitan crecer aprendiendo de buenos maestros, entender cómo vivir bien y prosperar, evitar las guerras, los malos sentimientos y problemas. Ellos son nuestro futuro, ¿no lo ves? todos los problemas que les pasamos a ellos pueden dañar sus hermosas mentes, somos responsables de ayudar a estos niños a vivir su mejor experiencia durante su crecimiento. Por favor ayúdenos a detener este abuso. No más niños trabajando. Si todos trabajamos juntos (los mayores) podemos prevenir esta abominación, por favor, evitemos que nuestros hijos trabajen.