BBVA GlobalNet | ¡Blog oficial!

CAT | Desarrollo

nov/11

11

Scrum orgánico

Durante los días 17 y 18 de octubre, 7 miembros del departamento de Desarrollo de BBVA GlobalNet asistimos a un curso de certificación en Scrum Master impartido por los Scrum Trainers Alan Cyment y Ariel Ber.

Todos los miembros asistentes, con conocimiento previo de Scrum, queremos comenzar a implantar estas técnicas de trabajo de forma orgánica en BBVA GlobalNet. Para ello, y tras solicitar consejo a Alan y Ariel, vamos a ir incorporando diversas técnicas a todas las áreas de trabajo de la corporación de forma progresiva, con la intención de que sean los diferentes grupos humanos los que finalmente decidan si las acogen o no. Como primer paso para nuestro objetivo, nuestra intención es informar a todo el equipo, cuales son los cimientos sobre los que se basa Scrum.

 

¿Qué es Scrum?

Scrum es un marco o framework de trabajo, esto es, un conjunto de técnicas y herramientas que nos va a permitir ayudar al cliente en su visión de negocio.

Como todo marco de trabajo, el objetivo es utilizarlo para llevar a cabo un resultado, por tanto, es un medio y no un fin. Tampoco nos va a decir qué es lo que debemos hacer o qué debemos utilizar, sino que nos va a dar las pautas y seremos responsables de ver qué es lo que necesitamos en cada momento para llegar al resultado, para aportar valor al cliente.

Scrum no es tener tarjetas, usar Jira o Excel; Scrum no es tener XP o TDD; Scrum no es tener integración contínua. Scrum es utilizar lo necesario para conseguir la satisfacción del cliente a través de entregas tempranas y contínuas de software valioso.

 

Scrum se basa en el manifiesto ágil cuyos valores son: 

  • Valorar más a los individuos y su interacción que a los procesos y las herramientas.
  • Valorar más el software que funciona que la documentación exhaustiva.
  • Valorar más la colaboración con el cliente que la negociación contractual.
  • Valorar más la respuesta al cambio que el seguimiento de un plan.

 

¿Qué roles existen en Scrum? 

Un proyecto desarrollado bajo el marco de trabajo Scrum va a tener una o varias personas interesadas (stakeholders) en que la empresa llegue a su fin. Estas personas hacen llegar sus necesidades de forma más o menos frecuente a un encargado del producto (product owner), quien conoce de primera mano cuales son los requisitos del proyecto en cada momento.

Mediante reuniones periódicas, el propietario del producto se reune con el equipo de trabajo para conocer el estado de los requisitos funcionales del proyecto, y aceptarlos o no, y dar prioridad a los requisitos que quedan por desarrollar.

 Por su parte, el Scrum Master acompaña en sus diferentes reuniones (diaria, de retrospectiva y de planificación de sprint) al equipo, para tratar de guiar al equipo en el uso de las técnicas de Scrum y servir de apoyo constante.

 

¿Qué aporta Scrum? 

Scrum ayuda mediante el cambio de paradigma a que el rendimiento sea más efectivo, trabando en conjunto y permitiendo exponer de forma clara cualquier problema que se ponga en su camino para que el equipo se pueda inspeccionar y adaptar en consecuencia.

El funcionamiento de Scrum es sencillo: tras cada salto (ciclo de desarrollo), el equipo realiza un ejercicio de inspección interna para adaptarse antes de volver a saltar.

El uso de Scrum es un medio que proporciona a BBVA GlobalNet beneficios en cuanto a calidad y competitividad:

  • Productos potencialmente entregables en un corto período de tiempo, y de forma continuada en el tiempo. Esto conlleva ciertas ventajas, como gestión de las expectativas del cliente, adaptabilidad a cambios del cliente o mercado, gestión del retorno de inversión (ROI) y mitigación de los riesgos gracias a la identificación sistemáticas de inconvenientes del proceso (filosofía LEAN).
  • Productividad y calidad del software entregado al poner el foco en el desarrollo continuo de la aplicación.
  • Alineamiento entre el cliente y  el equipo de desarrollo, lo cual provoca confianza.
  • Moral y responsabilida del equipo, gracias a la motivación, colaboración y cooperación.

¿Cómo vamos a implantar? 

En primer lugar, los responsables tienen claro que queremos comenzar con la implantación, con determinación y compromiso para la constante mejora, pues el comienzo puede ser doloroso.

