Com obtenim un producte/servei programari “innovador”?
Definició pràctica sobre estratègies per a la innovació en la producció/operacions programari
En la indústria del programari, existeixen nous enfocaments (“low code” i “no code”)[1][2] i eines (per ex. Appinventor [3], Budibase [4], WebRatio [5], etc.) que permeten construir programari amb pocs coneixements tecnològics, així com eines basades en IA que generen codi de manera automàtica (GitHub copilot [6] o OpenAI [7] basades en GPT3). Si en els pròxims anys la capacitat de construir i explotar productes programari augmenta, les empreses més competitives seran aquelles que tinguin una major capacitat en explorar o descobrir noves innovacions en forma de productes o serveis. Per a llavors serà necessari entendre què implica “innovar” i quina és l’estratègia més eficient i eficaç per a aconseguir-ho. Sobre innovació, existeix una gran varietat de models de referència i estàndards en la literatura (Manual d’Oslo i Frascati, Technology Readiness Levels, Art.35 TRLIS, UNEIX 166000:2014, ISO 56002:2019, etc). No obstant això, com podrà comprovar el lector per algun dels treballs de tesis de Manuel Giménez Medina [8], és un procés complex que a pesar que ha estat àmpliament estudiat des de diferents perspectives, sembla no existir encara consens sobre una gran majoria de conceptes. A continuació, veurem breument una definició pràctica del concepte d’innovació (no exempta de consens), així com algunes de les estratègies existents i àmpliament conegudes, que permeten promoure la innovació en programari.
Innovació com a avantatge competitiu
De manera pràctica, la innovació suposa que aquest procés sistemàtic del qual venim parlant, ha de tenir com a resultat algun tipus d’avantatge competitiu. L’avantatge competitiu ha de ser única i sostenible a llarg termini. Una llista de control que podríem aplicar en els nostres projectes podria ser la següent:
- De quina mena d’innovació es tracta? Existeixen molts tipus d’innovació, els nostres projectes podria tenir implicacions en el model de negoci, en el producte (bé o servei) i fins i tot en el propi processo programari. Qualsevol aspecte que suposi un avantatge respecte a les empreses de la competència Quin és el tipus d’innovació del teu projecte?
- Quin és l’avantatge competitiu de la mena d’innovació? Time to market, reducció costos, major qualitat, etc. Ens preguntem sobre quins aspectes ens ofereixen avantatge Quin avantatge ofereix la teva innovació?
- Es tracta d’una “innovació” única? A quin nivell, Objectiva o Subjectiva? D’una banda, l’avantatge obtingut podria ser “Objectiva”, que implicaria que s’ha obtingut algun tipus de novetat o millora substancial a nivell internacional (seria única). En la definició del ministeri, això seria bàsicament un projecte d’I+D. D’altra banda, l’avantatge obtingut podia ser “Subjectiva” que implicaria que es tracta d’una novetat o millora substancial però que no és única, podrien disposar d’ella altres empreses de la competència. En la definició del ministeri això suposaria una “Innovació tecnològica (com comentàvem, podria ser confús aquest últim concepte d’innovació). L’avantatge obtingut en el teu projecte és única?
- És sostenible a llarg termini? Perquè? Ens preguntem si està Protegida (per ex. palès), és difícil de copiar i imitar (per ex. requereix coneixements i uns costos excessivament elevats). L’avantatge obtingut en el teu projecte està protegida, és difícil de copiar i imitar per uns altres?
Descobriment/Recerca
Existeixen estratègies de Descobriment/Recerca àmpliament conegudes que podem aplicar en les nostres activitats generals d’I+D per a detectar hipotètics avantatges (que hauran de ser validades). A continuació s’enumeren algunes d’elles, s’inclouen referències i es comenten només alguns aspectes que no s’esmenten en la literatura i que ens poden ajudar a comprendre millor aquestes estratègies així com la seva relació amb el concepte d’innovació.
Design Thinking, Design Sprint
A continuació, realitzarem una breu comparativa entre el procés Design Thinking i la metodologia Design Sprint [13] (inspirada, entre altres estratègies, en Design Thinking). Aquesta comparació ens permetrà comprendre millor què aporten totes dues estratègies. Per a més informació, es recomana la lectura de les següents referències [9][10].
Design Thinking és un procés àmpliament conegut, defineix etapes que (mitjançant l’aplicació de pràctiques determinades) ens permeten comprendre el problema (entendre el context, empatizar amb els usuaris, detectar els seus problemes i necessitats, entendre quines activitats realitzen, quins artefactes, com s’utilitzen, etc.) i definir-lo (el problema és complex, no podem abordar tot i hem de decidir on posem el focus). Tot l’anterior, com s’observa en la figura de “Discovery”, permet augmentar la informació sobre el domini del problema i fitar-lo. En la metodologia Design Sprint, aquestes dues etapes (“Empathize” i “Defineix”) es defineix en una sola denominada “Understand”. D’altra banda, una vegada hem fitat el problema, el següent és dur a terme un procés de generació d’idees per a resoldre el problema així com una activitat de presa de decisions per a decidir quin d’aquestes idees formaran part de la solució final. Es tracta novament d’una activitat que permet augmentar la informació i reduir-la (en aquest cas, sobre el domini de la solució). En “Design Sprint”, el procés de generació d’idees es duu a terme en l’etapa “Sketch” i la presa de decisions en “Decideix”. En Design Thinking, totes dues activitats es duen a terme en una sola denominada “Idea”. Finalment, totes dues estratègies coincideixen en l’elaboració del prototip i la validació d’aquest.
SAPIENS (de Ferràn Adrià)
SAPIENS[11] és una estratègia que permet dur a terme una major i detallada comprensió del problema a partir de l’aplicació d’un conjunt de mètodes que estan relacionats i que permeten analitzar el problema des de diferents perspectives. Aquesta estratègia permet que connectem la informació del domini del problema i que, per tant, puguem generar nous coneixements que, al seu torn, poden traduir-se en noves idees. Els mètodes són:
- mètode lèxic, semàntic i conceptual: Qüestionar els termes vinculats a fi d’estudi i les seves definicions, elaboració d’un lèxic propi que permeti definir amb precisió l’objecte d’estudi
- mètode comparatiu: Establir paral·lelismes amb altres objectes d’estudi, en el seu conjunt o de manera parcial, analitzant les seves semblances i diferències, ajuda a millorar el diccionari i la classificació.
- mètode classificatori: Qüestionar les classificacions de conceptes vinculades amb l’objecte d’estudi, ampliació del llistat de termes i definicions per a crear una classificació pròpia.
- mètode sistèmic: Situar l’objecte d’estudi en el context i analitzar el sistema.
- mètode històric: Estudiar l’origen i l’evolució de l’objecte d’estudi, i es concreta en una cronologia de fites i èpoques.
Com s’esmenta anteriorment, tots els mètodes anteriors estan relacionats d’alguna forma. És per això que les idees semblen emergir com a conseqüència de les “connexions” realitzades com a resultat d’aplicar els mètodes anteriors. Per tant, no es tractaria d’una estratègia com Design Thinking o Design Sprint, de fet, els autors semblen haver combinat SAPIENS amb Design Thinking o Design Sprint. Més aviat, encaixaria en l’etapa de “Understand” i “Idea” (encara que en aquesta etapa no de manera explícita, sinó més aviat, de manera implícita).
Design Science (metodologia de recerca per a enginyeria)
Finalment, la ciència del disseny [12] és una estratègia orientada a la recerca en enginyeria que persegueix el desenvolupament i la validació de coneixements prescriptius. Segueixen un procés molt recolzat en tècniques i pràctiques de recerca que permeten comprendre detalladament i validar tant el domini del problema com el de la solució (enquestes, casos d’estudis i experiments). És per això que és possible centrar-se en només algunes etapes del procés com per exemple només en el domini del problema, només en el domino de la nova solució que estem proposant o fins i tot a comparar solucions que ja existeixen (per ex. per a comparar-les i inferir algun tipus de nou coneixement). Segueix més aviat un enfocament Build2Learn, és a dir, l’aprenentatge es duu a terme una vegada construït, demostrat i avaluat l’artefacte. Per a més informació, es recomana el seminari d’Óscar Díaz publicat en la web de SISTEDES [11].
Conclusions
Finalment, finalitzarem amb les conclusions més rellevants:
- Un concepte de definició pràctica de “Innovació” seria el de considerar-lo com un avantatge competitiu com a resultat d’un procés d’I+D: Aquest concepte implicaria orientar els processos de programari (recerca/descobriment, desenvolupament, operacions) cap a un “Avantatge competitiu” que sigui “única”, “sostenible”, “protegida”, “difícil de copiar” i “imitar”
- Descobriment / Recerca (coneixement):
- Les estratègies com design thinking o design sprint (i derivades), ens permeten (1) Comprendre i definir el problema, (2) explorar i prendre decisions sobre la solució (3) construir i validar la solució.
- El conjunt de mètodes de SAPIENS ens permeten comprendre millor el problema i que les idees emergeixin com a conseqüència de la connexió que es duu a terme del coneixement. Ens permeten: (1) Definir conceptualment l’objecte d’estudi, (2) Definir el sistema de l’objecte d’estudi, (3) Definir l’evolució històrica del sistema i l’objecte d’estudi i (4) Classificar i (5) comparar l’objecte d’estudi amb altres similars.
- Per a la recerca en enginyeria, existeixen a més estratègies com Design Science. Aplica tècniques i pràctiques de recerca que permeten comprendre detalladament i validar tant el domini del problema com el de la solució (enquestes, casos d’estudis i experiments). És possible centrar-se en només algunes etapes del procés.
REFERENCIES
[1]. El País, “Low Code cómo aparender a programar sin saber programar”, accesible online: https://elpais.com/tecnologia/2022-05-06/low-code-como-aprender-a-programar-sin-saber-programar.html, último acceso: Julio 2022
[2]. ITUSER, ”Estos son los principales beneficios del lowcode en el desarrollo de aplicaciones”, accesible online: https://www.ituser.es/actualidad/2022/05/estos-son-los-principales-beneficios-del-lowcode-en-el-desarrollo-de-aplicaciones, último acceso: Julio 2022
[3]. MIT Appinventor, accesible online: https://appinventor.mit.edu, ultimo acceso: Julio 2022
[4]. BuidBase, accesible online: https://budibase.com, ultimo acceso: Julio 2022
[5]. WebRatio, accessible online: https://www.webratio.com/site/content/es/plataforma-de-desarrollo, ultimo acceso: Julio 2022
[6]. GitHub copilot, accesible online: https://github.com/features/copilot, ultimo acceso: Julio 2022
[7]. OpenAI examples, accesible online: https://beta.openai.com/examples/, útlimo acceso: Julio 2022
[8]. Giménez Medina Manuel, “Towards an agile innovation capability maturity framework to enhance investments on ICT organizations”, CAiSE-DC 2020: 32nd International Conference on Advanced Information Systems Engineering (2020), pp. 21-31. ISBN/ISSN: 1613-0073. https://idus.us.es/handle/11441/107426
[9]. The Design Sprint, How smart teams start big projects, accessible online: https://www.thesprintbook.com/, ultimo acceso: Julio 2022
[10]. IDEA Design Thinking, accessible online: https://designthinking.ideo.com/, ultimo acceso: Julio 2022
[11]. Metodología Sapiens, conectando conocimiento, accesible online: https://metodologiasapiens.com/, último acceso: Julio 2022
[12]. Óscar Díaz García, La Ciencia del Diseño: del desarrollo de software a la investigación en software. Accesible online: https://biblioteca.sistedes.es/seminario/seminarios-sistedes/la-ciencia-del-diseno-del-desarrollo-de-software-a-la-investigacion-en-software/, último acceso: Julio 2022
[13]. Jake Knapp, J. Z. (15 de 12 de 2016). Sprint: How to Solve Big Problems and Test New Ideas in Just Five Days. First Simon & Schuster. ISBN 978-1-5011-2174-6. Obtenido de http://www.gv.com/sprint/
[14]. Johannesson, P., & Perjon, E. (2014). An Introduction to Design Science. Springer International Publishing, DOI: 10.1007/978-3-319-10632-8