L’art de programar

Quan desenvolupem codi moltes vegades ens centrem en cobrir els requeriments que se’ns estan demanant, en el temps requerit. Ens basem en la potència dels ordinadors actuals, en la interconnexió pseudomàgica dels serveis o de terceres funcions que usem com caixes negres, sense saber com funcionen, apliquem patrons i fem proves, i si funciona, voilà, ja està fet i a per les següent coses.

Tenim mètriques, proves d’unitat, uat’s, diagrames i casos d’ús per preveure, veure, justificar i informar del que fem i com funciona, tenim tota una metodologia científica i tècnica al nostre abast.

Però desenvolupar codi no és només això: tots sabem reconèixer una documentació ben feta, aprenem i gaudim quan veiem un codi elegant, ben documentat, indentat i precís, i ens desesperem quan trobem instruccions incomprensibles, repetitives i sense documentació que donen voltes i més voltes, complicant innecessàriament el producte (de vegades això reflecteix un mal treball, de vegades es dissimula el no saber fer, la incomprensió d’allò que es demana o de l’eina que es fa servir amb un codi extremadament complicat, com en un mal discurs d’un polític).

Així, programar és també copsar el problema o la solució que se’ns requereix, i treballar no només per força bruta si no entenent tot l’entorn que rodejarà al nostre producte: interaccions, sessions, peticions concurrents o voluminosos treballs batch. Hi ha part d’art, d’aprenentatge en la programació, hi ha la part d’elegància que rodeja a un bon codi, la robustesa d’una api ben definida i la documentació, en línia i final, comprensible per tothom, quan s’hagi perdut l’entorn on va sorgir la necessitat d’aquell programa.

Oh, sí, és clar: al final un programa és un programa.

Però internament és una seqüència lògica d’instruccions per resoldre un problema, i aquesta solució pot ser més o menys elegant, pot no només donar solució a una finalitat, si no ensenyar en si a com fer les coses. Heus ací la diferència entre un nyap temporal que faci una funció i en la construcció d’una solució duradora i elegant: en com apliquem aquesta lògica.

Nou? O millor millor?

Finally, Sophos reported that Microsoft and FBI have taken down over 1400 botnets by disabling the software that creates them. Now, if they can just disable the people who write the software in the first place, the world will be a happier place.

Nata’s Corner a la newsletter d’ExpertsExchange de 19 de juny de 2013

Tot i coincidir amb la frase final, no m’acaba de quedar clar si quan parla de la gent que escriu software es refereix als que escriuen codi perquè el teu ordinador quedi zombie dins d’una botnet o als de les companyies (programadors o responsables, tant és) que permeten que això passi…

Com ella mateixa diu, perquè s’entesten en fer coses noves? Perquè no s’entesten en fer coses millors, que funcionin més bé? (i aquí podriem parlar també de l’encaparrament d’ubuntu amb Unity i una millor experiència d’usuari, si voleu).

Qualitat i conservació de les dades

És suficient el tractament i les tècniques de la ciència informàtica per garantir la qualitat i la perdurabilitat de les dades que emmagatzemem?

Històricament s’han desenvolupat teories i mecanismes per garantir la certesa i la exactitud de les dades recollides, la no repetició de les mateixes, s’han estudiat les estructures més òptimes d’emmagatzematge per cada cas i la millor manera de reflectir diferents tipus d’informació. Les formes normals de les bases de dades, els arbres B, les bases de dades relacionals o orientades a objectes o les més modernes distribuïdes, l’estudi de les relacions entre les dades, etc., ja fa molts anys que està inventat i aplicat, cada vegada més refinat i més optimitzat.

A mesura que els volums de dades han anat creixent, s’han anat desenvolupant paral·lelament noves tècniques i motors de cerca, nous índexs i millors automatismes per millorar els temps de resposta, s’han implementat mecanismes per garantir la no pèrdua de les dades (backups, redundàncies, sistemes distribuïts, replicacions de sistemes, miralls on-line) i el ràpid accés a les mateixes, s’ha guanyat en flexibilitat d’accés i ens hem tret de sobre (fins a cert punt) la tirania dels bits, ens permetem el luxe de poder dissenyar bases de dades sense haver-nos de preocupar (en excés) de com s’emmagatzemaran.

