NoSoloParidas

February 27, 2007

ScrumMaster

Filed under: Informatica

Scrum ciclo

¿Qué es un Scrum Master? Pues lo que en un proyecto normal viene a ser el jefe de proyecto, pero con unas atribuciones muy distintas. Mientras que en un jefe o manager de proyecto prima el “bossing”, término intraducible del inglés que en España, conocida nuestra cultura, sería “dar voces y mandar a todo dios qué tiene que hacer”, el Scrum Master debe practicar el coaching, que yo traduciría como “guiar y motivar al equipo”.
Para que nos aclaremos, la aproximación que un manager clásico hace a un equipo de trabajo es muy diferente de la que un Scrum Master debe hacer. El manager normalmente será el encargado de pormenorizar el trabajo y, posteriormente, asignarlo a su discrepción a cada uno de los miembros del equipo. Posteriormente, se encargará de controlar que las tareas se van haciendo conforme a sus planes. Este es un enfoque en el que el manager dirige al equipo a su designio, por lo que la libertad del mismo es más bien escasa.
En contra de este enfoque, aparece Scrum y la figura del ScrumMaster. Una de las metáforas más repetidas para explicar su función es la de perro pastor, aunque desde mi punto de vista puede no parecer muy acertado en cuanto a que las decisiones de los miembros del equipo les convierte en algo más que meras “ovejas”. Básicamente, el Scrum Master es un perro pastor en cuanto a que se preocupa, por encima de todo, del rendimiento y la satisfacción del equipo. Tiene que estar “siempre ahí” para solventar los problemas que su equipo vaya teniendo, facilitar su trabajo y, en general, primar en la medida posible que el equipo se autoorganice y tome sus propias decisiones. Este sistema puede dar un poco de “miedo” a los no iniciados en Scrum, pensando que se otorga demasiado poder al equipo. Pero, con el tiempo, se comprueba que nadie conoce mejor el trabajo y las decisiones más acertadas que aquellos que están más comprometidos con el mismo, es decir, el equipo de desarrolladores de la aplicación.

Paralelamente a esa función “protectora” del equipo, el ScrumMaster tiene otras atribuciones como son:

  • Organizar y dirigir la Sprint Planning
  • Organizar y dirigir la Sprint Review
  • Conducir las reuniones diarias Daily Scrum

February 2, 2007

Consejos para BDs

Filed under: Informatica

esquema bd

Me aburro, así que me ha dado por escribir un post sobre un par de “imprescindibles” a la hora de andar jugando con una base de datos. Voy a poner los consejos que se me vengan a la cabeza, pero si conocéis alguno que me deje, pues comentadlo y edito el post añadiéndolo (con el correspondiente mensaje de agradecimiento):

- Nunca hagas Select * From TablaX, la sobrecarga que provoca una sentencia de esta clase es bastante considerable. No soy ningún experto en BDs pero, a bote pronto, se me ocurre que el sistema gestor tendrá, primero, que ir a su catálogo a ver qué columnas tiene esa tabla para luego ir recuperándolas. Por desgracia, como no hay ninguna clase de filtro ni de filas ni de columnas, recuperará la tabla ENTERA y si hablamos de una tabla medianamente larga, eso es mucha información.

- No hagas Select * From TablaX where criterioZ, includo aunque quieras recuperar todos los campos de la tabla para esa tupla concreta, es preferible describir cada uno de los campos en la sentencia, es decir, hacer un select campo1, campo2, …, campoN From TablaX where criterioZ porque así evitas que el SGBD tenga que, de nuevo, consultar el catálogo para ver qué campos quieres.

- En entornos web, procura tener el menor tiempo posible abiertas las conexiones con la BD porque eso reduce la escalabilidad. Es decir, que si por alguna absurda razón (tan absurda como salir en portada en Menéame o Barrapunto) tu web sufre un incremento radical de las visitas, el número de conexiones crecerá proporcionalmente y puede que tu aplicación web pete si no estás gestionando bien dichas conexiones y haciendo su vida lo más corta posible. Es preferible que un usuario espere un poco más para abrir y cerrar la conexión, que el hecho de no poder acceder a la información porque el número límite de conexiones se ha alcanzado.

- Parametriza las consultas, es la mejor forma de evitar errores y problemas extraños cuando tu base de datos espera un determinado tipo para una columna de una tabla y le metes otro diferente. Parametrizando las consultas, desde el propio código va a ver qué tipo de datos tienes que ponerle y si te equivocas y le pasas un float a una consulta que espera un int, lo verás rápidamente.

