domingo, 31 de mayo de 2015

Tablas y jQuery

Es muy común para los que desarrollamos en web tener que usar tablas para mostrar datos.

Si la tabla no es muy grande, solemos darle unos estilos básicos y preocuparnos poco por ellas.

Pero qué pasa si la tabla empieza a crecer y crecer... Y nuestros usuarios quieren poder hacer búsquedas por los campos de las tablas, y además quieren ordenar por cualquier columna,...

Rápidamente empezamos a buscar algo en jQuery que nos ayude un poco, pero vemos que no hay nada en concreto. Lo que sí vemos es que hay muchos plugins sobre jQuery que nos ayudan sobre las tablas. 

Hoy vamos a ver uno de estos plugins: datatables (https://www.datatables.net/)

Y creo que lo mejor es que veamos los cambios con un ejemplo.

Supongamos que tenemos esta tabla:



Da miedo...

Vamos a añadir jquery y el plugin DataTables:

<script type="text/javascript" language="javascript" src="js/jquery.js"></script>
<script type="text/javascript" language="javascript" src="js/jquery.dataTables.js"></script>

Y ahora vamos a invocar al plugin con estas líneas:

$(document).ready(function() {
$('#example').DataTable();
} );

Probamos y:


Esto ha mejorado bastante, no tiene estilos, pero ya tiene paginación, y un buscador sobre todas las columnas.

Si nos vamos a la documentación, vemos que hay una css por defecto que podemos usar, y unas imágenes que nos ayudarán a hacer la tabla más funcional.

Copiamos la carpetas "images" y la css que nos interesa. Añadimos css al código:

<link rel="stylesheet" type="text/css" href="css/jquery.dataTables.css">

Y volvemos a probar:


Esto ya es una tabla en condiciones, con la imágenes ya nos aparecen los controles para poder cambiar el orden de las columnas.

Sí, tenemos que cambiar algunas cosas: los textos por defecto, alguna alineación,... Pero hay  que reconocer que nos hemos quitado unas cuantas horas de programación de encima.

En nuestro repositorio podéis ver este ejemplo en los tres pasos que hemos hecho: 


Tenéis éste y muchos más ejemplos en la web del plugin (https://www.datatables.net), además de mucha documentación para indagar y personalizar mucho más vuestras tablas.

viernes, 15 de mayo de 2015

Powershell: Una breve introducción


Hace un tiempo, cuando en mi empresa realizamos la automatización de despliegues, utilizamos Powershell como lenguaje de scripting para la realización del proceso de despliegue del paquete de aplicación una vez generado.

Hasta entonces no tenía conocimiento de esta tecnología, e investigando un poco más descubrí todo lo potente que es y las posibilidades que ofrece para todos aquellos que trabajan con sistemas Windows.

Extraído de Microsoft Technet

"Windows PowerShell es un shell de línea de comandos basado en tareas y lenguaje de scripting diseñado especialmente para la administración del sistema. Basado en Microsoft .NET Framework, Windows PowerShell ayuda a los profesionales de TI a controlar y automatizar la administración de los sistemas operativos Windows y las aplicaciones que se ejecutan en Windows.

Para los programadores, Windows PowerShell usa un conjunto extensible de clases de .NET Framework que permiten crear cmdlets, proveedores, aplicaciones host y utilidades personalizados.
Los comandos de Windows PowerShell integrados en Windows, denominados cmdlets, permiten administrar los equipos de la empresa desde la línea de comandos. Los proveedores de Windows PowerShell permiten obtener acceso a almacenes de datos, como el Registro y el almacén de certificados, con la misma simplicidad con que se obtiene acceso al sistema de archivos. Además, Windows PowerShell cuenta con un completo analizador de expresiones y un lenguaje de scripting totalmente desarrollado."

Powershell ofrece los siguientes componentes:



El componente "Windows Powershell" es una consola de comandos en la que se pueden ejecutar las sentencias y scripts que se deseen, al estilo de la consola de comandos de Unix:


El componente "Windows Powershell ISE" (Integrated Scripting Environment) es una aplicación que permite ejecutar comandos y escribir, comprobar y depurar scripts en una sola interfaz gráfica de usuario, un compilador básico que ofrece Microsoft:



Powershell está disponible desde Windows XP, en sus versiones 1 y 2, y en Windows 7 y posteriores está disponible la versión 3.0. En Windows 8, Windows Server 2012 y posteriores ya viene instalado, para otras versiones de Windows no suele venir instalado, así que es necesario descargar e instalar la versión deseada (cuanto más reciente mejor).

Powershell ofrece los siguientes elementos de trabajo:

  1. Cmdlets
  2. Funciones
  3. Scripts

Cmdlets

Los comandos de Powershell se llaman Cmdlets (command-lets). Se reconocen por comenzar por un verbo (por ejemplo Get) seguido de un guión y un nombre descriptivo del comando. Vamos a ver un ejemplo sencillo desde la consola de comandos. Se desea listar el contenido de un directorio, basta con ejecutar el cmdlet "Get-ChildItem" pasando como parámetro el directorio a listar:



Si se desea ver la ayuda relacionada con el cmdlet anterior, basta con utilizar el cmdlet "Get-Help" y pasar como parámetro el cmdlet del que se desea obtener la ayuda:


Hay que destacar que es posible crear y utilizar cmdlets propios. 

Funciones

En Powershell también se pueden definir funciones, al igual que en otros lenguajes de programación, y también pueden recibir parámetros:



Una vez creada la función puede utilizarse:

Scripts

Finalmente, se pueden crear ficheros propios con funciones e instrucciones para ejecutar los comandos necesarios para llevar a cabo una acción. Estos ficheros deben almacenarse con extensión ".ps1". Al ser invocados pueden recibir parámetros de entrada y utilizarse durante el script.

En la imagen siguiente puede verse un sencillo script almacenado como "MiScript.ps1", que recibe un parámetro que se utiliza posteriormente al invocar la función "HolaMundo":


Una vez almacenado el fichero, se invoca desde la línea de comandos:


Con un parámetro relleno, se ve que se ejecuta la función "HolaMundo" definida en el script. En caso contrario devuelve "No es un parámetro válido":


Es de destacar en este script de ejemplo que se invoca una función de .Net (IsNullorEmpty(), del objeto String en el Namespace System). Esto nos da una idea de lo potente que puede llegar a ser nuestra programación en Powershell, ya que al propio ecosistema de Powershell (cmdlets disponibles, funciones, etc), se pueden importar o invocar Namespaces específicos del framework .Net y realizar algoritmos y funciones realmente complejas.

Ayuda y recursos

Para finalizar, remarcar que ésta ha sido una introducción muy breve a las características de Powershell. En Internet hay gran cantidad de sitios y tutoriales disponibles para aprender toda la potencia de este lenguaje. Tal el vez el sitio más potente sea Powershell.org.

En la Academia Virtual de Microsoft (Microsoft Virtual Academy) se pueden encontrar muchos cursos introductorios y avanzados de Powershell.



Otro día hablaremos de esta academia virtual y otros recursos de Microsoft que nos pueden echar una mano en nuestro aprendizaje.



lunes, 20 de abril de 2015

Maven entra en Juego



Hoy quiero hacer una pequeña introducción sobre Maven.

Aunque no es fundamental para un desarrollador de Java, sí que es un primer paso que nos facilitará la vida en cualquier proyecto que vaya creciendo.

Si quieres empezar a utilizar un nuevo framework o librería lo más normal del mundo es descargarte los ficheros necesarios, copiarlos a tu carpeta de librerías, incluirlas en tu proyecto y a codificar.

Esto que a priori, parece algo sencillo, se puede empezar a complicar: la librería A, puede requerir la libreria B, y ésta a su vez la C, pero B requiere también D, y esta última no se lleva bien con la última versión de C...

Y aquí llega Maven para ayudarnos.

¿Qué es Maven? 

Es una herramienta para gestionar y construir proyectos. Entre otras funcionalidades nos ayuda a gestionar dependencias, y eso es lo que vamos a ver en este artículo.

¿Cómo funciona?

Maven introduce el concepto de Artefacto: es una librería y todo lo necesario para que ésta funcione bien (dependencias, configuración,...)

Cuando en un proyecto se utiliza Maven, existe el fichero "pom.xml", aquí se introduce la lista de todas las librerías (dependencias).

Todas se descargan en un repositorio común de nuestro disco duro sin que tengamos que preocuparnos por ellas.

¿Cómo uso Maven? 

Ahora mismo esta herramienta ya está integrada en la mayoría de IDEs de desarrollo ("Eclipse" entre otros).

¿Un ejemplo?

En todo proyecto siempre solemos necesitar escribir logs, para eso normalmente yo utilizo la librería "log4j". 

La manera tradicional para usar esta librería sería ir a su web: http://logging.apache.org/log4j/1.2  para desacargarla. Pero con Maven lo que tenemos que hacer es buscar sus datos en el repositorio central de Maven.

Para esto vamos a buscarla en esta web: http://mvnrepository.com, buscamos log4j y después de un par clicks llegamos a esta URI: http://mvnrepository.com/artifact/log4j/log4j/1.2.17. En la pestaña de abajo podemos ver el formato de Maven para utilizar esta dependencia:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

El proyecto "MavenLogExample" esta cargado en Eclipse, inicialmente está configurado sin Maven y tiene la librería dentro del proyecto.

Tiene una clase y en su método Main sólo hay estas líneas:

try {                          
    PropertyConfigurator.configure("log4j.properties");
    log.info("Sistema de log iniciado");                        

} catch (Exception e) {
    e.printStackTrace();  
}

Dentro del proyecto esta la carpeta "lib" que contiene el .jar de "log4j".

Vamos a empezar a usar Maven en este proyecto y a quitarnos la librería del proyecto (con esto ahorramos mucho espacio, imaginaros un proyecto con cien librerías).

Primer paso: darle al proyecto naturaleza Maven

Seleccionamos el proyecto, botón derecho del ratón, pulsamos "Configure" y "Convert to Maven Project".




Nos aparece esta pantalla:



Podemos rellenar los datos "name" y "description" o pulsar "Finish".

Tardará unos segundos en generarnos el fichero "pom.xml". Y aparecerá en la pantalla así:


Si queremos ver cómo es el fichero, podemos pinchar en la última pestaña inferior: "pom.xml"

Veremos que contiene algo parecido a esto:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>MavenLogExample</groupId>
  <artifactId>MavenLogExample</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>


Segundo Paso: configuración de nuestra librería

Nosotros vamos a añadir la dependencia de "log4j" dentro de <dependencies/> que se escribe después de </build> . Nos quedará así:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MavenLogExample</groupId>
<artifactId>MavenLogExample</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>

Ahora ya podemos borrar la librería del proyecto y eliminar su dependencia de la configuración.


Si volvéis a ejecutar veréis que todo funciona perfectamente.

Tenéis este proyecto en nuestro repositorio público: https://bitbucket.org/tecnificados/public

Hay dos commits: el inicial sin Maven y el segundo con Maven y sin la librería de log dentro del proyecto.

Espero que os sea útil.

domingo, 5 de abril de 2015

Documentación y recursos de Microsoft


En este post la intención es comentar y enumerar los recursos y documentación disponibles en Internet sobre las tecnologías Microsoft.

En las primeras versiones de Visual Studio se incluían varios CD's de documentación para ser instalada en el ordenador. Esta documentación, llamada MSDN (Microsoft Developer Network) junto con Internet eran la forma de encontrar las soluciones a los problemas que encontrábamos en el trabajo diario con las primeras versiones del framework .Net.

Sin embargo poco a poco fueron apareciendo, impulsados por la propia Microsoft, más recursos disponibles on-line, y en la actualidad hay todo un ecosistema de documentación, cursos, tutoriales, blogs, etc., que sumados a los recursos "habituales" que todo profesional del software suele utilizar (como StackOverflow, por ejemplo), facilitan enormemente el trabajo diario con las herramientas software de Microsoft.

A continuación veremos unos cuantos de estos recursos disponibles:

1) MSDN. Microsoft Developer Network. Probablemente la fuente de documentación más conocida. Es una web muy completa donde se puede encontrar información de todo tipo sobre las tecnologías Microsoft:


Como ejemplo, en el apartado "Documentación" se puede encontrar la referencia al API de Microsoft, lo que nos permitirá ver toda la información de todas las tecnologías, consultar namespaces, funciones, propiedades...


2) Microsoft TechNet. En esta página web Microsoft pone a disposición de la Comunidad TI numerosos recursos y herramientas. 