Es dissenyen sistemes que capten molta informació per la gestió de determinats processos i sistemes, i que automatitzen cada vegada més feines repetitives i faciliten la optimització de la resta de tasques.

Però és suficient tot això? Tot el tractament de les dades del que parlo dalt és eminentment sintàctic: les dades son correctes a nivell de format, i s’emmagatzema allò que el sistema necessita per als seus processos actuals, si… però es dissenyen encara els sistemes pensant de manera aïllada, des d’un punt de vista eminentment tècnic i utilitari de la informació, però no es pensa (més enllà d’algunes metadades de registre) en complimentar i enriquir la informació amb metadades que donin informació semàntica sobre l’entorn d’aquell conjunt, de manera que facilitin la conservació en un futur de la mateixes dades, o millor dit, no tant la conservació com la comprensió d’aquelles dades i per tant facilitin la integració amb d’altres, o la generació d’encara més informació a partir d’aquestes dades, ja siguin documents, estadístiques o resultats estadístics a partir de mineria de dades. Exemples podrien ser registres de modificacions, generacions d’històrics, signatura de la informació, no-repetició de les dades ja existents en altres llocs…

En resum, cal anar una mica més enllà de la gestió pura i dura de la informació actual: què fem quan una aplicació es migra? Què passa amb les dades velles? Tenen alguna validesa, més enllà del que es passa al següent aplicatiu o versió? Els documentalistes arxivers/gestors de documents ja fa temps que parlen d’aquestes qüestions i que les apliquen a la qualitat de les dades com a documents, i de la preservació i la meta-informació que els mateixos ens poden donar en un futur (la preservació dels documents a llarg termini en entorns digitals és un problema complex)

Cal preguntar-se aleshores si aquests mateixos conceptes no s’haurien d’aplicar també al disseny de les bases de dades de suport a les aplicacions, pensar des d’un primer moment ja en els resultats posteriors i les explotacions que es faran (de ben segur) d’aquelles dades, i per tant no guardar només les dades estrictament necessàries per l’aplicació en aquell moment ans també metadades, informació de registres, disposar-les de manera que es faciliti el creuament posterior amb d’altres dades o es facilitin estudis històrics evolutius i que es garanteixi també la preservació de les dades a llarg termini d’una manera no estrictament tècnica, sinó també semàntica: de què ens serviria tenir tabletes en cuneïforme si no sabem desxifrar-les? de què ens serveix saber llatí si no entenem la societat on es parlava? De la mateixa manera, de què ens serviria tenir conjunts de dades dels quals no sabríem com han evolucionat perquè guarden només una instantània de la informació, no l’evolució històrica, per exemple?

Aquest, a més, és un problema diferent del fet de cercar en quantitats ingents d’informació (la tan actual big data, abans mineria de dades): cercar dades, creuar-les i extreure’n nous resultats, generar nova informació, és important, és clar. Però per tal que la informació resultant d’aquestes operacions tingui qualitat, la informació original, la que nosaltres estem deixant en aquest moment, també ha de tenir-la, el que vol dir tenir en compte alguns dels punts esmentats dalt.

Això, a més, implica un canvi en la cultura de treball de les organitzacions que treballen amb la informació com a principal actiu o eina de gestió:

  • implica crear equips multidisciplinaris en la creació inicial de les bases de dades: informàtics, documentalistes, el propi gestor tradicional de la informació
  • implica que tothom es faci seus els projectes i entengui el que es demana i el que es vol treballar
  • implica una visió no tancada en les pròpies necessitats del moment si no en pensar a llarg termini: emmagatzematge, reserva, utilitat
  • implica conèixer altres sistemes d’informació que treballin amb informació relacionada per veure si els podem enriquir o ens poden aportar quelcom

En definitiva, pensar en les dades de manera no només sintàctica sino també semàntica i de conservació és el camí per garantir una bona qualitat de les mateixes ja en origen i facilitar enormement tasques posteriors de neteja i enriquiment, conservació de documents i/o conjunts autocontinguts i robustos, i per tant en la obertura al públic de dades de més qualitat, ara que s’obre el camí de l’open data i la transparència.

