Scrum para uno

Scrum es un marco de trabajo para la gestión y desarrollo de software basada en un proceso iterativo e incremental utilizado comúnmente en entornos basados en el desarrollo ágil de software. [1]

Recientemente me convertí en ScrumMaster después de ver los resultados de esta metodología ágil en mis últimos dos empleos.

Después de entender mejor su aplicación decidí hacer una metodología para el manejo personal de mi día a día.

Para esto hay que alejarnos del manifiesto de scrum, porque aquí no estamos colaborando con clientes, ni compañeros de trabajo; tú eres el único responsable, interesado y afectado.

Al final se trata de aprender a dividir el trabajo en partes pequeñas que agreguen valor, responder al cambio y entrar en un punto de mejora continua sin perder el foco.


1.- Divide los objetivos

¿Quieres aprender un idioma? ¿Quieres dominar una nueva técnica de negociación? ¿Un lenguaje de programación? ¡Bien! Divídelo en metas pequeñas, que agreguen valor por sí solas, pero en conjunto se conviertan en un resultado, tu objetivo.

Cada objetivo debe estar dividido en metas que a su vez tendrán que cumplir los siguientes criterios:

  • Independiente
  • Negociable
  • Valiosa
  • Estimable
  • Pequeña

Y cada meta debe estar dividida en tareas que cumplan los siguientes criterios:

  • Específica
  • Medible
  • Alcanzable
  • Relevante
  • Tiempo determinado

2.- No trabajes en muchas metas a la vez

Esto te ayudará a no perder el foco en las que estás actualmente trabajando. Dependiendo el tamaño de las metas, trabaja en dos o tres a la vez. Al final, una meta empezada pero sin terminar, es lo mismo a ninguna meta.

3.- Trabaja por iteraciones

En scrum se trabaja por iteraciones que pueden ir de 1 a 4 semanas (idealmente) en las que al inicio de la misma, seleccionarás un grupo de metas que deberán ser cumplidas durante ese plazo.

Esto ayuda a definir que es lo que hay que hacer y cuando. Es muy importante tener en claro la capacidad que se tiene para no dejar metas empezadas al final de la iteración.

Cada iteración nos acerca a llegar al siguiente nivel.

4.- Mira hacia atrás

Después de cada iteración es necesario que te tomes un tiempo para hacer una evaluación honesta de las metas trabajadas para saber si se cumplieron o si es necesario trabajar con alguna de ellas durante la nueva iteración.

También hay que hacer un análisis del proceso que se siguió para cumplir estas metas y definir si es necesario cambiar algo porque no esté funcionando o repetir algo porque sí funcionó.

5.- Mejora continua

No existe otra finalidad en seguir este procedimiento que la mejora continua, ya sea para aprender algo que nos gusta, volvernos más capaces o entrenar alguna habilidad.

Las metas puede que no agreguen mucho valor por sí solas, pero lo hacen, en conjunto completan un objetivo.


Antes de conocer scrum no sabía como ser disciplinado, quería cumplir con mis objetivos y compromisos, simplemente no tenía idea de que procedimiento seguir ni cómo evaluarlo.

Esta metodología contiene lo que yo rescaté de Scrum para aplicarlo a mis proyectos personales. Scrum es mucho más que esto y es una excelente herramienta para trabajar y coordinar equipos ágiles.


Publicado originalmente en Medium

[1] “Scrum.” Wikipedia, La enciclopedia libre.<http://es.wikipedia.org/w/index.php?title=Scrum&oldid=74109343>.

Enviar respaldos de cPanel a Amazon S3

Tengo un servidor web con cPanel que utilizo para hospedar sitios web de clientes. Actualmente me genera respaldos incrementales diaria, semanal y mensualmente; y se almacenan en un disco duro secundario.

A pesar de los respaldos en el servidor hay algunos sitios web que me preocupan en caso de una falla de hardware que puede demorar el tiempo en el que puedo acceder a los datos (o perderlos definitivamente).

Para solucionar este problema —y dormir más tranquilo— decidí enviar los respaldos de ciertas cuentas a Amazon S3. Escribí un script simple en ruby para hacer esta tarea:

El script requiere tener instalada la gema aws-sdk instalada. Es necesario modificar las variables backup_dir, users, bucket y s3 con los datos de cada entorno.

