Más especificaciones para "Rosario" y llamada para feedback

El equipo de Visual Studio Team system, acaba de publicar 3 nuevas especificaciones más para la futura versión de Visual Studio Team System “Rosario”, la verdad es que es muy de agradecer el esfuerzo que hacen con la publicación de estas especificaciones, ya que así todos podemos estar preparados para lo que viene, y conocer nuevas funcionalidades de los futuros productos, no se cuantos equipos más en Microsoft hacen esto, lo que si comentan es que es bastante esfuerzo el publicar todas estas especificaciones en un formato que todo el mundo pueda ver, os recomiendo que las echéis un vistazo:

Y sobre todo, lo que nos piden desde Microsoft, a cambio de seguir publicando specs, es lo de siempre, feedback para que puedan seguir mejorando el producto, así que ya sabéis, es el momento de que todas esas cosas que no os gustan de este producto, se las digáis para mejorarlas.

Esto lo podéis hacer a través de este foro creado para esto: http://forums.microsoft.com/msdnworkshop/showforum.aspx?forumid=1981&siteid=64

Y si queréis estar al tanto de futuras specs, tenéis este RSS feed

La importancia de llamarse "equipo"

Pues sí, es importante, y ¿por qué?, simple, el equipo decide y es uno de los factores de éxito principales.

Vaya, si que es importante este equipo ¿eh?, bromas a parte, lo que quiero reflejar en este post, es algo que yo siempre intento dejar claro y que se asuma, y es que el equipo debe tener la capacidad de decisión sobre como organizarse, herramientas, procesos, metodologías, … Por supuesto, para esto el equipo tiene que ser responsable y sobre todo, sentirse “importante”, para tomar estas decisiones con responsabilidad.

Si no tenemos un equipo capaz de auto-organizarse, de hacer cosas como las que se discutían hace poco por http://geeks.ms acerca de las estimaciones, y de hacerlas, siempre con sentido común claro, usando las herramientas que ellos sienten que les funcionan, mejorando los procesos que no les funcionan, utilizando las prácticas del modo que mejor funcionan en ese equipo.

Tenemos que tener en cuenta, que una de las cosas que tenemos las personas, es que cada uno somos diferentes, lo que nos funciona a unos, no les funciona a otros, y esto mismo se traspasa a los equipos, pero lo que nunca funciona es que una persona o un grupo reducido de personas impongan su criterio al resto, cuando este no es compartido.

Esto es una gran fuente de problemas en los equipos, ya que cierta parte del equipo no asumirá como suyas esas prácticas, procesos, decisiones, etc… y otra de las cosas que tenemos las personas, es que cuando no asumimos las decisiones como nuestras, no se llevan a cabo con la misma efectividad.

En ello se basan metodologías como Scrum, en la que se toma al equipo como una unidad que es capaz de decidir como se van a organizar, de estimar las tareas de un modo eficaz para decidir la capacidad del sprint, asumiendo como suyas esas decisiones, y dándole mayor responsabilidad y mayor poder de decisión.

Pero siempre, al equipo, no a una única persona, por muy alto sea el árbol al que se suba, y esto se puede aplicar a metodologías ágiles y no ágiles, tenemos que aprender a respetar a los equipos como tales, incluyendo a todas las personas desde la primera hasta la última de las que están involucrados en el equipo, si necesitamos usar CMMI porque, cosas de la vida, necesitamos que este proyecto esté certificado, bueno esa no es una decisión del equipo, por supuesto, casi siempre será del cliente, pero si podemos dejar al equipo la responsabilidad de decidir como nos vamos a organizar para que todos los entregables, se entreguen en los plazos, y con la calidad exigida por el cliente y en este caso CMMI.

Y, si bien hasta ahora he estado hablando a nivel de desarrollo de software, realmente esta reflexión me viene no por algo vivido en un proyecto, si no en otro entorno completamente diferente al del desarrollo de software (como es el de la asociación dónde colaboro), y dónde se puede ver como los equipos, sean de la disciplina que sean, tienen que tener la capacidad de establecer sus criterios organizativos, acordados y asumidos por todos los miembros del equipo, para que estos sean llevados a cabo con efectividad.

No cabe duda de que hay decisiones que no corresponden al equipo, difícilmente podrá el equipo decidir como se tiene que tramitar un crédito por ejemplo, pero si podrán tomar las decisiones de su implementación, que herramientas son las adecuadas para su implementación, las estimaciones de plazos (que aunque no quiero reabrir el debate, estoy con Rodrigo plenamente, especialmente en la parte de que todo el equipo opina en las estimaciones), como se van a organizar para conseguir el objetivo.

Por supuesto, esto requiere otra cosa de la que podremos hablar más adelante, disciplina y equipos disciplinados y responsables, pero para eso antes tenemos que empezar a darles la responsabilidad.