Accessibilitat, usabilitat

De la mateixa manera que a la web hi ha unes pautes d’accessibilitat, no es podrien definir algunes pautes d’usabilitat o, encara més, intel·ligibilitat?

De veritat, és que hi ha algunes webs on no hi ha manera de trobar res, sigui per què està amagat, o perquè primer s’ha de desxifrar el que diu. I sí, tenen la AA d’accessibilitat, com marquen algunes normatives, però s’han limitat a passar algun validar del W3C i poca cosa més. Les parts d’ús intuïtiu i senzill i informació perceptible no les han llegides. I això és nota, i molt de vegades.

Així que: o els que aproven aquestes pàgines han de signar que les han provades (amb efectes secundaris negatius per als seus sous en cas d’evidències… evidents), o que defineixin algun estàndard d’usabilitat i comprensió d’obligat compliment (així com a mínim algú hi haurà de pensar i els altres només aplicar, com màquines, aquelles directrius, però per algun lloc es comença).

Tablets i la fi del bricoleur

Els tablets han arribat de nou, i aquesta vegada per quedar-se: l’explosió inicial de l’ipad ha donat peu a un degoteig de dispositius similars d’altres fabricants, que cada vegada aposten més per ells (el CES n’ha anat plè, aquest any).

Un dispositiu que fa uns anys no va acabar de quallar, per manca de maduresa tecnològica, i que inicialment no sabiem ben bé quina mena de necessitats venia a cobrir, sembla que acabarà arraconant tant a netbooks com als lectors especialitzats de tinta electrònica, els uns per la seva més gran facilitat d’ús i comoditat, i als altres per la seva major capacitat i possibilitats… poc a poc ha anat trobant el seu forat, i fins i tot creant noves necessitats, obrint nous mercats.

Sembla el dispositiu ideal pels usuaris per facilitat d’ús, comoditat, possibilitats, connectivitat, potència; i també pels fabricants: obre una nova via de negoci, nous grups d’usuaris abans impensables s’hi apropen, es generalitza el seu ús i per tant la seva demanda, connectivitat per banda ampla (més negoci per operadores), i fins i tot es creen nous mercats d’aplicacions i nous models de negoci per desenvolupadors i creadors de continguts (appstores diverses), permet l’ampliació de suscriptors de negocis del món editorial que segons com semblaven tocats amb això de la internet…

Però son, en la seva majoria, dispositius tancats, controlats, no programables. La generalització dels tablets suposa també la generalització d’una informàtica de gran consum, d’una xarxa d’ordinadors clients del núvol, amb usuaris potser propietaris de les seves dades, però amb poc control sobre elles: és l’inici del final de la era de la informàtica bricoleur.

Tothom, amb smartphones i tablets, podrà estar connectat tothora. Però gairebé tothom estarà també connectat via xarxes socials centralitzades, deslocalitzades i fora del seu control, feliços usuaris que intercanviaran missatges; perfils, xarxes i preferències traçables per anunciants, consumidors de fantàstiques aplicacions interactives adaptades al nou mitjà produides per alguns usuaris i petits grups independents, si, però sobretot per grans grups de comunicació (quants grans diaris no tenen ja la seva aplicació per ipad, per exemple?).

Si abans l’ordinador semblava que havia de ser l’element central de comunicacions de la casa, ara aquest es disgrega: es passarà d’una visió d’un element únic i autònom (l’ordinador personal) -va existir mai, a gran escala, aquesta visió?- capaç de fer de tot, però a on havies d’anar, seure al davant a un conjunt d’aparells repartits arreu, sempre connectats i encesos, de ràpid consum, i personals, estrictament personals. On abans hi havia un aparell potent, multifuncional i programable per l’usuari, autònom, ara hi haurà un conjunt d’aparells dedicats, de fàcil ús, aparentment molt potents, però també molt més fàcilment controlables per part del fabricant (que vendrà més aparells i podrà controlar més el que s’hi instal·li, jailbreaks a banda).

Seguirà havent-hi gent que usarà l’ordinador, segur, com fins ara. Però hi haurà molts que es substituiran per telèfons, tablets i cònsoles. El preu de la popularització, sembla.