Balanç del 2008

Escrit per Aaloy a 31 de December , 2008 a les 11:32 a.m.

Aquest serà el darrer apunt d'aquest any, i com a tal toca fer balanç del que ha significat aquest 2008 que aviat s'acaba.

Programació

A l'aspecte de programació ha estat un bon any: Django ha tret la versió 1 i Python l'esperada versió 3. Hem vist com han aparegut força projectes basats en Django que marcan la línia cap a l'esperada reutilització de codi.

Ha estat l'any on personalment he fet molta més programació amb Django que en Java. Els tipus de projectes que han sortit feien que fos molt més ràpid i optim fer-ho d'aquesta manera. Alguns dels llocs web han tingut força visites i hem pogut comprovar el bé que se comporta Django.

L'aparició de Netbeans per Python també crec que és una notícia prou important. Fins ara pareixia que Python estava apartat dels plans de Sun (no així dels de Google com s'ha vist amb l'AppEngine) i pel que apunta pareix que a mitjà plaç i amb permís d'Eclipse i Aptana podria ser l'editor de referència per Python.

Gestió de projectes

He seguit amb discussions filosòfiques damunt el que és un projecte i el que no és. Per mi un projecte per definició ha de tenir una data d'acabament, però ja he perdut l'esperança de que algunes coses canviïn.

Scrum com a metodologia cada cop m'agrada més. Estic molt còmode amb la idea de que les persones són el més important de l'equip i de que el cap de projecte ha de ser un facilitador. Scrum s'adapta molt bé a aquesta manera de pensar i de fer.

De la família

Llums i ombres enguany. Llum pel naixement del meu segon nebot, ombres per la pèrdua de gent propera, en un cas molt jove que va omplir la família de consternació, i un petit ensurt amb el Pare que afortunadament no ha anat a majors.

