Publicar un comentario

If you have a TypeKey or TypePad account, please Inicia sesión

Categorías

septiembre 2007

lun. mar. mié. jue. vie. sáb. dom.
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

« Spain is different | Inicio | Comida a cambio de bichos »

09 septiembre, 2007 - 22:33

El desarrollo software en Microsoft

Miguel Llopis Lledó


A menudo cuando vemos un gran edificio nos preguntamos cómo lo habrán construido. Cuando vemos las pirámides de Egipto nos asombra conocer los métodos que se emplearon para levantarlas, la gran cantidad de gente involucrada en este proceso “faraónico”.

De la misma forma, yo muchas veces me hago la misma pregunta acerca del software. Ahora estoy teniendo la suerte de ser parte activa en este gran proceso. En mi experiencia actual, el producto con el que más relación directa tengo es BizTalk Server. Para los que no lo conozcáis, BizTalk Server es una tecnología de servidor cuya misión es coordinar todos los servicios de red existentes en un entorno empresarial, algo que se conoce como “orquestación de servicios”.

Dicho con un ejemplo llano, imaginad una rotonda en la que confluyen 7 autopistas, totalmente saturadas de tráfico. BizTalk Server se encargaría de decidir a qué vía da prioridad en cada momento, según lo saturada que esté, entre otros criterios, también se encargaría de optimizar el proceso; es decir, conseguir que estemos el menor tiempo posible metidos en el atasco. Y, por supuesto, que no se produzca ni una sola colisión o choque entre dos vehículos.

Para desarrollar este producto, en un cálculo aproximado y rápido, os puedo decir que trabajamos unas 250 personas. Cada una de estas personas tiene una misión diferente, unas virtudes diferentes y una visión particular sobre qué características debería y no debería tener la próxima versión del producto.

¿Cómo se coordina todo esto? Se hace uso de algo de lo que ya os hablé en alguna entrada anterior: los roles en el desarrollo del software. Los roles que existen actualmente en mi equipo, y en la mayoría de equipos de desarrollo en Microsoft ya que es un modelo que aporta muchas ventajas respecto a otros y que se está convirtiendo (si no lo es ya) en un estándar dentro de la empresa (Microsoft Solution Framework, para quien quiera investigar más sobre ello), son los siguientes:

Roles_2

Product Manager: Es el nexo con el cliente, maneja sus expectativas y se encarga del lanzamiento y la publicidad, demostraciones, etc. Es muy parecido al rol de Jefe de proyectos de una consultora clásica.

Program manager: Es más técnico, se encarga de que el proyecto se concluya y se entregue al cliente. Su misión es asegurar que se va avanzando según lo previsto (es lo más parecido a un analista, que podemos encontrar en el modelo clásico de las grandes consultoras)

Developer: Se encarga de desarrollar las aplicaciones dentro de los requisitos que ha marcado el analista y de las restricciones globales del proyecto. Algunos ejemplos de estas restricciones es

      Que el resultado sea monitorizable

      Rendimiento en unos rangos

      Probado para el volumen de datos esperado

      Técnicamente correcto

Tester : Se encarga no sólo de buscar errores, sino además de garantizar que el diseño funcional está alineado con las expectativas del cliente, vamos con el documento de visión.

Release manager : Se encarga de asegurar que el resultado va a poder ser desplegado en un sistema real, diseña el plan de puesta en producción y lo ejecuta. Este trabajo no se realiza sólo al final del proceso, además de las versiones externas, es decir versiones que estén suficientemente libres de errores, sino que además pueden haber releases internas que también hay que desplegar y probar.

User experience: Es el responsable de lo que tiene que ver con el usuario final, lo que le afecta al usuario final, que los interfaces sean amigables y comprensibles, que el rendimiento sea aceptable, etc.

Arquitecto :  El arquitecto de software se encarga de que las piezas de software encajen y de que se elija la mejor tecnología para resolver cada uno de los problemas concretos. También es el responsable de servir de enlace entre los departamentos de TI y de desarrollo.

Con todo esto, la infraestructura interna para llevar a cabo el proceso de coordinación, la comunicación dentro del proceso y otra serie de factores, podréis imaginar que es bastante compleja.

Pero nunca pensamos que pudiera ser fácil, estamos en Microsoft, la empresa líder mundial en software, con productos muy variados: desde sistemas operativos como Windows 9x, XP, 2000, 2003 Server o Vista hasta bases de datos como SQL Server, desde tecnologías y servicios para la web como Windows Live hasta aplicaciones de escritorio como Office, desde aplicaciones de mensajería instantánea como el Messenger hasta completos entornos de desarrollo como Visual Studio, sistemas para PDA's... Podría seguir, pero no quiero aburriros.

Tan sólo quería dejar patente lo mucho que se aprende trabajando aquí, y el contínuo desafío, motivación y esfuerzo por la autosuperación que supone trabajar en un nº1.

Feliz lunes!

Comentarios

Muy interesante, pero yo quiero que me hablen de los perritos. No creo que me resulte interesante saber cómo la empresa líder hace las cosas, me interesa saber más de los perritos en Redmond. ;)

Déjate de perritos, jeje. Que ahora va bien encaminado. A ver si nos sorprenden los días que quedan con artículos así.

Saludos

Mi sueño siempre ah sido trabajar para Microsoft, espero algun dia poder realizarlo, portaria su camisa con orgullo.

TrackBack

URL del Trackback para esta entrada:
http://www.typepad.com/services/trackback/6a00d8341bfb1653ef00e54eda407d8833

Listed below are links to weblogs that reference El desarrollo software en Microsoft:

Prisacom S.A. - Ribera del Sena S/N - Edificio APOT - Madrid [España]