Aquí se pueden encontrar encuentran noticias, enlaces a descargas, solución de problemas, y una amplia comunidad de profesionales entre los que se encuentran MVP's de Microsoft, que intervienen en foros y escriben en blogs para ayudar a difundir las tecnologías Microsoft.

3) Páginas de recursos específicos. Debido a que Microsoft ofrece recursos y soluciones en múltiples campos, para sus productos más conocidos y utilizados es posible encontrar una página web específica que concentra toda la información relativa a dicho producto. Por ejemplo:

IIS.Net. Página web sobre Internet Information Server, el servidor web de Microsoft.
ASP.Net. Página web sobre ASP.Net, el framework web de Microsoft para la construcción de websites y aplicaciones web.
Visual Studio. Toda la información relativa al compilador de .Net Visual Studio, tanto en su versión off-line como en su versión on-line.
Microsoft .Net. Toda la información sobre el framework de programación .Net.
Azure. La nube de Microsoft. El acceso e información sobre la misma se puede encontrar aquí.

4) Blogs. Muchos profesionales, evangelistas, MVP's de Microsoft y principales responsables de los productos más utilizados escriben en blogs acerca de estos productos y tecnologías, como por ejemplo Scott Hanselman, Scott Guthrie o S. Somasegar. En español tenemos por ejemplo Geeks.ms, donde numerosos profesionales de Microsoft escriben numerosos artículos en castellano.

