Software Testing

Long time no see! I have not written on this post in a while, but it was for a good reason. Currently I’m focusing in other (very fun) projects!

Yeah . . . «Fun Projects»
Source: Giphy

Today we’ll talk about Software Testing, and to be honest, I’m quite obsessed (in a good way) with testing due past experiences I had while working. Well let’s dive in with an analogy!

When we consume a product, we tend to try it out first (cars, clothes), check it passes the characteristics we request from that product (the proper color of fruits and vegetables, for example) or maybe we just trust the specifications and standards the product was put through ( like checking the caducity date of milk, revise nutrition labels of groceries, etc.). We tend to test our products, we have some expectations about the product, and we hope the product could meet them all of them (this also applies with relationships, oops!).

Trying clothes is a way of testing them.
Source Giphy

Testing is comparing the product we currently have against our expectations.

A more formal definition (and applied to software testing) comes from the ANSI/IEEE 1059 standard:

«A process of analyzing a software item to detect the differences between existing and required conditions (i.e., defects) and to evaluate the features of the software item.»

So basically, Software testing is the process of evaluating and verifying that a software product or application does what it is supposed to do. The benefits of testing include preventing bugs, reducing development costs, and improving performance.

Types of testing

Each type of testing checks different requirement (most of the times, non-functional requirements). As some examples we have:

Performance testing

Testing how the software performs under different workloads. Load testing, for example, is used to evaluate performance under real-life load conditions.

Regression testing

Checking whether new features break or degrade functionality. Sanity testing can be used to verify menus, functions, and commands at the surface level, when there is no time for a full regression test.

Stress testing

Testing how much strain the system can take before it fails. Considered to be a type of non-functional testing.

Usability testing

Validating how well a customer can use a system or web application to complete a task.

Levels of testing

There are different kinds of testing according to what we want to test. For example, maybe we checked on the supermarket we bought a delicious onion, but this onion was not a good ingredient in a chocolate cake. In this case, we tested the product (the onion), but not its interaction with other ingredients on the system (the cake).

Source: Giphy

The different levels of testing are:

Component or Unit Testing

Unit tests are performed to test individual software units. Since the software comprises several units/modules, error detection in a single unit is simple, cost-effective, and less time-consuming. The Unit test ensures that the functional and the non-functional behavior of the component is designed as per specification. Those tests are made by the developers.

Integration Testing

Integration testing is carried out once Unit testing is complete. It focuses on the interaction between the components or systems. Integration testing can be component integration testing or System Integration testing. Those tests are made by the developers.

System Testing

Once Integration testing is completed successfully, we move on to the next level of testing, which is called System testing. IEEE defines the system tests as “A testing performed on a complete and integrated system to check the system’s compliance with its specific requirements”. Those tests are made by the testers.

Acceptance Testing

Acceptance testing is performed after System testing is successfully executed. Acceptance testing is done to provide the end-users the confidence that the system will work according to their expectations. While all the other levels (Component, Integration, and System) are executed by the software producers, acceptance testing is the only level that is carried out by the customers and end-users. The amount of acceptance testing required depends on product risk, and also how much testing has been successfully executed in previous levels.

As we can see, each level of test is done by the level of requirements are needed to be achieved. In a project, first are defined general requirements about the product, and some of those requirements are business oriented. Then, the product is defined as a system which is separated in different interfaces, objects, functions, and components. The more specific is the test, the earlier it’s run this test.

Methods of Software Testing

There is a main difference on checking the food on a restaurant among a client, a food critic, and a health assessment consultant. While a client may only consider how tasty, delicious and good looking her food is, the food critic may consider other elements as time of response of the restaurant, manners of personnel, contrast, texture, flavor, odor, composition of the food, quality of the ingredients … and the health consultant will also check the conditions of the kitchen, if the refrigerator is in the right temperature, that there are no plagues on the kitchen, and basically each detail of the process of making the food. As we can see, the three of the commensals are testing the food, but in a different deepness, with different methods of (food) testing.

A critic testing food.
Source Giphy

In the case of software, we have some different methods for testing:

Black Box Testing

This method gets its name because a QA engineer focuses on the inputs and the expected outputs without knowing how the application works internally and how these inputs are processed. The purpose of this method is to check the functionality of the software making sure that it works correctly and meets user demands. This method can be applied to any testing level but is used mostly for system and user acceptance testing.

Black box testing QA specialist doesn’t consider the internal processes of the product while conducting a test

White Box Testing

Unlike black box testing, this method requires profound knowledge of the code as it entails testing of some structural part of the application. Therefore, generally, the developers directly involved in writing code are responsible for this type of testing. The purpose of white box testing is to enhance security, the flow of inputs/outputs through the application, and to improve design and usability. This method is mainly used at the unit and integration testing levels.

Grey Box Testing

This method is a combination of the previous two since it involves testing of both functional and structural parts of the application. Using this method, an experienced tester has partial knowledge of the internal application structure and based on this knowledge can design test cases while still testing from the black-box perspective. This method is mostly applicable to the integration testing level.

Ad Hoc Testing

This is an informal testing method as it’s performed without planning and documentation. Conducting tests informally and randomly without any formal, expected results, the tester improvises the steps and arbitrarily executes them. Though defects found with this method are more difficult to reproduce given the absence of written test cases, this approach helps find important defects quickly, something which cannot be done with formal methods.

Process of testing

There are multiple strategies for testing software, but still, it follows a common process. Tasks or steps include defining the test environment, developing test cases, writing scripts, analyzing test results, and submitting defect reports. In this section (as a Kent Beck’s devote) we’ll focus on TCR in this blog:

TCR

TCR, comes from «Test && Commit || Revert», where each time a test is executed and passes properly, the code is committed, but if the test fails, the new code is deleted permanently (git reset –hard).

TCR is way more aggressive and radical than TDD due the fact here our code is reverted, and we must try again. As a result, this leads to a set of very interesting ideas:

  • We will never have a failed test while developing.
  • Only we will have tests «on green».
  • If you don’t want to get a bunch of code reverted . . . just write the necessary code for passing the test.
  • The idea of making small increments which maintain the tests on green gains more power. This method is extremely incremental, with a few lines of code per increment.
  • Even though, the tests itself are made in small increments.

My experience with Testing

We could still talk a lot about software testing, in my opinion I think is a topic is getting more and more consideration in industry. The complexity of the systems makes almost impossible understand the product as a whole. For better understanding of the system, and for ensuring it’s making the requested function is needed to test it. If you can define a test, you define the goals of the system and therefore, you can build what actually is expected.

During my experience as Software Engineer, I’ve done tests for UI components (using screenshot tests for android), unit tests ( on JUnit on Java or unittest on Python), I’ve faced the creation of integration tests ( simulating the interaction of the client reciving notifications from the server and making the right operations), and as a conclusion, I can tell if part of a system is not tested, it will be more difficult to understand the functioning of that piece of code.

Most engineers doesn’t test as much as needed. I found out in one of my past jobs, there were entire products, on production, with no tests. The integration of new components and features, as long as fixing or changing things on the existing code was a total pain in the ass. For doing anything you needed a profound knowledge of the system itself. I quit this job, was very frustrating.

In other job, I heard my team was doing «tests for testing the tests», I’d love to explain why this was needed but I barely remember the context of this idea.

Testing is needed, but maybe we could fall into the trap of test everything, in anycase, at each level. It could be said overtest is the overthinking for developers.

Testing is important, testing is necesary. Source: Giphy