Como primera medida, es muy importante introducir Scrum, sus fundamentos y valores, a todos los miembros de la compañía. Para ello, a través del blog y cursos de formación, todos podremos conocer los roles, artefactos, cómo se crea y estima un backlog, cómo se transforma en un sprintlog, cómo se gestiona un gráfico de burndown y se calcula la velocidad del equipo, etc. En definitiva, los equipos de trabajo deben conocer herramientas y forma de trabajo.

Para realizar Scrum de forma orgánica, queremos realizarlo poco a poco, mejorando día a día. Una buena forma de comenzar es por las reuniones retrospectivas. A partir de aquí, se irá realizando un proceso de mejorar, mejorar y mejorar, compartiendo experiencias, aprendiendo unos de otros y teniendo en cuenta que nunca existirá una lista de "las mejores prácticas en Scrum", ya que el contexto en importante.

WordPressTwitterBlogger PostShare

No tags

abr/11

19

Bolsa de empleo

¡Animate a formar parte de nuestro equipo!

Actualmente tenemos dos ofertas de empleo. Puedes verlas a través del siguiente enlace: http://www.bbvaglobalnet.com/bolsa-de-empleo/

WordPressTwitterBlogger PostShare

· · ·

abr/11

15

AppCircus Madrid

Ayer día 14 de abril de 2011 se celebró en el Centro de Innovación del BBVA, organizado por ReadWriteWeb.es, el primer AppCircus en Madrid, uno de los eventos de movilidad más relevantes a nivel mundial y no nos lo podíamos perder!

(más…)

WordPressTwitterBlogger PostShare

· · · · · ·

feb/11

2

Formación: Web2py, Mercurial y GAE

Compartir y extender el conocimiento debe ser una de las actividades más importantes de cualquier empresa. De esta forma no sólo se mejora la comunicación interna sino que nos ayuda a tener en cuenta soluciones que se han llevado a cabo en proyectos de éxito en los que no hemos estado involucrados, con el único fin de tener mas capacidad de desarrollo y una visión más amplia para afrontar nuevos retos.

Es por este motivo, que en BBVA GlobalNet, hemos iniciado unas jornadas de formación interna en la que distintos departamentos dan formación al resto sobre temas que para unos es “el pan de cada día” y para el resto un mundo sin explorar. El pasado 20 de enero comenzó el departamento financiero con un curso sobre “Indicadores de gestión”. El próximo curso, correrá a cargo del departamento de sistemas, que nos hablará sobre el desarrollo y el diseño de arquitecturas con:

1- Web2py
2- Mercurial
3- GAE

Y que han sido aplicadas en proyectos tan importantes como el Ministerio de Cultura (Museo del Prado), Ministerio de Industria (Red.es).

Ya os contaremos más… de momento podéis ver un pequeño tráiler… VER VÍDEO

Música del trailer: The Place That Won’t Take Me Back by I Am Not Lefthanded
Licencia: http://creativecommons.org/licenses/by-sa/3.0/

WordPressTwitterBlogger PostShare

· · · ·

ene/11

30

Problemas de encoding

A veces para afrontar un problema no tenemos mas remedio que cambiar el punto de vista. Como muestra, un caso real:

Queremos generar un fichero de salida tipo csv, en texto plano, mediante un proceso batch que utiliza una clase java. El encoding de dicho fichero debe ser ISO 8859-15, similar al ISO-8859-1 (también conocido como LATIN1) pero incluyendo, entre otros, el símbolo del euro.

En la fase de pruebas comprobamos que el fichero se genera incorrectamente. Al abrirlo en Windows con Notepad este muestra texto chino, codificado en UTF-8. Lo mismo ocurre al abrirlo con gedit en GNU/Linux.

Inicialmente las pesquisas para encontrar el origen del problema se centran en el encoding del texto: se comprueba la codificación pasada al PrintWriter encargado de escribir el fichero, la codificación de la base de datos de la que se obtienen los datos a escribir. En definitiva se chequea todo el código relacionado sin encontrar ningún error que pueda explicar la codificación incorrecta. Por ello decidimos pasar de examinar el código fuente a examinar el resultado de su ejecución, esto es, el propio csv. Utilizando un editor hexadecimal revisamos los bytes que lo componen en busca de secuencias erróneas, comprobando en particular la validez de la codificación los caracteres no ASCII. No encontramos nada raro.

El siguiente paso es comprobar posibles caracteres de control, y aquí si obtenemos resultados: ocurrencias de bytes a 0, que se corresponden con el carácter NULL y que no deberían aparecer en nuestro fichero. En efecto, sustituyendo cada byte 0 por otro byte correspondiente a un carácter ASCII (p.e. 20h, espacio) conseguimos que el csv se abra correctamente.