5) Microsoft Virtual Academy. Academia Virtual de Microsoft. Aquí se concentran múltiples cursos y eventos en directo. La inscripción con la cuenta de Outlook es gratuita, y una vez dentro se pueden buscar cursos por tecnología y crearse un plan de aprendizaje personalizado. Esta academia utiliza gamificación, de forma que por cada curso terminado se nos otorgan unos puntos que nos clasifican en el conjunto de usuarios registrados, y además es posible obtener puntos de bonificación. La mayoría de los vídeos de los cursos se encuentran en inglés, pero muchos de ellos tienen subtítulos disponibles. Estos cursos están impartidos por profesionales de Microsoft.

Finalmente, es muy importante destacar, que aunque estos recursos se encuentran focalizados en tecnologías Microsoft, hay que tener en cuenta que Microsoft se está abriendo cada vez más a la integración y uso de otras tecnologías, especialmente al software libre (Open Source). Por eso no debe extrañar ver un curso sobre MongoDB o Git en la Microsoft Virtual Academy, o que al utilizar Azure se pueda configurar y utilizar una máquina virtual Linux, o que incluso el código fuente del framework .Net esté disponible en GitHub. Así que no es de extrañar el poder encontrar información sobre otras tecnologías en estas páginas, y no sólo de las tecnologías Microsoft.