Probabilidad para niños (y no tan niños).

Mi hermana tiene 9 años. Ella es fascinante y muy inteligente. Le encanta leer, escribir, diseñar vestidos, crear sus propios noticieros y pasarelas, pintar, dibujar, así como declamar a voz potente por toda la casa.

Durante esta cuarentena, ha sido algo complicado que tenga entusiasmo por aprender matemáticas. Comprendo muy bien que sus gustos se centren en el arte y la escritura, sin embargo, creo que es fundamental que tenga una base sólida en matemáticas, no solo para fines académicos, sino para la vida.

Me he dado a la tarea de enseñarle esta bonita ciencia, de forma independiente y con mis métodos.

Src: Giphy

Hoy me platicó que vió en un video que un famoso recreó Las Vegas en su casa. De inmediato, una vocecita interna me gritó: aprovecha la oportunidad para enseñarle una lección.

Así que, decidí hacer nuestra propia versión de Las Vegas.

Src: Giphy

Hace tiempo compré mi propio set de dados de calabozos y dragones. Lo que me llamó la atención es tener dados con distinto número de caras, distinto número de probabilidades. De algo me servirían algún día. Así que hoy, desempolvé mis dados y le propuse un juego a mi hermana:

Tengo 7 dados:

1 dado de 4 caras
1 dado de 6 caras
1 dado de 8 caras
2 dados de 10 caras
1 dado de 12 caras
1 dado de 20 caras

Todos los dados tienen números del 1 al número de caras que poseen. Para jugar, debes apostar 1 peso. Si tu apuestas a un número que esté en los siguientes rangos y alguno de los dados cae con ese número, obtendrías:

Eliges un número 13 al 20 obtienes 10 pesos
Eliges un número 11 al 12 obtienes 7 pesos
Eliges un número 9 al 10 obtienes 4 pesos
Eliges un número 7 al 8 obtienes 3 pesos
Eliges un número 5 al 6 obtienes 2 pesos
Eliges un número 1 al 4 obtienes 1.5 pesos

¿Ahora bien, que harían ustedes? ¿Que escenario sería el mejor para apostar?

Debo reconocer, el escenario suena un poco enredoso ( para ser sincero, fue a propósito).

Vamos a desentrañarlo poco a poco con ejemplos:

Supongamos que apuestas al 8.
Solo 5 dados ( 1 de 8 caras, 2 de 10 caras, 1 de 12 caras, 1 de 20 caras) van a tener el número 8. Al haber menos dados, sabemos que, evidentemente las probabilidades de ganar son menores, por ello la casa recompensa con más dinero si atinas ( 3 pesos!).
Recordemos que para ganar, al menos 1 de los dados debe salir en 8.

¿Sabiendo esto, como evaluamos que situación nos dá mejor beneficio? Beneficio, decisiones. Este inocente juego esconde una lección de matemáticas y economía.

Src. Giphy

Consideraciones primordiales

Empecemos por el principio. Definamos algunas nociones obvias que nos ayudarán a entender el mejor el problema a priori.

  • La suma de probabilidades de un evento dado, deben dar como suma 1.
  • Al lanzar un dado de N caras, tenemos una probabilidad de obtener un resultado correcto de p = 1/N.
  • La probabilidad de No obtener el resultado deseado es:
    q = (N-1)/N
  • El lanzado de cada dado es un evento independiente. El resultado de un dado no afecta a los otros dados. De este enunciado se puede derivar que, para dos eventos independientes, la probabilidad de que caiga X en ambos dados estaría dada por:
       P(X1 ^ X2)  =  P(X1) * P(X2)

El símbolo ^ aquí representa y (and).

¿Entonces, teniendo distintos dados, como podemos calcular la probabilidad combinada de estos dados, para obtener al menos una vez el número que queremos?


Imaginemos que tenemos 2 dados, con caras N1 y N2.
Podemos decir que, la situación que queremos se puede decir como:

La probabilidad de que caiga el número X en el dado 1, o si no cae X en el dado 1, considerar la probabilidad de que caiga X en el dado 2.

Si lo representáramos en un diagrama, las probabilidades quedarían como:

El arbol de probabilidades, luego de tirar 2 dados.

Haciendo uso de ecuaciones, la probabilidad de los dos dados quedaría como:

P(X1 | X2) = P(X1) + (1-P(X1)) * P(X2)

Que podemos entender como:

  • P(X1 | X2) : La probabilidad de que caiga X en d1 o en d2.
  • P(X1) : La probabilidad de que caiga X en d1.
  • (1-P(X1)) * P(X2): La probabilidad de si no cae X en el dado 1, considerar que caiga X en el dado 2.

El símbolo | significa en este caso: o (or)

Observese que, no importa el orden de X1 o X2, la ecuación funciona en ambas formas. Otra forma de interpretar esta misma ecuación sería ( reacomodando términos):

P(X1 | X2) = P(X1) + P(X2) - P(X1) * P(X2)

La probabilidad de que caiga X en d1 o d2 está dada por la probabilidad de que X caiga en 1, o que caiga en 2, pero no en ambos a la vez.

Observe que, el evento X1 | X2 puede ser evaluado e interpretado como un solo evento ( sí, compuesto por otros 2 eventos más sencillos). Por ende, podríamos renombrarlo con otra etiqueta, si lo deseáramos y más importante, podemos aplicar esta misma regla para conjugar eventos más complejos como si se trataran de eventos individuales.

Imaginemos ahora que queremos añadir un tercer dado al juego, y que los 3 dados poseen el número que elegimos para la apuesta.
Podríamos hacer nuestro árbol de decisiones una vez más, si así lo deseamos.

Árbol de probabilidades de 3 dados. Las lineas en rojo son el caso de que caiga X, la situación deseada.

Ahora bien, este diagrama se está haciendo cada vez más grande y me estoy comenzando a hacer bolas. ¿No podemos tomar un atajo?
Claro que si. Como podemos observar, el evento del que deseamos calcular, es que X caiga en el dado 1 o en el dado 2 o en el dado 3.

P(X1 | X2 | X3)

Obsérvese que ya sabemos P(X1 | X2 ) e incluso definimos que el evento Y = X1 | X2 puede ser renombrado.
Nos quedaría como:

### P(Y | X3) = P(Y) + (1-P(Y)) * P(X3)

Sustituyendo Y = X1 | X2

P(X1 | X2 | X3) = P(X1 | X2) + (1-P(X1 | X2)) * P(X3)

Esta conclusión es genial, no solo por lo elegante y intuitiva que resulta la ecuación de probabilidades, sino que, además, nos reduce la cantidad de cálculos, en caso que tomáramos los eventos por separado.
Si desplegamos nuestra ecuación queda como:

P(X1 | X2 | X3) =   P(X1) + P(X2) + P(X3) - P(X1)P(X2) - P(X1)P(X3) - P(X2)P(X3) 
                   + P(X1)P(X2)P(X3)

Y se pone peor, para 5 dados, la ecuación explicita de probabilidad de que caiga X en al menos 1 dado queda como:

