Páginas

sábado 31 de diciembre de 2011

Gestión de proyectos para novatos

Sé que en un post escrito el día 31 de diciembre se debería hacer retrospectiva del año, pero hay veces que es mejor tener una cierta perspectiva, que solo el tiempo te da, para analizar todas las aristas de una historia, por eso he decidido escribir sobre otras cuestiones.

Recientemente un amigo que se disponía a encarar su proyecto fin de carrera, después de tenerlo bastante tiempo parado, me pidió consejos que le sirvieran para encarar con éxito los trabajos a realizar. Se trataba de un proyecto para un cliente real, y externo a la Universidad. A partir de aquí me pareció que podría ser interesante escribir sobre ello, ya que podría haber otras personas en su misma situación, también podría interesarle a nuevos freelances, que nunca se han enfrentado en solitario a todas las fases de un desarrollo de software, o a jefes de proyecto juniors.

La mayoría de cuestiones que voy a escribir pueden resultar obviedades, pero en este tipo de tareas hay que ser muy metódico, disciplinado y ordenado, por lo que es muy importante tener estas ideas presentes.

Desde el punto de vista de la gestión de proyectos, éstos tienen las siguientes fases:
• Iniciación,
• Planificación,
• Ejecución,
• Seguimiento y Control, y
• Cierre.

Dirigir un proyecto por lo general implica:
• identificar requisitos,
• abordar las diversas necesidades, inquietudes y expectativas de los interesados según se planifica y efectúa el proyecto,
• equilibrar las restricciones contrapuestas del proyecto que se relacionan, entre otros aspectos, con:
el alcance,
la calidad,
el cronograma,
el presupuesto,
los recursos y
el riesgo.

Podría extenderme mucho si tuviera que detallar cada unos de los subprocesos y las herramientas para llevar a cabo con éxito estos procesos, pero no es objeto de este artículo. En este artículo quiero dar un enfoque muy ágil que evite la mayoría de los problemas que llevan a un proyecto de desarrollo software al fracaso.

La iniciación debe comenzar con una reunión de arranque de proyecto, o una reunión de toma de requisitos iniciales. Una reunión debe tener una hora de inicio, una hora de fin, y unos objetivos claros. Es responsabilidad del jefe de proyecto marcar los tempos de la reunión. En este sentido, es importante tener seguridad en uno mismo, al fin y al cabo, tu eres el experto, y llevas preparada la reunión.

Afrontándolo desde un punto de vista ágil, a medida que transcurre la reunión hay que pensar en las pantallas, formularios... detectar qué posibles problemas pueden surgir, y adelantarse a ellos. Tu opinión tiene que oirse como la de un experto. Hay ocasiones en el que el usuario no tiene claro lo que quiere, o no sabe detallarlo, o no sabe que la tecnología le permite optimizar procesos. El jefe de proyecto debe convertirse en el socio tecnológico del cliente, asesorarle y orientarle.

A partir de un requisito, un experto detecta reglas, validaciones, restricciones, los campos que tendrían las tablas en la base de datos, y las relaciones entre ellos (o en los objetos si se opta por el paradigma de orientación a objetos). Es importante definir también los requisitos en negativo (lo que el sistema no debe permitir), así como los requisitos no funcionales relativos a usabilidad, políticas de seguridad, matrices de compatibilidad de navegadores o sistemas operativos... Es vital definir bien los requisitos, para no propagar errores al resto del desarrollo.

Es muy importante cerrar bien el alcance. No se puede cerrar un proyecto sin alcance... siempre parecerá inacabado. En este sentido, sería conveniente plantear en siguientes fases pruebas de aceptación del sistema, que definan objetivamente cuando el proyecto se ha terminado.

En el momento de la recogida de requisitos, se debe pensar en un entregable base completamente funcional. Los adornos y "florituras", es conveniente derivarlos a una segunda fase. A medida que la reunión avance, sobretodo si hay más de una persona, irán pidiendo más y más funcionalidades, algunas accesorias y no imprescindibles para el funcionamiento base de la aplicación. Hay que equilibrar los intereses de los participantes, y detectar las partes críticas para el proyecto. Just in time: ocúpate solo de tu problema de ahora... el de después ya tendrás tiempo para solventarlo en el futuro.