Els meus menuts creixent dia a dia, enguany ja saben colcar en bicicleta (amb 3 sessions en tingueren prou per aprendre'n!) i trobar la IP del seu ordinador Linux.

Dels amics

Donar-vos les gràcies per ser-hi, per aguantar-me els acudits dolents i pels bons moments que hem passat junts. La vida no seria digne de ser dita vida sense els amics.

De la feina

La feia principal rara, moltes baixes, buids de poder i una fusió que pareix que no s'arriba a concretar. Personalment he demanat una reducció de jornada que esper es concreti al 2009. No m'agraden les situacions d'impàs i mentre tot es defineix prefereixo dedicar més temps a la família.

De la feina "pla B" bé, molt bé. Projectes molt interessants que esper es concretin molt aviat. El 2008 ha estat un any de transició, d'agafar embranzida per l'any següent i crec que s'ha aconseguit.

Gràcies a tots i totes per seguir aquest blog i pels comentaris que anau deixant. Esper que el 2008 hagi estàs profitós per les vostres vides. Ens llegim al 2009!

7 comentaris, 0 trackbacks (URL) , Tags: General Python Django


Django no és PHP ni JSP

Escrit per Aaloy a 27 de December , 2008 a les 1:38 p.m.

Alguna de la gent que s'atraca a Django per desenvolupar web ve de PHP o del món Java (amb JSP) i intenta aplicar les mateixes tècniques que havia fet servir abans, trocejant les planes i fent servir includes, desaprofitant la potència de les plantilles de Django.

Includes per la maquetació

Els includes existeixen en Django, però no tenen la mateixa importància que en PHP a l'hora de fer la maquetació.

Les plantilles a Django es poden heretar. Això és un concepte nou per la gent que ve de PHP o JSP, però és la manera de muntar les planes web. El que feim és definir la nostra plantilla base (o plantilles) i programarem per diferències. És a dir, quan hem creat la plantilla, la plana següent la maquetarem pensant "és com la plantilla base però amb aquesta secció i aquest altra diferent".

Cada una de les diferències la podem posar dins un bloc. Així les plantilles hereten els continguts i el blocs de les plantilles pare i podem sobreescriure els continguts dels blocs.

Això vol dir que normalment no trocejarem la nostra plana en capçalera, menú, contingut i peu, en quatre arxius diferents, sinó que estarà tot dins el mateix arxiu i el que farem serà definir distints blocs segons convengui o no sobrescriure'ls en les plantilles filles.

No hem de passar pena de posar massa blocs, de fet millor trocejar massa que massa poc. I encara així, sempre som a temps d'editar la plantilla base per anar afegint els blocs que necessitem.

Includes per a carregar llibreries

JSP té el concepte de taglibs per a realitzar funcions com el formateig (fmt), estructures de control (core), etc.

A Django la majoria d'aquestes estructures estan ja dins el llenguatge de plantilles, definint els tags i els filtres. Els primers realitzen accions complexes i contenen les estructures de control de fluxe, els segons ens permeten modificar el contingut final que es mostrarà a l'usuari.

Com al Java amb el JSP Django ens permet definir llibreries de tags i filtres que es poden utilitzar en la generació de la plantilla amb un simple {% load "nom-de-la-llibreria" %}.

Les plantilles de Django no permeten incloure codi Python i el que es pot fer és limitat. La idea és que la plantilla tracti sols amb la capa de presentació i tot el que requereixi tractar amb regles de negoci o funcionalitat complexa es delegui a la capa Python.

Els includes de Django

Estan pensats per evitar tenir que repetir codi no per a la maquetació dels continguts. Pensem en el cas que tenim funcionalitat semblant però que ha d'anar a plantilles amb unes estructures molt diferents. Llavors el que feim és extreure aquell troç de funcionalitat i posar-ho a un arxiu separat per tal que es pugui reaprofitar el codi.

És més, si la repetició encapsula funcionalitat i aquesta es pot reaprofitar en altres aplicacions l'adequat seria crear un tag que generàs l'HTML. Django proporciona fins i tot decoradors que ens permeten crear molt fàcilment plantilles html que agafin paràmetres, o crear tags que generin HTML tal i com nosaltres el volem.

En definitiva, abans de posar-vos a maquetar convé fer una ullada a la documentació de Django, començant per Django template for designers que ens introduirà en els principals conceptes, després pegar una bona llegida als tags i filtres i una vegada dominem Python anar cap a la creació de les nostres pròpies llibreries de tags.

4 comentaris, 0 trackbacks (URL) , Tags: Python Django


Cursos de Python i Django

Escrit per Aaloy a 23 de December , 2008 a les 6:03 p.m.

Els que em coneixeu segurament haureu notat que m'agrada ensenyar de la mateixa manera que m'agrada aprendre. Ensenyar permet compartir experiències i coneixements amb un nivell de comunicació que és difícil d'assolir en un llibre o un article, i poder ensenyar allò que a més t'agrada ho fa tot molt més divertit.

Com en moltes coses, per mi la màxima és fer les coses com m'agradaria que algú les fes si fossin per mi. Això sovint fa que m'ho prengui de vegades massa seriosament, sóc exigent amb els altres i per tant també ho sóc amb mi.

Per a que un curs sigui productiu la gent que hi assisteix hi ha d'anar mínimanent motivada. Una manera de tenir aquesta motivació és que la matèria que s'hi imparteix es vaig a utilitzar en un futur proper o ja s'estigui utilitzant.

Python i Django fa que sigui molt ràpid poder tenir un entorn de proves i començar a fer coses. La corba d'entrada és molt suau i es poden començar a fer aplicacions molt ràpidament, per tant, augmenten les possibilitats de que la gent ho pugui fer servir en el seu dia a dia, fins i tot si no s'hi dedica al 100%. Tasques d'administració de sistemes, scripts d'importació, generació de codi, etc. són molt ràpides de fer en Python i per tant es pot veure un resultat immediat del que s'ha après. La realimentació que s'aconsegueix, la gratificació de l'ego, fa que la gent pugui veure una utilitat en allò que fa.

A mi els formadors que m'agraden són aquells que a més de dominar la matèria (no ho doneu per suposat, no és la primera vegada que vaig a un curs on que l'impartia sols sabia el que deien les presentacions que duia preparades) hi fan feina. Sobretot en la part tècnica això es nota molt. Qui fa feina dia a dia amb una tecnologia a més de tenir-ne els coneixements també us podrà donar consells, millors pràctiques, trucs de la professió que no estan als manuals. Llavors és cosa de cada un aplicar-los o no, però el que està clar que a més d'una simple explicació de coneixements hi ha la part de transmissió d'experiència.

Per això m'agrada que els formadors no es dediquin professionalment a la formació, sinó que la seva feina principal impliqui fer feina amb aquella tecnologia i obviament m'aplic el mateix criteri. M'agrada ensenyar, però em trob molt més còmode amb mi mateix ensenyant allò que faig servir, en el meu cas Python, Django o gestió de projectes informàtics.