Este script solo funciona con backups incrementales pero con pequeñas modificaciones se puede adaptar a backups comprimidos por cPanel.

Es posible configurar el ciclo de vida en el bucket de S3 para eliminar los archivos automágicamente, en mi caso, únicamente conservo los backups de los últimos 3 días.

Aplicación para revista en iOS

Para una revista local desarrollé una aplicación para iOS para que puedan distribuir fácilmente sus publicaciones por este medio (manteniendo la versión impresa).

El resultado fue el siguiente:

La aplicación funciona en todos los dispositivos con iOS 5.4 o superior y cuenta con un backend que permite actualizar la revista remotamente añadiendo la portada y le PDF correspondiente a la edición.

La ventaja para el cliente es que no necesita (si no lo requiere) una versión específica para los dispositivos móviles ya que puede hacerlo con el mismo PDF que envía a impresión.

La aplicación funciona offline (con las ediciones previamente descargadas) y puede tener costo cada una de las ediciones con compras In-App o toda la aplicación.

El backend de la aplicación está desarrollado con PHP y utiliza MongoDB para almacenar los datos.

Esta misma aplicación se está adaptando para otros clientes bajo el modelo de servicio, se cobra una renta mensual y el cliente es libre de subir/vender las ediciones que desee. No se entrega código fuente y todo se hospeda en mi infraestructura.

Si alguien está interesado puede contactarme para armar un plan a medida, cuento con una versión similar pero enfocada en catálogos de negocios (mueblerías, zapaterías, etc.).

ALOHA
ALOHA
Developer: PincelStudios
Price: Free

Todas las Cocas son buenas

Tu puedes ver la televisión y ver un comercial de Coca-Cola, y sabes que el presidente toma Coca-Cola, Liz Taylor toma Coca-Cola, puedes pensar que tu también puedes beber Coca-Cola. Una Coca es una Coca y por más dinero que tengas no podrás conseguir una mejor Coca-Cola a la que el vagabundo de la esquina está tomando. Todas las cocas son las mismas y todos los cocas son igual de buenas. Liz Taylor lo sabe, el presidente lo sabe, el vagabundo lo sabe, y tú lo sabes.

– Andy Warhol (vía Isopixel).

Ejemplos en PHP para Banorte Payworks

Frecuentemente me han solicitado ejemplos de PHP para Banorte Payworks ya que en ocasiones es un poco complicado conseguirlas por medio de los ejecutivos (o los que entregan no funcionan del todo), para facilitar esto cree un repositorio en GitHub con dos ejemplos: ordinario (transparente para el usuario) y 3d secure (solicita verificación en caso de que aplique).

Con ambos ejemplos pueden hacer cualquier tipo de transacción (auth, preauth, void, etc.) y pueden consultar las variables obligatorias para cada transacción en el manual provisto por Banorte.

Puedes consultar el repositorio en este enlace.

Vista con indicador de actividad en Titanium Mobile

Posiblemente este debe ser uno de los módulos que más utilizo al desarrollar aplicaciones móviles con Titanium Mobile. Consiste en una vista con un indicador de actividad y una etiqueta con un texto.

loadingWindow.js

 

Para evitar escribirlo cada vez que lo necesito (por sencillo que sea), lo puse en un archivo externo y lo llamo cada vez que lo necesito de la siguiente manera:

El archivo que genera la vista (loadingWindow.js) contiene lo siguiente:

La función acepta una variable para reemplazar el mensaje de “Cargando” dependiendo el contexto. Hasta ahora únicamente lo he probado en iOS  y me funciona sin problemas, faltaría hacer las pruebas en Android.

Módulo de TPV Virtual de BBVA Bancomer para Magento

Aprovechando que un cliente me solicitó una integración de la TPV Virtual de BBVA Bancomer y en base a la respuesta que han tenido otros módulos que he desarrollado para magento me puse a integrar esta plataforma.

El módulo envía al usuario a la página de BBVA Bancomer para completar el pago después de llenar los campos requeridos en la orden de Magento y después es enviado de regreso a la tienda de Magento donde le es mostrado el resultado de la transacción.

La orden se marca como “pendiente de pago”, “completada” y “cancelada” automáticamente según sea el caso.

Si alguien está interesado puede adquirir el módulo en este enlace.