P(X1 | X2 | X3 | X4 | X5) = P(X1) + P(X2) + P(X3) + P(X4) + P(X5) - P(X1)P(X2)      
                           - P(X1)P(X3) - P(X1)P(X4) - P(X1)P(X5) - P(X2)P(X3)      
                           - P(X2)P(X4) - P(X2)P(X5) - P(X3)P(X4) - P(X3)P(X5)       
                           - P(X4)P(X5) + P(X1)P(X2)P(X3) + P(X1)P(X2)P(X4)         
                           + P(X1)P(X2)P(X5) + P(X1)P(X3)P(X4) + P(X1)P(X3)P(X5)    
                           + P(X1)P(X4)P(X5) + P(X2)P(X3)P(X4) + P(X2)P(X3)P(X5)    
                           + P(X2)P(X4)P(X5) + P(X3)P(X4)P(X5) -P(X1)P(X2)P(X3)P(X4) 
                           - P(X1)P(X2)P(X3)P(X5) - P(X1)P(X2)P(X4)P(X5)            
                           - P(X1)P(X3)P(X4)P(X5) - P(X2)P(X3)P(X4)P(X5)            
                           + P(X1)P(X2)P(X3)P(X4)P(x5)

AAAAAAAAAHHHHHH

Volviendo a nuestra ecuación ### obtenemos que, para un evento compuesto, podemos tomarlo como un evento simple para calcular una nueva probabilidad.

P( Y | X ) = P(Y) + ( 1- P(Y) ) * P(X)

Ahora que, tenemos el conocimiento adecuado, podemos sumergirnos en el problema.

Resolviendo el problema

Para los números del 13 al 20, solo hay un dado que posee alguna de esas caras. La probabilidad de ganar (G1) es entonces,

P(G1) = P(X1) = 1/20

Para los números del 11 al 12, hay dos dados ( 1 de 12 caras, 1 de 20 caras) con alguna de esas caras. La probabilidad de ganar (G2), es:

P(G2) = P(X1|X2) = (1/20) + (19/20)*(1/12) = 31 / 240 ~= 1/8

Para los números del 9 al 10, hay cuatro dados ( 2 de 10 caras, 1 de 12 caras, 1 de 20 caras) con alguna de esas caras. La probabilidad de ganar (G3), es:

P(G3) = P(X1 | X2 | X3 | X4) = P(G2 | (X3 | X4)) = (1/8) + (7 / 8)(19/100) = 233/800 ~= 3/10

(Obsérvese que, en el caso anterior, consideré ya los 2 dados de 10 caras, como un único evento compuesto).


Para los números del 7 al 8, hay cinco dados ( 1 de 8 caras, 2 de 10 caras, 1 de 12 caras, 1 de 20 caras) con alguna de esas caras. La probabilidad de ganar (G4), es:

P(G4) = P(G3| X5) = (3/10) + (7 / 10)(1/8) = 31/80 ~= 3/8

Para los números del 5 al 6, hay seis dados ( 1 de 6 caras, 1 de 8 caras, 2 de 10 caras, 1 de 12 caras, 1 de 20 caras) con alguna de esas caras. La probabilidad de ganar (G5), es:

P(G5) = P(G4| X6) = (3/8) + (5/8)(1/6) = 23/48 ~= 1/2

Para los números del 1 al 4, los 7 dados tienen esa cara. La probabilidad de ganar (G6), es:

P(G6) = P(G5| X7) = (23/48) + (25/48)*(1/4) = 117/192 ~= 5/8

Genial! ya tenemos las probabilidades de cada uno de los escenarios. Ahora bien, podemos concluir que, ¿La mejor situación, es aquella donde tengo mejor posibilidad?
No exactamente. La probabilidad es determinante. Sin embargo, en cada escenario tenemos ganancias distintas. Evaluemos entonces, en que situación podríamos ganar más dinero. Para hacerlo, imaginemos lo siguiente.

Consideremos M juegos, donde M es un número muy grande.

  • Si jugamos M veces, probabilísticamente ganaremos M * P(G1) veces, y ganaremos Q(1) pesos.
  • En M casos, perderemos 1 peso.

Por ende, la ganancia final Z, luego de jugar M veces sería:

 Z(1) = M * P(G1) *Q(1) - M = M * (P(G1) *Q(1) -1 )

Z(1) = M * P(G1) *Q(1) – M
Ganancia final lo que obtienes menos lo que gastas.

Nosotros queremos una máxima ganancia, por lo que hay que calcular y comparar cada una de las situaciones.
Ganancia al elegir 13 – 20:

Z(1) = M * ( (1/20)*10 -1 ) = - 1/2 * M => Z(1) /M = - 1/2

Ganancia al elegir 11 – 12:

Z(2) = M * ( (1/8)*7 -1 ) = - 1/8 * M => Z(2) /M = - 1/8

Ganancia al elegir 9 – 10:

Z(3) = M * ( (3/10)*4 -1 ) = + 1/5 * M => Z(3) /M = + 1/5

Ganancia al elegir 7 – 8:

Z(4) = M * ( (3/8)*3-1 ) = + 1/8 * M => Z(4) /M = + 1/8

Ganancia al elegir 5 – 6:

Z(5) = M * ( (1/2)*2 -1 ) = 0 => Z(5) /M = 0

Ganancia al elegir 1 – 4:

Z(6) = M * ( (5/8)*1.5 -1 ) = - 1/16 * M => Z(6) /M = - 1/16

Obsérvese que, la ganancia probable por juego (Z / M), es constante! Nótese que, en algunos casos, la ganancia por juego es positiva, negativa o incluso cero.
Pero que significa esta cantidad para nosotros?Significa que, luego de haber jugado muchas veces, se prevee que hayamos ganado (Z / M) veces dicha cantidad de dinero.

  • Si (Z / M) es negativa, significa que luego de muchos juegos, perderemos dinero.
  • Si (Z / M) es positiva, luego de muchas apuestas, es probable que netamente ganemos dinero.
  • Si (Z / M) es 0, significa que, luego de muchos juegos, no habremos ganado ni perdido dinero.

Obsérvese que (Z / M) nos determina que tanto podemos ganar o perder luego de varios juegos.
Si elegimos elegimos el caso con el mayor valor de (Z / M), habremos maximizado nuestra ganancia!

Por ende, en esta situación, al elegir números del 7 al 10 era más probable que, luego de unos cuantos juegos, nos retiráramos con ganancia.

El mejor caso, era elegir 9 o 10.


A pesar de que en caso de elegir 13 – 20 teníamos una mayor ganancia al acertar, ( 10 ) al final terminaríamos perdiendo dinero ( más dinero que en cualquier otro caso!).
Además, en el caso de elegir 1 – 4, aunque teníamos una mayor probabilidad de ganar ( probabilidad de 62%!!!) al final, terminaríamos también perdiendo dinero!

Este pequeño juego, nos demuestra la importancia de saber matemáticas para tomar nuestras decisiones. Además, los escenarios que podrían parecer a priori, más adecuados, observamos que puede que no lo sean.

En los casinos y situaciones reales de apuestas, JAMÁS tendrás un coeficiente positivo en tus ganancias por juego (Z/M). Todos los juegos son diseñados para que, en promedio luego de muchas rondas, la case gane.

La casa siempre gana. He aqui el secreto.

Mi padre me dijo que no me complicara, tomara un dado y le enseñara probabilidad así a mi hermana. Luego de que le mostré estas conclusiones se mostró muy interesado en mi juego. Este tipo de situaciones son estudiadas en Teoría de Juegos. La Teoría de Juegos es un área de las matemáticas ( altamente aplicada en Economía) la cual analiza las decisiones de los jugadores, dado su incentivo de obtener un mejor beneficio propio.

Mi hermana perdió 4 pesos. En otras palabras, 4 pesos le costó aprender la lección de que, apostar sin conocer lleva a la pérdida. Para tomar decisiones, hay que saber como evaluar los riesgos.