Espero que esta información os sea útil y os facilite un poco más el trabajo del día a día con tecnologías y productos Microsoft como me lo facilita a mí.

miércoles, 25 de marzo de 2015

¡¡¡Ganamos!!!

Ayer fue un día de ésos que no se olvidan.

Llegamos a Valladolid a las 17:40 

Nada más llegar nos quedamos alucinados, el lugar de la entrega de premios era una antigua capilla, una auténtica preciosidad. Había varios monitores donde iban apareciendo todas las aplicaciones, ¡¡¡la nuestra también!!!!



Cuando empezó Alberto y yo estábamos "nerviosillos".  Después de la segunda charla teníamos bastante claro que no nos iban a dar el premio. Y en ese momento le llegó el turno a Izaskun (Oracle), y de repente empieza a hablar de nuestra aplicación (minuto 30:25): "Yo quería conquistar el pueblo de mi padre...", qué subidón de adrenalina. Estaba hablando de nuestro trabajo, qué contentos estábamos los dos.

Y justo antes de que empezara la ceremonia, en la última intervención también hablan de "Conquista Castilla y León", y nos llaman innovadores. Las dos horas de carretera habían merecido la pena.

Llega el momento, empieza la entrega. Primero hay una mención especial, después aplicación móvil, seguimos con aplicación hecha por estudiantes, y para terminar, mejor aplicación. Y cuando dice la ganadora, su nombre empieza por "Conquista...."

