La edición 2019 de la Mobiconf ha sido sin duda espectacular. Organizada en Cracovia, la conferencia ha atraído a un montón de expertos del mundo del desarrollo de aplicaciones móviles, desde desarrolladores y diseñadores hasta managers. Durante dos días hemos podido asistir a varias de las charlas.

Mobiconf 2019: Primer Día

Keynote

La introducción al evento fue realizada por Sommer Panage, desarrolladora iOS que recientemente volvió a la ingeniería de software después de una experiencia fuera del área.

Nos contó que, por diversos motivos, tras varios años trabajando en Twitter sintió la necesidad de un cambio, el trabajo no le entusiasmaba como antes y necesitaba hacer algo distinto, algo que le mantuviera más activa. Así que tomo la decisión de dejar su cargo en Twitter, y durante el siguiente año se dedicó a la gimnasia acrobática, algo sin duda inusual. Nos contó toda su experiencia, incluyendo sus lesiones a resultas de su incansable entrenamiento, hasta conseguir su objetivo de participar en un tour circense.

Tras varios meses en el tour y desempeñando labores también de management, un año mas tarde volvió a trabajar como desarrolladora tecnológica.

Piotr Ślesarew (@SliskiCode) – Bottom Navigation Headache

La primera charla tech del día a la que pudimos asistir fue a cargo de Piotr Ślesarew, ingeniero Android de Babylon Health. Su charla se centró en las dificultades derivadas de gestionar la navegación entre pantallas en Android, cuando tenemos múltiples jerarquías y estas se mezclan aún más al incorporar elementos como la bottom navigation view que se puede apreciar en aplicaciones tan populares como Instagram, Spotify o Youtube.

Tras sugerir una breve encuesta de como organizábamos nuestras pantallas entre activities y fragments aplicando una solución de una main o root activity con múltiples herencias de fragments, nos introdujo como usaba navigation component para organizar su flujo entre pantallas para lidiar con situaciones problemáticas de la navegación entre fragments cómo transactions, transitions o deeplinks.

Sin duda, una charla bastante didáctica para aquellos que no habían usado navigation component anteriormente y en la que se pudo ver el potencial de la herramienta, gracias a la cual podemos realizar menos lógica en el código de nuestras vistas y conseguir unos resultados excelentes.

Antoine Van der Lee (@twannl) – Building an app with Combine

En una sucesión de dos charlas consecutivas a modo de workshop, Antoine dio una introducción al uso de Combine, el nuevo framework de Apple para lidiar con operaciones asíncronas. En su sesión de live coding nos enseñó algunos de los elementos del nuevo framework, realizando algunas demostraciones dónde actualizaba elementos de la vista. En el último ejemplo mostró el potencial del mismo haciendo una api request a la lista de repositorios de Github para obtener un listado con la categoría de Swift y actualizar la vista dinámicamente.

El repositorio dónde podéis probar Combine lo podéis encontrar aquí

Fernando Cejas (@fernando_cejas) – Congratulations! Legacy code GURU level unlocked!

Fernando Cejas es uno de los desarrolladores más reconocidos en la comunidad Android debido tanto a sus avances aportados en la arquitectura como su actividad en la comunidad de desarrolladores.

En esta ponencia tuvimos el placer de tener una charla más técnica. En ella nos habló de la importancia de analizar nuestro código constantemente para poder crear las mejores estrategias de cara a ese próximo refactor de nuestras clases.

La charla se inició basándose en la filosofía de que nuestro software es terrible, en el sentido de que siempre está en constante cambio y siempre creemos que se puede mejorar, y es un hecho que debemos aceptar. Esta sensación se origina de manera profunda cuando tenemos código sin testear, aplicamos anti-patrones o hay un código difícil de cambiar; en resumen, un código que viola los principios de diseño.

Explicó diferentes técnicas para analizar nuestro código y detectar estos errores, empezando por primeros pasos como analizar código estático para detectar número de bugs, code coverage y número de reglas violadas con la introducción de una herramienta muy interesante llamada SonarCloud para ello.

Posteriormente, introdujo el concepto de tech debt radar dónde lo que se nos presenta es un gráfico de dos ejes dónde medimos las funcionalidades basándonos en la cantidad de tiempo que nos podría llevar y la complejidad que nos supondría hacerlo.

Luego nos mostró el análisis de código conductual en dónde el objetivo es detectar qué clases son las más frecuentemente cambiadas, detectar esos hotspots que siempre necesitan ser refactorizados o los acoplamientos entre clases. Para ello nos mostró otra herramienta llamada Codescene.

Al final nos mostró una herramienta llamada Gource dónde podíamos apreciar la línea de vida de un proyecto y la generación y edición de las clases durante el transcurso del repositorio, viendo zonas de acción y clases más asociadas a cada usuario.

En este link tenéis su artículo completo.

Artem Rudoi (@rudoj_artem) – Scalable UI. We implemented, test and speed up development