Al final, la comisión de Juego Familiar ( mi mamá) alegó que una menor de edad no debería estar apostando y confiscó las ganancias del casino.

Conclusiones: No vuelvo a montar mi casino clandestino en casa.

Src: Giphy

The deadline: Capítulo 22 y 23

Es el último blog que escribo sobre esta novela.

En teoría, esta pequeña historia explicaría distintos elementos necesarios para ser un buen administrador de proyectos.

Sin embargo, a lo largo de la lectura me ha dejado con más que solo eso. La idea oculta aqui es, que para ser mejores administradores, es necesario ser mejores gerentes, mejores líderes. Ya que, de forma implícita, el administrar los recursos de una empresa o un proyecto, implica administrar el elemento más valioso que poseen: El capital humano.

En una organización, lo que hace posible el éxito, es el capital humano.
Src: Giphy

El trabajo se puede cuantificar, medir e incluso analizar. El dinero se puede ahorrar, gastar o invertir.
Pero el capital humano es un recurso que, es invaluable y los daños a este, son incalculables, así como difíciles de reparar.

Al trabajador, que forma parte de la institución, en su labor creativa, es necesario darle ese reconocimiento, haciéndolo parte de los triunfos de la empresa.

Cuando escuché que, algunas personas recibían acciones de la empresa como parte de su contrato, no comprendía del todo porqué las empresas tomaban tal acción. Ahora, puedo entender que, al ofrecerles stock y volverlos dueños parciales de la institución, su sentido de responsabilidad por el crecimiento y desarrollo de la empresa se hace latente.

El crecimiento del empleado significa el crecimiento de la empresa. El crecimiento de la empresa significa el enriquecimiento del empleado. Src. Giphy

El desarrollo de la empresa se vuelve tarea de todos y es una tarea aceptada, pues todos toman parte de ella.

Las empresas deben ser prósperas, preocupándose por sus empleados, acorde a la novela. Yo podría atreverme a complementar esta idea, con que, una empresa y todos sus empleados, deberían preocuparse unos de los otros, para el crecimiento común.

El concepto base en el cual se fundamenta cualquier organización, es la sinergia. Por ende, si no buscamos el bien común como el bien de los otros, a través del bien personal, sería complicado trascender.

Luego de la lectura de esta novela, me queda una idea atascada en mi mente. Debemos invertir tiempo y esfuerzo en perfeccionar nuestras habilidades sociales, para ser capaces de ser mediadores con los otros, un bálsamo, una válvula de escape o al menos, no una carga más para los demás, porque en este mundo loco, dinámico y estresante, ya tenemos suficiente con la vida cotidiana.

Alguna vez escuché, que alguien me decía: El trabajo siempre va tener algo de que nos podamos quejar.

¿Porqué no, comenzamos a decir, que el trabajo, siempre tendrá una oportunidad donde puedo ser mejor?

El futuro es prometedor, porque aún existe la esperanza de poder mejorar como seres humanos.
Aún falta mucho por recorrer.
Src. Giphy.

The deadline: Capitulo 20, 21

Vaya, has llegado hasta aqui.

Se va acercando el fin de esta novela, y con ella, también se acerca el horizonte de nuevos proyectos e ideas a desarrollar.

El camino ha sido largo y, si bien, a veces, mientras me releo, creo que estos blogs son un montón de ideas pseudo aleatorias, un conjunto de ideas delirantes, que funjen como válvula de escape, creo que, en resumen, hemos aprendido un poco a volvernos mejores gerentes, al ser más humanos.

Mirando de reojo los problemas.

– Tu no tienes problemas. Oh, solo tienes pequeñas molestias quiza, pero nada significante.

-Es exactamente lo que iba a decir, como lo sabes.

-Porque eso es lo que la gente dice siempre cuando tiene muchos problemas.

-The deadline. Conversation between Mr. T. and Mr. Winnipeg

En mi experiencia, tendemos a minimizar los problemas, o tratarlos como si fueran una situación apasionante o retadora. Es bueno y sano tener una perspectiva positiva de los problemas. Pero a veces, la situación nos sobrepasa. El estrés es magno. Y muchas veces no nos damos cuenta que necesitamos ayuda.

Ni el estrés, ni los problemas son divertidos.

¿Porqué caemos en esta compleja situación, en la cual minimizamos los problemas?

Src. Giphy

Luego de buscar un poco, armé una teoría a partir de distintos puntos y enfoques que la psicología le da al lidiar y resolver problemas.

Este fenómeno, principalmente se debe a problemas de inseguridad. Esta inseguridad nos lleva a ese deseo de demostrarle a los demás, ( aunque no exista ninguna necesidad) que somos capaces de sostener situaciones que, en realidad, son insostenibles. Esto nos puede llevar a llenarnos de problemas, lejos de resolverlos.

Entonces, ¿de donde sale la saturación de problemáticas?

No hemos aprendido a distraernos de los problemas

Aprender a distraerse es una necesidad. Existen hábitos muy positivos a nivel físico y mental como disfrutar de un paseo diario. Los paseos son muy saludables para llenar la mente de optimismo cuando la energía negativa que surge de la tristeza inunda tu alma.

Nos autoadjudicamos problemas que no nos tocan.

Es importante aprender a soltar lo que no nos toca, evitando el rol de salvador que surge de querer ser una especie de héroe para el otro. Este tipo de actitud termina produciendo consecuencias negativas a largo plazo en quien llegado el momento, siente que no ha sido suficientemente recompensado por todo el esfuerzo que ha realizado.

Intentamos controlar lo incontrolable

Esta actividad es propia de los seres humanos. El intentar recuperar el control, es una actividad normal en el ser humano, a veces alcanzando límites irracionales, sea el caso del acaparamiento de papel higiénico en esta pandemia . . .

Y esto puede ser consecuencia de la inseguridad. Las altas expectativas, ajenas como propias,  puede provocarnos mucha frustración si no las alcanzamos todas. Como consecuencia de dicha frustración, nos sentimos mal con nuestro desempeño y eso provoca un alto nivel de inseguridad personal.

Encontrar donde ya no hay: Ansiedad

Es posible también ( y esto lo escribo desde mi propia experiencia), muchas veces se tiene ese síndrome de guerra, donde seguimos buscando problemas en situaciones resueltas. La ansiedad por resolver todos los problemas, aún sean pequeños, lleva a un estado patológico. La preocupación patológica es cosa seria, ya que nos restringe de la capacidad para disfrutar de la vida. El link anterior, es un poco extenso, pero lo recomiendo para conocernos mejor,encontrarnos formas de, soltar los problemas que deban resolverse hoy.

La preocupación patológica es un ingrediente propio de la ansiedad. Src. Giphy

En este blog, pensaba hablar de frustración, efectividad en las juntas y como lidiar con las situaciones inevitables.

Pero la realidad nos está dando suficiente de ello.

The deadline: Capitulo 19

Conforme avanza la lectura de esta novela, me siento más inmerso en las tierras de Morovia. No por el hecho de haber sido secuestrado por una espía de una nación tiránica, sino que, de un día a otro, la realidad que conocía ha desaparecido y en su lugar, han aparecido nuevos retos a los cuales debemos adaptarnos, para seguir adelante con los proyectos del día a día.

This pandemic happened so fast . . . I feel like Mr T. being abdused by Lashka.
Src: Giphy

Hoy más que nunca, la lectura de esta novela me cae como un consuelo ante la total incertidumbre que existe en estos tiempos.

