Archive for the ‘Project Manager’ Category

Articles

eGovernance y Cloud Computing

In Cloud Computing,Computación en nube,Desarrollo Software,eGovernance,Project Manager on febrero 1, 2013 por racar

Casa de Nariño

Casa de Nariño (Photo credit: Enzo Molinari)

El eGovernance, o más conocido acá en Colombia como “Gobierno en Línea”, tiene el objetivo de acercar, mediante las tecnologías de la información, a los ciudadanos con el gobierno central, fomentando de esta manera la transparencia.

El programa del gobierno se ha centrado principalmente en el G2C (Goverment to Consumer) en el sentido que a impulsado nuevas formas de interacción con el ciudadano, y eso está bien, sin embargo el eGovernance tiene la capacidad de transformar la nación en una sociedad de la información que pueda ir más allá.

Esta transformación incluye contar con sistemas que, ya no solamente sirvan como medio para interactuar con el ciudadano, si no que sirvan para tomar decisiones y administrar el estado (G2G – Goverment to Goverment). El gobierno central tiene sistemas de información del tipo G2G, conozco algunos, pero falta mucho por hacer. En ese orden de ideas, ¿Que ventajas tiene usar el paradigma “Cloud Computing” en la construcción de sistemas eGovernance G2G? Estos son algunos puntos a favor:

  • Licencias y soporte: En el cloud computing se paga por el uso del recurso, a eso súmele que puede utilizarse software libre desde el sistema operativo, servidores y frameworks de programación. Esto reduce el costo del desarrollo de sistemas.
  • Genera empleo: Al utilizar software libre el gasto de licencias se traslada al soporte lo que se traduce en ofrecer trabajo a mano de obra local del área IT.
  • Escalabilidad: La escalabilidad es transparente, la plataforma en la nube se puede ajustar para soportar la demanda dinámicamente. No se invierte en comprar infraestructura IT ya que esta a cargo del proveedor.
  • Pérdidas de información: La información no se perderá ya que está alojada y propagada en la red. El recurso en sistemas de respaldo se traslada a la seguridad informática, lo que se traduce también en empleo de mano de obra calificada.
  • Manejo de desastres: En caso de desastres, el sistema siempre estará disponible para ayudar con la recuperación. Los sistemas no se afectan por desastres.
  • Amable con el medio ambiente: Los sistemas cloud computing se están optimizando constantemente para mejorar consumo de energía y re utilizar recursos.
Anuncios

Articles

Desarrollo de aplicaciones en ambientes regulados

In Desarrollo Software,Project Manager,Sistemas de Informacion Financiera,Software Process Improvement on octubre 15, 2011 por racar

IBM Z10 Mainframe Complex

Image by pchow98 via Flickr

El sector financiero y la banca requieren, como es obvio, de un componente importante de auditoria y control que se debe aplicar a cada uno de los proyectos de desarrollo. Demostrar que los desarrollos cumplen con los estándares de seguridad y calidad supone un enorme esfuerzo y agrega “overhead” a todo lo que se pretende implantar en producción. Adicionalmente varias personas deben validar los procesos, probarlos, documentarlos y certificarlos cuando son concluidos.

A esto hay que sumarle que, para el negocio financiero esto supone un gasto de operación, no es algo que le retribuya directamente como es el caso de sus inversiones. Lo único importante es tener cuanto antes el sistema “online”  y sin fallas ni excusas para que lo demas marche bien.

Para una corporación financiera la inversión en tecnología es más un gasto que una inversión, por dos razones: la cantidad de funcionarios involucrados en los proyectos y por los presupuestos abultados que se manejan en ellos.  

A que viene todo esto, bueno, que automatizar el proceso de gestión, configuración y entrega del software supone enormes beneficios: reduce la cantidad de esfuerzo y permite realizar auditorias mas confiables y precisas de lo que se va a instalar en ambientes de producción. Adicionalmente reduce los tiempos de entrega y mejora la calidad.

Actualmente, de la mano de las metodologías “agilistas”, contamos con varias técnicas que nos ayudan a automatizar: Continuous Integration, Test Driver Development, Configuration Management (Version Control Systems, Build Automatization, Dependencies Management).

Articles

Bug Tracking y Seguimiento de casos.