Después de un descanso para comer retomamos el ritmo de las charlas con la siguiente, dada por Artem Rudoi, desarrollador Android que nos introdujo el sistema de diseño que usan en Badoo, que les permite tener una UI escalable y con la que pueden reutilizar diversos componentes para otras aplicaciones asociadas como Bumble o Chappy.

Su charla se centró más en la historia de cómo fueron detectando estos componentes que podrían reutilizarse y como, alineándose con el equipo de diseño y producción, han podido crear este sistema que se inició en 2016 hasta poder tener el sistema de diseño independiente para Android en 2018.

En este artículo podéis leer el trabajo del equipo de diseño para independizar y actualizar el sistema de diseño junto a los desarrolladores.

Kateryna Gridina (@gridNAka) – #Iamdeveloper choice

En la siguiente charla tuvimos a Kateryna Gridina, desarrolladora iOS. Al igual que en la charla de Fernando Cejas, fue una charla inspiradora para tomar nuevos desafíos y objetivos en nuestra carrera.

Nos contó su primera experiencia como organizadora en un meetup que le tocó hacer accidentalmente. A raíz de esa experiencia, dónde enseñó a varias personas sobre algunas herramientas del desarrollo iOS, descubrió que le encanta enseñar a otras personas y desde entonces se ha dedicado a realizar esta actividad alternativa para estar más motivada.

Después de esto, mencionó muchas de las alternativas que los desarrolladores podemos optar de cara a nuestras carreras como ser freelancer, empresario, blogger, creador de contenido o profesor.

Mateusz Bilinski (@matbilinski) – Hacking (with) mobile AI

Volviendo al escenario Android tuvimos la oportunidad de asistir a una de las charlas más originales, presentada por Mateusz Bilinski, relacionada con la aplicación de sistemas de IA como Tensorflow o PyTorch.

Nos demostró cómo a través de la IA se podía vulnerar la propiedad intelectual de la gente: a través de la IA se podía conseguir que una persona hablara y su voz y sus gestos fueran llevados a otra persona (en este caso, Barack Obama).

También se hablo de como vulnerar los sistemas de seguridad tipo captcha usando IA, haciendo que simples cambios de un píxel puedan provocar una interpretación distinta de los resultados.

Sin duda una charla que hace replantearse hasta dónde llegan los límites de nuestras fantasías y la responsabilidad con la tecnología que creamos día a día.

Joshua Garnham (@jgarnham) – Pushing protocols to their limits

Para finalizar el día asistimos a la charla de Joshua Garnham en la que nos demostró algunas técnicas usando protocols para poder hacer nuestro código más reutilizable, usando técnicas de generalizar, associated types, opaque types y typealias de agrupaciones de protocols.

Party Time 🎉🍺

Por la noche pudimos asistir a una fiesta privada para los asistentes de la conferencia dónde se sucedieron las charlas más informales, y pudimos hacer networking con algunos de los miembros y volver con ganas a la siguiente sesión.

Mobiconf 2019: Second Day

Donny Wals (@DonnyWals) – A Practical Approach to Adopting TDD In the Workplace

Al siguiente día volvimos a la carga con más charlas. Donny Wals dio una charla muy didáctica, proporcionándonos algunos consejos de cara al testing de nuestras aplicaciones iOS.

Inició la charla con una pequeña introducción a los errores comunes cuando se realiza código sin tests y los problemas que eso conlleva en la longevidad de un proyecto. Tras ello nos habló de Gherkin, un lenguaje en el que le gusta describir como es un test: definir un escenario dónde para poder realizar una simple y única acción, con las condiciones recibidas, el resultado es el esperado realizando varias aserciones.

Tras esto, nos mostró tanto XCTest, el framework oficial de Swift para realizar estos tests, como Quick, el que personalmente usa para realizar tests más descriptivos.

Continuó realizando estos tests siguiendo la filosofía de TDD, primero usando XCTest y posteriormente Quick, comparando así las diferencias tanto en velocidad, interpretación y la documentación que provee un test mucho más contextual.

Por último, nos dio algunos consejos sobre como podemos ir incorporando poco a poco estos tests en proyectos grandes y desarrollos dónde parece complicado meterse, y también de aplicar estos tests en una CI automática con cada push y con intervalos para probar las integraciones con otros servicios.

Kristina Simakova (@KristiSimakova) – Real World as your Playground – Build games based on the real world

La siguiente charla del día fue a cargo de Kristina Simakova, quien nos habló de sus avances usando realidad aumentada.

Para ello nos introdujo un poco de historia sobre los últimos juegos que habían salido al mercado usando AR, como Pokemon Go, y el impacto que han generado. Por ejemplo, Pokemon consiguió el record Guinness a mayor beneficio por un videojuego en el primer mes. Tras ello, mencionó los clones que habían aparecido y cómo Google publicó una solución llamada Google Maps Platform Gaming Solution para incentivar estos juegos, dónde los desarrolladores podían registrarse y crear sus propios mundos en un mapa tridimensional en tiempo real, siendo este SDK creado en Unity.

