viernes, 25 de mayo de 2012

Productividad en el desarrollo de software

Productividad en el desarrollo de software

Por: Ricardo Trujillo Rodriguez

¿Que podemos hacer para ser productivos en el desarollo de software?

Escribir código claro siendo concisos. Esto en algunos entornos se conoce com KISS (Keep It Simple Stupid!). Parece fácil, pero a muchos desarrolladores les cuesta hacer esto, complicando cada vez mas su código según va evolucionando este. Lo normal es que si no esta bien diseñado, sea muy dificil conseguir esta sencillez y claridad, obligándonos la mayoría de las veces a hacer un refactoring para devolver a ese software al camino de la claridad y la mantenibilidad.

El propio lenguaje de programación que hemos elegido para desarrollar nos puede ayudar o ser una gran barrera para conseguir nuestros objetivos en cuanto a  ser productivos. La mayoría de las veces no podemos elegir el lenguaje para el desarrollo, ya que nos es impuesto por diferentes motivos, pero si somos capaces de elegir, es neceario acudir a lenguajes de 4ª generación o a los nuevos lenguajes de desarrollo muy productivos, como pueden ser Ruby  o Groovy. Si a estos lenguajes les unimos los frameworks de desarrollo que se han creado basándose en ellos (Ruby On Rails , Grails) , nuestro rendimiento como desarrolladores mejorará muchísimo.

    Sintaxis más corta y sencilla de leer. No es lo mismo escribir:

                    assert_greater_than_or_equal_to(a,7)
    que
                     a.should be ≥ 7

    Aumentar el nivel de abstracción.

        Utilizar lenguajes con un nivel de abstracción alto.

        Gestión automática de la memoria (Garbage Collector de Java vs C).

Sintesis.

    Metaprogramación: La metaprogramación consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código. (ver Metaprogramación Wikipedia)

   

Reutilización.
    Reutilizar codigo antiguo vs escribir nuevo codigo.
    Refactorizar codigo antiguo para poder ser reutilizado.
        Metodos, Objetos, librerías , design patterns, frameworks.


Automatización y herramientas.

    Automatizar al áximo tareas repetitivas (generar versión, hacer tests). Para ello las herramientas de  integración contínua ayudan y mucho.
    Utilizar herramientas nuevas, hacer selección en función de su independencia, calidad de la UI. Tenemos un ejemplo bueno con el Visual Studio 2013. Eclipse tambien introduce mejoras en este sentido, generador de codigo.La calidad de un editor y sus herramientas, nos pueden ayudar mucho a mejorar nuestra productividad a la hora de escribir líneas de código.
    Un buen desarrollador Sw debe cotinuamentre aprender a utilizar nuevas herramientas de desarrollo para ser productivo.


DRY
    No repetir codigo.
    No hacer copy / paste.
    
¿ Que lenguaje puede reunir todo este compendio de requisitos que buscamos para ser productivos en nuestro trabajo?:

Ejemplo: Ruby, un lenguaje de scripting moderno, orientado a objetos, funcional, con gestión automatica de la memoria, tipos diniamicos, reutilización vía mix-ins y sintesis por medio de la metaprogramación.


No hay comentarios:

Publicar un comentario