[#ALM] The importance of your #ToDo list

Clipboard01

Hello!

This post is not going to be related to a development methodology or even to developers. If you’re a person who uses some method to organize your daily tasks, this is where I want to go now. I’ll try to describe my own experiences about how you can improve your time management approach, simply improving the way in which you manage your daily tasks.

There are people who are self-organized by nature (I envy them, because I tend to be a disaster); other people need to use a system which allows them to have control over what they do. And, this is important when you start to work with a personal system (I wrote about mine a couple of years ago) or some adaptation of GTD, you usually starts with items related to work, and then you start to add some personal items like collect school supplies for one of your kids, do not forget to run 10K, etc.

I’n not gonna write about a specific methods for managing ToDo lists, a simple Bing search can return almost 300000 resultsI will try to advise you to ask your colleagues about their method. And here you can learn a couple of things:

– One one hand, and as a general rule, people who have a well-defined system tend to be organized people. The system can be a paper-based system or someone with digital support. Post Its and notebooks are a great ally to manage tasks. These people also tend to have a very organized desk. Again, this applies to the physical desktop and the digital desktop.

-On the other hand, people who usually have a disorganized desk, lack of a good task management system. This is not true for 100% of this people however this profile of people are not usually very organized.

When I get to this point, it is time to ask yourself Why this is so important? Is very simple, people with a good management system can answer the following questions in a much more accurate way:

What are you doing right now? What remains in your ToDo list? What should you start next?

I try to see how each person manages their daily tasks and if I see a good idea, so I said it and I try to put it up for my own time management. Here I get 2 things that are that motivate me

– I try to learn something new (which is very important to me). Try new stuff and learn is fundamental to have a motivated and open mind

– Improved the way I work. Continuous improvement is something that I always try to do in my daily basis ;)

Greetings @ Burgos

/El Bruno

[#ALM] La importancia de tu #ToDo list

Clipboard01

Hola!

Este post no va ir dedicado ni atado a una metodología de desarrollo en particular. Ni siquiera aplica a developers. Si eres una persona que utiliza algún método para organizar tus tareas diarias, pues aquí es donde quiero llegar ya que, una de las formas en las que puedes mejorar notablemente tu trabajo, es simplemente mejorando la forma en la que gestionas tus tareas.

Hay personas que son organizadas por naturaleza (yo las envidio, porque si me dejo estar, suelo ser un desastre); otras personas necesitamos refugiarnos en un sistema que nos permita tener control sobre lo que hacemos. Y, esto es importante, cuando comienzas a trabajar con GTD o algún sistema personal (como el que utilizaba yo hace un tiempo), las listas comienzan teniendo elementos de trabajo, y luego abarcan elementos personales como recoger material escolar para el disfraz de uno de tus niños, correr 10K, etc.

No voy a escribir sobre métodos para gestionar listas de tareas, una simple búsqueda en Bing puede retornar casi 300000 resultados. Lo que si voy a aconsejar es a preguntar a tus compañer@s como lo hacen ell@s. Y aquí puedes aprender un par de cosas:

– Por un lado y como norma general, las personas que tienen un sistema bien definido suelen ser personas organizadas. Este sistema puede tener soporte digital o en papel .PostIts y cuadernos son un aliado genial para gestionar tareas. Estas personas además, suelen tener un escritorio muy organizado. Esto aplica al escritorio físico y al escritorio Digital.

– Por otro lado, las personas que suelen tener un escritorio desorganizado, carecen de un buen sistema de gestion de tareas. No es norma general, sin embargo en estos casos este perfil no suele ser muy organizado.

Cuando llego a este punto, es el momento de preguntarte ¿porqué es importante este punto? Por algo muy simple, las personas con un buen gestión de sus ToDos pueden responder de una forma mucho más certera, en cualquier momento las preguntas:

 ¿Qué estas haciendo? ¿qué queda pendiente? ¿con qué deberías seguir?

Yo intento ver como gestiona cada persona sus tareas diarias y si veo una buena idea, pues la apunto e intento ponerla en marcha para mi propia gestión del tiempo. De aquí saco 2 cosas que son las que me motivan

– Aprendo algo nuevo, sobre esto ya escribí muchas veces. Probar y aprender es fundamental para tener una mente motivada

– Mejoro la forma en la que hago una tarea. El hecho de mejorar constantemente es algo que siempre intento tener en mi ToDo ;)

Saludos @ Burgos

/El Bruno