En el caso de que a estas alturas aun no haya precio cerrado, el cliente tendrá mucho interés en saber cuánto le va a costar. Mi consejo es no dar nunca un precio en caliente. Esto debe hacerse de manera meditada, junto con el equipo que vaya a participar en el proyecto, haciendo estimaciones temporales, asignación de recursos...

Un objetivo importante de la reunión debe ser sensibilizar al propio cliente de lo importante que es para el éxito del proyecto que le dedique tiempo para pruebas, validaciones... al fin y al cabo es su proyecto, y nuestro interés es entregarle un aplicativo que realmente sea de su gusto.

Al finalizar la reunión, es importante redactar un acta con los participantes, temas tratados y compromisos adquiridos, a ser posible con fecha de cumplimiento. Lo que se habla queda en el aire... estas serán tus armas para defenderte dentro de x meses, cuando el cliente no se acuerde de lo hablado (o no quiera acordarse).

A partir de los requisitos, que podemos modelar como historias de usuario, si estamos trabajando con metodología Scrum (por ejemplo: como administrador de la plataforma puedo dar de alta a otros usuarios), sería conveniente diseñar la interfaz de usuario (no es necesario que se entregue con la línea gráfica). Se trata de un pequeño esquema de cómo se mostraría la información y los campos de los formularios, con su navegabilidad... esto después de las iteraciones que sean necesarias, debe ser validado por el cliente.

Tus pasos iniciales deberían ser cerrar la propuesta de una arquitectura. ¿Qué piezas has decidido utilizar o integrar?, ¿por qué esas y no otras?, tienes que dominar esto, o el cliente te pillará en un renuncio. Todo el mundo tiene amigos a quién preguntar, tu opinión de experto podría quedar en entredicho.

Para la fase de programación o desarrollo puro, podemos utilizar Scrum, con Sprints de dos semanas. Es importante que al finalizar el Sprint seas tu mismo el que muestre el entregable (o el equipo que lo ha desarrollado), y las funcionalidades implementadas. Utilizando Scrum, conseguirás no tener un desfase grande en tiempo y no defraudarás las expectativas del cliente, porque él irá viendo paso a paso lo que se está construyendo, y podrá opinar desde el principio sobre ello.

En la disciplina de la gestión de proyectos hay mucha teoría. Yo he intentado darle un enfoque práctico a partir de mi experiencia a lo largo de los años. El aprendizaje debe ser continuo. Si pensáramos que ya lo sabemos todo, no podríamos mejorar, ni evolucionar. En este sentido, al 2012 le pido cometer nuevos errores, y no repetir los anteriores.

Feliz 2012 a todos.

miércoles 7 de diciembre de 2011

Reflexiones sobre el desarrollo de aplicaciones móviles

Ahora mismo existen distintos mercados diferenciados dentro de las aplicaciones móviles. Hace relativamente poco tiempo, las empresas que desarrollábamos aplicaciones móviles, buscábamos realizar un solo desarrollo multiplataforma, y que valiera para el mayor número de dispositivos posible. Esto se intentaba mediante tecnología Java J2ME. En este post hice una pequeña introducción.

El coste de desarrollar estas aplicaciones era altísimo, ya que siempre había que realizar adaptaciones para sacar el mayor rendimiento de cada dispositivo, y aun así no se conseguía. Cada fabricante instalaba una máquina virtual distinta, había particularidades a la hora de gestionar cada pila de Bluetooth... toda una odisea.

Actualmente hay distintas plataformas diferenciadas y las empresas optan por desarrollar aplicaciones nativas para cada plataforma. Los clientes suelen pedir que la aplicación funcione en distintas plataformas, para así llegar al mayor número de usuarios posibles. Si las empresas desarrolladoras no tienen el know how para desarrollar la aplicación en las plataformas requeridas, se suelen buscar alianzas para completar los servicios ofrecidos. Pero el planteamiento es utilizar tecnología nativa para cada puerto de la aplicación.