Ensenyar implica també preparar-se les classes. Per mi aquesta preparació no significa llegir-se la matèria (que també) sinó a més preparar exemples, la línia argumental de la classes i un conjunt de "plans bé". És a dir, tu prepares el que se suposa que serà el contingut de la classe d'aquell dia, però pot ser que s'avanci més ràpid del que s'havia pensat, o que sorgeixi més interès per un tema concret o que trobis que és millor fer un exemple més senzill per acabar de lligar el que s'havia explicat. Poder anticipar-se a tot això i tenir-ho previst també fa que s'avanci molt més en la formació. A mi que el formador se quedin pensant en el que ha de donar a continuació no m'agrada gens.

És difícil trobar gent bona per donar formació, de la mateixa manera que és difícil trobar bons programadors. Particularment aspir a que la gent acabi amb el convenciment de que després dels cursos en sap més que abans de començar, que la formació se li faci curta i es quedi amb ganes de saber-ne més.

6 comentaris, 0 trackbacks (URL) , Tags: Informàtica Python Django


Dos apunts d'avui

Escrit per Aaloy a 16 de December , 2008 a les 8:48 p.m.

Avui he llegit pels RSS dos apunts que m'han agradat:How Are You Staffing Your Startup? i Outsourcing Killed By Django And Ruby On Rails

El primer apunt reflexiona sobre el paper dels administradors de sistemes als equips de desenvolupament, a les startups. La veritat és que no hi puc estar més d'acord, especialment quan la feina té a veure amb la web.

Entenc la web com una feina d'equip, on es necessita, a més de la idea, els desenvolupadors que la programin, els creatius i maquetadors i la la gent de sistemes per a que ho posi en producció i tengui cura de l'estabilitat del sistema.

Pens que a part de l'èxit d'una aplicació hi té molt a veure l'entorn on es desenvolupa, tenir un entorn de preproducció adequat, tenir un entorn de producció escalable. Que la gent de sistemes pugui dedicar temps a monitoritzar l'aplicació, a millorar les eines que té a cercar o crear-ne de noves.

L'altra apunt fa referència a com Django i Rails poden canviar la mentalitat d'outsourcing de les empreses. Ambdós bastiments fan que el cost de les aplicacions sigui menor i que la quantitat de codi repetitiu que s'escrigui sia molt menor que en les aplicacions escrites en Java (o .Net donat el cas).

Potser l'article no està redactat de manera molt afortunada (ja veureu els comentaris), però crec que la idea és vàlida. Django i Rails permeten fer més coses amb menys gent, però a més fa que la gent millor encara destaqui més i sigui més productiva, ja que l'hem alliberada de gran part de les tasques repetitives que no aporten valor i que precisament són les que tenen més sentit externalitzar.

Això no vol dir que la gent de la India els països de l'Est o Sudamèrica no sigui creativa, sinó que senzillament no fa falta treure les coses fora quan a casa t'ho poden fer igual o millor a pràcticament el mateix cost i temps.

Dugem les coses un poc més enfora. Suposem un projecte gran, 100.000 línies de codi Java pel cap baix. Aquests tipus de projectes són els que normalment se durien cap a consultores de fora. Amb Django se pot convertir en un projecte de 20.000 línies tranquilament i llavors els projectes que es treien fora perquè no hi havia mans per al desenvolupament es poden posar en mans d'empreses d'entre 5-10 desenvolupadors amb garanties de que el projecte s'acabi i s'entregui. En poques paraules, es pot passar de les macro-consultores a les PYMEs altament especialitzades i localitzades fins i tot al territori de qui demana l'aplicació. En la meva opinió això és bo, ja que per una part abaratint els costs fa possible que es puguin fer altres projectes, però a més perquè s'està afavorint un treball de qualitat, no basat en la força bruta sinó en la capacitat de l'equip.

1 comentari, 0 trackbacks (URL) , Tags: Python Gestió de projectes


Batalletes de la professió

Escrit per Aaloy a 13 de December , 2008 a les 12:35 p.m.

He passat una estona rient pel post de James Carr anomenat Why must people degrade my profession. Pareix que aquestes situacions no són sols patrimoni dels informàtics patris, sinó que també companys de professió d'altres bandes també s'hi troben.

Potser l'article (el rant millor dit) ens fa gràcia perquè ens hi veim reflexats, però està clar que quan hom viu la situació no li fa gràcia.