Aplicación móvil para cobrar con tarjeta de crédito

Para un proyecto propio necesitaba poder procesar pagos por medio de dispositivos móviles y opté por desarrollar una aplicación para iOS.

La aplicación utiliza la API de BanWire para procesar tarjetas de crédito Visa, MasterCard y American Express, por ser la primer versión está sencilla y su finalidad única es procesar los pagos; ya que el proyecto estará a prueba decidí desarrollar el MVP y extenderlo en un futuro dependiendo de el éxito.

La aplicación fue enviada el día de hoy a revisión y deberá estar disponible en un par de semanas en este enlace. Dejo un par de capturas de pantalla.

UPDATE 17/12/12: La aplicación ya se encuentra publicada en la AppStore.

The app was not found in the store. 🙁

Cobrar por internet en México

Puedes consultar una versión más reciente de este artículo en este enlace.


En años recientes el ecommerce en México ha crecido exponencialmente, sin embargo no puedo decir lo mismo de las plataformas y opciones para cobrar pagos por internet.

Por un lado existen las empresas como PayPal o Dinero Mail, que son soluciones hospedadas (el usuario sale de la página del vendedor para realizar el pago y regresa una vez que fue completado) que además de altas comisiones (sobre todo de Dinero Mail) y tienen ciertas limitaciones como los cobros automatizados, la liquidez de los fondos, etc.

Personalmente he probado dos alternativas de cobros interesantes que funcionan de forma transparente para el usuario (sin enviarlo a un sitio externo para realizar el pago):

Banorte Payworks – Es un poco difícil de contratar y si se manejará un bajo volumen de compras puede resultar caro (ya que a la firma de contrato se fija un mínimo de ventas para evitar una comisión mensual) pero tienen muy atractivas tasas (1.9% a 3.4% por transacción dependiendo el acuerdo) además de ser un sistema bastante robusto y seguro. Tiene la opción de utilizar 3d secure para evitar los contracargos, se pueden hacer reembolsos y permite autorizaciones y capturas de fondos lo que da flexibilidad para hacer sistemas más complejos. Sólo procesa Visa y MasterCard.

Banwire – Sencillo de contratar, relativamente barato (si se manejará un volumen alto de ventas, será más económico Banorte Payworks) y a diferencia del anterior permite tarjetas American Express y recibir pagos en tiendas OXXO, si bien la plataforma funciona no la percibo tan robusta ni segura, no cuenta con buena documentación y es una empresa bastante pequeña, es un emprendimiento interesante pero les falta mucho en atención al cliente, definición de procesos y conocimiento de la plataforma por parte de los empleados, la considero una opción menos profesional a la anterior.

Para ambas plataformas he desarrollado módulos para Magento, WHMCS, integraciones a ERP, etc. y frecuentemente me preguntan cual es mi recomendación, como varía mucho de acuerdo a las necesidades de cada cliente dejo esta tabla comparativa.

Comparativo Banorte Payworks y Banwire
Banorte Payworks Banwire
Disposición de fondos Siguiente día hábil 2 veces por semana
Seguridad 5 de 5 2 de 5
Devoluciones/cancelaciones programáticas Si No
Autorizaciones* Si No
Captura de fondos Si Si
Documentación clara 5 de 5 2 de 5
Comisiones 1.9% a 3.4% 2.9% a 4.9% + $2.5 MXN
Exige mínimo de facturación mensual para evitar cargos Si No
Acepta VISA y MasterCard Si Si
Acepta American Express No Si
Acepta pagos en tiendas OXXO No Si
Tiempo para contratación + activación 15-45 días 1 semana

* Banorte Payworks permite hacer autorizaciones que funcionan con un bloqueo de fondos para posteriormente ser capturados, esto permite bloquear los fondos al iniciar una transacción y solo capturar cuando todo el proceso fue completado correctamente, en el caso de Banwire  sólo existe un tipo, captura de fondos, por lo que si la transacción no se completa correctamente habrá que hacer una devolución manual.

Esta lista son las cosas que recuerdo de momento, conforme recuerde o vaya encontrando nuevas iré actualizando esta lista, espero que con el tiempo empiecen a aparecer nuevas empresas para recibir pagos en línea donde sean más competitivos con los precios y mayores facilidades para su contratación.