La reflexión de hoy será más que breve, a pesar de mi deseo de extenderme, pero el capítulo de esta semana es por sí mismo, muy corto a lo que contenido corresponde.

Como diseñar adecuadamente.

Esta pregunta me ha surgido más de alguna vez, principalmente el semestre anterior. Existe teoría del diseño y, hablando de forma específica del diseño de Software, sabemos bien que existe teoría sólida para realizar esta actividad. ( Tomemos como primer ejemplo, el gran libro de Patrones de diseño).

Sin embargo, como tal, para diseñar todo un proyecto de software, tenemos pautas, ideas y guías, sin embargo, aún así sigue siendo una actividad no automatizada. Se necesita del conocimiento, práctica y experiencia de los diseñadores.

Más de alguna vez he dirigido mis blogs al diseño ( Como ejemplo, tenemos el breve análisis de los Patrones de diseño), y si no mal recuerdo, en este blog definí como separar systemas en entidades más específicas, con tareas simples.

En este punto, debemos retroceder dos pasos y volver a los conceptos adquiridos al estudiar el Paradigma Orientado a Objetos. Como indican en la novela, para definir adecuadamente los bloques en los que se separará el proyecto, debemos de buscar la mayor independencia posible entre los bloques remanentes.

Para alcanzar un diseño modular, es necesario entonces obtener la mayor cohesión y el menor acoplamiento posible.

El equipo necesario para tu proyecto

Durante este capítulo, observamos que, durante el desarrollo de un proyecto bien diseñado, al final, luego de haber discretizado adecuadamente el proyecto, vamos a tener montones de operaciones, fáciles de implementar. En la novela, el proyecyo Pshop – C, luego de haber creado un exitoso diseño, necesitaba montones de desarrolladores para implementar una infinidad de módulos.

Es interesante la curva de empleados necesarios para el proyecto, una curva que, en lo personal, jamás había tomado en consideración.

Esto llevó a preguntarme, ¿Cómo tener en disposición a los empleados necesarios, durante todas las fases de un proyecto?

Consideraciones para formar un equipo.

Si bien, la cantidad de staff necesario en un proyecto, pocas veces va a ser una cantidad constante, debemos como administradores considerar como mantener nuestros equipos con la cantidad adecuada de empleados, sin la necesidad de realizar recortes despiadados o sobrepoblación de proyectos.

Los proyectos necesitan crecimientos y reducciones de personal de forma natural. Por ejemplo, durante esta semana se habría realizado Talent Land. Si lo analizamos desde una perpectiva administrativa, es evidente que durante su proceso de planeación y ejecución la cantidad de personas que requiere el desarrollo de este proyecto va en aumento. Talent Land, es reconocido por necesidad una gran cantidad de voluntarios, durante la semana previa y la semana del evento. La planeación quizá dura todo un año, pero estos voluntarios solo prestan servicios por una semana o dos.

Sería ilógico pensar, que en un proyecto de esta magnitud, solo el staff permanente ( que ha de ser pequeño con respecto a la gran cantidad de voluntarios) sea quien se encargue de todas las actividades. Al contrario, sería ilógico pensar tener como empleados de tiempo completo a todos los voluntarios, durante todo el año de planeación.

Por lo tanto, creo que un buen consejo para elegir el staff adecuado para tu proyecto, es pensar en todas las fases del proyecto, simular cuanta gente se necesitará para cada fase y recordar que existen múltiples formas de hallar staff. No todos los empleados del mundo son tiempo completo. Existen otras formas de empleamiento, outsourcing, freelance, empleados de medio tiempo.

The Deadline: Capítulos 17,18 & Interlude

Esta novela, me va recordando los distintos libros, películas e historias que he experimentado donde de una u otra forma han formado parte importante de mi vida y a la vez, tienen una relación con los temas que toca esta interesante historia.

A fin de cuentas, The deadline, me ha servido no solo para comprender nociones fundamentales de la administración de proyectos y capital humano, sino que ha sido un recorrido de introspección, donde he podido evaluar como puedo cambiar mis hábitos y pensamientos para tener una vida más productiva y plena.

Quizá se pregunten del porqué les estoy contando todo esto.

Historias.

Este capítulo, me recordó mi libro favorito. Lo leí a los 15 años, lo encontré entre los libros que acumulaba mi madre sobre temas diversos. Cuando se lo pedí prestado, me contó que era un libro complicado, que leeyó cuando yo apenas era un pequeño y no había entendido la mayoría.

De sapos a Principes, mi libro favorito.
Src: ultrasexd

Este libro se trataba de un seminario para terapeutas, en el cual se les enseñaba técnicas y conocimientos de Programación Neurolingüística. Me llamó la atención sobre manera. Conforme iba leeyendo, me encontraba que entre las técnicas que enseñaban para hacer terapia efectiva, se encontraba como ingrediente esencial el mantener en un estado alterado al paciente. De esta forma, se tendría de forma más directa retroalimentación ( muchas veces no verbal) sobre las situaciones y comportamientos que el paciente le gustaría cambiar.

Un método de adentrar a los pacientes en un estado alterado . . . es haciendo storytelling.

Milton H. Erickson, uno de los mejores hipnotizadores de todos los tiempos, tenía una técnica sublime para hacer storytelling, la cual aplicaba de forma natural y efectiva en sus pacientes.

Durante la lectura del capítulo 18, casi caigo de la silla en la que me hallaba al darme cuenta que, el Dr. Maestro, el artista de la mediación utilizaba estas técnicas para hipnotizar ( porque, todo apunta a que eso hacía) al interlocutor, de forma que llegara a un estado de paz consigo mismo, mejorando las relaciones entre los trabajadores.

Mediación

Negociación es difícil, mediación es fácil. Es el mantra del capítulo 17. Este lema tiene sentido para mí. Desde un punto de vista de análisis de colisiones, si dos objetos chocan desde direcciones opuestas, el resultado general será que ambos cuerpos terminen o detenidos, o yendo en direcciones opuestas a las que se proponían.

Si dos objetos chocan, proviniendo desde la misma dirección, el resultado será que ambos objetos terminen avanzando en la dirección original. Entre menos sea la desviación de direcciones de origen, la desviación por el choque sería menor.

Lo mismo ocurre con los conflictos. Es importante resaltar la idea de que, ambas partes en conflicto van en la misma dirección, en búsqueda de objetivos de la organización ( Esto también aplica para matrimonios y relaciones interpersonales, pero este blog, en lo que me respecta, no es un blog psiquiátrico).

¿Cómo ser un mejor mediador?

En este blog observaremos de forma somera las características de un mediador, a fin de cuentas, el arte de mediar requiere práctica y tiempo.

Algunas de las características principales para ser un mediador, se halla ser un comunicador asertivo, observador, paciente, empático y flexible. ( Más info aquí ). A fin de cuentas, para un mediador, su prioridad se encuentra el ayudar a los involucrados a que encuentren sus una solución para sus conflictos.

El arte de tratar personas

El manejar personas no es fácil, cada una de ellas tiene metas, objetivos e ideales arraigados. Sin embargo, el trabajo armonioso del conjunto de individuos diferentes, es lo que construye un ambiente de trabajo rico y completo.

Mi madre, me contaba que jamás había entendido el libro de Programación Neurolingüística, pero, luego de leer el libro, pude observar que ella, durante toda mi infancia había aplicado con sus hijos muchas técnicas terapéuticas que venían en el libro.

The deadline: Capítulo 16