El mercado mundial actual, en cuanto a smartphones se refiere, lo copan las plataformas Android, iPhone, y Blackberry. Aun hay un parque bastante amplio de dispositivos Symbian pero, además de estar en el límite de lo que hoy denominamos smartphones, están en claro retroceso. Para ilustrar estas afirmaciones, podemos ver el artículo de Poder PDA basado en las estadísticas de Gartner del tercer trimestre de 2011. Cabe reseñar que Windows Phone 7, actualmente tiene una cuota de mercado bastante pequeña probablemente motivada por lo tarde que llegaron al mercado.




Blackberry tradicionalmente ha tenido una cuota de mercado amplia en dispositivos de empresa. La larga duración de la batería (cuando trabajamos, no nos podemos permitir el lujo de agotar la batería en 4 horas, sobretodo si estamos desplazados), su correo push, la seguridad (Blackberry implementa por omisión distintos protocolos de seguridad), o cuestiones relacionadas con la usabilidad (teclado qwerty físico, muy apropiado para escribir muchos correos), son factores que han influido en que las empresas eligieran Blackberry. Otro motivo importante, que no tiene que ver con la tecnología, y sí con el canal de distribución, es la apuesta que realizan las operadoras con respecto a los terminales que facilitan. Si Vodafone, o Movistar en España optan por favorecer la distribución de un modelo concreto, influirá decisivamente en las estadísticas de cuota de mercado. Esto último puede que sea factor clave en el avance de iPhone en usuarios de empresa.

Hasta la fecha, la mayoría de proyectos de desarrollo Blackberry que hemos llevado acabo en el Departamento de Ingeniería de Software de Soltel IT Solutions estaban orientados a soluciones empresariales, es decir desarrolladas por la empresa, para la empresa (modelo de negocio B2B). Sin embargo hemos recibido peticiones de proyectos Android y iPhone, cuyo usuario final, es el consumidor de a pie (modelo de negocio B2C). Esta separación, cada vez es menos evidente, ya que iPhone se está extendiendo en el entorno empresarial, y Blackberry ha intentado acercarse al gran público con dispositivos de gama media, como la Curve y aplicaciones como Blackberry Messenger, con gran aceptación entre los más jóvenes.

Android mantiene una cuota relevante en el mercado. Hay factores que han influido en que proliferen aplicaciones de esta plataforma, como por ejemplo, el ser una apuesta de Google, haber dispositivos potentes de varios fabricantes como HTC y Samsung, ser nativo Java, tener un SDK (Software Development Kit) abierto, con grandes facilidades para publicar en Android Market...

No podemos perder de vista la alianza subscrita entre Microsoft y Nokia (dispositivos Nokia con sistema operativo Windows Phone). En mi opinión, más allá de la calidad del producto, han llegado muy tarde, y puede que ya no haya pastel que repartir.




El mundo de la tecnología es cambiante. El pasado es hace dos años, y el futuro es dentro de un minuto. Esto se acentúa en la tecnología móvil, donde los cambios son constantes. Una empresa experta en desarrollo de software para móvil, no puede permitirse el lujo de no conocer las plataformas más importantes que copan el mercado, aunque estas queden fuera de su stack tecnológico. Por otro lado las librerías y frameworks que los fabricantes ponen a disposición de desarrolladores hacen que el escalón entre el desarrollo de una aplicación móvil y una web o de escritorio se reduzca.

lunes 31 de octubre de 2011

No todo el mundo vale

Desde la división de ingeniería de software de Soltel IT Solutions, buscamos perfiles para formar parte de nuestro equipo.  Lo que buscamos no es fácil de encontrar, pero lo que ofrecemos, tampoco.



¿Qué buscamos?


Buscamos perfiles que no desentonen técnicamente con los que actualmente conforman nuestro equipo.

