Desarrollando mi primera Skill de Alexa | Día 1 de 2

Porque los programadores tenemos una forma peculiar de lidiar con nuestros problemas de motivación

Juan González
Diseñando para la Voz

--

En marzo de 2018 cumplí siete años de haber llegado a España — desde Venezuela — y hace algún tiempo ya que habría podido optar por la Nacionalidad Española. Los beneficios personales para mi son incontables, pero el hecho es que por una razón o por otra nunca termino de ponerme con ello.

A pesar de que realizar esta gestión es realmente importante para mi, siempre hay algo que se interpone en el camino. La mayoría de las veces es el trabajo, que me hace estar fuera del país con frecuencia y por largos períodos de tiempo. En otras ocasiones la razón no es tan buena. Es básica y común: la falta de motivación para comenzar con los requisitos previos, siendo uno de ellos el examen CCSE.

Éste es un examen sencillo, corto y de contenido increíblemente familiar para cualquier adulto de origen hispano. Si adicionalmente ese adulto hispano lleva casi una década integrado de lleno en el país en el cual opta por la nacionalidad, ya empezamos a entrar en la zona de lo inexcusable :-)

El tema es que presentarme al examen sin al menos estudiar el contenido básico no es factible para mi. No tengo intención de arriesgarme lo más mínimo a perder tiempo y dinero. Está claro que es necesario estudiar un poco antes de presentarse al examen. Y así de fácil, en ese limbo de inactividad pasan los años sin que la aguja se mueva un centímetro.

Pasan volando los primeros meses del año y nada realmente cambia. El “paciente” sigue estable, inmóvil, en estado de reposo. Por lo menos así fue hasta la segunda semana de Julio, cuando se alinearon los planetas y finalmente surge una oportunidad de estas que estimulan la parte correcta del cerebro.

Alexa llega a España oficialmente y una historia patrocinada de Amazon, en mi cuenta de Instagram, dice: “Si eres uno de los primeros 100 desarrolladores en publicar una Skill para Alexa España antes del 31 de Julio puedes ganar un Amazon Echo” o algo así.

Al momento de ver el anuncio en mi móvil no tengo ni idea de como desarrollar nada para el ecosistema Amazon, no lo he hecho nunca, pero la posibilidad de un cacharro “gratis” por programar “algo” es demasiado tentadora como para dejarla pasar.