In Project Manager on septiembre 4, 2010 por racar

SVG version of Bug silk.png by Avatar

Image via Wikipedia

A principios de año mirè varios sistemas para Bug Traking,  buscaba simplicidad,  facilidad de uso e instalación y que fuera libre. Actualmente los reportes de errores los  manejo con un formato de Excel impreso por cada aplicación  con cuatro campos: descripción, fecha, estado y una fecha de cierre. Para seguimiento esta información  es suficiente  pero es muy limitada cuando solicitan informes de gerencia más detallados donde la presentación y el an’alisis juegan un papel importante.

 

En enero y después de probar Trac y Bugzilla me tope con Redmine y desde entonces lo he venido utilizando desde su versión 0.9. Puedo decir que es perfecto para gestionar el desempeño personal, Redmine permite crear varios proyectos y registrar los casos asignados a desarrollo  bien sea solicitando nueva funcionalidad o reportando errores. Seguramente en desarrollos grandes alternativas de pago son una mejor alternativa, pero para individuos, equipos pequeños o freelancers recomiendo Redmine como  solución para gestionar los proyectos. Además como es libre se puede adecuar o agregar funcionalidad.

Redmine tiene las características usuales de estos sistemas: Reporte de tareas, priorización de las mismas, estado, clasificación por tipo, fechas estimadas, avance y reportes. Se integra con subversion perfectamente y tiene un wiki para cada proyecto.

Redmine

Articles

David Heinemeier Hansson at Startup School 08

In Project Manager on julio 30, 2010 por racar

El cofundador de 37Signals presenta “El secreto de hacer dinero en internet”. No tiene desperdicio, muy bueno y divertido. 

Articles

Mejora tu código fuente, analiza tus binarios, no pierdas el tiempo y tu esfuerzo

In Project Manager,Software Process Improvement on febrero 22, 2010 por racar

“Software Improvement=People Improvement”. The Pragmatic Programmer (A. Hunt. D. Thomas’s).

La calidad en desarrollo empieza por mantener en orden tu trabajo, y que mejores como programador, entre las prácticas expuestas por Hunt y Thomas están (hay muchas mas): analizar el estilo y normalización de los fuentes, asegurarse de eliminar código redundante (el famoso Dont repeat Yurself-DRY), analizar el desempeño en ejecución de lo que sea que construyas (Performance) y asegurarte que no se pierda el producto de tu trabajo (Configuration Management). Para realizar estas tareas no estas solo, tu IDE las hace por ti. A continuación se listan 4 herramientas infaltables en el toolbox personal de un desarrollador, las herramientas son para la plataforma . NET pero existen sus precursoras en java (ver: CheckStyle, PMD y subclipse).

 

StyleCop: Permite analizar los fuentes en busca de errores de estilo. Aplicar un estilo al código fuente permite normalizarlo para que otros desarrolladores lo puedan leer fácilmente. Esto incluye agregar comentarios, identación, espaciamiento, uso de paréntesis, forma de los métodos, etc, etc. Esto parece trivial pero diferentes lenguajes definen diferentes estilos y no siempre te vas a acordar de todas las reglas. StyleCop te permite sacar alertas cuando no cumples el estilo.
http://blogs.msdn.com/sourceanalysis/

 

CloneDetective: La reutilización es clave en la POO, en desarrollos grandes es difícil detectar código existente para reutilizar. Esta herramienta permite analizar la cantidad de código que se repite a través de tus clases y te las expresa en términos de porcentajes para que decidas mejores formas de re factorizar partes de tus programas.
http://www.codeplex.com/CloneDetectiveVS

 

FxCop: Analiza los binarios en búsqueda de posibles faltas en el desempeño, como asignación repetida de variables en bucles, manejo de strings inmutables, desborde de variables o tipos erróneos de estas, etc.
http://blogs.msdn.com/fxcop/

 

ankhSVN: Integra Subversión al Visual Studio permitiendo manejar los cambios a las fuentes desde el IDE, muy parecido a subclipse en el mundo java, facilita el manejo de versiones evitando que el trabajo se pierda. Con un clic puedes dar commit y te permite visualizar el historial de cambios con los comentarios de las revisiones realizados por los commiters del proyecto.
http://ankhsvn.open.collab.net/

 