Esto no es poco, ya que es un equipo que desde 2008 ha sufrido poca rotación, y tiene bastante experiencia en el desarrollo de aplicaciones dentro de nuestro stack tecnológico. Además, y al contrario que lo que puede ocurrir en otras empresas, necesitamos que los técnicos sean resolutivos en los avatares que suelen surgir dentro de un desarrollo, desde instalación y configuración del entorno, hasta la puesta en producción. Es por ello que la gente que trabaja con nosotros suele estar muy bien preparada.

En España suele ser habitual tener que cambiar de categoría para poder subir el salario. En nuestro departamento, no obligamos a nadie a hacerse Analista o Arquitecto si lo que le gusta es programar. También es cierto que en EEUU el concepto de desarrollador es más amplio, ya que el mismo perfil tiene capacidades de análisis, arquitectura, y programación. Esto es lo mismo que requerimos nosotros. Se trata de evaluar a partir de indicadores objetivos que nos señalan en qué rango salarial debe encontrarse un desarrollador. Estos indicadores recogen desde buenas prácticas a tareas que, en una empresa convencional, realizaría un arquitecto, o un analista, y son capaces de medir el nivel de madurez que tiene un técnico. Como comentaba, nosotros trabajamos con el concepto más amplio de desarrollador.

Otros de los factores que intervienen decisivamente en el éxito de un equipo de desarrollo de software es el buen ambiente. Nuestra filosofía de trabajo, Ubuntu, ayuda a que entre nosotros reine el buen "rollo" (permitidme la expresión). Es por esto que tenemos que ser muy cuidadosos y no introducir ningún elemento que distorsione el ambiente de la oficina, por lo que el carácter del candidato debe encajar con el de los integrantes del equipo.

La palabra "equipo" está intencionadamente remarcada en negrita en el párrafo anterior. Se puede ser muy bueno técnicamente, tener capacidades de análisis y arquitectura, una interlocución válida con clientes, y ser un crack en cuanto a cumplimiento de estándares y buenas prácticas, pero el concepto de "equipo" pesa y mucho para nosotros. El proceso de construcción de software no es un acto individual, así que el comportarse como un equipo es una obligación. Ser un equipo conlleva sacrificio, colaboración, y sobretodo solidaridad. El equipo tiene unos objetivos comunes, los fracasos no son individuales, sino de todo el equipo. Es fundamental que los miembros del equipo tengan ilusión por sacar el proyecto común adelante. Los retos son ilusionantes, y los sacrificios deben merecernos la pena.

Buscamos gente a la que le apasione la tecnología. Hay personas que no tienen capacidad de sacrificio, y que lo que anhelan es acabar la jornada laboral a la hora que le corresponda y olvidar cualquier problema que haya en un proyecto, sea cual sea la situación de este. Obviamente, desde el departamento intentamos que los proyectos no tengan desviaciones, todos marchen según la planificación, y proteger sobremanera a los integrantes del equipo. Desgraciadamente, esto no siempre ocurre, pese a que es el propio equipo el que planifica sus entregas, como ya escribí en este artículo sobre Scrum. Obviamente el compromiso por los plazos propuestos y la profesionalidad del equipo debe prevalecer sobre una desgraciada planificación. Por otro lado, a veces nos encontramos con factores ajenos al trabajo técnico que pueden obligarnos a hacer un sobreesfuerzo. Como he comentado intentamos minimizar el número de complicaciones, pero valoramos que el equipo se comporte como tal cuando esto ocurra.

Nos gusta la gente que en su tiempo libre participa en Comunidades de Software libre, lee noticias tecnológicas, sigue blogs técnicos, en definitiva,  como comentaba anteriormente, nos gusta que la gente que trabaja con nosotros sea apasionada de la tecnología. Nos encanta la gente que llega con propuestas o iniciativas para mejorar cualquier faceta de nuestra vida profesional. Sabemos que todo el mundo no tiene esta capacidad, y que esta forma de vivir requiere de más esfuerzo que cumplir un horario en una megaconsultora.