Gestión de requisitos en Team System

Una de las partes importantes del ciclo de vida de software, es la gestión de requisitos de lo que vamos a construir, esto es básico, conseguir los requerimientos, manejar el cambio en los mismos, gestionar que vamos construir, gestionar su comunicación, etc..

Los requisitos se pueden dividir principalmente en:

  • Requisitos de negocio: dónde se describen los objetivos principales del software a construir.
  • Requisitos de usuario: dónde describimos las necesidades de los usuarios
  • Requisitos funcionales: aquí vamos a detallar los requisitos internos del sistema.
  • Requisitos de calidad de servicio: rendimiento, escalabilidad, seguridad, internacionalización, etc..

La gestión adecuada de todos estos requisitos, influye de manera muy importante en el éxito de un proyecto, dependiendo de la metodología se gestionarán de un modo u otro, pero como siempre necesitamos de herramientas que nos permitan la gestión integral de los requisitos de un modo compartido en el equipo.

Hasta ahora en Team System teníamos los  Work Items, que en muchos equipos será suficiente, al menos inicialmente, pero en otros proyectos y con otros equipos se necesitan herramientas más completas, como podría ser Borland Caliber, que permitan cosas como jerarquías, que a día de hoy no tenemos en Team System.

Pero esto pronto va a cambiar jeje, Microsoft acaba de publicar un Whitepaper acerca de la gestión de requisitos en Team System, y su futura implementación en Rosario, así como hala de otros sistemas de gestión de requisitos, os lo recomiendo leer, aquí vais a encontrar una descripción mucho más detallada de toda esta gestión de los requisitos y su importancia.

Aquí va el link.

Requirements Management with Visual Studio Team System 2008

Publicado conector de Team Foundation Server con Project server 2007

Pues nada, para todos los interesados en conectar TFS con Project Server 2007 ayer publicaron la versión 2.0 en release en codeplex, recordad que esto no es un conector que tenga soporte de Microsoft, para bajarlo:

http://www.codeplex.com/pstfsconnector

Y la mejor noticia a parte de esto, es que las futuras versiones de Team System, traerán integración nativa con Project Server 2007.

El hombre en el árbol … o a vueltas con las jerarquías

Ayer, hablando con unos colegas sobre experiencias que han tenido en sus trabajos (todos en equipos de desarrollo), un amigo me contó una cosa que le ocurrió en un trabajo, y  que como poco me pareció una curiosa forma de explicarle como iban las jerarquías en esa empresa :o) obviamente no voy a decir nombres.8796_man_in_tree_520


Empecemos contando la curiosa visión de las jerarquías que le pusieron a mi amigo:



  • Su jefe, le sentó, cogió un papel, dibujó un hombrecillo, y le dijo “este eres tú en la empresa”
  • A continuación dibujó un árbol y en las ramas dibujó otro hombrecillo, y le dijo “este soy yo”
  • Por último, pintó otro hombrecillo en la copa del árbol, y dijo, “y este es mi jefe”.

La conclusión que le dijo a mi amigo, es que como podía ver en el dibujo (una representación sin más de la jerarquía), el estaba por encima, y por tanto tenía una “visión más amplia”  de todo, así como su jefe por encima de el, con lo que cuando el (el jefe de mi amigo) le “ordenase” algo, no debía cuestionarlo, puesto que el tenía una visión más amplia, así como cuando su jefe le decía algo el no lo cuestionaba.


En fin, una visión curiosa de como funcionan en algunos sitios, lo primero que se puede observar aquí, es que los marrones siempre van a caer de arriba hacia abajo, cosas de la ley de Newton. Lo siguiente que se me ocurre, si a mi me dicen eso, es que la comunicación, no va a fluir precisamente, facilitando la toma de decisiones en el equipo, si no que me van a tratar como “cadena de montaje”, o “picapedrero”.


Por supuesto, los crasos errores en los que estaban cayendo en este equipo son muchos de los que se pretenden evitar con las metodologías ágiles:



  • Los equipos jerárquicos, en el desarrollo de software, está sobradamente que no funcionan, debemos formar un equipo de “iguales”, todos con su responsabilidad correspondiente a la hora del éxito o fracaso de l proyecto.
  • Falta de comunicación, cuando alguien te dice que no cuestiones sus “órdenes” puesto que el tiene información que tu no tienes, y que con esa frase demuestra que ni siquiera te va a proporcionar, malo. La información tiene que ser algo compartido en el proyecto, el equipo tiene que ser partícipe de las decisiones, tener la información para organizarse, decidir y apoyar el éxito del proyecto. La comunicación es algo fundamental y básico para el éxito.
  • El equipo de desarrollo no es un equipo al que se le tira “la carnaza” del trabajo desde arriba y esperamos a que nos suban los resultados, los equipos de desarrollo tienen que ser partícipes en todo momento del proyecto, son los responsables más directos de lo que se va a generar: el software, y tienen que tener la capacidad de organizarse del modo que más convenga a todo el equipo, de tomar sus propias decisiones técnicas, basándonos en toda la información de que disponen, no son cadenas de montaje, son equipos que toman sus decisiones informadas en todo momento, para el éxito del proyecto.