Ahora sabemos lo que causa el problema, pero no donde se origina en el código fuente. Nuestro principal sospechoso es algún String inicializado a null, sin embargo la documentación del API del PrintWriter dice que el método print(String s)

“Prints a string. If the argument is null then the string “null” is printed”

Por lo cual tenemos que descartar las cadenas como origen del problema. Nuestro siguiente candidato es un char sin inicializar, y efectivamente es el caso.

Si intentamos escribir un char sin inicializar declarado localmente al método que realiza la escritura recibimos un error en tiempo de compilación: variable carácter might not have been initialized. Pero en nuestro caso el char en cuestión está definido en otra clase y es accedido mediante un getter, por lo que el compilador no puede realizar la comprobación de inicialización y el .class se genera sin problemas.

La solución es sencilla una vez identificado el culpable y el texto se genera correctamente en ISO 8859-15.

Por curiosidad seguimos analizando un poco mas el tema y vemos que, al realizar distintas pruebas que generan ficheros con distintos contenidos se producen dos casos:

  1. El caso detectado inicialmente (y el mas frecuente): el editor Notepad de Windows lo interpreta como chino, al igual que el editor Gedit en Ubuntu. Mi teoría es que realmente se genera un fichero UTF-8 bien formado, pero el editor no puede identificar unívocamente el charset y utiliza un charset del chino como fallback.
  2. Notepad muestra correctamente el fichero, pintando el byte a 0 como un espacio en blanco (lo interpreta como carácter NULL, \u0000 ). Sin embargo Gedit no reconoce ningún encoding y no abre el fichero, considerándolo binario.

En situaciones como esta posiblemente es mas rápido analizar a bajo nivel el objeto generado que revisar el código que lo genera, que puede ser (como en este caso) bastante complejo.

WordPressTwitterBlogger PostShare

·

dic/10

1

TPV BBVA en VirtueMart para Joomla

Para conectarnos al TPV del BBVA, tenemos dos maneras, mediante web services o mediante una redirección a través del navegador.

A continuación vamos a ver como configurar la segunda opción en un VirtueMart integrado en Joomla.

(más…)

WordPressTwitterBlogger PostShare

· ·

nov/10

5

NetBeans 6.9 + SDK Android 2.2

Tras la reciente aparición del Android 2.2 en dispositivos móviles como el Google Nexus One y el HTC Desire, nos hemos decidido a realizar pruebas sobre esta plataforma junto al IDE NetBeans en su versión 6.9.1

A continuación vamos a ver lo necesario para poder realizar un Hola Mundo con las herramientas mencionadas:

(más…)

WordPressTwitterBlogger PostShare

·

jul/10

26

CAS en Python (web2py) para Joomla

Hace un mes en Todo Linux os hable como montar una infraestructura Single Sing On en producción con:

1.  Open Ldap
2. Liferay
3. CAS

El CAS empleado es el del proyecto Jasig desarrollado en Java. Pero esta se puede encontrar en distintos lenguajes como PHP o Python.

En este POST os voy hacer un introducción al CAS de Web2py, sus múltiples posibilidades y como integrarlo cambiando unas lineas de código con Joomla.

(más…)

WordPressTwitterBlogger PostShare

· · · · ·

jul/10

23

Mediawiki desde “title=Namespace: ”

Para utilizar MediaWiki los usuarios generalmente tienen dificultades y dudas sobre como hacerlo. Necesitan de una interfaz amigable en la que apoyarse con botones para las acciones, vínculos y mucha mucha ayuda. Desde nuestro uso personal hemos visto que MediaWiki tiene una propiedad que es muy interesante y que se le puede dar un uso que otros gestores de contenido no tienen. Esta propiedad es la siguiente:

Introduciendo a continuación de “title=” en la URL que tengamos en nuestro portal, algunas palabras nos va a facilitar el acceso a todo.

(más…)

WordPressTwitterBlogger PostShare

·

jul/10

23

Scripts y monitorizado

Todo administrador de Linux tiene que desarrollar continuos Scripts, ya sea en Perl, Python, Shell Scripting, etc. Estos scripts se hace para cosas tan simples como para una sincronización, baskups de BBDD, rotación de logs, etc.

En el trabajo habitualmente aprovecho estos pequeños desarrollos para monitorizar ¿Sabias que con un backup de BBDDs de Mysql puedes saber si la BBDD esta corrupta y de ser así que te avise con un email?

(más…)

WordPressTwitterBlogger PostShare

· ·

Bad Behavior has blocked 101 access attempts in the last 7 days.

Switch to our mobile site