En los tiempos que corren, se está produciendo una selección natural de empresas. Solo las más fuertes supervivirán. Creo que es bueno que tomemos nota sobre esto los profesionales del sector, porque de igual manera solo los más fuertes sobrevivirán.

¿Qué ofrecemos?

En nuestro equipo ofrecemos la oportunidad de trabajar en un proyecto de departamento de lo más ilusionante, en el que gracias a nuestra capacidad, temperamento y perseverancia estamos superando la crisis. Un sitio donde se respira buen ambiente, donde los trabajadores no son un número, gozan de flexibilidad en todos los sentidos, y su opinión cuenta. Ofrecemos la posibilidad de aprender y trabajar con un equipo multidisciplinar de alto nivel, y poder aumentar tu salario sin dejar de hacer lo que te gusta. Ofrecemos estabilidad. Te ofrecemos formar parte de nuestra familia.

viernes 28 de octubre de 2011

Viaje a Polonia

Polonia es uno de los países que están dentro de los planes de internacionalización de Soltel. En septiembre surgió la oportunidad de realizar una misión comercial, y no quisimos desaprovechar la ocasión para enseñar allí nuestro producto de gestión de multas a través de dispositivo móvil, SolKar.

Antes de hacer negocios en un país resulta esencial realiza tareas de prospección del mercado. Se trata de conocer de primera mano una serie de cuestiones, como por ejemplo, costumbres, legislación laboral, formas de pago, impuestos,... estas y otras cuestiones pude conocerlas de primera mano durante mi estancia en Polonia.

Polonia actualmente ya está recibiendo muchísimos millones de euros en concepto de fondos estructurales europeos, por lo que el país está experimentando una transformación a todos los niveles. Solo hay que darse una vuelta por el KPT (Parque Tecnológico de Cracovia), para ver como han proliferado las empresas del sector IT.

Probablemente Polonia tenga que recorrer el mismo camino que recorrió España cuando éramos nosotros los beneficiarios de este tipo de fondos. Por ello, las empresas españolas podemos aportar mucho a las empresas y administración polacas. Tenemos el Know How, tenemos las aplicaciones, ¿por qué construir de nuevo la rueda?


martes 27 de septiembre de 2011

Gestor documental Alfresco vs sistema de archivos

En muchas ocasiones, antes incluso de tener que justificar por qué implantar Alfresco y no otro gestor documental, debemos argumentar a nuestros clientes qué ventajas les aporta usar Alfresco sobre su habitual forma de trabajo, que es, casi siempre, utilizar carpetas en el sistema de archivos de un servidor.

Estos son los argumentos que solemos dar en Soltel:

- Facilidad de explotar la documentación desde otras aplicaciones. Alfresco tiene una API potente a través de la cuál podemos sacar el máximo partido de éste cuando lo integramos con otras aplicaciones.

- Acceso a la información desde cualquier lugar, a cualquier hora y desde múltiples dispositivos (PC, Dispositivos móviles, Tablets, etc.). Toda la información que necesitamos se encuentra en la red y debidamente protegida. Solo necesitamos una conexión a internet. Ya no hacen falta ni VPNs, ni escritorios remotos.

– No es necesario el acceso al sistema operativo anfitrión, evitando que usuarios puedan visualizar aplicativos o información que no le corresponden.

– Permite la creación de usuarios y asignar permisos de visión de documentación sin necesidad de crear usuarios en el dominio ni asignar permisos sobre el sistema de archivos.

– Permite versionado de información sin necesidad de recurrir a aplicativos de terceros.

– Facilita la copia de seguridad.

– Facilita la búsqueda de información. Este argumento es uno de los más importantes ya que la manera en la que indexa los contenidos Alfresco, propicia búsquedas muy rápidas, que por tanto ahorran tiempo a nuestros clientes.

– Custodia documental. Aumenta la seguridad de la documentación, los archivos se suben al gestor documental no al sistema de ficheros por lo que los archivos no quedarían por ejemplo infectados por virus en caso de que el sistema operativo se infecte.