[#ALM] Por favor, no añadir cosas que no necesitas en tu desarrollo!!!!!!

Clipboard01

Hola!!!

Hoy estuve involucrado en una discusión vía yammer y publiqué una respuesta similar a esta en inglés. Así que la voy a a agregar como un recordatorio a mí mismo para ver que estoy haciendo el año que viene.

Creo que es muy importante que comencemos a desaprender “la forma en la que estamos acostumbrados a trabajar” y debemos empezar a cambiar la forma en que llevamos nuestro día a día. En los “viejos tiempos” solíamos unos DSLs muy inteligentes que nos permitían hacer una abstracción de nuestros dominios y generalmente eran lo suficientemente inteligentes como generar una gran parte de nuestras soluciones. También, solíamos tener un “proceso bien definido de desarrollo” desde la fase de requisitos hasta el “día del juicio final” y que cubría la mayoría de los pasos y roles para nuestro equipo de dev.

Hoy hay una manera completamente diferente de trabajar. No necesitamos DSLs y procesos; Necesitamos “gente inteligente”, “profesionales”. Es decir, la gente que es lo suficientemente inteligente como para dedicar una parte de su tiempo de trabajo, a aprender cosas nuevas y luego aplicar este conocimiento en el trabajo que realizan.

Un ejemplo práctico de esto es la odiada “arquitectura” (nunca me gustó el término, y odio más aún a los arquitectos) Lo dejé bien claro hace un tiempo:

Un equipo que practica SCRUM deja que la arquitectura emerja a medida que se construye el software. Si bien estamos acostumbrados a planificar los aspectos de la arquitectura, debemos comprender que este enfoque no deja de lado la arquitectura de software sino que deja que la misma vaya aportando valor al software que se construye a medida que el mismo avanza.

Si una persona conoce sus herramientas y su dominio; es probable que comience trabajando en un modo muy simple con GIT y sobre la base de “Vamos a hacer algo que aporte valor“. Un par de sprint después añadiremos algunas prácticas de CI (TFS, Team Build o Team City), algunos DevOps (Release Management, HP ALM, etc.) o… cualquier cosa que requiera el proceso de desarrollo.

Si en cambio, vamos desde cero con “una pila completa de productos” probablemente estemos añadiendo más problemas que ventajas al equipo ;)

Saludos desde Madrid

/El Bruno

Referencias

http://elbruno.com/2013/12/24/scrum-scrum-no-es-para-aficionados/

[#ALM] Please, don’t add stuff you don’t need into your development !!!

Clipboard01

Hi !!!

I was involved in a yammer question today and I get to this response. Nice one to add as a reminder to myself.

I think we must start to unlearn “old ways” and start to change the way we work. In the “old days” we used to have this nice DSLs to make a cool abstraction of our domains and they usually are smart enough to generate a great part of our solutions. Also, we have a “good defined dev process” from the requirements phase to the “judgement day” and its cover most of the steps and roles for our dev team.

Today there is a complete different way to work. We don’t need DSLs, and process; we need “smart people”, “professionals”. I mean, people who is intelligent enough to dedicate a part of their work time, to learn new stuff and later apply this knowledge into their projects. A practical example of this is the hated “architecture” (I never liked the term, I hated most the “architects”) In example: A good team let’s that architecture emerges as the software is built.

If you know your tools, and your domain; for sure you’ll start with GIT and a basic “let’s do something to add value” and a couple of sprints later you’ll add some CI (TFS, Team Build, or Team City), some DevOps (Release management, HP ALM, etc) or … whatever your development solution requires. If we go from scratch with a “full stack of products” we can probably add more issues than advantages to the team ;)

Greetings from Madrid

/El Bruno

References

http://elbruno.com/2013/12/27/scrum-arquitecture-must-emerge-fs-the-classic-architects/

http://elbruno.com/2013/12/25/scrum-scrum-is-not-for-amateurs/