Bueno de esto realmente se podría hablar mucho más, se pueden poner diferentes puntos de vista, opiniones, etc, la mía, personal, de Luis Fraile (que luego no haya equivocaciones), es que esa visión del hombre en el árbol, no es válida para un equipo de desarrollo de software maduro, y probablemente esté avocada, a lo mejor no al fracaso, porque es indudable que así se funciona en muchos sitios, pero si está avocada a que el equipo de desarrollo se frustre poco a poco, se de rotación, se produzca código de peor calidad, y nunca consigamos tener un equipo maduro de desarrollo.

Desarrollando para el iPhone … sin el SDK

Si, un post que no es de Team system, ni TFS ni similares 🙂

Una de las cosas que más me gustan de trabajar en algo como Multidomo es la cantidad de cosas que probamos y hacemos y que siempre están a la última, como por ejemplo lo que estoy haciendo ahora.

Esta misma semana Apple ha anunciado el lanzamiento del SDK para el iPhone, bueno, para los interesados, yo ya lo he descargado, pero como no dispongo de una máquina con Mac OS, pues no lo he podido probar :), de todos modos, para desarrollar aplicaciones para iPhone / iPod Touch, no es estrictamente necesario hacerlo con el SDK, lo cierto es que se pueden desarrollar apliaciones web para su navegador Safari.

Y digo para su navegador, porque, aunque es todo HTML, CSS 2.01, y Javascript, bueno tiene ciertas características, como el “viewport” en los metas, pero no es extremadamente complejo, y basándonos en la documentación del DevCenter de apple (que por cierto, ya podrían hacer algo tipo MSDN), y conocimientos de AJAX, CSS, y también apoyándonos en librerías externas como iUI, que nos ayudan a simular la experiencia de usuario del iPhone, podemos desarrollar aplicaciones web para el iPhone, por supuesto, con ASP.NET.

Tampoco quiero meterme en muchas complejidades, entre otras cosas porque yo mismo estoy empezando y por ahora digamos que lo que tengo es una prueba de concepto “venida a más”, pero como recomendaciones haría:

  • Leer la documentación y los ejemplos de aplicaciones web del DevCenter de apple y hacer algún ejemplo sencillo con ASP.NET y los ejemplos de Apple. Os diré que cuanto más podáis “limpiar” el código generado de ASP.NET (evitando controles de servidor que no necesitemos, teniendo cuidado con las plantillas de los controles que si que queramos usar, etc…) mejor, ya que Safari es bastante “toca-narices” en cuanto a esto.
  • Yo estoy usando AJAX.NET y llamadas a webservices (por ahora asmx) con JSON. Los que ya conocéis AJAX.NET sabéis que esto es muy sencillo y funciona perfectamente con Safari para iPhone.
  • Ahora vamos a complicarlo un poco más, si habéis estado jugueteando con un iPhone / iPod Touch, habréis visto que la experiencia de usuario, a mi modo de ver, es espectacular, hay que reconocer que se lo han currado, bueno, esta experiencia de usuario no es complicada de conseguir basándonos en Javascript y CSS, pero ya hay gente que ha desarrollado librerías que con poco esfuerzo y buenos conocimientos de Javascript y CSS podemos adaptar, yo la que estoy usando es iUI, y la verdad es que los resultados son bastante buenos (aunque mejorables).
  • Otra cosa que yo estoy haciendo es desactivar el ViewState en todas las páginas, recordemos que aquí el “peso” es mucho más crítico, ya que los que usen nuestra aplicación, la usarán muchas veces por GPRS y a pesar de las tarifas “planas”, el tráfico es un problema, y puesto que casi todo lo haremos por llamadas con Javascript y JSON, podemos evitar totalmente el ViewState.
  • NUEVO: Ayer se me olvidó 🙁 otra cosa que necesitáis, es instalaros la Beta de Safari, el navegador de Apple, porque las páginas que desarrolléis para el iPhone sólo os van a funcionar bien en ese navegador.

Y bueno, creo que no me dejo nada para poder empezar, he de reconocer que tampoco es que sea un “crack” en aplicaciones web, así que seguro que muchos de los que ahi por aquí tienen muchas más ideas :).

Simplemente aquí os dejo unas capturas de Multidomo en iPhone iPod Touch, ya os iré enseñando más según lo vaya teniendo.

multidomo_iPod menu_multidomo_ipod camaras_multidomo_ipod