Quan parlem de software a mida, sovint ens preguntem si realment val la pena optar per aquesta opció en lloc d’utilitzar solucions ja existents. En aquest article, explorarem què implica el desenvolupament de software a mida, quins passos s’han de seguir per dur-lo a terme de manera eficient i en quins casos és una inversió justificada. A més, veurem situacions concretes en què el software a mida és la millor opció i altres en què és preferible adaptar-se a eines ja disponibles. L’objectiu és entendre quan aquesta inversió es pot amortitzar i generar valor real. La producció de software professional implica:
- Extreure tots els requeriments i posar-los per escrit, per tal que quedi perfectament clar què es vol resoldre. D'on venim (system-as-is) i a on volem arribar (system-to-be).
- Analitzar i investigar si ja està fet o si hi ha quelcom molt semblant fet que no és ben bé el que es vol, però que resoldria gran part del problema. Potser val la pena fer-lo servir de base i adaptar-ho? Es pot amb un cost raonable?
- Proposar una o diverses opcions a l'usuari client. Cadascuna d'elles ha d'estar ben especificada, amb croquis i/o amb un document que expliqui les funcionalitats que tindrà.
- Dissenyar la solució triada, és a dir, decidir:
- quins sistemes faran la feina i permetran que estigui accessible. Parlem de servidors, de sistemes operatius, de dispositius IOT, d'altres softwares ja fets amb els quals es comunicarà el nostre...
- en quins llenguatges es faran les parts que s'han de fer a mida, i amb quines pautes i estructura d'arbre de directoris es programarà.
- com representar la informació d'una manera estructurada a bases de dades relacionals, no relacionals i/o a fitxers, treballant primer amb exemples realistes o de vegades amb dades reals.
- Desenvolupar la solució triada, tot fent iteracions (sprints).
-
- definir UAT (User Acceptance Test) del bloc actual: què és el que ha de fer?
- desenvolupar el bloc (sprint),
- desplegar internament,
- provar internament (depurar el codi fins que passi UAT) i aquí poden agilitzar els tests unitaris,
- actualitzar documentació tècnica,
- entregar al client mitjançant un desplegament de staging i la part de la documentació tècnica orientada a usuari que descrigui les funcionalitats implementades,
- refinar requeriments o afegir-ne,
- pactar següent sprint amb el client i tornar al punt 1.
- Per acabar*:
-
- Desplegar a preproducció, amb dades reals. UAT amb client per confirmar i si no refinar fins UAT llesta.
- Desplegar a producció, posar-ho en marxa, UAT a producció.
(*) "per acabar": Un software mai està realment acabat. Sempre es poden fer noves versions que ampliïn la seva funcionalitat, però l’important és tenir un MVP (Producte Mínim Viable) operatiu que generi valor des del primer moment.
Quan val la pena el software a mida
El software a mida val la pena quan la inversió es pot amortitzar. Si s’ha desenvolupat correctament i amb un cost raonable, l’esforç i els recursos invertits es recuperaran en forma de temps estalviat, eficiència i reducció d’errors.
Exemple d'escenari que requereix software a mida
Un gestor cada setmana genera molts pagaments petits a través del seu banc a partir de tickets que té de diversos proveïdors. S'hi està entre 10 i 12 hores setmanals fent aquesta gestió. De fet, ni les ha comptat i no vol saber-ho, però el dia que les compti se n'adonarà que s'està un 30% del seu temps fent això. Un software a mida reduiria aquest temps a 2 hores setmanals i a més minimitzaria errors.
El software faria el següent:
- a partir dels tickets escanejats, generaria fitxers amb format específic que es podrien ficar a la pàgina del banc corresponent
Per tant, se seguiria fent igualment a mà aquesta part:
- escanejar els tickets i pujar els fitxers al banc (2 hores setmanals en comptes de les 10 o 12 anteriors)
Al cap d'un any, si comptem 40 setmanes operatives, el nostre gestor ha estalviat més de 300 hores del seu temps, que evidentment valen més que el preu del software, el qual ha costat entre 1000 i 2000 euros. A partir d'allà, cada any requerirà potser petites millores (evolutius) i un mínim manteniment anual perquè segueixi funcionant, que no hauria de passar en aquest cas d'uns centenars d'euros.
Tot i així, no cal fer-ho tot
No cal reinventar la roda. Si una funcionalitat del software que hem comentat és extreure el text a partir del ticket escanejat i ja hi ha un extractor de text fet, no cal fer-lo. Es faria servir aquest extractor (es diu OCR).
Cal esperar al moment adequat
Si encara no està clar el procés que es vol automatitzar, si encara li falta rodatge, és millor esperar a tenir clar exactament què és el que hauria de fer el software abans de fer quelcom que no sigui exactament el que cal.
De vegades no és bon moment perquè, com hem dit, requereix temps i esforç a part de diners, i potser no és el moment ideal per a fer aquesta inversió.
Quan no val la pena fer software a mida
Si el cost de desenvolupament és massa elevat en comparació amb l’alternativa d’usar un producte ja existent, és millor optar per la segona opció. El que quedi pendent de resoldre es pot gestionar amb Excel, correus electrònics i comunicació entre persones.
Exemple d'escenari a on no cal software a mida
Una oficina de patents requereix mantenir i fer seguiment de tota la documentació que genera, i la tipologia de documentació és concreta i regulada per organitzacions europees i espanyoles. Hi ha productes software que estan sempre al dia de tota la legislació i mantenen tota la casuística. Suporten tots els fluxes que calguin i a més es retroalimenten de l'experiència de moltes oficines de patents. Hi ha un equip d'enginyers treballant tot el dia per mantenir cada producte. En aquest cas és millor fer servir i anar pagant llicència recurrent d'algun d'aquests productes.
Les integracions com a solució intermèdia
Quan un producte no cobreix totes les necessitats, però un altre sí ho fa, és possible integrar-los. Per exemple, si el sistema actual no genera factures però disposem d’una altra eina que sí, es pot implementar un automatisme (integració) per generar-les automàticament, ampliant així la funcionalitat sense modificar el producte principal.
Les integracions són, en essència, programari a mida. Permeten automatitzar processos i facilitar que diferents eines ja existents treballin conjuntament, evitant així la necessitat de desenvolupar un nou programari des de zero. En un altre article parlarem més a fons sobre aquest tema.