[#ALM] The pleasure in doing things wrong

Hello!

As programmers, we are often too perfectionists. From time to time, we face with a difficult moment where we have to finish a task in a specific time and we have to decide on

-Move forward with an ugly solution which requires little time

-Choose for a more elegant solution (or beautiful) but which can puts us in the doubt of whether actually finish on time

This is what is known as an uncomfortable moment. And I don’t mean technical debt , or leave something that then is someone is detected as a code smell. This is more important, your health is which is at stake. A portion of bad code typed today, is an angry developer tomorrow. An angry developer tomorrow, especially with you, is never a good idea.

For example, suppose that we have to migrate an app that works with Kinect SDK V1.5 and it has to use Kinect SDK V2. It is almost certain that, in addition to the changes of code of the syntax of the new sensor (skeleton by body for example), we can use some time to refactor, to improve some other things and after many lessons learned to discard some code and make an important part of this app from scratch.

All this is fine (and is what will surely end up doing), but if we apply the maximum of only doing the work defined in the Sprint, should only migrate the SDK. We should not apply any change or improvement.

Consider different scenarios

-What happens if just migrate to version 2.0 SDK?. The work is completed, Sprint can close successfully.

-What happens if the refactoring process is much more complex than originally assumed and may result in having to ask for help to someone from the team?

If we believe in providing value to our customers, it is very likely that level code the first choice is most correct.The final functionality of the app will not change even though inside is all done an ode to the spaghetti.The second option calls us also to the premise of adding value with our team, finally to do quality work.

The topic has many edges and there is a simple solution that can be applied. That’s why Scrum is not for amateurs.If someone asks me to me, I surely you would opt for the second option. That alone, first migrating the SDK, and then taking advantage of to create a specific branch to apply improvements. It is very likely that the 2nd work enters a next Sprint, but if I do not give the best of myself to do things well, I maybe not sleep :D

Greetings @ Madrid

/El Bruno

[#ALM] El placer de hacer las cosas mal

Hola !

Como programadores, muchas veces somos demasiados perfeccionistas. Usualmente nos enfrentamos al difícil momento donde tenemos que terminar una tarea en un tiempo prefinido y nos toca decidir

– Seguir adelante con una solución poco elegante y que requiere poco tiempo

– Optar por una solución más robusta (o bonita) y que nos pone en la duda de si realmente lo terminaremos a tiempo

Esto es lo que se conoce como un momento incómodo. Y no me refiero a la deuda técnica o a dejar algo que luego se alguien detecte como code smell. Esto es más importante, tu salud es la que está en juego. Una porción de código bruto que escrites hoy, es un developer enfadado mañana. Un developer enfadado mañana, especialmente contigo, nunca suele ser una buena idea.

Por ejemplo, supongamos que tenemos que migrar una app que funciona con Kinect SDK V1.5 para que utilice Kinect SDK V2. Es casi seguro que, además de los cambios propios de código de la sintaxis del nuevo sensor (skeleton por body por ejemplo), por el camino me dedique a refactorizar a mejorar algunas otras cosas y que después de muchas lecciones aprendidas quiera tirar y hacer una parte importante de nuevo de esa app.

Todo esto está muy bien (y es lo que seguramente terminaré haciendo), sin embargo si aplicamos la máxima de solo hacer el trabajo definido en el Sprint, sólo deberíamos migrar el SDK. No deberíamos aplicar ningún otro tipo de cambio o mejora.

Pensemos en diferentes escenarios

– ¿Qué sucede si solo migro el SDK a la versión 2.0?. El trabajo está completado, el Sprint puede cerrarse con éxito.

– ¿Qué sucede si el proceso de refactorización es mucho más complejo de lo que inicialmente suponíamos y puede ocasionar que tenga que pedir ayuda a alguien del equipo?

Si pensamos en aportar valor a nuestros clientes, es muy probable que a nivel código la primera opción sea la más correcta. La funcionalidad final de la aplicacióno no cambiará por más que dentro esté todo hecho una oda a los espaghettis. La segunda opción nos llama también a la premisa de aportar valor con nuestro equipo de trabajo, finalmente a hacer un trabajo de calidad.

El tema tiene muchas aristas y no hay una solución simple que se pueda aplicar. Es por eso que Scrum no es para aficionados. Si alguien me pregunta a mi, yo seguramente optaría por la 2da opción. Eso sí, primero solo migrando el SDK, y luego aprovechando para crear un branch específico para aplicar las mejoras. Es muy probable que el 2do trabajo entre en un próximo Sprint, pero si no doy lo mejor de mi mismo para hacer las cosas bien, pues no podré dormir :D

Saludos @ Madrid

/El Bruno

[#ALM] About free online training (#MOOC), #Millenials and what to do to improve your team work

EBPensando

Hello!

Surely if you see the first hashtag (#MOOC) in the title of the post, you will think something similar to

This post sure has links to training resources.

You are probably right,, but I’ll try to go a little further.

MOOCs

Let’s start with the definition of MOOC in wikipedia (link)

MOOC (an acronym of massive open online course )1 and translated into Spanish as massive and open online course(CEMA)Note 1 ) is a form of open education, which is observed in undergraduate courses offered free of charge througheducational platforms on the Internet; whose philosophy is the liberation of knowledge to bring this to a wider audience. MOOC term was coined in the year 2008 by Dave Cormier2 When the number of registrations to its «Connectivism and Connective Knowledge (CCK08)» rose to almost two thousand three hundred (2300) students.

Without going much into the theme, the first thing we see is that this type of training is oriented to large numbers of people and usually provided by famous and renowned universities (e.g. MIT). What usually happens with this kind of free online training, is that a massive registration occurs at the beginning and then a massive withdrawal from the course when it starts. This is normal, since complete a form online only takes 5 minutes, now well devote 5 hours weeks to a course of several months as it requires more dedication .

There are several sites online that provide this type of courses: Coursera, MIT, and Stanford for example. I have not tried them all, only I have pointed to a couple of courses in Coursera and I have only completed one. This type of platforms are smart enough to then start to offer content that you actually contribute to your professional profile.For example, in the daily poll today I found the following:

Coursera Poll

Following the line out of my comfort zone, instead of programming or technology courses, currently I am doing one entitled “be more creative“. Instead of listening music or listen to a podcast geek, I leave the course on the 2nd monitor and attempt to work while I listen to it. If the course is good, my attention usually focuses on the course and I dedicate my daily 30 minutes, if the course does not attract me, I’ll give it maybe a couple more opportunities and if I’m still not “hooked”, so let’s move to another thing.

Now that there are so many options and MOOCs formats, chances are that everyone will discover the best way to carry out this type of courses. Well, if we look at this trend of free courses and in online format, the first thing that will get us attention is now that most people who take these courses are the generation of the Millenials (or generation and).

About the Millenials

I am not going to write about this generation, but rather, about the reasons driving this generation to work. In this article from the NY Times, the author highlights that many people (and myself included) at the time of choosing work, they value more the job quality and personal satisfaction; rather than economic compensation .

Important: I won’t go into detail on this subject in this post. I give because we all know that we need a couple of €uros to eat. We also know there many thieves who offer us mega ultra fun jobs with ping pong tables and super modern environments, but that then not us enough for a coffee or a few beers with friends.

Another important point is how to work with the information. If you take a couple of years on your shoulders you surely working in environments where information is power. I am referring to the type of people or heads who prefer to hide save information on a team, since they think that this is the correct way to manage it. Without going into absurd generalizations, this kind of behaviour are given in closed minds and prior to the millennial generation. (Hey, I’m from the ’76!)

Bonus: If you want to see the power that has the information, and as the mismanagement of it can destroy Nations, I recommend the book “Why Nations Fail

In the “new model” because information is in a different way. Information is shared and decisions are made in a context of open education is in a completely different way: this generation has to learn and learn fast forward .

Working as a team and innovating

Learn fast is one of the most important innovation drivers. And it is innovation that allows the teams to solve problems and adapt to new situations.

If you’ve read so far, quiet that I’m already closing theme: it is easy to connect the MOOCs with the Millenials.However, the important thing in a team is balance this type of capabilities to achieve good results.

It is already a classic to propose devoting a percentage of time that each person in a team develop new capabilities. There are people that we have been doing this since we learned to read, so it won’t be difficult.

Other actions that you can encourage is to try to gather the information that dispersa-mente is generated to have more coherence and participation. For example, let’s look at what we can do in the mega boring super ultraproductive meetings that both seem to like to organize some people. We are going to a case about virtual meetings. In some cases, this type of meetings tend to be carried out via Skype, Skype for Business (formerly known as Lync) or Google Hangouts, and is amazing how generated 2 completely different channels of information within it. On the one hand, what is said and discussed among participants and on the other hand, what is said through Instant Messaging channel.

slastmeeting

If you want the meetings to be really productive, it is very important to try to complement the 2 channels so that everyone can participate, and the output of the same really contribute value to the participants or the subject matter.

Note: I can not believe in 10 years writing still have pending a post entitled “Reunionitis: on meetings and how to avoid them”

So, you have enough work ahead.

  • You have to investigate what courses are offered online to come and sign up on one of them
  • You have to share this information with your team so that all can see the opportunities that present these platforms
  • You have to take some time to see what you can do to improve the dynamics of the way of your team
  • You have to encourage you to “des learn”, this also goes for another post

Greetings @ Home

/El Bruno

References: