Translate

lunes, 23 de diciembre de 2019

Trabajar en Agile o metodologías Ágiles

Cada uno tiene su historia y

De cómo Agile llegó a mi vida

Hace un par de años empecé a trabajar en el Gobierno Británico. Ya conocía GDS por diferentes cursos que había hecho sobre Experiencia de Usuario y porque siempre me ha interesado el tema de la colaboración como Socióloga que soy la psicología social siempre me ha fascinado.

También conocía de oídas Agile y las metodologías Ágiles. Como analista digital siempre me ha tocado mi parte de project management y negociación. Al estar en el centro del negocio nos toca lidiar con todo tipo de stakeholders e influenciar a los programadores o techies para que hagan los cambios que necesitamos. Sin ellos no samos nadie. Así que desde que empecé en digital esto soy una ferviente leedora de blog y libros de como ser más productivos y suelo guardar los mejores artículos aquí  https://www.scoop.it/topic/productividad-y-tic,

Pues bien, el papel de transformación digital en GDS no puede entenderse sin Agile. Tengo que decir que al principio me costó pillar que estábamos haciendo y por qué trabajábamos así. Sin embargo ahora me he dado cuenta que la visión de Agile en la creación de software es la correcta. Entiendo que a las empresas les pueda dar un poco de miedo este cambio, sin embargo, cada vez que hablo con otros compañeros del sector que siguen trabajando con otras metodologías me reitero que Agile es la forma adecuada de trabajar para crear productos digitales - desarrollo de software.

De que va todo esto de Agile...


  • De entrega rápida de software, en vez de mega proyectos que nunca se terminan (te suena...)
  • De Trust o confianza y mucha transparencia. Hay mucho de psicología social y sociología en todo esto para los miembros de la empresa. 
  • De tener en cuenta a los usuarios para darles lo que necesitan, adaptando el producto a sus necesidad en vez de que ellos se adapten al producto. Al fin y al cabo vivimos en un mundo cada más global donde la competición es cada vez más grande y los productos están en constante evolución.


Y si lo pensamos, asi es como deberia ser. Deberiamos confiar en nuestros jefes, en nuestros compañeros de equipo y en las personas que tenemos a nuestros mando. Una vez que todo esto se ha conseguido, todo va como la seda. Pero hasta que llegamos allí va a un largo camino y para ello alguien debe velar por que esto se pueda hacer y que esa confianza no se rompa.

Ya había comentado que Agile es una metodología, pero seguro que habrás oido hablar de Scrum, Lean ,de Kanban, de poner al usuario en el centro,... .Ahí un va un poco de luz a todo esto.

Agile es una metodología. Todo empezó con un manifiesto,aquí puede leer los principios del manifesto en inglés.Y  aquí puedes leerlo en castellano.
Sin embargo aunque esos principios no han ido cambiando con los años, si que se lo ha hecho como utilizarlos.

Dentro de Agile podemos encontrar dos frameworks ampliamente usados- Scrum (el más usado y más reglado) y Kanban. Sí, a mi también me sonaba a chino.


viernes, 6 de diciembre de 2019

MVCC - multiversion concurrency control en base de datos

Hace unas semanas me pasó un marrón considerable. Fui a sacar dinero al cajero y úna vez puestos mis 400 euros, el cajero me dió un error y suspendió la transacción. Así que como yo quería mi dinero volví a repetirlo todo y esta vez si obtuve m dinero.
Cual es mi sorpresa cuando miro en la APP que había sacado dinero dos veces.

Seguido de un sudor frio y un ahora qué

Empecé a imaginarme tener que llamar  a mi banco, al cajero, a mi cuenta de Reino Unido, a ver como explico yo que estaba diciendo la verdad y nada más que la verdad. Joder 400 euros, es una pasta eh. Y no tengo testigo. A ver si le da mi dinero al segundo que llegue... overthinking

Y al llegar a casa y llamar al banco, me dicen que todo esta bien y que ese dinero esta en mi cuenta. 
Pero, sennorita, que yo lo he visto con mis ojos. Y ella, pues vuelve a mirar. Tachán ahí estaba.

Acaso he entrado en un agujero del tiempo del camino del banco. Nota mental - Dark y Rick y Morty me están afectando seriamente.

Pues no, tiene pinta que ha sido tema MVCC.  Y aquí ya hay que ponerse un poco nerd.

Qué es el MVCC

El control de concurrencia mediante versiones múltiples (Multiversion concurrency control o MVCC) es un método para control de acceso generalmente usado por SGBDs para proporcionar acceso concurrente a los datos, y en lenguajes de programación para implementar concurrencia.
En la wikipedia tienes más información  https://es.wikipedia.org/wiki/Multiversion_concurrency_control

Para que sirve el Multiversion concurrency control

Pues para que no pasen errores como el mio. Yo pedí sacar un dinero y seguramente hubo un timeout en medio de la query. Al usar el banco de otra sucursal en mi app salió como que ya había cogido ese dinero. Entonces miré en la app, y mi dinero había desaparecido. Más tarde el cajero del banco mandaría un código de error como que no se había completado la transacción. Así que la base de datos de mi banco volvió al estado anterior, es decir no completó esa transacción.

Mmmmmm todo tiene sentido ahora. Y oye, esto es bastante importe porque estas cosas pueden pasar varias veces al día. 

Cómo funciona el control de concurrencia mediante versiones múltiples

La verdad, es que el tema es un poco complicado de explicar con palabras, así que lo mejor es tirar de diagramas. Dejo aquí un artículo que lo explica muy bien. 

En que bases de datos se puede dar el MVCC