- Si la base de datos que utilizas soporta procedimientos almacenados, no dudes en usarlos. Es la mejor opción posible, puesto que aisla la lógica de tu aplicación (lógica de negocio) de las cadenas SQL necesarias para persistir su información. Las ventajas son muchas, pero sólo por nombrar algunas, tendríamos:

  • Una base de datos más optimizada. Debido a que las sentencias SQL están dentro de la BD y no dentro de la aplicación, el sistema gestor de la misma puede realizar las mejores optimizaciones y planificaciones para un mayor rendimiento a la hora de ejecutar dichas consultas o actualizaciones. En cambio, si las consultas permanencen en la aplicación, la optimización se tendrá que hacer dinámicamente en tiempo de ejecución, no siendo tan óptimo el resultado.
  • Más control sobre las consultas. Combinado con las consultas parametrizadas, permite eludir la gran mayoría de mecanismos de inyección de SQL. Dado que en los procedimientos almacenados se define claramente qué va a hacer dicho procedimiento, no hay lugar para añadir nuevas “consultas” maliciosas, máxime si se pasan tipos de datos correctos mediante la parametrización de la consulta.
  • Mejor gestión de la propagación de los cambios. Un simple cambio de nombre en una columna de una tabla puede suponer cambiar N mil sentencias SQL de la aplicación si están embebidas en la misma. En cambio, si se están usando procedimientos almacenados, basta con cambiarlo en los procedimientos que utilicen dicha columna.
  • Otras muchas ventajas que no conozco, puesto que mi conocimiento sobre el tema es bastante limitado

- No utilices cuentas de administrador para conectar tu aplicación a la base de datos. En general, como regla general para cualquier cosa que tenga que ver con la informática, ya sea desarrollo de aplicaciones o administración de las mismas, siempre, siempre, se deben hacer las cosas con el menor número de privilegios necesarios, nunca más. Eso incluye no usar la cuenta de Administrador de tu sistema operativo para navegar por Internet (como estoy haciendo yo ahora mismo, todo sea dicho :P ).

Ahora mismo no se me ocurre ninguno más, pero estoy abierto a sugerencias y críticas.

EDIT: Este consejo lo envía Luther
NUNCA pasar directamente el input del usuario a la base de datos! Hay que parsear los datos: ALL INPUT IS EVIL!!!!!

Si poneis dos textboxes (Usuario y contraseña) y haceis esto, estais castigados de por vida porque os van a meter la inyeccion SQL por el culo:

SELECT u_id
FROM logins
WHERE username = ‘$usuario’
AND password = ‘$password’

February 1, 2007

Scrum

Filed under: Informatica

Scrum

Finalmente, mi proyecto para 5º de Ingeniería Informática no va a ser una aplicación .NET, sino algo mucho más exótico. Voy a tener el placer (espero que lo sea) de implantar Scrum en una empresa relacionada con la Universidad de Salamanca.

¿Qué es Scrum? Esa es la primera pregunta, típicamente. Quien más o quien menos ha oído hablar sobre XP (eXtreme Programming) pero Scrum no suena muy bien. Básicamente, Scrum es un framework para el desarrollo ágil. ¿Un framework? ¿No querrás decir una metodología? Pues no, es un framework porque no te dice qué tienes que hacer. No establece pasos de obligado cumplimiento o una secuencia de acontecimientos, sino que pone a tu disposición una serie de herramientas y de prácticas para que, adaptándolas a la realidad de tu empresa y del proyecto que al que vayas a aplicar Scrum, te permitan maximizar la productividad de tu equipo.

Esto también es un problema, especialmente cuando se está empezando con Scrum, porque te hace sentir muy perdido el hecho de que todo Scrum se pueda explicar en unas cuantas páginas de un libro por su autor. Ese es sólo el punto de partida, a partir de ahí queda mucha investigación y mucho ensayo-y-error por hacer hasta que encuentras la mejor “configuración” de Scrum para tus necesidades, la mejor duración de los Sprints, la mejor forma de organizar tu Product Backlog, la forma más óptima de gestionar las pruebas necesarias para asegurar de que el producto que se quiere entregar realmente funciona y que las tareas realmente pueden ser catalogadas como “Done”.

Un día de estos tengo que escribir un post explicando en profundidad Scrum, pero para eso primero tendría que creer que a alguien le va a interesar leerlo… :P

PD: ¿Qué tiene que ver la imagen que preside el post con Scrum? Pues que el término fue tomado del rugby…






















Get free blog up and running in minutes with Blogsome | Theme designs available here