Record que estan al càrrec del departament de suport de l'empresa un dels operadors va rebre una trucada, feia poc que s'havien començat a instal·lar impressores a color i algunes donaven problemes. Així que quan l'usuari va cridar i va dir que tenia problemes amb la impressora el primer que va dir el tècnic és:

(en castellà a l'original)

  • ¿Impresora de color?
  • Sí, claro, de color gris como las otras

Jo que l'escoltava em tirava pel terra, però a ell no li va fer gens de gràcia us ho assegur.

Hi ha una màxima que diu que no s'ha atribuir a la mala fe allò que es pot atribuir a l'estupidesa, i en soc un ferm partidari, però està clar que l'estupidesa a grans dosis pot ser desesperant. Ja sabeu: l'intel·ligència humana té un límit, l'estupidesa no.

Quan un es dedica a la gestió de projectes i a la programació les situacions són unes altres, però sovint també te dóna la sensació de que estan degradant la professió, bé per estupidesa, be per mala fe.

Curiosament el que sí me trobat és que aquestes situacions no es donen als projectes privats i sí als projectes d'assalariat.

En el primer cas la gent sol tenir més o manco clar el que vol, sap que la teva feina té un preu i que li cobraràs per allò que demani. S'escolten molt més quan els dius: "sí, això se pot fer, però serà car, te propòs que ho facis així i així i et sortirà més barat, tendrà més rendiment, etc.". Agraeixen la teva feina de consultoria i tu acabes satisfet per haver donat una solució al client, ja convertit en amic, que li estalviarà diners i que a més li permetrà tenir un sistema o aplicació de la qual tu també te'n sentiràs orgullós.

Perquè això és important. Per un bon professional, a més del sou hi ha l'amor propi d'haver fet una bona feina. Això no és patrimoni sols de la informàtica, he vist el mateix en picapedres, fontaners, sabaters, metges, ... Independentment de la feina són persones que tenen una cosa en comú: que estan orgullosos de la feina que fan i la volen fer el millor possible.

Pareix, o al manco així em passa a mi, que la cosa canvia quan qui comana la feina no s'hi juga res, i encara és pitjor si qui ho comana no és el mateix que ho ha de fer servir. Aquí les situacions que m'he arribat a trobar són directament de vinyeta de Dilbert. Si fa uns anys algú m'hagués dit que l'empresa posaria webs sense continguts i que no passaria res no m'ho hagués cregut i ja en duim dues d'aquestes.

Tècnicament n'estic orgullós: les webs són ràpides, escalen bé, s'indexen bé... Però com a professional no puc sentir-me còmode amb la situació, m'agradaria veure la feina acabada, poder dir "veis això ho hem fet nosaltres" i no quedar empegueït.

La situació és encara pitjor quan intentes explicar les diferència entre una web B2C i una web B2B, del perquè algunes coses que es fan a un B2B on controles qui es pot connectar, el creixement de les peticions, al cap i a la fi; no es poden aplicar a webs on no saps com s'utilitzaran, ni si demà sortiràs a l'Slashdot o al meneame, o senzillament faran servir els teus serveis moltes planes que a la seva vegada no saps el nombre de visites potencials que poden tenir. Això que hauria de ser molt clar per qualsevol que entén com funciona Internet sorprenentment no es considera ni es vol considerar.

Com que ningú s'hi juga res, ni tan sols el prestigi, la posició que adopta alguna gent és la de no deixar fer la feina, deixar que el temps passi i evitar que els projectes avancin. No sé si això es fa de manera conscient o inconscient, però es una dinàmica descoratjadora per la gent que ens consideram bons professionals, que ens sentim orgullosos de que els projectes surtin i vagin bé.

Permetre dins una empresa aquest tipus d'actituds i no fer-ne res, és per mi un exemple de degradació de la professió i potser fins i tot de l'empresa. Per mi és pitjor que el que explica Carr, ja que en el seus cas i com apunten els comentaris, el que vol l'usuari és algú que li pugui resoldre els problemes i acudeix a qui té més aprop que creu que en sap més que ell. En el segon cas la degradació és més greu, ja que potser no és tan visceral, però sí que toca més els fonaments de la professió i amb unes repercussions molt més profundes, tant econòmiques com de motivació de la gent.

2 comentaris, 0 trackbacks (URL) , Tags: Informàtica Gestió de projectes