¿Alguna vez han leído el cuento del traje nuevo del emperador?

En definitiva, era mi cuento favorito de la infancia.

El traje nuevo del emperador. Mi cuento de la infancia
Src: Pinterest

El cuento se resume de esta manera:
Había una vez un rey, que estaba fascinado por la ropa. Unos ladrones, queriendo extorsionarlo, le dijeron que eran sastres y le venderían un traje hecho de una tela mágica. Esa tela solo podría ser vista por aquellos que no fueran idiotas. Ahora bien, cuando le mostraban avances del traje, El emperador no podía ver nada, ¡Porque ahí no había nada! Pero, por miedo de que los demás lo creyeran un idiota, él siempre aseguraba, que la tela estaba ahí. Al decir el emperador que la tela existía, todos tenían el miedo a decir que no podían ver nada.

Finalmente, el traje quedó terminado ( no sin antes haberle extraído al emperador mucho oro y dinero por el pago del traje). Los ladrones se excusaban diciendo que la tela era sumamente ligera y no se sentía. El emperador, encantado, decidió mostrar su traje en una procesión. Durante la procesión, nadie se atrevía a decir que no veía nada, hasta que un niño gritó: ¡El emperador va desnudo!

Poco a poco, todos los súbditos fueron aceptando que el emperador no llevaba nada puesto.

La moraleja de esta historia, podría formularse como: «Los seres humanos son capaces de mentirse a sí mismos con tal de evitar la confrontación».

The deadline, coincide con esta moraleja. Ante el conflicto, surge la ambigüedad. Somos más propensos a evitar el conflicto, aunque esto genere problemas en un futuro.

Preferimos evitar las confrontaciones . . . Pero, ¿A que costo?

Esto puede ser por varias causas. Como lo indica The deadline ( y luego confirmo en la web, por ejemplo, en este blog ) entre las causas para no ser asertivo, se encuentra la falta de autoestima y el estrés.

En nuestras relaciones interpersonales y profesionales, es sumamente necesario que seamos seres asertivos. En mi experiencia, en este recorrido hacia la asertividad, me ha ayudado mucho tener mecanismos para evitar engañarme a mi mismo. De forma automática, al no engañarme a mi mismo, hablo honestamente y con claridad hacia los otros. Dicha claridad se refleja en una mejora en el acto de comunicación.

Esto solo es mi experiencia, en el mundo exterior existen muchas fuentes y consejos para volverse más acertivo. Me gustó esta breve lista, es simple, breve y suena coherente:

  • Tome la decisión de afirmarse positivamente.
  • Apunte a una comunicación abierta y honesta.
  • Escuche activamente
  • Acepta estar en desacuerdo.
  • Evita hacer sentir culpable a los demás.
  • Mantén la calma.
  • Adopta un enfoque de resolución de problemas para el conflicto.
  • Practica la asertividad en situaciones inofensivas.
  • Use «yo», tome responsabilidad de lo que dice.
  • Se paciente.
En la comunicación asertiva, es sumamente necesario .
Src. Giphy

Requerimientos de un documento de especificaciones

El capítulo de esta semana, también describe los lineamientos de lo que debería y no debería ser un documento de especificaciones.

Un documento de especificaciones, debe denotar de la forma más clara posible, que se espera que haga el programa, así como las relaciones existentes entre las variables de entrada y salida. Como mínimo, debe describir como una caja negra, este sistema a implementar. (A fin de cuentas, caja negra será mientras no se implemente).

Objetivo del documento

Acorde con JustinMind, el documento identifica a las partes interesadas, el historial del documento y las aprobaciones anteriores. Aparte de eso, el documento también revelará:

Alcance del proyecto: ¿cuáles son los objetivos, resultados, características, tareas, plazos y costos del proyecto?
Riesgos / supuestos: ¿qué podría afectar el diseño funcional del producto / sistema?
Descripción general de la solución: ¿qué propone crear para resolver un problema (mapas del sitio, flujos de pantalla, etc.)
Casos de uso: coloque los requisitos funcionales en el contexto de una acción del usuario.
Especificaciones de requisitos: ¿qué debe hacer el producto?
Configuraciones del sistema: los pasos necesarios para configurar un producto.
Requisitos no funcionales: estos son buenos para tener.
Informe de errores / Manejo de excepciones: explique cualquier condición de error que ocurra en la interfaz.

Público objetivo

Como indica Nopio, la documentación de la especificación funcional está destinada a todas las partes interesadas del proyecto. Les dice a los desarrolladores qué características necesitan construir y cómo, pero es una buena idea compartirlo con todo el equipo para una mejor transparencia y colaboración.

Escribe tu documento de especificaciones como ese manual que le sería útil a los usuarios, que sea un mapa claro para los desarrolladores y que indique a los clientes que producto van a recibir.

Capítulo 15: The deadline

Hola a tots!

Jo estoy aprentet a parlar una mica de Catalán, aquestas palauras solo només son para practicar un poc. #Quarantena

Cada que leo un capítulo de este libro, recuerdo un episodio de mi vida. Y cada que veo un episodio de mi vida, lo relaciono con algún episodio de alguna serie de televisión. Para mí, la terapia ha sido conectar valores o recursos psicológicos con escenas de películas o series.

Pero estoy divagando.

La lectura de esta semana, me ha removido muchos sentimientos y ha desempolvado muchas historias en las que he tenido interacción con temas tan delicados como el burnout, la presión sobre nosotros mismos y el rendimiento.

Relatos aleatorios sobre rendimiento.

En la preparatoria, realicé un experimento, de carácter un poco cínico, con tal de conocerme mejor.

En algunos semestres, me asigné a mi mismo metas muy altas en distintas áreas de mi desarrollo ( Olimpiadas, escuela y demás actividades que pudiera tener). Otros semestres, los planetas se alineaban para que se redujera mi carga horaria y actividades. Finalmente, había semestres en los cuales decidía, sin importar cuanta carga horaria tuviera, no enfocarme mucho en mi desempeño, despreocupándome por mis resultados.

Mi vida estudiantil en una foto. Src: Giphy

Durante este experimento, medía el desempeño que tenía, ( de forma más o menos inexacta ) con mi promedio, resultados en competencias, terminación de proyectos etc.

En ese entonces obtuve resultados fascinantes:
Cada semestre obtenía de forma más o menos constante, el mismo promedio.

No importara cuanto me esforzara o estresara, bajo la hipótesis de que me mantuviera trabajando, siempre obtenía más o menos los mismos resultados en cuestión de desempeño.

Sin embargo, en cuestión anímica . . .

Los semestres llenos de estrés, dormía poco, estaba ansioso y posiblemente eso me llevó a mi año sabático obligado. Los semestres más relajados los recuerdo de forma más placentera.

Por otro lado, también aprendí que, sin importar cuanta carga horaria o actividades tuviera, era muy probable que realizara casi todo, sin importar el caso. Siempre habría algo más que hacer.

Este último resultado es un poco peligroso, porque, me hace darme cuenta que, lejos de decir que no a la sobrecarga de obligaciones, tan solo me encojo de hombros y sigo adelante . . .

hasta caer en depresión o en una crisis hipertensiva. True story.

El libro, al definir a los programadores como seres cínicos . . . No sé los demás, pero me sentí totalmente identificado. Por lo tanto, creo que, este blog debe ser una llamada de atención, para todos aquellos cínicos que andan por ahí, a punto de explotar, a causa de la presión.

Burnout, horas extras y ese tipo de locuras.