Todas estas herramientas están disponibles y se pueden bajar libremente. Realizando una reflexión a parte, antes de trabajar en .NET tenia la impresión que la plataforma Java reinaba por la increíble diversidad que impulsa la comunidad Opensource. La verdad es que .NET también tiene alternativas; en menor cantidad, pero las tiene, y muchas vienen de la comunidad opensource.

Articles

Hacer “medible” lo que no lo es…

In Project Manager on noviembre 11, 2009 por racar

“Measure what is measurable, and make measurable what is not…”  Galileo Galilei.

La gestión del desarrollo del software requiere identificar métricas que caractericen los procesos  subyacentes involucrados en el desarrollo, de manera que faculten el control de los proyectos y permitan encaminar las acciones de mejora continua.

 

Como desarrolladores requerimos un conjunto de métricas que no agreguen carga innecesaria a las labores individuales del equipo, y por el contrario agreguen valor a la labor diaria de recolectarlas bien sea porque permiten evaluar nuestra madurez como desarrolladores (o del equipo de desarrollo)  o porque permiten hacer seguimiento al desempeño personal.

 

Hace poco mas de dos años, al leer el libro “Introducción al PSP”, de Watts Humphrey, empecé a trabajar en la definición de una serie de formatos de registro de actividades y planeación que, con el tiempo, han aportando datos para definir indicadores que a los gerentes con los que he trabajado les han parecido útiles. A continuación describo dicho indicadores:

 

Esfuerzo: Cantidad de tiempo dedicado a completar una tarea, un producto o servicio. Esta compuesto por el esfuerzo estimado antes de iniciar la tarea, que es calculado por el desarrollador en base a sus datos históricos o estadísticas;  y el esfuerzo Ejecutado, que se define como el tiempo real empleado para completar la tarea, y se obtiene del registro diario de tiempo llevado a cabo por el desarrollador.

 

Productividad: Se define como la cantidad de liberaciones o tareas que pueden ser entregadas por día, semana, mes, bimestre o trimestre. Se pueden calcular en varios niveles: individuo, por fases, por proyecto, tipo de labor, etc.

 

Este indicador depende de la forma en que gestionemos el proyecto. En el caso de un proyecto tipo cascada, podemos definir indicadores de productividad en cada etapa para, por ejemplo, levantamiento de casos de uso, construcción de artefactos de diseño o análisis, implementación de casos de uso, etc.

 

Para proyectos del tipo ágil, cuyas actividades del proceso de desarrollo se llevan a cabo cada vez que hacen falta, el indicador de productividad se realiza en base a las funcionalidades construidas y puestas en operación.

 

En cualquiera de los casos, la productividad es igual al esfuerzo planeado sobre el ejecutado, multiplicado por un factor calculado por la media (promedio) de duración de las tareas o entregas, sobre el tiempo de medida base.

 

Por ejemplo: Digamos que la media en terminar una historia de usuario es 3 semanas, para calcular la productividad por mes el factor será  4/3 (asumiendo que un mes tiene 4 semanas).

 

Así el factor será 1.33 historias de usuario por mes.

Y el esfuerzo es [lo planeado]/[lo ejecutado]*1.33

 

Idealmente [lo planeado] = [lo ejecutado], y nuestra meta es tener nuestro indicador sobre 1.33, pero, por supuesto, esto no será así y en una grafica obtendremos variaciones alrededor de la curva y generalmente por debajo del valor.

 

En la medida que hagamos uso de este indicador seremos capaces de “sintonizarlo” mejor, y podremos segmentar el trabajo de forma que nos quedará más fácil predecir las fechas de entrega de nuestros productos.

 

Progreso: El indicador de progreso se calcula en base a las tareas definidas por el backlog de producto para una iteración, contra las que están completadas. En caso de aproximaciones en cascada, el progreso se puede medir en término de casos de uso completados, numero de artefactos de análisis o diseño, construcción de casos de uno, y etc. Generalmente este indicador como desarrolladores no nos dice mucho (como si podría ser la velocidad), pero a los gerentes se les hace muy útil.

 

Para recolectar los datos, se utiliza unos formatos que nos describe Humphrey en su libro, para mi caso utilizo estos : El formato de registro de tiempo, El formato de plantación de actividades, el registro de productos y el back log de producto. Queda pendiente para una próxima entrega describir dichos formatos y como los uso.

 