El jurado decidió que "Conquista Castilla y León" era la mejor aplicación web del concurso.

Aquí podéis ver todo el acto.




Gracias, gracias, gracias... a la Junta de Castilla y León por el concurso, a la familia (estas navidades nos vieron poco), a los amigos, a tod@s, otra vez Gracias.

PD: por petición popular acabamos el quinto torneo y empezamos el sexto. Mañana empieza un nuevo torneo, con unos cuantos cambios.

lunes, 23 de marzo de 2015

Road to Valladolid



Llegó el día, mañana martes 24 de Marzo de 2015 se entregan los premios del Segundo Concurso de Datos Abiertos de Castilla y León.

Y para allá nos vamos a ver si les ha gustado nuestra pequeña aplicación ("Conquista Castilla y León").

En este enlace podéis ver todos los proyectos que se han presentado.

La entrega de premios empieza a las 18:00 y podéis verla por streaming a través de su web.





sábado, 21 de marzo de 2015

Repositorios Git


En los últimos diez años los repositorios de código han tenido una evolución constante.

Todos los que llevamos un tiempo en este mundo hemos cambiado de repositorio al menos tres veces.

Yo  mismo empecé utilizando "Source Safe", después "Subversion" y ahora "Git".

El origen de Git viene de Linux, de hecho, está diseñado por Linus Torvalds. Está pensado como repositorio distribuido, vamos a explicar qué quiere decir esto.

Los anteriores repositorios eran centralizados: necesitabas estar conectado a un servidor (donde se almacenaba el código), para poder realizar las subidas y las actualizaciones.

Ahora con Git, lo que haces es realizar los "commits" en nuestro propio ordenador, y cuando tenemos una conexión a Internet, realizamos las subidas ("push") al servidor donde se encuentra todo el código.

Ahora mismo, hay dos repositorios "gratuitos" donde se alojan los proyectos de código más importantes:
En ambos cuando te das de alta tienes disponibles varias herramientas además del repositorio, tienes wikis, gestores de incidencias,...

Nosotros en Tecnificados utilizamos Bitbucket, porque te permite tener repositorios tanto públicos como privados en la versión gratuita. En Github en el modo "free" sólo pueden ser públicos.

Ahora mismo Git está integrado con las principales herramientas de programación tanto en Eclipse como en Visual Studio si tienes un directorio conectado con un repositorio de Git estos compiladores reconocen el sistema de control de versiones y te permiten realizar las operaciones directamente sin herramientas adicionales.

Nosotros sin embargo sí utilizamos una aplicación para esto. Concretamente "Source Tree": http://www.sourcetreeapp.com/ Es la que recomienda Bitbucket, pero se puede utilizar con cualquier repositorio de Git o Mercurial.

En esta URL tenéis nuestro repositorio público: https://bitbucket.org/tecnificados/public.

Aquí tenéis un proyecto de Java muy básico (Factorial), que usaremos de ejemplo en futuros post.

jueves, 12 de febrero de 2015

Un editor: notepad++



Los que llevamos ya tiempo en trabajando solemos tener varios programas de confianza, pequeñas utilidades que nos han sacado de un apuro más de una vez.