Creo que debería ser prioridad de todo profesional y de todo aquel que tenga a cargo personas, estar al pendiente del bienestar de su propio ser así como el de los demás.

El burnout no esta chido, hay que cuidarnos. Src: Giphy

Para estar al tanto del estado de nuestros colegas y nosotros mismos, es fundamental que conozcamos los síntomas que acompañan a este fenómeno:

Según MindTools, los síntomas específicos del agotamiento incluyen:

  • Tener una actitud negativa y crítica en el trabajo.
  • Temer ir al trabajo y querer irse una vez que esté allí.
  • Tener poca energía y poco interés en el trabajo.
  • Tener problemas para dormir
  • Estar ausente del trabajo mucho.
  • Tener sentimientos de vacío.
  • Experimentar dolencias físicas como dolores de cabeza, enfermedades o dolor de espalda.
  • Estar irritado fácilmente por los miembros del equipo o los clientes.
  • Tener pensamientos de que su trabajo no tiene significado o no hace la diferencia.
  • Alejándose emocionalmente de sus colegas o clientes.
  • Sentir que su trabajo y contribución no se reconocen.
  • Culpar a otros por tus errores.
  • Estás pensando en dejar el trabajo o cambiar de roles.

Es importante que, nos mantengamos observando a los que nos rodean y a nosotros mismos, para observar las señales que se presenten.

Como el personaje B. Binda indicaba, una probable antesala del burnout es trabajar horas extras.

En lo personal, me he dado cuenta que, pensar que tengo que trabajar horas extras implica pensar que tengo más tiempo para hacer las cosas. En general, una tarea que originalmente hago en 2 horas podría hacerla en todo un día si llego a creer que tengo más tiempo para hacerla, porque voy a trabajar extra.

Es importante que, como administradores, regulemos la cantidad de trabajo adecuada para los empleados bajo nuestro cargo, para evitar el exceso de trabajo en horas extras de nuestros allegados. El trabajo por horas extras es grave. No solo le cuesta a la empresa, sino el bienestar de los empleados.

Burnout en cuarentena

Para ser sincero, este blog estaba pensado en ser más largo, hablando a detalle y de forma académica sobre el burnout y las horas extras de trabajo, como evitarlo, que dicen los expertos, bla bla bla . . . Irónicamente, estoy bastante cansado y harto de todo esto.

La realidad sobrepasa la ficción.

La mayoría de alumnos ( y profesores!) se encuentran actualmente en una situación crítica.

Al tener que trabajar en casa, nos enfrentamos a retos nuevos y de naturaleza estresante: No poseer un lugar de trabajo en el hogar, constantemente compartir espacios con tu familia y la transformación de estos espacios a una naturaleza mixta, las dificultades físicas y tecnológicas que implica trabajar desde casa ( las veces que se ha ido la luz durante esta cuarentena, es impresionante, no solo en mi caso, también para algunos profesores), la difícil administración del tiempo, pues estar en casa implica tener que estar más al tanto de tareas que generalmente no nos atañen en horas de trabajo, todas estas situaciones a las que nos enfrentamos nos pueden orillar al Burnout.

Muchos estamos así, en plena cuarentena. #Stay(Mindly)Safe Src. Giphy

Muchos de los compañeros con los que he platicado estos días, lamentablemente, sienten ese hartazgo por las actividades académicas.

En lo personal, considero que podemos realizar una serie de actividades para mantener la fuerza anímica:

  • Procrastinar a la inversa: Haz, haz, haz. Mientras tengas un huequito libre ( que no sea específico para tiempo libre) adelanta un poco de trabajo. A fin de cuentas, estamos ahorrando varias horas a la semana de traslados.
  • Mantener la rutina: Esto es importante. El no mantener la rutina, deslizándonos en ese espiral de conformismo, vestir pijama para todas las juntas y no salir de la cama, lejos de ayudarnos a descansar nos puede llevar a un estado depresivo.
  • Hacer ejercicio ( que sea divertido): Aumenta endorfinas y nos ayuda a mantenernos sanos!
  • Hacer algo que no estemos acostumbrados, que sea nuevo y nos apasione. No es casualidad que este tiempo lo estoy aprovechando para aprender Catalán ( y retomar el Chino, pero esa es otra historia). Hacer esas cosas que siempre me desee, me hace sentir muy satisfecho.
  • Tomar constantes descansos. Bailar, aerobics o cantar es muy útil para distraerse. La vista se cansa.
  • Toma un tiempo para compartir con tus amigos: Jugar juegos en linea, mientras contamos chistes a través de Zoom es la mera onda. Es una forma distinta de conectar. Últimamente he valorado mucho las distintas formas de conectar con los demás. Es necesario.
  • (Edit) Respeta tu tiempo de descanso. Cuan importante es, darle el tiempo necesario al trabajo, así como al tiempo de descanso!

Seamos pacientes y flexibles, con nosotros mismos y con los demás. Porque esta cuarentena no nos va a quebrar.

Home Office

Two weeks ago, on Friday to be exact, I went out from my databases lecture, with a terrible headache. I had plans for that night, which meant a lot for me, because I don’t use to go partying at night. Sadly, had to cancell them because I didn’t feel good.

My kriptonite, Headaches. Source Giphy

In that moment, I coudn’t image that night would be the last night I could go out in a while.

Now, most of us are stuck in our homes, trying to do our work or study from home. For most of us, this is a new and unexpected experience.

Overall, I heard some people who thinks this pandemic could be an opportunity to migrate lots of works in a permanet way to home officing. But, is this new work experience better than going to the office? Which are the cons an pros of switching to this «new» working paradigm?

IBM Headquarters.
Src: http://pcworld.com.mx/wp-content/uploads/2018/10/IBM-headquarters-710×434.png

In 2007 IBM announced they would terminate with home office. All their employees should have an physical office.
Their reason? According to experts they couldn’t handle iterative processes where the effects of the changes on the projects should have been answered in real time.

Facebook Inc gives to their employees the flexiblity of working from home some days, but they didn’t have in their policies home office at all. Due this pandemic, it’s the first time this company let their workers do home office.
In contrast, there are IT companies, like Cisco, which they are proud their workers doesn’t have a fixed office and they have the freedom of work from home any time they need. Even though they have pretty good blogs, giving advice how to handle home office for those who are new in this experience.

We could notice there are different perspectives and opinions from each company about Home Office. As humans, we are a social specie and it’s way better to communicate with others in a face to face way. On the other hand, the flexibility provided by working at home looks tempting for this contemporary world.

In my experience, I’ve hated so far home office, but, after a little bit of introspection I realized which are the causes of my disagreement.

10 Things I hate/love about home office.

What I hate

1.-I’ve stuck with my family almost 24/7 at home for 2 weeks. I love them, but it’s quite difficult interact everyday if we don’t set some rules about personal space.

2.-Noise. My home is to noise most part of the day. My home is small, I can even hear the neighbours sometimes. My sister ( 9yrs) gets bored easily, and she’s constantly signing, narrating an invented story or talking with herself. My mom’s constantly hears YT videos in the maximum volume without earphones. TV is on most of the times. Always there are some noice. And this is getting on my nerves. I miss last summer, when I was living alone in my own room.

3.-I don’t have a proper space for working at home. My father is also home officing and he took my desk. I have felt for years I don’t have privacy or a proper space for me at home. It sucks but I have to deal with it.

I have to admit, some lectures I’ve taken I was in the weirdest places. Src Giphy