Luego nos contó algunos de los recursos utilizados por esta plataforma para poder realizar tus juegos y en dónde puedes utilizar casi cualquier elemento del mapa como objetivo del juego usando la Playable Locations API.

Por últimos nos animó a probarlo, así que adjunto este link dónde podéis apuntaros.

Dr Lucinda Scharff (@lucindascharff) – What I’ve learnt about leadership

Clinical Product Manger @Google Health

En las siguientes charlas salimos un poco del área de desarrollo y entramos en la zona de everything mobile, dónde managers, product owners o consultants nos explicaban sus experiencias y algunas técnicas de gestión de equipos. Es en este contexto dónde tuvimos el placer de ver la charla de la doctora Lucinda Scharff.

Lucinda dio una breve introducción a su anterior trabajo en el mundo de la medicina, qué desafíos tuvo y cómo se fue incorporando la tecnología en su departamento, siendo la realidad inferior a la esperada.

Posteriormente entro a trabajar en el área de salud de Google dónde ejerce como Clinical Product Manager. Nos detalló su experiencia en este cargo, incluyendo errores que había cometido, como presionar una feature cuando no era particularmente prioritaria. Esto luego le repercutía en el feedback que recibía en las retrospectivas y las que considera totalmente claves en el éxito del proyecto.

Markus Wittwer (@MarkusWittwer)- Modern mindfulness practices for the nerdy agilist (everything mobile)

Mindfulness trainer. Agile Coach @MarkusWittwer

Después del descanso para la comida tuvimos la oportunidad de asistir a la charla proveída por Markus Wittwer, una charla muy distinta a lo visto hasta ese momento.

En ella nos habló de lo importante que es la concentración y lo difícil que es a veces centrarnos en una cosa, ya que siempre tenemos un montón de pensamientos en la cabeza y es muy fácil acabar distrayéndonos.

Para ello nos habló de lo muy útil que le era la meditación, y cómo logró recuperar la concentración y dominar su cerebro gracias a esta práctica.

Realizamos una breve sesión de meditación en la sala acompañada de algunas aplicaciones científicas sobre los beneficios de su práctica.

Luca Nicoletti (@luca_nicolett) – MVI with Jetpack Compose

La última charla del día fue cortesía de Luca Nicoletti, quien nos habló del patrón de diseño MVI en el que basaban sus aplicaciones, un patrón unidireccional dónde el input del usuario o un evento del sistema inicia el flujo de obtención de datos hasta volver a la vista.

Después nos mostró Jetpack Compose, el último framework de Android para crear vistas mas declarativas pero que actualmente esta muy limitado. En su explicación nos habló de estas limitaciones que han intentando perseguir, pero que aún no están disponibles como tener un recycler view.

Por último nos mostró cómo se aplicaban estas vistas en su arquitectura usando MVI, aunque advirtió que esta práctica era totalmente desaconsejada ya que Jetpack Compose sigue en versión alpha.

Discussion Panel by Fernando Cejas with Antoine Van der Lee, Lucinda Scharff, Clifton Lin y Piotr Ślesarew

Para acabar el día y la conferencia, el último evento fue un panel de discusión moderado por Fernando Cejas en el que invitó a otros ponentes a participar para opinar sobre algunos conceptos con un tono más desenfadado y más abierto al público.

Se habló de varios temas, entre los que me gustaría destacar:

  1. La aplicación de inteligencia artificial hoy en día, como está siendo de valioso a la vez que sorprendente (por ejemplo, hoy en día es posible tener conversaciones telefónicas con un bot que interpreta casi perfectamente a un humano). También se habló sobre el progreso que supone la implementación de esta tecnología a nivel de desarrollo, ya que nos permitirá crear herramientas que nos ayudarán a reducir el tiempo de trabajo en un proyecto, pudiendo así trabajar de una manera más rápida y eficiente.
  2. Otro de los temas fue el uso de realidad virtual, dónde se trató el tema controvertido de la pornografía, como se está usando esta tecnología mezclado con sensores intentando simular sensaciones humanas, dando la percepción que estos avances parecen incentivar esa búsqueda de cariño de forma virtual, perpetuando una sociedad cada ver más individual y solitaria en este sentido.
  3. Por último, se habló de la fuerte oleada de inclusión de mujeres en el mundo laboral, dónde todos estaban de acuerdo que había una desigualdad en el mundo del desarrollo y, por lo tanto, veían con buenos ojos que se esté incentivando y dando facilidades a las mujeres para poder optar a estos trabajos y dar más visibilidad y acceso desde las escuelas.

Mobiconf 2019: Conclusión

Sin duda, la Mobiconf de este año nos ha cautivado por la diversidad de sus charlas y la gran organización de todos los miembros. ¡Un evento acogedor desde el primer momento y en el que seguro volveremos a repetir!