Archivos para ‘ALM’

22 febrero, 2012

[# ALM] Video: ALM World

image47dd1de4

Hi,

today plays a little more than auto bass drum on the work on global projects using Visual Studio 2010 Alm A bit of experience with projects of Avanade, another bit of personal experience and finally presentation of VSAnywhere.

http://www.globbtv.com/flv/flowplayer.commercial-3.2.3.swf

 

And if you are looking for something about Kinect > > for http://globbtv.com/12/microsite/2021/12-horas-visual-studio-programacion-de-aplicaciones-con-kinect

Greetings @ Málaga

The Bruno

Video: http://www.globbtv.com/12/microsite/2039/microsoft-alm-sessions-2012-planeta-alm

22 febrero, 2012

[#ALM] Video: Planeta ALM

image47dd1de4

Buenas,

hoy toca un poco más de auto bombo sobre el trabajo en proyectos globales utilizando Visual Studio 2010 ALM. Un poco de experiencia con proyectos de Avanade, otro poco de experiencia personal y finalmente la presentación de VSAnywhere.

 

http://www.globbtv.com/flv/flowplayer.commercial-3.2.3.swf

 

Y si lo que buscas es algo de Kinect >> pues http://globbtv.com/12/microsite/2021/12-horas-visual-studio-programacion-de-aplicaciones-con-kinect

 

Saludos @ Málaga

El Bruno

   

Video: http://www.globbtv.com/12/microsite/2039/microsoft-alm-sessions-2012-planeta-alm

19 febrero, 2012

[# ALM] Continuous Deployment, here we go!

Hi,

Since a few days ago is being conducted an interesting discussion in Agile Spain groups about Continuous Deployment.While some of the entries are for autoafirmar that each is the best implementer of SCRUM that exists, or to explain the why of a practice such as continuous integration, there are many deserving read only by the fact of starting to change our way of thinking. First things first, and before it’s always: to achieve an environment with CD, need to have a 100% of management support, a very seamless integration between development teams and teams of systems, etc. etc. etc. In other words, this is a practice that requires a very high level of maturity in terms of practices is required. If you look for example at Wikipedia, the definition of Continuous Deployment does not exist, but if there is an invalid link from Continuous Integration.

What if it exists on Wikipedia is the concept of Continuous Delivery, explaining as applying the practices of Automated Testing, Continuous Integration and Automated Deployment is possible to mount a Continuous Deliveryenvironment. One of the principles of this practice is to accelerate the time of deploying an application to a specific environment, either a test or even production environment. In my case, leveraging the capabilities of Team Build 2010 and Azure that I can get this in the next project that I have in hand.

Note: the only major problem I have in vista now that I am planning to this model, is the limited capacity of deployment that has an environment like Windows Phone, let is a chestnut to automate this same. You ask the crack of Joshua Yeray (@ JosueYeray ) to see which recommends.

At this point, my working model will initially be based on 2 lines of development (with a very mature model of branching weAvanade Spain) where it will always be available (i.e. displayed) for testing

  • An environment with the application deployed from the last output of a build with a correct implementation (build + unit tests) of the line of development.
  • An environment of AZURE to TEST with the application deployed from the last output of a build of a branch that has passed a battery of tests of UX.

Obviously behind all this, will continue to apply Test Driven Development, ensuring a uniform syntax using StyleCop, ensuring control of projects through TFS and some good practice to define, etc. But come on, that in the end the idea remains the same:

Improve the way in which we develop software on a daily basis

image

When you have implemented and you can evaluate the results of implement and maintain this practice for a time, ´comentaré my impressions.

Greetings @ Home

The Bruno

Resources:

PS: Just buy the book at Amazon (http://bit.ly/zbiP9A) from just €28.

19 febrero, 2012

[#ALM] Continuous Deployment, alla vamos !!!

Buenas,

desde hace unos días se está llevando a cabo una discusión interesante en los grupos de Agile Spain sobre Continuous Deployment. Si bien algunas entradas son para autoafirmar que cada uno es el mejor implementador de SCRUM que existe, o para explicar el porqué de una práctica como integración continua, hay muchas que merece leer solo por el hecho de comenzar a cambiar nuestra forma de pensar. Primero lo primero, y antes lo de siempre: para lograr un entorno con CD, necesitas tener un apoyo 100% de la dirección, una integración muy fluida entre los equipos de Desarrollo y los equipos de Sistemas, etc. etc. etc. En otras palabras esta es una práctica que requiere un nivel de madurez muy alto en cuanto a prácticas se requiere. Si nos fijamos por ejemplo en Wikipedia, la definición de Continuous Deployment no existe, aunque si existe un link inválido desde Continuous Integration

Lo que si existe en Wikipedia es el concepto de Continuous Delivery, donde se explica como aplicando las prácticas de Automated Testing, Continuous Integration y Automated Deployment es posible lograr montar un entorno de Continuous Delivery. Uno de los principios de esta práctica es acelerar los tiempos de despliegue de una aplicación a un entorno específico, ya sea un entorno de test o inclusive de producción. En mi caso aprovechando las capacidades de Team Build 2010 y Azure que podré ponerme con ello en el próximo proyecto que tengo en manos.

Nota: El único gran problema que tengo en vista ahora que estoy planeando este modelo, es la poca capacidad de despliegue que posee un entorno como Windows Phone, vamos que es una castaña para automatizar esto mismo. Le preguntaré al crack de Josué Yeray (@JosueYeray ) para ver que recomienda.

En este punto, mi modelo de trabajo inicialmente se basará en 2 líneas de desarrollo (gracias a un muy maduro modelo de branching que tenemos en Avanade Spain) donde siempre estarán disponibles (es decir desplegado) para probar

  • Un entorno con la aplicación desplegada a partir del último output de una build con una ejecución correcta (build + unit tests) de la línea de desarrollo.
  • Un entorno de AZURE para TEST con la aplicación desplegada a partir del último output de una build de una rama que ha pasado una batería de pruebas de UX.

Obviamente detrás de todo esto, seguiremos aplicando Test Driven Development, asegurando una sintaxis homogénea utilizando StyleCop, asegurando el control de proyectos gracias a TFS y alguna buena práctica a definir, etc. Pero vamos, que al final la idea sigue siendo la misma:

Mejorar la forma en la que desarrollamos software diariamente

image

Cuando lo haya implementado y pueda evaluar el resultado de implementar y mantener esta práctica por un tiempo, ´comentaré mis impresiones.

 

Saludos @ Home

El Bruno

   

Recursos:

PD: Acabo de comprarme el libro en Amazon (http://bit.ly/zbiP9A) a tan solo €28.

12 febrero, 2012

[# TFS2010] HowTo: Configure the automatically download from the latest version of a file in the IDE or from TFS

image47dd1de4

Hi,

a couple of days, the great Oscar Martin told me that it was a "problem" with Team Foundation Server 2010 as to download a specific version of a file, when editing it, the Visual Studio 2010 IDE downloaded you automatically the latest version. The possible solution to this problem is to disable the automatic download option, and now with Team Foundation Server 2010 can do to level (Vs2010) development tool or source code repository (Tfs2010) source.

For the first case, we must access the options of Visual Studio 2010, from menu "Tools Options //". Within the same access to the section "Source Control // Visual Studio Team Foundation Server" and check or uncheck the option "Get latest version of item on check-out in server workspace". This option ensures that we always have the latest version of any file that we’re editing.

clip_image001

Well, if what we want is that this way of working is applied to all members of a Team Project, we can apply these settings at the level of TP. To do this, from Team Explorer pane, select the appropriate Team Project, then we deploy the context menu and select "Source Ccontrol". Within the section "Chec-out settings", the option "Enable get latest on check-out" allows us to define this operation.

clip_image002

Greetings @ Home

El Bruno

12 febrero, 2012

[#TFS2010] HowTo: Configurar la descarga automatica de la ultima version desde el IDE o desde TFS

image47dd1de4

Buenas,

hace un par de días, el gran Oscar Martin me comentaba que tenía un "problema” con Team Foundation Server 2010 ya que al descargar una versión específica de un archivo, al momento de editar el mismo, el IDE de Visual Studio 2010 le descargaba automáticamente la última versión. La posible solución a este problema consiste en desactivar la opción de descarga automática, y ahora con Team Foundation Server 2010 podemos hacerlo a nivel herramienta de desarrollo (Vs2010) o repositorio de código fuente (Tfs2010).

Para el primer caso, debemos acceder a las opciones de Visual Studio 2010, desde el menú “Tools // Options”. Dentro de las mismas acceder a la sección “Source Control // Visual Studio Team Foundation Server” y marcar o desmarcar la opción “Get latest versión of ítem on check out in server workspace”. Esta opción nos asegura que siempre tengamos la última versión de cualquier archivo que estemos editando.

clip_image001

Ahora bien, si lo que queremos es que esta forma de trabajo se aplique para todos los integrantes de un Team Project, podemos aplicar esta configuración a nivel de TP. Para esto, desde en panel Team Explorer, seleccionamos el Team Project correspondiente, luego desplegamos el menú contextual y seleccionamos “Source Ccontrol”. Dentro de la sección “Chec-out settings”, la opción “Enable get latest on check-out” nos permite definir este funcionamiento.

clip_image002

 

Saludos @ Home

El Bruno

   

10 febrero, 2012

[# ALM] Recommendations for CheckIn comments format


image47dd1de4

Hi,

before starting the post, we are going to do a small filter:

Do a daily CheckIn how minimal?

If your answer is "Yes", then you know that for every day that raisins without protecting your code into the source code repository, you kill to a Unicorn and fades out a rainbow. The second question also helps keep leaking the affair.

Is some of your comments of the following type?

-I’ve fixed a bug

-donate!

- 1234567890

It is amazing but many people think that the text for the comment box is only decorative and with a simple "." reaches.

As well, to improve this slightly I tell a working model that is fairly well used in the comments. It follow the following pattern:

+ add new elements, features, functions, etc.

-remove elements, features, functions, etc.

~ updated elements, features, functions, etc.

# define label or version

With this scheme, it is easier to find comments by type

+ built-in functionality for tracing database

~ changes in trace format

or even

~ changes in the look and feel to be OCD compliant

-old images

Thus, the comments are more than text lost in each set of changes. And finally a piece of information that is important to stress

Comments should discuss the reasons for a change not how, for how longer will read the source code.

Greetings @ La Finca

The Bruno

10 febrero, 2012

[#ALM] Recomendaciones para los comentarios que agregamos en cada CheckIn

image47dd1de4

Buenas,

antes de empezar el post vamos a hacer un pequeño filtro:

¿Haces cómo mínimo un CheckIn diario?

si tu respuesta es diferente a “SI”, pues que sepas que por cada día que pasas sin proteger tu código en el repositorio de código fuente, matas a un unicornio y se desvanece un arco iris. La segunda pregunta también ayuda a seguir filtrando el asunto.

¿Alguno de tus comentarios es del siguiente tipo?

- He arreglado un error

- done!

- 1234567890

Es increíble pero muchas personas piensas que la caja de texto para los comentarios es solo decorativa y con un simple “.” alcanza.

Pues bien, para mejorar esto un poco les cuento un modelo de trabajo que viene bastante bien utilizar en los comentarios. Se trata de seguir el siguiente patrón:

+ add new elements, features, functions, etc.

- remove elements, features, functions, etc.

~ updated elements, features, functions, etc.

# defines a label or version

Con este esquema es más fácil encontrar comentarios del tipo

+ incorporada la funcionalidad para las trazas en base de datos

~ cambios en el formato de las trazas

o inclusive

~ cambios en el look and feel para ser OCD compliant

- imágenes viejas

 

De esta forma los comentarios son algo más que texto perdido en cada conjunto de cambios. Y finalmente un dato que es importante remarcar

Los comentarios deben comentar el POR QUÉ de un cambio no el CÓMO, para el CÓMO ya leeremos el código fuente.

 

Saludos @ La Finca

El Bruno

   

30 enero, 2012

[# TFS2010] HowTo: Change the Source Control association in a project

image47dd1de4

Hi,

I will point out a scenario that is pretty casual and gives errors on more than one occasion. Occurs usually when you copy a project associated with the SC in a Team Foundation Server to another server and the client for Visual Studio 2010 makes a mess with the binding of that project. The solution is quite simple:

  1. The project must be part of a solution properly associated with a TFS Source Control Server
  2. In the IDE to open the "File > > Source Control > > Change Source Control" option
  3. Select the project with problems and press the "Unbind" option
  4. Confirm the changes, with the option "Ignore All"
  5. In the Solution Explorer pane, select the project.
  6. Display the contextual menu and select the option "Add selected projects to Source Control"
  7. Donate!

7 steps that save you an afternoon of trouble, especially if "you break one of the Builds"

Greetings @ La Finca

El Bruno

30 enero, 2012

[#TFS2010] HowTo: Cambiar la asociación de Source Control de un proyecto

image47dd1de4

Buenas,

voy a apuntar un escenario que es bastante casual y da errores en más de una ocasión. Se da usualmente cuando copias un proyecto asociado al SC de un servidor Team Foundation hacia otro servidor y el cliente de Visual Studio 2010 se hace un lío con el binding de ese proyecto. La solución es bastante simple:

  1. El proyecto debe ser parte de una solución correctamente asociada a un servidor de Source Control de TFS
  2. En el IDE abrir la opción “File >> Source Control >> Change Source Control“
  3. Seleccionar el proyecto con problemas y presionar la opción “Unbind”
  4. Confirmar los cambios, con la opción “Ignore All”
  5. En el panel Solution Explorer, seleccionar el proyecto.
  6. Desplegar el menú contextual y seleccionar la opción “Add selected projects to Source Control”
  7. Done !!!

7 pasos que te ahorran una tarde de disgustos, especialmente si “rompes una de las Builds

Saludos @ La Finca

El Bruno

   

26 enero, 2012

[# ALM] Using numbers to show why Pair Programming is a good practice

Hi,

After the excellent Coding Dojo with the help of Luis Ruiz Pavón we did with the guys from MadridDotNet, because I was pending to explain mathematical because it is useful to make a practice of Pair Programming in development teams. Pair Programming or programming pair defines a scenario where program is basically a two. Here’s the definition from Wikipedia:

Pair programming (or Pair Programming in English) requires two Software engineers to participate in a combined effort of developing a job site. Each Member performs an action that the other is not currently doing: while one encodes units tests the other thinks in the class that will satisfy the test, for example.

The person is doing coding is given the name of controller while the person who is leading is called the browser. It often suggests that two partners at least every half hour change roles or after becomes a unit test.

This practice is quite useful, has many detractors because usually people think that the world of development 4 hands produce more than 2. When in reality 2 heads produce much more than a single. But well, if once you’ve found with a "head" condemn this philosophy of work, this exercise can help you to demonstrate because a practice of Pair Programming is really useful.

Ideal scenario

Suppose we have a team of 6 people consisting of 2 programmers seniors and juniors 4 programmers. In an ideal scenario of working, we can assume that a senior programmer on a daily basis pays an amount of 2 units of work (UT), while a Junior programmer pays 1 UT. If we have a 5 day standard work week because at the end of the week we will have 40 UTs. The following table shows these numbers to make them clearer

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP 2 2 2 2 2 10
JrP 1 1 1 1 1 5
JrP 1 1 1 1 1 5
SrP 2 2 2 2 2 10
JrP 1 1 1 1 1 5
JrP 1 1 1 1 1 5
            40

 

Real scenario

But of course, if you actually do software development and are aware of what does your team know that day maybe a Sr Programmer can give 100% and generate their 2 UT, but the next few days will have to help the Junior Programmers to close his work. Often this means that their personal performance will drop to the floor and will be devoted to work by 2 or 3 to be able to take work forward. Being generous with the cast of UTs, this scenario could look like the following table.

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP 2         2
JrP   1   1 1 3
JrP     1   1 2
SrP 2         2
JrP   1   1 1 3
JrP     1   1 2
            14

 

Before moving to the next stage, and that you’ve read here, ask you because it is so frequent that developers gather together among themselves to discuss a topic in particular or to show portions of code. You’ll see that many times are doing programming in pairs without even knowing it.

Scenario with pair programming

Finally let’s see what would happen if we put together a SrP and a JrP; and we let the 3rd pair of JrP will rotate with previous. Since being very amarrete with the UTs, input we already have almost 150% more than in the real scene. And of course, assuming that the JrP can not pay more with the passage of time. The following table shows this example:

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP           0
JrP 1,5 1,5 1,5 1,5 1,5 7,5
JrP           0
SrP 1,5 1,5 1,5 1,5 1,5 7,5
JrP           0
JrP 1 1 1 1 1 5
            20

 

Well, here you have an example completely unrealistic about how Pair Programming can help us improve the performance of our teams. Obviously that I post here is a real study nor true, since that software development is affected by many other variables; but perhaps if you together with a blunt head you can start to do recognize that you working in the stage 2 and then explain the scenario 3 is better.

Done the friki stuff ot the week … Risa

Update: I’ll put a bit of context to explain why this entry and why do not you should take seriously, is simply an exercise to demonstrate that YOU CANT put down to simple numbers the work of a team. Pair Programming is a practice that has many advantages, if you want to know because your friend google or his friend Bing, can help you. But I will recommend The Agile Samurai, a book mandatory for these days. In this particular case I have destroyed all good project management practices to reach a number that is valid for the post, for example

  • It is impossible to measure the working capacity of a person in "work units", everyone knows that the work of a developer is measured on the basis of the number of lines of code that writes per day. If you don’t know how to do it, this post can help you identify who works and who not.
  • Pair Programming is not based on join a Senior Programmer and a Junior programmer, is a little more complicated. I personally recommend make couples on the basis of the years of each person. Is scientifically demonstrated that when the sum of the years of a couple is an exact multiple of 3 or 7, performance increases in a 18%
  • Pair Programming allows us to save hardware costs. No need 2 computers, we can reduce IT costs by half. Another thing that I recommend to save costs and space to work with programming in pairs, is not have 2 chairs, but a single chair and a person hung in Mission impossible. This also helps if it hangs with a slight inclination downward, will get more blood to your head and you can write more lines of code to the day

 

Greetings @ Home

El Bruno

Sources: http://es.wikipedia.org/wiki/Programaci%C3%B3n_en_pareja

26 enero, 2012

[#ALM] Demostrando con números porqué es conveniente realizar Pair Programming

Buenas,

después del excelente Coding Dojo con la ayuda de Luis Ruiz Pavón que hicimos con los chicos de MadridDotNet, pues me quedó pendiente explicar de manera matemática porque es útil realizar una práctica de Pair Programming en los equipos de desarrollo. Pair Programming o Programación en Pareja define un escenario donde básicamente se programa de a dos. He aquí la definición de la Wikipedia:

La Programación en Pareja (o Pair Programming en inglés) requiere que dos Ingenieros en Software participen en un esfuerzo combinado de desarrollo en un sitio de trabajo. Cada miembro realiza una acción que el otro no está haciendo actualmente: Mientras que uno codifica las pruebas de unidades el otro piensa en la clase que satisfará la prueba, por ejemplo.

La persona que está haciendo la codificación se le da el nombre de controlador mientras que a la persona que está dirigiendo se le llama el navegador. Se sugiere a menudo para que a los dos socios cambien de papeles por lo menos cada media hora o después de que se haga una prueba de unidad.

Esta práctica que es bastante útil, tiene muchos detractores ya que usualmente la gente piensa que en el mundo del desarrollo 4 manos producen más que 2. Cuando en realidad 2 cabezas producen mucho más que una sola. Pero bueno, si alguna vez te has encontrado con un “jefe” detractor de esta filosofía de trabajo, este ejercicio puede ayudarte a demostrar porque una práctica de Pair Programming es realmente útil.

Escenario Ideal

Supongamos que tenemos un equipo de trabajo de 6 personas compuesto por 2 programadores seniors y 4 programadores juniors. En un escenario ideal de trabajo, podemos asumir que diariamente un programador senior rinde una cantidad de 2 Unidades de Trabajo (UT), mientras que un programador Junior rinde 1 UT. Si tenemos una semana de 5 días de trabajo estándar pues al final de la semana tendremos 40 UTs. La siguiente tabla nos  muestra estos números para que queden más claros

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP 2 2 2 2 2 10
JrP 1 1 1 1 1 5
JrP 1 1 1 1 1 5
SrP 2 2 2 2 2 10
JrP 1 1 1 1 1 5
JrP 1 1 1 1 1 5
            40

 

Escenario Real

Pero claro, si realmente te dedicas al desarrollo de software y eres consciente de lo que hace tu equipo de trabajo sabrás que el primer día tal vez un Sr Programmer pueda rendir al 100% y generar sus 2 UT, pero los días siguientes tendrá que ayudar a los Junior Programmers a que cierren su trabajo. En muchas ocasiones esto significa que su rendimiento personal bajará hasta el piso y se dedicará a trabajar por 2 o por 3 para poder sacar adelante el trabajo. Siendo generoso con el reparto de UTs, este escenario podría quedar como la siguiente tabla.

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP 2         2
JrP   1   1 1 3
JrP     1   1 2
SrP 2         2
JrP   1   1 1 3
JrP     1   1 2
            14

Antes de pasar al escenario siguiente, y ya que has leído hasta aquí, pregúntate porque es tan frecuente que los programadores se junten entre sí para debatir un tema en particular o para mostrarse porciones de código. Verás que muchas veces están realizando Programación en Parejas sin siquiera saberlo.

 

Escenario de Programación en Pareja

Finalmente veamos que sucedería si juntamos a un SrP y a un JrP; y dejamos que la 3ra pareja de JrP vaya rotando con las anteriores. Pues siendo muy amarrete con los UTs, ya de entrada tenemos casi un 150% más que en el escenario real. Y claro, esto asumiendo que los JrP no pueden rendir más con el paso del tiempo. La siguiente tabla muestra este ejemplo:

Team Día 1 Día 2 Día 3 Día 4 Día 5 Total
SrP           0
JrP 1,5 1,5 1,5 1,5 1,5 7,5
JrP           0
SrP 1,5 1,5 1,5 1,5 1,5 7,5
JrP           0
JrP 1 1 1 1 1 5
            20

 

Pues bien, aquí tienes un ejemplo completamente irreal sobre como el Pair Programming puede ayudarnos a mejorar el rendimiento de nuestros equipos de trabajo. Obviamente que esto que he puesto aquí no es un estudio real ni cierto, ya que en desarrollo de software influyen muchas otras variables; pero tal vez si te juntas con un jefe obtuso puedas comenzar por hacer que reconozca que se trabaja en el escenario 2 y luego explicarle que el escenario 3 es mejor.

Completa la frikada de la semana … Risa

Update: voy a poner un poco de contexto para explicar el porqué de esta entrada y porqué no debes tomarte en serio la misma, es simplemente un ejercicio para demostrar como NO PUEDES bajar a números simples el trabajo de un equipo. Pair Programming es una práctica que aporta muchas ventajas, si las quieres conocer pues tu amigo google o su amigo bing, te pueden ayudar. Sino volveré a recomendar The Agile Samurai, un libro obligatorio para estos días. En este caso en particular he destrozado todas las buenas prácticas de gestión de proyectos para llegar a un número que sea válido para el post, por ejemplo

  • Es imposible medir la capacidad de trabajo de una persona en “unidades de trabajo”, todo el mundo sabe que el trabajo de un desarrollador se mide en base a la cantidad de líneas de código que escribe por día. Si no sabes como hacerlo, este post te puede ayudar a detectar quien trabaja y quien no.
  • Pair Programming no se basa en juntar a un Programador Senior y un Programador Junior, es un poquito más complicado. Yo personalmente recomiendo realizar parejas en base a los años de cada persona. Está científicamente demostrado que cuando la suma de los años de una pareja es un múltiplo exacto de 3 o de 7, el rendimiento se incrementa en un 18%.
  • Pair Programming nos permite ahorrar costes de hardware. Al no necesitar 2 ordenadores, podemos reducir los gastos de IT a la mitad. Otra cosa que recomiendo para ahorrar costes y espacio trabajando con Programación en parejas, es no tener 2 sillas, sino una única silla y una persona colgada como en Mission Imposible. Esto también ayuda ya que si está colgada con una leve inclinación hacia abajo, llegará más sangre a su cabeza y podrá escribir más líneas de código al día.

 

Saludos @ Home

El Bruno

   

Fuentes: http://es.wikipedia.org/wiki/Programaci%C3%B3n_en_pareja

15 enero, 2012

[#ALM] How often do we must make a CheckIn?

Hi,

Christmas and new year with the Javi were the only ones on The farm work. He played the pleasant task of preparing scripts of deployment, test them at local, then see how they fail in the test environment and not to mention in PRE and PRO. But hey, as the Javi is nicotinero, I was with him that you quench your Vice and between one thing and another we started to talk about the interesting and recurring themes

How often is recommended to make CheckIn while I modify codeshare? (or protect code in the repository)

But the issue was rather more specific, talking about what happens if we take a large portion of code and begin to work and improve it. In this case, can I protect my code at the end of the process of refactoring? do or do it more often when I apply will apply small changes? Here are some examples:

In the first case, it is common to see how a person takes a piece of code for a couple of days, is devoted to playing with them, and 48 hours after decides protect changes he has made. If you are working in a team together and you have modified common elements as for example the definition of a project, because it is very likely need to do one or moreMERGEactions. If in addition you have modified classes that were being used by other colleagues, then the MERGE would be more delicate.

After presenting this example, someone might think that the solution is to protect more frequently. Suppose that for each modification "mild" that we apply in our process of refactoring, and perform a CheckIn. In this case, we must very tuned the operation of the development team, as it is at that moment when other members should evaluate whether they need to get the latest version of SC and the same question should be the person who is doing the refactoring.

As we see none of the two cases it is a complete solution for this scenario. I from my humble opinion I can suggest the following for this example:

  • Evaluates the changes that you make and tries to them to be significant for the code. I.e. it’s not a line of commentary, nor the destruction and total replacement of 20 lessons per 7 different projects.
  • You must always comply with the basic premises prior to protect code > verify to compile and pass the latest version of unit testing.
  • If you find yourself frequently with "classes" which are working 2 people (or more), assesses whether you are serving the SOLIDprinciples. 2 People to work on the same classes usually indicator that this class is taking too much responsibility
  • If you fulfill the SOLIDprinciples, but you still find 2 people working on the same class; then give the person divides the tasks on the computer that we are sure that there is something that does not fit a touch.
  • He says this work with your classmates. The daily meeting of "updating" is an ideal time to discuss this work.
  • Finally, remember that a team must respect the principle of the shared ownership of the code. Each change that you apply affects the work of your peers and nobody is responsible and "master" of a single piece of code.

And to close, the classic of every day when we pass these things… (sourcehttp://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0162fe399bd1970d-pi ))

image

Greetings @ Here

The Bruno

Geek And Poke: http://geekandpoke.typepad.com

15 enero, 2012

[#ALM] Cada cuanto es recomendable hacer un CheckIn?

Buenas,

en navidades y año nuevo con el Javi éramos los únicos en La Finca trabajando. Nos tocaba la agradable tarea de preparar scripts de despliegue, probarlos en local, después ver como fallan en el entorno de pruebas y ni hablar en PRE y PRO. Pero bueno, como el Javi es nicotinero, yo lo acompañaba a que sacie su vicio y entre una cosa y otra nos pusimos  a hablar del interesante y recurrente tema

¿Cada cuánto es recomendable hacer CheckIn mientras modifico código compartido? (o proteger código en el repositorio)

Pero el tema era bastante más específico, ya que hablamos de lo que sucede si tomamos una gran porción de código y comenzamos a trabajar y mejorar la misma. En este caso, ¿debo proteger mi código al final del proceso de refactoring?¿o hacerlo más frecuentemente cuando aplico voy aplicando pequeños cambios? Veamos algunos ejemplos:

En el primer caso, es bastante frecuente ver cómo una persona toma una porción de código durante un par de días, se dedica a jugar con las mismas, y al cabo de 48 horas decide proteger los cambios que ha realizado. Si está trabajando en un equipo conjunto y ha modificado elementos comunes como por ejemplo la definición de un proyecto, pues es muy probable que tenga que hacer una o más acciones de MERGE. Si además ha modificado clases que estaban siendo utilizadas por otros compañeros, pues el MERGE será más delicado.

Después de presentar este ejemplo, tal vez alguien piense que la solución es proteger más frecuentemente. Supongamos que por cada modificación “leve” que aplicamos en nuestro proceso de refactoring, y realizamos un CheckIn. En este caso, debemos tener muy afinado el funcionamiento del equipo de desarrollo, pues es en ese momento cuando los demás integrantes deberán evaluar si necesitan obtener la última versión de SC y la misma pregunta deberá hacerse la persona que está realizando el refactoring.

Como vemos ninguno de los dos casos es una solución completa para este escenario. Yo desde mi humilde opinión puedo sugerir lo siguiente para este ejemplo:

  • Evalúa los cambios que realizas e intenta que los mismos sean significativos para el código. Es decir que no sea una línea de comentario, ni la destrucción y reemplazo total de 20 clases por 7 nuevos proyectos diferentes .
  • Siempre debes cumplir con las premisas básicas antes de proteger código > verificar que compile y que se pase la última versión de las pruebas unitarias.
  • Si te encuentras frecuentemente con “clases” sobre las que están trabajando 2 personas (o más), evalúa si estás cumpliendo los principios SOLID. Que 2 personas trabajen sobre la misma clases suele ser indicador de que esa clase está asumiendo demasiadas responsabilidades
  • Si cumples los principios SOLID, pero todavía te encuentras con 2 personas trabajando sobre la misma clase; pues dale un toque a la persona que reparte las tareas en el equipo ya que seguro que hay algo que no cuadra.
  • Comenta este trabajo con tus compañeros. La reunión diaria de “puesta al día” es un momento ideal para comentar este trabajo.
  • Finalmente, recuerda que en un equipo se debe respetar el principio de la propiedad compartida del código. Cada cambio que aplicas repercute en el trabajo de tus compañeros y nadie es responsable y “amo” de una única porción de código.

Y para cerrar, el clásico de cada día cuando nos pasan estas cosas … (fuente http://geekandpoke.typepad.com/.a/6a00d8341d3df553ef0162fe399bd1970d-pi)

image

Saludos @ Here

El Bruno

   

Geek And Poke : http://geekandpoke.typepad.com

9 enero, 2012

[# ALM] ALM Assesment Online Tool

image

Good,

I am going to point because many times I have to dive among labyrinths of information to find this simple linkhttp://www.microsoft.com/visualstudio/en-gb/strategies/almassessment. It takes you to a Studio that allows you to Microsoft in online mode to evaluate your level of ALM While the data processed them in the UK, the result is quite consistent and well serves to any location.

So you know, if you want to know "how he carrying it?", this is a good starting point.

Greetings @ Home

The Bruno

Resources: http://www.microsoft.com/visualstudio/en-gb/strategies/almassessment

9 enero, 2012

[#ALM] Online Tool para evaluar tu nivel de ALM

image

Buenas,

me lo voy a apuntar porque muchas veces tengo que bucear entre laberintos de información para encontrar este simple link http://www.microsoft.com/visualstudio/en-gb/strategies/almassessment. El mismo te lleva a un estudio que te permite realizar Microsoft en modo online para evaluar tu nivel de ALM. Si bien los datos los procesan en UK, el resultado es bastante coherente y bien sirve para cualquier localización.

Así que ya sabes, si quieres saber “cómo lo llevas?”, este es un buen punto de partida.

 

Saludos @ Home

El Bruno

   

Recursos: http://www.microsoft.com/visualstudio/en-gb/strategies/almassessment

8 enero, 2012

[# ALM] 1. ALM in 2012, refactorizando our way of working.

Hi,

in these days when the thing is quite complicated, one of the tools we have to move ahead is to improve the way in which we work. Those who work in computer science we know that for quite some time the stereotype of repetitive work from 0900 to 1700, for 30 years on the same site, it is impossible. Jose Manuel Alarcon has written a very good post in this connection, called the "Artisans of knowledge", and one of the points that most highlights in this post is the constant need to improve that we have in our profession.

But beware, many people have misunderstood the message. They think that what we have to do is keep abreast of all new technologies that appear, know all the new products coming out and worship any new trend that promises a bright and peaceful future. When is this only 10% of our new responsibility. 90% Is a little more complicated, it requires that we apply that very often we use which is one meter above our ass (a metro approximately, though there are many cases that the ass is connected to the brain). In the remaining 90% is required to think, is required to learn from the experiences that we propose changes to improve the way in which we work and knowledge we possess.

For example, is very simple to be subscribed to the 10 most influential blogs in the the blogosphere, and follow the 10 cracks think more on different topics of computer science. With spend 60 minutes a day to read these blogs and give you a quick look at twitter every, we can be aware of the news. We changed the form of craftsmanship of our fathers, where you aprendías a profession for life; and we will implement a new premise which is that of constant training. We can have a more advanced social status, where our colleagues we will look at and you may wonder how things: "from where it takes time to keep abreast of everything?"; and we even have a fan club in the best style of Justin Bieber.

However if all this information we read not we process correctly, this way of working is useless. We not only have to read, we have to learn to learn. In the management of software projects is essential to explore new forms of work, new tools and new trends; but it is much more important to understand how we can apply them to a particular scenario to get good results. We need to know, that there are no magic formulas that solve all problems; and also a technique as old as the "refactoring" not only is applicable to developments but also to the way of work and management.

In many cases, there are people/organizations that care to define "a process" which would be useful both for 2-month development projects, to projects of 2 years. That also serves also for teams of 5 people and teams of 200 people; and finally, that it can be used for teams that work all in the same place, as for distributed work teams. When we find ourselves in these cases, it is not uncommon to create this process will be invested in a two-year project. Where, obviously, are the premises on January 1, 2010 not the same that the premises to January 1, 2012, etc. etc. etc.

In the previous case, surely the extreme agilistas will have more than one ulcer and begin to evangelize with the ABC’s ofKent Beck on AGILE and trends of the past 10 years. On the other hand, the lovers of the processes, will be dedicated to destroying the Amazon creating manuals of processes covering 1000 situations will never in any process, and that will then be a book died in some closet organization. Surely there will be a 3rd line of work, which will try to meet the real needs of the person/organization and on the basis thereof; It will create a proposal with a solution. In each case, does not help the proposed solution, but we consider that each a period of time we have to look at the way in which we are working and see if we can improve it.

Worldwide AGILE this is known as a retrospective, and all the agilistas I know are lovers of creating retrospective meetings. However, these badly conducted meetings, only represent a waste of time that little brings to a project and much less to an organization. As I am not going to write about this in this post, will leave the reference to a book that I loved about this item > Agile Retrospectives: Making Good Team Great (http://pragprog.com/book/dlret/agile-retrospectives). In CMMI is also taken into account this model, something the "I" is for Improvement and the "M" Model. For (understood) CMMI, processes, people and tools have the same value in the values triangle. Mind you, that you may like or not, but is a way of organizing and managing it is also valid in many cases. If you want to invest money in a book that will explain you the same as CMMI guides, but with a more human touch, therefore CMMI for Development ®: Guidelines for Process Integration and Product Improvement (http://www.amazon.com/CMMI-Development-Integration-Improvement-Engineering/dp/0321711505/ref=cm_cr_pr_product_top )).

In short, the constant improvement of the way in which we work is as important as the technologies with which we work.What is more, explore new forms of work will help us to improve the guidelines with which we are working and will also not help a broader perspective on how we can work.

But before concluding, I must point out 2 big problems we have in this aspect. On the one hand, be aware of "all the latest" leads to situations like that says Rodrigo Corral in this tweet.

We have failed with Scrum is not a reason to adopt Kanban. The reason must be that Kanban is what best fits your needs.

image

The mere fact that something fails, and there is an alternative solution does not mean that we should adopt her as soon as possible. How many times I’ve seen what says Rodrigo, I could not resist to respond with a somewhat annoying analogy:

@r_corral do can also be applied > > "I’ve had an accident in car, I now switch to the motorbike;" better learn to drive not?

image

Finally, the 2nd problem is as follows:

How is that the problems in computer science remain equal today than those we had 20 years ago it possible?

It seems a contradiction, since methodologies such as SCRUM are born by the 1993 beyond, but even today we still have the same problems. I wrote my opinion on this in my book, and I see that the post is a little long, I leave it to pending for another post.

Greetings @ Home

The Bruno

Links

8 enero, 2012

[#ALM] 1. ALM en 2012, refactorizando nuestra forma de trabajo.

Buenas,

en estos días cuando la cosa está bastante complicada, una de las herramientas que tenemos para salir adelante es mejorar la forma en la que trabajamos. Los que trabajamos en informática sabemos que desde hace bastante tiempo el estereotipo de trabajo repetitivo de 0900 a 1700, durante 30 años en el mismo sitio, es un imposible. Jose Manuel Alarcon ha escrito un post muy bueno al respecto, llamado “Artesanos del Conocimiento”, y uno de los puntos que más resalta en este post es la necesidad constante de mejorar que tenemos en nuestra profesión.

Pero cuidado, muchas personas han entendido mal el mensaje. Piensan que lo que tenemos que hacer es estar al día de todas las nuevas tecnologías que van apareciendo, conocer todos los nuevos productos que salen y adorar a cualquier nueva tendencia que prometa un futuro más brillante y pacífico. Cuando esto es solo un 10% de nuestra nueva responsabilidad. El otro 90% es un poco más complicado, ya que requiere que apliquemos eso que pocas veces utilizamos que se encuentra un metro por encima de nuestro culo (un metro aproximadamente, aunque existen muchos casos que el culo está conectado directamente con el cerebro). En este 90% restante se requiere pensar, se requiere aprender de los conocimientos que poseemos y a partir de las experiencias que tenemos, proponer cambios para mejorar la forma en la que trabajamos.

Por ejemplo, es muy simple estar suscrito a los 10 blogs más influyentes del la blogosfera y seguir a los 10 cracks que más opinan sobre diferentes temas de informática. Con dedicar 60 minutos al día a leer estos blogs, y darle un rápido vistazo al twitter cada tanto, ya podremos estar al tanto de todas las novedades. Habremos cambiado la forma de trabajo artesanal de nuestros padres, donde aprendías una profesión para toda la vida; y aplicaremos una nueva premisa que es la de la formación constante. Podremos tener un status social más avanzado, donde nuestros compañeros nos mirarán y se preguntarán cosas cómo: “¿De dónde saca tiempo para estar al día de todo?”; e incluso podremos llegar a tener un club de fan al mejor estilo de Justin Bieber.

Sin embargo si a toda esta información que leemos no la procesamos correctamente, esta forma de trabajo no sirve para nada. No sólo tenemos que leer, tenemos que aprender a aprender. En la gestión de proyectos informáticos es imprescindible conocer nuevas formas de trabajo, nuevas herramientas y nuevas tendencias; pero es mucho más importante entender como podemos aplicar las mismas a un escenario concreto para obtener buenos resultados. Tenemos que saber, que no hay fórmulas mágicas que solucionen todos los problemas; y que además una técnica tan vieja como el “refactoring” no solo es aplicable a los desarrollos sino también a la forma de trabajo y de gestión.

En muchos casos, existen personas/organizaciones que se esmeran por definir “un proceso” que sea útil tanto para proyectos de desarrollo de 2 meses de duración, como para proyectos de 2 años. Que además también sirva para equipos de trabajo de 5 personas y para equipos de 200 personas; y finalmente, que se pueda utilizar para equipos de trabajo que trabajen todos en el mismo sitio, como para equipos de trabajo distribuidos. Cuando nos encontramos en estos casos, no es raro que para crear este proceso se esté invirtiendo en un proyecto de 2 años de duración. Donde, obviamente, las premisas al día 1 de enero de 2010 no son las mismas que las premisas al 1 de enero de 2012, etc. etc. etc.

En el caso anterior, seguramente los agilistas extremos tendrán más de una úlcera y comenzarán a evangelizar con el ABC de Kent Beck sobre AGILE y las tendencias de los últimos 10 años. Por otra parte, los amantes de los procesos, se dedicarán a destruir el Amazonas creando manuales de procesos que contemplan 1000 situaciones que nunca se darán en ningún proceso, y que luego serán un libro muerto en algún armario de una organización. Seguramente existirá una 3ra línea de trabajo, que intentará conocer las necesidades reales de esta persona/organización y a partir de las mismas; creará una propuesta con una solución. En todos los casos, no sirve de nada la solución propuesta, sino tenemos en cuenta que cada un período determinado tenemos que analizar la forma en la que estamos trabajando y ver si podemos mejorar la misma.

En el mundo AGILE esto se conoce como una retrospectiva, y TODOS los agilistas que conozco son amantes de crear reuniones de retrospectiva. Sin embargo, estas reuniones mal llevadas, solo suponen una pérdida de tiempo que poco aporta a un proyecto y mucho menos a una organización. Como no voy a escribir de esto en este post, dejaré la referencia a un libro que me ha encantado sobre este tema > Agile Retrospectives: Making Good Team Great (http://pragprog.com/book/dlret/agile-retrospectives).  En CMMI también se toma en cuenta este modelo, por algo la “I” es de Improvement y la de “M” de Model. Para CMMI (bien entendido), los procesos, las personas y las herramientas tienen el mismo valor en el triángulo de valores. Cuidado, esto te puede gustar o no, pero es una forma de organizar y de gestionar que también es válida en muchos casos. Si quieres invertir dinero en un libro que te explicará lo mismo que las guías de CMMI, pero con un toque más humano, pues CMMI for Development®: Guidelines for Process Integration and Product Improvement (http://www.amazon.com/CMMI-Development-Integration-Improvement-Engineering/dp/0321711505/ref=cm_cr_pr_product_top).

En resumen, la mejora constante de la forma en la que trabajamos es igual de importante que las tecnologías con las que trabajamos. Es más, conocer nuevas formas de trabajo nos ayudará a mejorar las guías con las que estamos trabajando y además no ayudará a tener una perspectiva más amplia sobre cómo podemos trabajar.

Pero antes de terminar, tengo que señalar 2 problemas grandes que tenemos en este aspecto. Por un lado, el estar al tanto de “todo lo último” nos lleva a situaciones como la que comenta Rodrigo Corral en este tweet.

Hemos fallado con Scrum no es un motivo para adoptar Kanban. El motivo debe ser que Kanban es lo que mejor se adapta a tus necesidades.

image

El solo hecho de que algo falle, y que exista una solución alternativa no significa que la debamos adoptar lo antes posible. Como muchas veces he visto lo que comenta Rodrigo, no he podido resistirme a responder con una analogía un tanto molesta:

@r_corral también se puede aplicar >> "he tenido un accidente en coche, ahora me cambio a la moto"; mejor aprender a conducir no?

image

Finalmente, el 2do problema es el siguiente:

¿Cómo es posible que los problemas en la informática sigan siendo iguales hoy que los que teníamos hace 20 años?

Parece una contradicción, ya que metodologías como SCRUM nacen allá por el 1993, pero todavía hoy seguimos teniendo los mismos problemas. Yo escribí mi opinión al respecto en mi libro, y como veo que el post es un poco largo, lo dejo como pendiente para otro post.

 

Saludos @ Home

El Bruno

   

Links

3 enero, 2012

[# ALM] Download sessions and content of ALM Summit 2011

image

Hi,

looks it was pending publication and almost happens > can already download the sessions and the contents of the ALM Summit 2011 (the Redmond). All sessions can be viewed from Channel 9, specifically fromhttp://channel9.msdn.com/events/alm-summit/2011

image

Greetings @ Home

The Bruno

3 enero, 2012

[#ALM] Descarga las sesiones y contenidos de ALM Summit 2011

image

Buenas,

mira que lo tenía pendiente de publicar y casi se me pasa > ya podemos descargar las sesiones y los contenidos del ALM Summit 2011 (el de Redmond). Todas las sesiones se pueden visualizar desde Channel 9, específicamente desde http://channel9.msdn.com/events/alm-summit/2011

image

 

Saludos @ Home

El Bruno

   

Seguir

Get every new post delivered to your Inbox.

Únete a otros 772 seguidores