4.-Professors are giving us more and more homework, but also they expect we spend the whole class online. People is freaking out, also are some professors. I don’t know if it’s because they think if we are from home we won’t learn. In my opinion, we could learn even more, seeking for books, essays or blogs of our interest. Also, we could focus better in our projects because we have this time fexibility.

5.-There are activities which is very uncomfortable to do from home. Working in teams it’s specially difficult, more in projects which are not programming oriented. I had lot’s of meetings which are a total waste of time.

6.-Spam from almost social media. Nowadays, most of my notifications from Facebook or even from WhatsApp are from school. I can’t have my 5 minutes of scrolling down watching memes at Fb, because most of the content is about COVID-19 or from some of the groups from one of my lectures.

In my opinion, we need social media distancing. Gif Src. Giphy

7.-Most of the online lectures are useless. I have face some of them in which the professor just ennumerates some content which we could easily read from books or blogs. For other professors it looks very difficult explaing without using a whiteboard or explain using the computer. Should we have our lectures as a long monologue from our professor or it should be more like a constructive dialog? In my opinion both ways could work, but it deppend of the topic and character of the professor.

Things I love about home officing

1.- I don’t need to drive. I hate traffic and for me is so valuable saving 70 minutes in driving everyday because I’m not going to school.

2.- X2 Speed is my best friend. Now lectures are recorded, I could miss all of them, and watch them after at X2 speed. I haven’t tried, but I will in those classes where my pressence is not needed. It could be useful to save time.

3.- Flexibility. If you have enough discipline, your schedule could be more relaxed. This situation have led me to focus better in some projects and still enjoy with my sister more valuable time playing.

Conclusions

Home Office is not as easy as I thought. You need lot’s of discipline and organization in order to survive to all the work. On the other hand, we need being more concious this situation is happening to everyone, therefore we need to be empathic and patient with others.

I think, I could be able of doing home office, without problem in other social context, and maybe not home officing all days, but more in a hybrid scenario.

Deadline Chapter 13 & 14

Note: The next blogs will be written in Spanish. This is due, by now, I’m running out of ideas about how keep this blogs fresh and fun for both parts. My objetive is (mostly) always give to you a pleaseant lecture while we learn something.

La fecha de entrega, o linea de muerte, acorde a los angloparlantes.

La novela, hasta ahora, lejos de ser una historia de ficción y aventura, como al principio creí que sería, se está transformando en un triste caso de la vida real.

La administración de proyectos es un andar de constantes obstáculos.
Src. Giphy

Los problemas con los que tiene que lidiar Mr. T. constantemente parecieran extraídos de la realidad. Uno tras otro, obstáculos para no llegar a la fecha de entrega. Es tan realista que aterra.

La novela suele tener muchos puntos interesantes, aún algunos solo tomen una o dos frases. Durante este escrito me dedicaré a hablar de esos pequeños ( o no tan pequeños ) puntos, conforme el interés fue surgiendo.

¿Es necesario seguir siempre los protocolos?

A lo largo de la lectura, encontramos al equipo de Mr T. en auditoría. ¿El objetivo? Medir el nivel de certificación en procedimientos de los empleados. Lo curioso para mí, era la definición de la certificación del nivel 2, definida como la certificación de la Repetibilidad: Los equipos, hagan bien o mal los procesos, mientras siempre los realicen igual, están dentro de la norma.

Por un lado, podemos justificar este pensamiento, ya que un protocolo tiene como objetivo, definir las reglas y procedimientos a seguir en cierta situación. Por ende, al tener procesos repetibles, al menos existiría un protocolo para ellos.

Sin embargo, a fin de cuentas, el objetivo primario de un PM, debería ser minimizar costos en la medida de lo posible. Así, que, ¿porqué seguir un reglamento que, se sabe que me va a generar pérdidas de tiempo o capital, a cambio de la uniformidad?

El PM debe tener esa alma creativa y estar en la búsqueda de nuevas formas de innovar y reducir pérdidas. Por lo que, su deber es ser flexible, generando nuevas formas de ahorrar tiempo.

Esto nos lleva a la pregunta, ¿Vale la pena romper un protocolo, por ahorrar tiempo, aún el riesgo que esto supone?

Solo porque es protocolo, vale la pena hacerlo?
Los protocolos ayudan a reducir riesgos.
Los protocolos son la base de la burocracia.
Src. Giphy

Es una pregunta complicada. Como comenté en un blog anterior, respecto a si seguir estrictamente las convenciones de UML, depende mucho del nivel de complejidad y formalidad de nuestro proyecto. El manager debe ser capaz de evaluar (criterio que se va formando con la experiencia) si la formalización es excesiva y se está sacrificando capital temporal, o si el seguir el protocolo vale la pena.

El problema del vacío.

Hace poco, mientras me hallaba en un estado de reflexión, salió de mi un pequeño escrito, que tiene como fragmento:

[…] Llenar, llenar, es a lo que se dedica el ser humano contemporáneo. Llenar huecos en la agenda, espacios vacíos en casa con muebles y decoraciones inútiles, el closet con prendas que no usaremos, el estómago con comida nociva que no nos quite mucho tiempo. Llenar, llenar, nada puede quedar vacío ni despejado. […] El vacío ya no existe ni dentro ni fuera. Haz algo o simula que haces. Simula, simula, simula. Reinicia, reinicia, reinicia.

Alex González S. – Diariamente, Pensamientos.

Muchas veces me he preguntado porqué, aún teniendo más tiempo para realizar proyectos ( como este periodo de cuarentena), lejos de ser más productivo, se vuelve todo lo contrario.

En la novela tocan este punto y dan una respuesta muy sencilla.

Tomas es obligado a mantener a su gente trabajando. De no ser así, podría parecer que el no es el adecuado para manejar a su gente.

De Marco – The Deadline

¡Cuan peligroso es, caer en la realización de tareas inútiles, para tan solo llenar la agenda!

Un buen manager no es aquel el que llena con tareas a sus empleados, sino que les pide las tareas adecuadas.

Para aprender a ser efectivos para hacer, solo lo necesario, recomiendo empezar con uno mismo. Una buena guía la puedes encontrar aqui.

El Diseño es mi pasión

Y no, no me refiero al diseño gráfico.

El diseño de programas, sistemas, tareas, debe ser de una importancia fundamental para todos aquellos que nos dedicamos a producir. Así como los ingenieros civiles tienen sus planos y los realizan ANTES de comenzar a construir, de igual forma deberíamos implementar este proceso los desarrolladores de software.

Programador promedio, programando ávidamente sin haber hecho un buen diseño.
Src. Giphy

Durante el semestre pasado entablé de forma más o menos ordenada una serie de blogs para la definición de un buen diseño de software. Espero puedan ser útiles para afinar conceptos e ideas sobre como realizar un buen diseño.

Por otro lado, en la actualidad nos enfrentamos a sistemas grandes y complejos, que gastar gran cantidad de tiempo en debuggueos ya no es opción.

En la red se pueden hallar desde consejos muy acertados para la prevensión de bugs, hasta nuevos paradigmas diseño de sistemas y administración de proyectos, como la programación extrema.

Conclusiones

La novela me está dejando muchos aprendizajes, concisos e interesanes, que para reflexionarlos profundamente, este blog debería ser mucho más extenso.

Estaré buscando formas de reinventar este blog, en medio de tanto caos, creo que todos merecemos una nueva perspectiva.

Cuidense y tomen vitaminas.

Src. Giphy

Diseña un sitio como este con WordPress.com
Comenzar