– Posibilidad de envío de documentos seguros por correo electrónico, enviando la url del documento. Sólo los usuarios con acceso podrán visualizar el documento.

– Facilita el trabajo en equipo. Subir documentación, versionarla y compartirla con las personas que trabajan en el mismo equipo facilita el flujo de la información dentro de la empresa.

– Centralización de la información. La información se centraliza en una única herramienta lo que evita la casuística común de que cada usuario tiene la información en su equipo.

– Alfresco es software OpenSource y cuenta con una reputada comunidad lo que garantiza la calidad del producto, por ello ha sido implantado en gran cantidad de organizaciones como gestor documental.

– Reducción de costes. Ya no es necesario trabajar con documentación física, todo queda almacenado en el gestor documental.

- Posibilidad de crear flujos de trabajo sobre un documento.

- Con Alfresco se puede automatizar, mediante plantillas, la creación de estructuras que se repiten en el tiempo, por ejemplo, la documentación de calidad de los proyectos.


¿Aun no usas Alfresco para gestionar los documentos de tu empresa?, ¿a qué estás esperando?

viernes 13 de mayo de 2011

¿Por qué usar un software BPM?

A partir de mi artículo sobre el BPM Bonita Open Solution, he recibido multitud de consultas relacionadas más con el uso de software BPM en general que con Bonita en particular. Es por ello que me he decidido a escribir este post.

¿Qué es BPM?

Según Wikipedia: Se llama Gestión de procesos de negocio (Business Process Management o BPM en inglés) a la metodología empresarial cuyo objetivo es mejorar la eficiencia a través de la gestión de los procesos de negocio, que se deben modelar, organizar, documentar y optimizar de forma continua. Como su nombre sugiere, BPM se enfoca en la administración de los procesos dentro de una organización.


Un software BPM da soporte completo al ciclo de vida de un proceso de negocio: análisis, modelado, ejecución y monitorización de los procesos.

Una vez está funcionando el software, es una secuencia estructurada de tareas, algunas de las cuales pueden realizarse en paralelo. Lo que se conoce como Workflow.

Por tanto es un concepto que se asocia a gestión empresarial, estrategia, flexibilidad, y por qué no, agilidad (reconfigurar los procesos).

¿Por qué usar un software BPM?

Porque permite a las empresas definir formalmente sus procesos, analizar los tiempos que tardan en ejecutarse, tener visibilidad en tiempo real de todo lo que está ocurriendo en la empresa, detectar los overhead, los cuellos de botella, desviaciones y procesos redundantes...

Un software BPM debe permitir la redefinición de procesos de manera ágil y efectiva. Por tanto supone someter a las empresas a procesos de mejora continua. Ante una posible revisión de la estrategia, la redefinición de procesos, no sería dramática.

Las aplicaciones basadas en BPM también reducen las tareas humanas pudiendo ejecutar procesos de manera automática. La automatización conlleva una reducción de errores humanos.

Las organizaciones que optan por la implantación de BPMs consiguen:
- Mejorar la atención y servicio al cliente.
- Minimizar el tiempo requerido por los participantes para acceder a la documentación, aplicaciones y bases de datos.
- Incrementar el número de actividades ejecutadas en paralelo.
- Mejorar la participación y colaboración de todo el personal en los procesos.
- Optimizar los recursos personales y físicos.
- Mejorar la gestión y supervisión de la empresa.
- Reducir errores.
- Vertebrar las integración del resto de herramientas corporativas.

Con todo ello, se consiguen los objetivos finales de las empresas, que son aumentar beneficios y reducir costes.

martes 10 de mayo de 2011

Liferay Hispano

Acaba de salir a la luz lo que pretende ser la nueva comunidad Liferay para hispano hablantes.


Las secciones más interesantes que se incluyen en esta primera versión Beta son:
- Foro
- Descargas (hace falta registro para visualizar el contenido)
- Noticias


Podéis acceder a través de los siguientes enlaces:
www.liferayhispano.com
www.liferayhispano.es
www.liferayhispano.org