Yo os quiero hablar de una herramienta que va conmigo allá donde voy, se llama Notepad++ (http://notepad-plus-plus.org).

Este editor es libre y gratuito, tiene muchas funcionalidades que hacen que se iguale a otros editores de pago. Pero lo que más me gusta de él, es que tiene un gestor de plugin que permite multiplicar sus funcionalidades.

Cualquier persona puede codificar su propio plugin, y subirlo para compartirlo con la comunidad.

Os voy a comentar un par de características nativas de este editor:

  • Modo columna: si pulsamos "shift" + "alt" y nos movemos con el cursor arriba y abajo, podemos seleccionar en forma de columna. Esto es genial para insertar una cadena es una posicion específica en todas las lineas.   
  • Macros: esta me salva la vida una y otra vez. Podemos grabar una acción determinada en una linea, y luego repetir esa acción en todas las demás.   
  • Seleccion de lenguaje: puedes usar este editor para programar diversos lenguajes, si seleccionas el tuyo te colorea la sintaxis para que sea más fácil.   
Ahora vamos a por algún plugin.  

Si nos vamos a Plugins->Plugin Manager, allí podremos ver muchísimos que podemos instalar. Normalmente yo siempre tengo:
   

  • Xmltools: cuando tienes una línea de xml y no ves nada, lo mejor es traértelo aquí y que el solo te lo coloque y te lo coloree. También lo valida, aplica transformaciones...
  • Source cookifier: este plugin, te captura las diversas variables, constantes, funciones de tu código, y te las muestra a la derecha. Ideal para javascript.
De momento solo esta disponible para sistemas Windows. Aunque en linux podemos utilizarlo con Wine.

lunes, 26 de enero de 2015

Mantenimiento


Por motivos ajenos a nosotros, tenemos que poner Conquista Castilla y León en mantenimiento.

Esta aplicación está alojada en la instancia española de FIWARE (FI-LAB) y la semana pasada nos comunicaron que mañana día 27 hay una parada programada que empieza a las 7:30 de la mañana.

A esa hora estamos trabajando y no podemos estar pendientes de esta aplicación.

Activaremos el servicio lo antes posible. 

Éste es el Vídeo de la presentación del juego.

Te recomendamos leer alguno de nuestros artículos, esperamos que os gusten.


sábado, 17 de enero de 2015

Conquista Castilla y León



Hace unos días os comentaba que estábamos metidos en el desarrollo de un juego de navegador para un concurso (http://www.datosabiertos.jcyl.es/).

Esta semana por fin ha llegado el día de la entrega.

Lo hemos desarrollado todo en mes y medio entre Alberto y yo. Nos hubiera gustado hacer muchas más cosas pero el tiempo no nos ha dado más de sí.

Lo hemos realizado en JAVA utilizado SPRING. Un framework que ninguno de los dos controlaba. Además como base de datos usamos MongoDB, que tampoco conocíamos demasiado.

Intentaremos escribir un par de tutoriales sobre las cosillas que hemos aprendido en las próximos entradas.

Aquí os dejo un vídeo donde podéis ver el resultado final:



Si queréis daros de alta y probarlo lo podéis hacer a través de este enlace:

http://conquista.tecnificados.com

Esperamos que os guste. Se aceptan todo tipo de sugerencias.

Seguiremos evolucionandolo en un futuro cercano. Ahora mismo estamos "de vacaciones", ya que las últimas semanas han sido un no parar.

Muchas gracias a todos los que nos han ayudado con sugerencias y pruebas.




miércoles, 14 de enero de 2015

Nuevos modelos de desarrollo: Scrum

El año pasado Rebeca nos hablaba sobre los MOOC que últimamente están tan de moda, en concreto nos hacía referencia a MiriadaX y a un curso sobre Agilidad y Lean (lee el artículo completo aquí) y yo quería hablaros sobre Scrum, que es un modelo de desarrollo ágil del software que me llama mucho la atención y se adapta mejor a los tiempos que corren.

Los modelos tradicionales de desarrollo, en los que hay una planificación casi invariable del alcance, el tiempo y el coste del proyecto tras un análisis exhaustivo de los requerimientos, son buenos para otras ingenierías o arquitecturas, como por ejemplo las construcciones de viviendas o edificios donde es muy fácil distinguir las diferentes fases del proyecto que han de llevar un orden concreto, pero esto no siempre pasa en las aplicaciones software puesto que nos aparecen clientes que no pueden esperar a que se finalice el edificio para utilizar un aseo, o no tienen presupuesto para abarcar un proyecto completo, o no tienen claros todos sus requerimientos sino una pequeña parte de los mismos o simplemente no quieren casarse contigo hasta la finalización del proyecto.

Scrum da respuesta a este tipo de problemas ya que adopta una estrategia de desarrollo incremental e iterativa, en lugar de la planificación y ejecución completa del producto solapando las fases del desarrollo, consiguiendo de este modo que los cambios de alcance (ya sea por nuevos requerimientos o por mala interpretación de los mismos por parte de los analistas o el equipo de desarrollo) no interfieran en absoluto.

Como ya he comentado anteriormente, en los desarrollos tradicionales los requisitos han de estar desde el comienzo y el equipo de desarrollo ha de adaptar el trabajo a los plazos y criterios definidos en el análisis al principio, y no se comienza el desarrollo hasta que dicho análisis quede finalizado. Mencionar que las estadísticas hablan de que la incertidumbre de un análisis aumenta un 4% con cada mes que analizamos por adelantado, un proyecto analizado a 1 año tendría un 50% de incertidumbre. En cambio Scrum define la sucesión de una serie de ciclos al final de los cuales el cliente recibe un trozo del producto que puede ser considerado terminado y completo pese a contener únicamente la implementación de unos pocos requisitos del cliente. La clave está en que después del ciclo obtenemos feedback del cliente y podemos adaptar el siguiente ciclo a posibles cambios de los requisitos y lo que en ese momento es prioritario, aprendiendo con cada iteración lo que es importante para el cliente y reduciendo la incertidumbre a la mínima expresión.

¿Cómo es esto? Al principio de cada reunión el equipo de desarrollo elige de entre el listado ordenado por importancia para el cliente, qué requisitos va a implementar en ese ciclo. Y no solo los elige sino que se compromete a tenerlos terminados y probados para la fecha concretada y se pone a trabajar en ellos. Durante el tiempo de trabajo nadie puede interrumpirles ni influir en su ritmo de trabajo.
Marco de trabajo Scrum

Tras esta breve introducción al Scrum (puedes aprender más en los cursos de Scrummanager o visitar el blog de mi amigo Alex quisiera comentar desde mi experiencia, por qué me parece interesante y que dificultades le veo en la implantación de este modelo de desarrollo.

Por un lado Scrum da importancia al equipo y al conocimiento tácito de las personas. Desde que comencé a trabajar y tras mi paso por varias empresas lo importante siempre han sido los compañeros. Cuando hemos tenido buen ambiente entre nosotros y hemos cogido un compromiso con un plazo de entrega, hemos puesto toda la carne en el asador para llegar a ello intentando hacer las cosas bien, aprendiendo de los demás del equipo y compartiendo con ellos mis propios conocimientos. En cambio no pasa lo mismo cuando las decisiones no las tomas tú sino que te las imponen o el equipo no está cohesionado o aparecen interrupciones en el trabajo diario o cuando antes de terminar lo que estás realizando te cambian de repente el alcance del proyecto y tu trabajo no ha servido para nada.

Por otro lado cuando el cliente recibe entregas funcionales que puede utilizar cada breve espacio de tiempo se involucra más en el desarrollo de algo que será suyo. Le es más fácil percibir que sus impresiones, ideas y opiniones son tomadas en cuenta y se reflejan al poco tiempo en el producto que recibe, dándose cuenta de la dificultad que tiene implementar sus peticiones, de modo que está también más receptivo ante retrasos y/o errores.

De todos modos cabe destacar que no es fácil llegar a implantar esta metodología de trabajo ya que hay que conseguir cambiar el modo de pensar de toda la organización, desde la directiva y la gerencia hasta el propio: hace poco a comienzos de un proyecto personal a pequeña escala intenté implantar Scrum para su desarrollo, pero al final con los plazos de entrega tan ajustados acabamos desarrollando un Extreme Programming de libro.

Referencias:

domingo, 11 de enero de 2015

Un nuevo comienzo



Empezamos este año con nuevas ideas y con dominio propio: www.tecnificados.com

Tenemos en mente realizar muchos proyectos e ir escribiendo aquí lo que estamos haciendo para compartirlo con la comunidad.

El primer reto es presentarnos a un concurso de aplicaciones con un juego.

Estamos haciendo un juego de navegador utilizando datos abiertos, de momento no voy a daros más pistas.

Tenemos de plazo hasta el día 15 de este mes y estamos bastante liados, os seguiremos informando.


El equipo de Tecnificados.