Ahora era un tema básicamente de: ¿Y qué {&$!#%} puedo desarrollar en pocos días que sea útil, simple (porque no tengo ni idea), y merezca la pena el esfuerzo?

Es aquí donde la historia tiene un giro peculiar y la introducción del post cobra sentido. Realmente no me tomó mucho tiempo dar con el momento eureka, perdón ¡eureka!:

Que sea Alexa la que me entrene para el examen CCSE.

¡No se diga más! Así (con un robot guay) si es interesante estudiar.

Si comparamos el esfuerzo que conlleva el estudiar algunas preguntas — utilizando la infinidad de servicios ya disponibles en internet — con el esfuerzo que representa aprender a desarrollar Skills de Amazon para crear una aplicación que me ayude a estudiar, puede que la idea parezca una absoluta locura. Pero ya te digo yo que no lo es.

La lógica detrás del esfuerzo es básicamente:

  • Me voy a divertir bastante sin duda y la única inversión es la de mi tiempo. Hay que estar claros en algo, para mi el verano ideal es: “el ordenador + cacharro nuevo para tocar.”
  • Si me sirve a mi, probablemente le sea útil a otras personas que como yo deben cumplir con ese requisito (y que tengan Alexa en España; vale, el mercado es 0 pero no es que eso me haya detenido antes.)
  • El factor novedoso del nuevo medio — la voz— hará que el proceso de estudio sea más un juego que una tarea tediosa. Al menos inicialmente.
  • No anticipo que sea un reto técnico inalcanzable (me he equivocado más veces de las que he acertado con estas estimaciones.)
  • Lo más importante de todo es saber, como todo desarrollador sabe, que crear una rutina de software para cualquier problema te hace irremediablemente un conocedor del tópico y,
  • Mi apuesta es que al terminar el proyecto habré visto las preguntas y las respuestas tantas veces que estaré harto del tema y listo para presentar el examen inmediatamente.

¡Vamos a ello! ¿Por donde se empieza con esto?

El proceso de aprendizaje de cualquier tópico hoy en día esta bendecido, y a su vez maldito, por la abundancia de información disponible en internet. El peligro de pasar días leyendo cosas y viendo vídeos antes de “poner la primera piedra de la obra” es real y se ha cobrado innumerables víctimas.

Yo, que no soy ajeno a dicha aflicción, en un intento de evitarlo suelo ir inmediatamente a las fuentes confiables de todo tema: la web del fabricante, sus documentos oficiales y sus comunidades de desarrolladores.

Para este caso — mi primera Skill — me resultaron increíblemente útiles:

Debo confesar que a mi siempre me han gustado este tipo de proyectos express y cada vez que puedo asumir uno nuevo, me propongo acotar el tiempo que le voy a dedicar antes de empezar. Este detalle es clave.

Usualmente me reservo dos días para llevarlo acabo. Un día para aprender todo lo que pueda sobre el tema y el otro para realizar la implementación básica del proyecto. Las 48h (virtuales) convierten al proyecto en algo asumible y realista. Es básicamente un fin de semana; lo suficientemente largo como para dedicar una buena cantidad de horas al tema y a su vez lo suficientemente corto como para evitar la trampa del information overload.

Author/Copyright holder: SparkCBC . Copyright terms and license: CC BY-SA 2.0

Día 1: Estudio y análisis de la teoría

El primer día del proyecto lo he dedicado enteramente a estudiar los conceptos más importantes del tema. He consumido todo el contenido relevante que he podido encontrar y procesar en el tiempo estimado para la tarea.

Si tuviese que recomendar un único enlace para dar ese primer paso, sin duda me decantaría por la guía oficial de diseño para la voz de Amazon. En ella se abarcan los conceptos más esenciales del diseño de Skill en un nuevo paradigma de voz.

Web oficial de la guía de diseño para la voz de Amazon Alexa.

Este recurso es una combinación ideal entre material de lectura y vídeos de YouTube. De esta forma el proceso de aprendizaje resulta mucho más dinámico y entretenido. En la mezcla está su fortaleza.

Vídeo de la guía oficial: Como elegir un proyecto para la voz.

La guía de diseño para la voz de Amazon Alexa por sí sola no es suficiente, pero creo que es el lugar correcto par enfocar los primeros pasos. Elegir un proyecto adecuado para la voz y entender las reglas básicas de diseño es una parte muy importante del proceso.

Otro de los recursos interesantes que encontré fue sin duda Building Skills from Scratch. Es un curso condensado en 10 vídeos que demuestran como construir una Skill de principio a fin. Incluido el proceso final de certificación.

Vídeo del curso express: Building Skills from Scratch.

Con cada artículo leído o vídeo reproducido suelo a su vez tomar notas y aplicar todos los conceptos posibles al caso particular que espero desarrollar. De este modo evito tópicos que, por muy interesantes que puedan ser, no me van a llevar a avanzar en este proyecto. El tiempo es esencial en el formato express de dos días.

Algunas notas sobre los conceptos clave a la hora de diseñar para la voz.

El primer día es siempre una batalla contra la ansiedad de querer ver resultados. A lo largo de los años me he vuelto un poco más disciplinado a la hora de evitar la tentación de abrir el IDE y empezar a escribir cosas. Sigue siendo una batalla interna, pero es precisamente es ese formato de tiempo limitado el que me ayuda a enfocarme en hacer el trabajo más “aburrido” inicialmente, y me facilita el poder ejecutar de una manera más eficiente en la segunda jornada.

Después de dar un primer repaso a la teoría, está claro que parte importante del proceso inicial de diseño de la Skill pasa por crear un script o borrador de la interacción que el usuario tendrá con Alexa. Tanto para el caso más simple como para los casos particulares.

En el vídeo tutorial de YouTube, el presentador recomienda utilizar la herramienta de Amazon Story Writer, pero mi experiencia utilizando la aplicación para un script en castellano fue muy pobre. Todo lo que tiene que ver con acentos y caracteres especiales resulta un poco más complicado de lo que debería ser. En este caso he decidido probar Highland 2 en su versión gratuita para Mac OS X y la verdad es que ha sido muy divertida de utilizar.

Borrador inicial de mi Modelo de Interacción con Highland 2.

El borrador inicial de la interacción terminó siendo en mi caso más una guía para el proceso de diseño que una copia fiel y exacta de los textos. Durante el proceso de desarrollo muchas cosas cambiaron y el borrador en sí ya no se encuentra sincronizado con el “Modelo de Interacción” de mi Skill.

En un proyecto de mayor envergadura seguramente merecerá le pena volver al borrador y actualizar el contenido. Para este proyecto express no me he tomado el tiempo que requiere mantenerlo todo sincronizado.

Para el flujo de la Skill evalué el utilizar alguna herramienta informática que me permitiese modificar y mejorar el esquema en el tiempo. Me gusta iniciar siempre con papel y lápiz pero también suelo investigar sobre nuevas apps disponibles. No solo porque me ayudan a desarrollar el producto sino también porque me hacen la experiencia más divertida.

Sin invertir demasiado tiempo en ello estuve revisando algunas opciones. Storyline apareció como una de las recomendadas. Luego de dar algunos primeros pasos sin obtener lo que buscaba, decidí continuar sin la herramienta y dedicar tiempo más adelante a este tema. Mi búsqueda de una herramienta para el diagrama de flujo continúa abierta.

Storyline es una herramienta con mucho potencial pero aún limitada en aspectos importantes.

A estas alturas del proceso ya estamos listos para pasar de nuestro script a la implementación de nuestra interfaz de usuario para voz (Voice User Interface). Todos los detalles en la segunda parte de este tutorial.

Diseñando para la Voz es una iniciativa personal de Juan González Ponce que trae contenido relacionado al mundo del desarrollo de Alexa Skills para el servicio de Amazon, en Castellano, con la finalidad de compartir ideas y lecciones aprendidas en el camino.

--

--