Reflexiones finales: Hay dos tipos indicador, los que sugieren tendencias y los que entregan información sobre los productos. Los primeros permiten predecir cuando un proyecto se puede estar desviando, los segundos permiten medir la efectividad de las acciones de mejora; cada organización debe decidir cuales utilizará y para qué. Como desarrolladores, expertos en software, debemos hacer bien nuestro trabajo y ser transparentes al momento de informar el estado de los productos. Como Gerentes de proyecto debemos confiar en el equipo y definir indicadores que verdaderamente reflejen el estado del proyecto y no reducir la gestión a  entregas definidas en un calendario

Articles

Aproximaciones a PMI, ITIL V3, Prince2 y Project++.

In Project Manager on septiembre 28, 2009 por racar

Recientemente se solicito en la compañía donde trabajo, el plan de acción para mejorar  competencias laborales. Como soy Code Monkey, decidí incluir en él una certificación inicial en gestión de proyectos o TI, ya que algún día espero que me promuevan o posiblemente, gestionar proyectos propios o personales.

 

De un reconocimiento inicial, encontré interesantes estas certificaciones: CAPM (de PMI),  Project+ (de compTIA), el Foundation Certificate in IT Service Management (ITIL Foundations v3) y el Foundation Certificate in PRINCE2.

 

CAPM® de PMI certifica el conocimiento en los fundamentos, los procesos y terminología definida en el PMBOK, esta dirigida a las personas que participan en un equipo de desarrollo de proyectos y son responsables de tareas relacionadas con las áreas de la gestión de proyectos. El requisito son 1500 horas de experiencia o 23 horas de preparación (curso) en gestión de proyectos.

 

Un punto importante es que no es una certificación específica para IT, sirve para cualquier área del conocimiento donde se necesite entregar un producto con el costo, el tiempo y las características solicitadas, pero por sobre todo es para proyectos grandes. Se basa en el PMBOK, y como tal, es un framework que ofrece los bloques básicos y genéricos para crear una metodología de gestión de proyectos.

 

Project+ de compTIA examina las habilidades requeridas para la gestión de proyectos de pequeña y mediana escala. Se requieren conocimientos en las etapas del ciclo de vida del proyecto y los roles que permiten iniciar, planea, monitorear y cerrar un proyecto. Esta enfocado en TI y sugieren (sin ser requisito) un año de experiencia en proyectos. No esta enfocada en proyectos de gran escala como PMP.

 

PRINCE2 (PRojects IN Controlled Environments) según entiendo nace como metodología de gestión de proyectos de telecomunicaciones y sistemas, pero en su evolución se generalizó para ser utilizado en cualquier industria.  PRINCE2 Foundation busca entregar los conocimientos básicos y la terminología de gestión de proyectos. La metodología define una estructura de gestión de proyectos organizada en forma lógica y en pasos definidos, de forma prescriptiva. Esta certificación (Foundations) no tiene prerrequisitos.

 

Por último ITIL v3 (IT Infrastructure Library) provee un framework o guía con las mejores prácticas para la gestión de Servicios de IT. Se enfoca en la definición de un sistema de gestión de servicios eficiente desde la perspectiva del negocio y del cliente o usuario, en un esquema de mejora continua. La Foundations Certification no tiene prerrequisitos.

 

Lo interesante de ITIL es que se enfoca en las capacidades (de una organización) de proveer valor en forma de servicios, es decir no se basa en el modelo predictivo como la gestión de proyectos tradicional (el producto en el tiempo y costo acordado = EXITO), si no que la encuentro mas aproximada al concepto de agilidad en desarrollo de proyectos.

 

Conclusión: Project+ y Prince2 Foundation son buenas alternativas para entrar a abordar la gestión de proyectos, dan la sensación de estar mas aterrizadas a las personas que no tenemos experiencia en el asunto y no tenemos un mentor que nos ayude a saltar los obstáculos. ITIL Foundations, esta orientada a la gestión de  aplicaciones como servicios, viene bien si estas en un ambiente corporativo y si tus responsabilidades están de cara al cliente (interno o externo) y soporta la operación el negocio como apuesta de valor o como valor agregado.