El Blog de Trespams

Blog personal sobre tecnologia, gestió de projectes i coses que se me passen pel cap

Programació àgil

Aquestes darreres setmanes m'estic retrobant de nou amb la programació i estic disfrutant de programar com feia temps que no ho feia. La programació amb Python des de sempre ha estat molt divertida i entretinguda, però fins ara no havia estat tan divertit programar amb Python per la web.

Django, el bastiment de programació que estam fent servir ens permet un temps de desenvolupament molts curts i gairebé tot el que hom vol fer està a mitja hora de programació. L'he comparat amb coses semblants que hem fet en Java i hi ha una diferència en alguns casos del 800%. Força important com per a no tenir-ho en compte. La combinació Python+Django+mod_python+Postgres permet fer en poques hores el que en un entorn de desenvolupament normal en Java duria dies, i fer-ho de manera que segueix havent-hi el millor de la part de desenvolupament Web Java: una clara separació entre les capes de persistència, negoci i presentació.

Me'n cuidaré molt de dir allò de que Django i Python acabaran amb Java. Cada llenguatge té el seu lloc. El que sí és cert que els llenguatges d'script per la web amb els bastiments actuals s'estan convertint en una alternativa molt vàlida a projectes que fins ara es feien amb Java o PHP. Ara quan ens plantegem un projecte web, una vegada analitzat podem triar, i això és lo bó d'això. Segons com sigui el projecte i els seus requeriments podem tirar cap a un costat o cap a un altre: que volem un temps de desenvolupament molt curt sense sacrificar escalabilitat, doncs Django ens pot servir. Que el que necessitam és un complet sistema transaccional, doncs millor anem cap a un servidor d'aplicacions tipus JBoss i desenvolupem l'aplicació en Java.

El que hi ha de bo és que ara per ara podem plantejar-nos fer moltes webs de negoci amb un temps molt curt i amb uns requeriments de maquinari mínims, i a més fer-ho sabent que la capacitat de creixement de l'aplicació, l'escalabilitat famosa, estarà limitada sols pel nostre pressupost de ferro, i que serà prou senzill escalar. Que sovint és un tema que s'oblida, que l'escalabilitat en altres entorns té un cost de configuració i recursos que no és menyspreable.

Aquest cap de setmana també he trobat una sèrie d'articles mot interessant:

  • Comparació entre Django i Rails. Molt ben feta i molt ben documentada. Surt del tractament clàssic i fa una comparativa poc partidista i posa de relleu les fortaleses i mancances de cada llenguatge.
  • Per què usar Django. Petit article amb 10 punts que ens poden donar llum de perquè triar Django davant altres bastiments.

I aprofitaré per afegir un altre enllaç, que encara que ja sigui un poc antic en temps d'Internet, és força interessant, una comparativa entre Symfony (PHP), Rails (Ruby) i Django (Python) que podem trobar al wiki de Rails.

La literatura d'enginyeria de programari diu que una eina té una influència del 10% en el desenvolupament, però sempre estam pensant en que no hi ha grans canvis tecnològics pel mig. El canvi tecnològic hi és quan passam d'un entorn basat en Java+J2EE+JSP a un entorn basat en un llenguatge d'script.

A un article de Casper Jones hi ha una interessant taula de com el llenguatge de programació afecta a la productivitat del programador. Hi ha Java, considerat un llenguatge de nivell 6 però no hi ha Python. En un altre article de Jason Voegele trobam una comparació molt ben feta de diferents llenguatges, considera que Python hauria d'estar classificat com a llenguatge de nivell 15, això ens donaria un factor 2.5 d'augment de la productivitat. Potser ho poguem considerar un poc optimista, però si consideram un llenguatge de l'estil de Python o Ruby, l'Smalltalk, del que hi ha més dades, veurem que la relació entre línies de codi i punts funció segueix la proporció que suposaria una classificació al nivell que indica Voegele, ja que compararíem un programa J2EE amb Smalltalk i tendriem que la proporció va entre 1.7 de mitja i 2.9 en el millor dels casos a favor de l'Smalltalk. Es confirmarien així les dades empíriques que tenim fins al moment, que ens donen també aquests ratios de productivitat.

A tot això no entram en factors com la facilitat de desplegament de l'aplicació, configuració de l'entorn, la posada en marxa de l'aplicació base o l'aplicació d'actualitzacions, que donaria per un article apart. Sols apuntar que quan feim servir un llenguatge interpretat, el nostre procés de control de versions i actualitzacions es pot limitar simplement a un svn update.
Així doncs, a l'hora de embarcar-nos en el nostre proper projecte web haurem d'aturar-nos a pensar si convé més fer-ho en Django o Rails. La diversió està assegurada i el pressupost del nostre client ens ho agrairà.

blog comments powered by Disqus