¿Son unitarios los TESTS con Jetpack COMPOSE? 🤔

testing en jetpack compose

Episodio 115 – MIGUEL SESMA nos explica si los TESTS con Jetpack Compose son UNITARIOS

Miguel Sesma, brillante como pocos. Una persona que no solo es capaz de entender en profundidad gran variedad de conceptos técnicos, sino que es capaz de explicarlos de un modo extraordinariamente didáctico.

En la entrevista hablamos sobre arquitectura, Testing en Jetpack Compose, Inyección de Dependencias, WebSockets y muchas cosas más.

Qué bonita (y entretenida) manera de formarse escuchando atentamente lo que nos cuenta Miguel.

¡Te veo dentro! 🤗

¿Viste los resultados de la encuesta sobre testing?

MIGUEL SESMA nos explica si los TESTS con Jetpack Compose son UNITARIOS

Contenido del audio

Índice

📜 ÍNDICE:
00:00 | Previa
00:41 | Bienvenida y presentación 👋
05:35 | ¿Qué tipo de arquitectura usan en las aplicaciones de cirujía robótica? 🤖
09:48 | A nivel de inyección de dependencias ¿cómo se apañan? 🤔
14:09 | ¿Qué hace Miguel en su día a día para ser más productivo? Nos cuenta si tiene algún tip o herramienta y 👁‍🗨 a lo que nos cuenta
15:40 | Aplicación kiosko: nos cuenta qué es
17:28 | El tema de los websockets… Miguel nos cuenta la magia de ellos ✨ y también nos menciona la librería Scarlet que la usa nada más y nada menos que Tinder 😮
20:57 | Nos habla sobre la latencia de usarlos
21:27 | La compra WOW de Miguel en el último año 🎁 💡
24:34 | Fuera creencias limitantes: no hay edad para aprender a programar, Miguel nos da recomendaciones
28:01 | Nos cuenta la infraestructura de testing que usan, dado que es proyecto médico
31:16 | ¡Llegó el momento! Miguel nos habla sobre Compose 😉
36:54 | ¿Se pueden considerar unitarios los tests en Compose?
38:16 | Miguel nos resuelve la duda → si dentro de un Composable tenemos remembers, launch effects, etc. ¿también se podría testear como nos ha dicho?
40:33 | La ANÉCDOTA útil de Miguel.
43:11 | Nos cuenta lo que dijeron sus compañeros de la ANÉCDOTA 🤭
44:34 | El Miguel del futuro
47:08 | ¿Quién nos recomienda Miguel para ser la próxima persona entrevistada?
48:17 | ¡Muchas gracias por venir Miguel! 🤗
49:12 | ¿Se ha quedado algo en el tintero para comentar? Atención a lo que nos enseña
50:22 | Dónde podemos encontrar a Miguel: RRSS, GitHub y en el Stack más famoso
50:51 | Despedida y agradecimientos

Transcripción

Muy buenas y bienvenidos a los Android. En esta ocasión tenemos a Miguel Sesma, ingeniero electrónico convertido a desarrollador Android. Una auténtica enciclopedia del conocimiento sobre el tema por cierto. Miguel es una de esas personas que explica conceptos realmente abstractos de un modo claro y preciso. Como un profesor con una paciencia infinita que sabe realmente de lo que habla. Lleva más de 10 años trabajando en puestos relacionados con el mundo Android actualmente. Es principal Android en general, nada más y nada menos que Medtronic. Empresa líder a nivel mundial en dispositivos médicos. Y vamos a ver que esta Miguel es una línea porque así sabemos que estamos en buenas manos. Así que bienvenido Miguel, quién eres y cuál es tu background. Muchas gracias, gracias Gabi. Me encanta estar aquí porque es una persona que amigo por todas las cosas que haces, por tus páginas, por tu revisar mi código. De verdad que gracias por estar aquí. Bueno, por mi presente un poco. Yo soy Miguel Sesma, tengo un montón de años y esto lo digo porque es importante de cara. Yo creo a esta entrevista que la pueda ver por el tema de que entiendan que la edad no es un problema para esta reflexión. Yo tengo ahora mismo 58 años y eso, claro, ahora que cuando cuenta mi background vaya a ser un poquito más largo, pero lo siento. Por eso. Yo empecé como vamos a estudiar ingenería técnica de telecomunicaciones, pero… Y esto fue trabajando detalle. Estuve trabajando, pues reparando radio, reparando sistema de radio comunicaciones, emisoras, cosas de los pop, y esos tipo de cosas. Hasta que me cambié a reparar ordenadores en una empresa y aquella empresa postar diotemprano, puso un sistema… En aquellos que por una de tan frecuente que tener un sistema de red en la empresa, ¿no? Y que lo digo con el por lo opusio y como lo consenio, pues me convertí poco a poco en administrador de base de datos. En aquel 8 en aquel momento, imaginaros en administrador de redes y al final, pues llegué a montar todo el almacén. Y ahí es donde empecé a programar para aquel momento Windows Mobile y los Picking se hacían con unos lectores que se había que leían los código de barras y todo esto. Y el programa lo hice yo en C++ y lo pasamos a Android y fue cuando mi primer conocimiento de Android. Cuando aquella empresa en la crisis fue por ahí, pues yo decidí que me gustaba mucho eso de programar. Yo había programado desde la Universidad, loficamente, pero no es a este nivel. Es que decidí cambiarme y empecé a programar en Android. Primero por mi cuenta de autónomo, luego entre en paradigma tecnológico, ellos me mandaron a Telefónica, estuve en Telefónica cuatro años, y ahí paseo a tu entiso los tres meses y de tu entero volvía a paradigma, pero ahí como jefe, pero el problema de jefe a menos. Y de jefe estaba haciendo mucho PowerPoint, así que Raúl me invitó a irme para Londres, me fui para Londres un par de años. Una de las mejores decisiones de mi vida. Luego con la pandemia, pues justo antes la pandemia me volvi, pero trabajan lo para la misma empresa y sigo la misma empresa, pero en remote haciendo Android para Mestronic. Entonces tenemos dos gamas de producto. Una es, digamos, la aplicación, que es una aplicación para ayudar, enseñar y compartir con los cirujanos y los estudiantes de cirugía. Y la otra es aparatos dentro de la sala de operaciones. Yo estoy en la, dentro de Mestronic, estoy en el departamento de cirugía robótica. Ahí está. Pues ahí tenemos aparatos que curiosamente se controlan con Android. Es el modo kiosco y todo lo que quieran, muchas veces sin conexiones a internet, entonces es un Android un poquito distinto que la aplicación estándar, pero también muy interesante. Y mira, te quería preguntar sobre temas de arquitecturas, pero me das puesto como diciendo, y esta parte de Android, porque por supuesto también es desarrollo Android, ¿qué tipo de arquitecturas emplean? Pues mira, eso es una discusión que yo he tenido con el equipo dos veces. Para las dos aplicaciones de dentro del kidofan, digamos, una era XML todo y la segunda que está empezando ahora es full compose. Y las dos veces he querido con el equipo discutir el tema. En las dos veces hemos decidido que estamos utilizando model view presenter. Y por qué presente? En este caso, para estas aplicaciones en modo kiosco el motivo es muy sencillo, no tenemos cambio de configuración. Solo hay una aplicación, la aplicación corre. Esto es duña de toda la máquina. Una de las aplicaciones corre, teléfono lo acreditable, en cualquier caso duña de toda la máquina, no hay cambio de configuración de idioma, no hay cambio de configuración de rotaciones, no se apagan, nunca nos enciende nunca. Y el presenter, aunque es menos versacle que un view model, es mucho más fácil de testear y mucho más fácil. Y eso pensaba yo, y estoy, y sigo pensando que es la decisión correcta con XML, pero me estoy encontrando que no, que con compose el view model es mejor incluso en esa situación, porque le puedo hacer que sea mucho más versátil, puedo pasarles simplemente los canales de comunicación a mi composable y la cosa funciona realmente bien. Ahora mismo tengo una aplicación que tiene dos arquitecturas, pero no me importa de deporte el view model parte de ese. En la otra, en la Tarsar Geni, Tarsar Geni es una aplicación genérica, digamos, tú entras, haces tu login, hace cosas desde el backend, la presenta, es decir, es una aplicación como puede ser cualquier otra aplicación del mercado. En esta, nosotros siempre tomamos la decisión de que la arquitectura de una aplicación no tiene que ser monolítica, de que no tienes que utilizar lo mismo de todos los sitios, es como si tú destruyes un coraje, si tú eres el arquitectur de un coraje, no usas lo mismo para las aulas, para el comedor, para el patio, para el gimnasio, es decir, vas a utilizar arquitecturas distintas que se adapten exactamente a lo que necesitas en cada sitio. Es cierto que la aplicación tiene años y entonces he ido evolucionando y las arquitecturas también evolucionan. Y partes que son con la rexjava, todo lo moderno, obviamente, es con corudinas, pero lo que siempre intentamos es que nunca se mezclen en un modulo de los arquitecturas, que nunca se mezclen en un modulo de los sistemas de acceso a la red. Y de esa manera conseguimos que cada modulo sea coherente. Y es el tema de que estudiaste en general y técnica de comunicaciones y es trabajando en algo médico, el electrónico que vamos a ver. Yo también estuve en general, teniendo en el enca del eco. Yo hice su video imagen y casualmente estuve en una corta etapa, pero estuve trabajando en una fárrica de marcapazos. Yo hice una aplicación para programar el marcapazos. No era en Android y era en Java, pero me acuerdo cuando hace tiempo que cuando vi lo de metrónico, mira, metrónico, porque metrónico era como el super referente en todo el tema de campo médico. Entonces me está muy guay. Y después está muy interesante lo de claro, no sé cuántos modulos tendréis, pero los que sean, que cada uno tenga su arquitectura determinada, eso ayuda mucho a la hora de tener las dependencias más claras en el gran delito de esto. Y a nivel de inyección de dependencias, ahí como os apañáis. Yo soy un fanático de Dagger, me gusta Dagger, me parece que Dagger es mucho más sencillo de la gente piensa, lo único que es verdad que es un incomprendido, sobre todo porque cuando se metes en su documentación empiezas a saber las cafeteras y que si una cafetera tiene una bomba de agua, si no sé qué, aquello es bastante incomprehensible, es decir, la documentación es malísima, pero gracias a que está muy extendido, puedes encontrar tutoriales de buena calidad por todo el sitio. Entonces, a mí me gusta Dagger porque es básicamente automático y básicamente superfía, si compila funciona. En Dagger 1 sí, pero Dagger 2 no te va a fallar en runtime si ha compilado y esto es algo que a mí me parece súper importante. Además es tremendamente flexible, puedes hacer lo que quieras con él. Cuando empezamos lo último aplicación, pregunté al equipo si querían usar Dagger también para esta aplicación o querían que probásemos algún otro producto y se empeñaron en Hilt. Y me parece muy bien, es un grupper de Dagger, por lo cual es Hilt por debajo y de hecho funciona, es compatible con Dagger 100%, está metido Hilt en esta aplicación que comparte un módulo con otra aplicación que es puro Dagger y no hay ningún problema. Además, si podemos inyectar el mismo módulo y la clase de ese módulo desde Dagger y donde es de Hilt sin ningún problema en eso funciona muy bien. Si es cierto que le he encontrado algún Bach que pueda llegar a crasear en runtime pero no es realmente probable. Pero no tienes que hacer las cosas muy mal para conseguirlo. Lo dije a Google y dije a lo de Google que sí, que era verdad pero que no había manera de resolverlo. Que por lo primero hecho de querer hacer fácil las cosas pues tenían cierta eliminación. Pero si está muy bien Hilt y me gusta mucho. ¿Qué más he usado? No realmente ningún producto pero quería probar a Fondocoin, con lo cual sí le daba Caña Coín. Y es un service locator. Y lo service locator por muy bien hecho que están y Coín es un auténtica maravilla y no tengo nada en contra de la calidad de Coín en sí. Tienes sus limitaciones y las limitaciones son que pueden llegar a fallar en runtime. Es la peor de todas y la nota mala pero malilla es que tienes que crear factorías para cada una de las clases que quieres. Eso no pasa nada si tienes 100 clases pero si tienes 5.000 o es un problemía bastante serio. Ahora con el Coín a Notations esté la cosa mejorado pero a ver. Yo Coín lo veo perfecto para aplicaciones relativamente pequeñas. Pongamos hasta 100 clases pero por encima de eso, Dagger. Y esta 100 clases no necesitas un sistema de inyección de dependencias. Pero eso puede hacer a mano. Porque utilitar un framework puede crearte tus factorías y que tal lo que los de Coín no no queremos hoy ver factorías pero sí han funcionado. Y en Javasis usaban mucho para inyectar dependencias. No tengo ni idea de WESOKEL si tengo mucha curiosidad y sobre compós pero antes de eso te quería preguntar por tu día a día ¿qué haces para ser más productivo? ¿Tienes alguna herramienta? ¿Tienes algún tip? Yo me gusta por la mañana, me gusta empezar a trabajar, me gusta hacer de porqué, cojo la bicicleta durante 1h00 o me voy a nadar durante 1h00 o lo que sea. Y mientras estoy pensando en los problemas con los que me voy a enfrentar y estoy haciendo resolviendo directamente los bugs o resolviendo la fítio que tengo que implementar o resolviendo y me lo estoy haciendo todo. Cuando yo llegó al trabajo básicamente lo tengo pensar, tengo pensado exactamente lo que tengo que hacer, estoy frescito y yo trabajo no soy nada especial en ese sentido, el trabajo en mi ritmo y algo que soy contrario a la mayoría de la gente es que me encanta que me interrumpen. A mí cuando me interrumpen no paran un calés lat, no paran el correo electrónico, no paran un canad. Cuando más me interrumpen más me obligan a ponerme de nuevo en el problema y normalmente veo cosas que no hubiera visto, si hubiera sido. Y si algo me bloquea nunca, a cuando me ha tenido una hora con ello lo dejo para mañana, siempre. Esa es muy buena, muy buena, muy buena. Por cierto, antes has comentado algo de un aplicación kiosco o algo así y yo no sé si, pero espero que no sé ser el único que no sé lo que no sé lo que es, ¿a qué te referías con eso? Sí, imagínate, nosotros tenemos por ejemplo un ordenador que corre dentro del kirofano y este ordenador se dedica a procesar el vídeo, tiene inteligencia artificial cuando la cámara la perros cópica sale del cuerpo del paciente automáticamente pixela para que no se vean las caras de los cirujanos ni del paciente ni de nada, es ese tipo de cosas. Y eso es un ordenador que es pequeñito, imagínate que está basado en un Nvidia de estos pequeños procesadores a arame y tal. Y entonces que corre y un ex, muy potente, pero relativamente pequeño y eso no tiene pantalla ni tiene nada, la pantalla es simplemente un teléfono, pero no queremos que ese teléfono, si un teléfono que pueda utilizar cualquiera para cualquier otra cosa. Entonces es una aplicación que cuando tu encendes el teléfono es el dueño del teléfono, arranca esa aplicación y no hay manera humana de salir de la aplicación, sólo puede usar esa aplicación y no puedes acceder ni a set ins de teléfono ni absolutamente nada. Si no hubieras que es un teléfono, podrías pensar que es cualquier cosa, una pantalla manejada por una máquina y unice en ti, o sabes, eso es lo que se llama el modo que os cuyo le está encerrada en esa aplicación y no puede salir bajo ningún concepto. No lo conocí a muy interesante. Y bueno, el tema de los huestokets, porque ya te digo que yo creo que la última cosa que toque de huestokets fue en Java con los threads y todo esto, hace siete o ocho años como mínimo, así que vamos, tengo mucho interés por saber de huestokets. Pues imagínate, no es lo que te digo en el quirofano, pues tienen un hot spot y al que se conenta el teléfono. Este hot spot no le proporciona internet, solamente le proporciona comunicación con el ordenador en sí. Entonces, teníamos que hacer un front-end, es decir, si yo he abierto un botón, el ordenador se tiene que enterar, te lo he apretado y me tiene que mandar los datos para crear la pantalla siguiente, vamos a poner con eso. Claro, esto lo más fácil es utilizar rest, pero eso no es comunicativo, si el ordenador en cualquier momento me quiere mandar una información, no puede. Entonces, lo más sencillo es abrir un canal de huestokets, tu madre, haces una primera petición, el ordenador te contesta y hace un upgrade a huestokets. A partir de ahí es como si tuvieras una petición siempre abierta y tú simplemente puedes mandar mensajes desde cualquier dirección al otro, en cualquier momento y de manera absolutamente así. Esto son los dos, internet. Ok, HTTP3 soporta muy bien los huestokets, pero el problema es que no hay nada como retrofit, no existe un retrofit para huestokets. Pero si existe la gente de Tinder, lo de la aplicación está decita, tiene una librería que se llama Scarlet y que viene a ser bastante similar a un retrofit para huestokets. Lo utiliza es una manera bastante similar y es muy fácil de manejar, le puedes inyectar, vamos, puedes en el builder, puedes decirle que quieres utilizar Jason o que quieres utilizar Moshe o cualquier cosa para ser realizar. Esa está mismo el mismo que el retrofit. Además tiene una máquina de estados, que dice que se está conectado, se auto-reconnecta si falla por lo que sea y es bastante simple de manejar. Es un retrofit, básicamente la verdad es que cuando lo descubrimos nos enganchamos él y ahora lo estamos utilizando para todo el websoque. ¿Qué o qué? ¿Qué o qué? ¿Qué o qué? ¿Qué o qué? ¿Tomo nota? Porque no tiene nada, tiene, es otra tecnología pero guarda así miitud, es que hablando con Sergio Casero, cuando tuvimos una charla me comentó unas cosas y me recomendó unas historias para hacer un cacharrito con Bluetooth y una mobile para que una bicicleta, meterle unos sensores y coger y ponerlas de repay, dar pues por Bluetooth, con unos soquets coger y que fuera la app y todo esto y creo que voy a pillar alguno de los tips que has dicho. Y yo me imagino que esto será más rápido que la la tendrá menos la atención que utiliza rest o da igual. No tienes que abrir un canal ya está abierto, con lo cual no hay la atención absoluto, es decir la atención la que pueda tener la comunicación webfay entre los entre los altos antenas poco más. Ahí es muy rápido. Muy interesante, muy interesante, a ver, una pregunta que solo hacer y es que qué cosas he encontrado en el último año de menos de 100 euros que sea así que enchaña, algo que te haya cambiado la vida. Por mira, para otra máquina que estamos haciendo para dentro del laboratorio me propusieron, es una máquina que es también corriendo Linux y tiene un par de pantallas, una pantalla interna y una pantalla externa me propusieron intentar ver hacer un spike a ver si era factible utilizar compose desktop para allí. Entonces yo necesito una maquinita sobre la que probar porque todavía que yo estaba construyendo se no existía una máquina sobre la que probar y me compré una raspí 400, una raspí 400, que es el que tiene el tecladito y ya que está integrada, es decir que es como un micro ordenador, no sé si me posto 70 euros, 80 euros. Y la verdad es que aquí yo no salió porque compose desktop está todavía un poquito pañales y algunas cosas pues no lo está la altura de lo que necesitábamos así que nos hemos ido a Qt para eso, pero yo me quedé encantado con compose de esto. Y estaba empezando a hacer cositas con ello utilizando la raspé RIP, estoy programando en la raspé RIP, es fabuloso, puedo correr incluso intelige y en la raspé RIP programada y funciona de maravilla. Y estoy encantado con ese chisme, he tenido que pasar un Ubuntu porque por algún motivo no me funcionaba el sistema operativo de Raspberry, me falleban las teclas, rebotaban, hacían cosas raras y una cosa un poquito absurda, pero con un Ubuntu fan en la cosa funciona bien. Y los cosas te le puedo decir, me encantan las calculadoras, me he comprado la última eta, la HP Prime, o que se yo rato en este clado, cosas de intento tener buen material siempre, en final no puedes perder el tiempo por vida del problema, es el teclado. Efectivamente, muy bien, y sí, lo tenía aquí anotado, hay una cosa que claro que gente que al mejor piense que dice, no es que yo soy muy mayor para empezar a programar, es que tú estás mostrando que no, todo lo contrario, porque tú realmente vamos a ver, tú ya venías de un background muy muy técnico, pero no se engañemos, por qué también he estudiado teléco y en teléco la programación que se daba, yo por lo menos era muy muy muy muy muy muy muy muy muy muy muy muy, mucho mucho mucho mucho mucho mucho, muy básica, entonces en tu caso, tú como te costó, no te costó, o quede recomendaría salient que dice, que tiene ese stopper ese pensamiento alimentante, ¿qué son muy mayor para empezar con esto? A ver, yo como tú dices, bueno, ya desde pequeño a mí me encantaba programar, tenía alguna calculadora programable, luego me compré un cetequiso 81, que se yo hice un curso de cobol, pero he hecho mucho muchísimo en su amblador, porque me encantan la electrónica, entonces con mi micro controladores, pues utilizaba esa amblador, a veces C, pero cuando empeje con Windows Mobile para programar las máquinas está de piquen que te he comentado, me encontré con el C más más, y el C más más ya he orientado objetos, y a mi la orientación de objetos se me entreseme y atrajanteaba bastan al principio, porque yo no había dado eso, entonces me fue un curso de Java, simplemente me fui a dar un curso de Java que era la van gratuito, donde cogí los primeros conceptos de orientación de objetos, y luego cuando empecé a trabajar en Andriz, por las cosas resultaron mucho más fácil, porque había eso un curso de Java, pero muy sencillito, es decir, de 10 o 20 horas, es una cosa de este estilo, y a partir de ahí es trabajar por ti mismo, el único problema está en que cuando ya has trabajado por ti mismo, ya has creado tus dos aplicaciones Andriz, más dura, y las ha subido a la tienda, y has conseguido incluso que se las descargan si sosiete, y todo esto necesitas un mentor, si necesitas un mentor para que te apoye y que te gui un poco en la subida, eso lo puedes hacer como dice yo enganyando alguien y diciendo que sabía marquero que sabía, y consiguiendo entrar en un equipo que resulta que tenía un par de cracks, que te ayudan a subir, porque se da cuenta que esta es un poco más pente, lo que había pensado, pero que tienes ganas, y entonces te ayudan a subir, o lo puedes conseguir, pues tirando de gente que apoyan los que quieren progresar, como puedes ser tú, como puedes ser Antonio, que yo creo que es una de las mejores opciones que hay ahora mismo para quien quiere empezar, tema de la edad, que nos preocupa, es decir, si había un problema de edad para otras profesiones, pero para esta yo no me lo encontré, a mí no me han puesto ninguna pega, ninguna empresa por tener 48, por tener 5, 5 por tener 58, probablemente saben que normalmente los programadores le duran entre 2 y 4 años, y yo con lo cual no es un problema eso, y tampoco les preocupa mucho que vayas de resavido, porque en este mundo nos conozremos todos, y entonces saben quién es y quién no es, con lo cual tampoco eso es un problema, no, la edad en muchas profesiones puede ser un problema yo creo que en la nuestra no, afortunadamente. Estoy completamente adecuado, completamente adecuado, además yo también yo de apay no ganas también, después lo deyer compós lo quiero dejar por un poquito después, pero quería preguntar sobre testing, y en particular, en un proyecto como el que manejas tú, que es un proyecto médico, que tiene que ir todo, vamos, que depende la vida del artista, como se suele decir, ¿qué tipo de test y afeis como en general, como tiene esto en la infraestructura de testing? Bueno, por supuesto que tenemos un testing, Pablo, si estás escuchando para un momento, te esteamos, cada uno, todos y cada uno de los métodos, sin cortar nada, luego testéamos, por supuesto, también en un nivel un poquito más, más global las plases y todo, y luego antes no testéábamos en absoluto, las bios porque era prácticamente imposible y muy poco práctico, en la bios por sí misma me refiero, no, en un entuento. Gracias a Compose, puedes testéar la view de arriba abajo y asegurarte de que se va a comportar esa zalente, como quieres que se comporten todas las condiciones, es una, yo creo que es lo mejor de Compose, no es… Ajá, que sí, tiene mucha agentaja, puedes hacer muchas cosas que no podías hacer con XML, pero la mejor es que puedes testéarlo a fondo, y de manera islada del resto del código de la aplicación. Y luego, aunque nosotros nos obligamos a que sean los programadores, los que tienen que hacer los terres presos, ¿vale? Y vamos, vamos, sobre nuestros terres presos de los de los de Velopers, hay un equipo de guas que hace otros terres presos distintos, ¿vale? Ya ellos utilizan verduras de esas, porque es ello, sí, la baja es y cosas de ese estilo, y crean su sistema de test en granjar de sistemas y tal para hacer las pruebas y todo esto. Y luego, depende, no es lo mismo, la aplicación, que es una aplicación que está en el Google Play, se puede descargar cualquiera, y si tienes un problemía, pues sube su una nueva versión y sumando, que la aplicación que corre dentro del kiosco, del kiosco, que está dentro del firmware del claro o un orcillo, y el teléfono se la descarga desde el ordenadorcillo, y no puedes hacer una actualización tan fácil, o sea, ¿cómo tienes la oportunidad de actualizar una vez cada tres meses? Entonces, ahí tienes que ser muy cauto, no arriesgar nada, no probar las cosas muy bien, que todo sea muy fiable, y desde luego, por ejemplo, estamos en un Android Google plugin de hace cuatro versiones, porque no había un motivo real para subirlo, y subirlo puede tener cierto eso. Claro, tiene dos sentido del mundo. Bueno, ya yo creo que más de uno lo estarás ferrando, hablamos sobre Compose, porque la entrada que has dicho sobre testing, a ver, Compose yo lo empecé a utilizar, pero no en aplicaciones, digamos lo que hice fue coger una de nuestras aplicaciones, y empezar a construir las mismas, exactamente las mismas pantallas, convertirlas a Compose, como un ejercicio, como un simple ejercicio, de ver qué es lo que hacía, porque si tú haces los problemas de Compose, que te puedes encontrar, o sea, más o menos son fáciles y está siguiendo, no, lo que tienes que decir, no, es que quiero mostrar la aplicación que ya está corriendo a cualquiera de mis compañeros, y que no sepan decirme si es la versión de XML y lo ha versión Compose. Y qué es lo primero que encontré yo con Compose, lo primero que encontré es que hay muy poca documentación buena, pero si mucha gente haciendo, respondiendo preguntas, si mucha gente haciendo sus pinitos de describir algunos documentos en medio, mi éste tipo de cosas, y más o menos puedes avanzar, nunca te quedas encallado del todo. Lo segundo, que reutilizar es mucho más fácil que en XML, en XML era fatible, tenías tus maneras de coger un XML, insertarle en otro, y tal, pero ello no era realmente práctico. En Compose, lo primero que haces es cuando tienes una pantalla, que creas los divesos elementitos pequeños, pero vas creando, a la tercera vez que te has creado un elementito, ves que le puedes pasar un par de parámetros para que te valga para siete sitios distintos, y te vas creando tu librería de componentes, lo cual es muy práctico porque luego es simplemente en samlacosas, y funciona. A veces tienes que sudar un poquito más, porque tienes un proyecto un poco más complicado, pero una vez que lo ha resultado, esa misma solución te va a valer para todos los lados. En el final, ganas bastante tiempo utilizando Compose, pero lo bueno de todo es que aquello es muy estable si sale su usar. Yo veo mucha gente que tiene problemas de recomposiciones y de cosas de este estilo, y la mejor manera de evitar todo eso es utilizar siempre estados, y como dice Google llama Hoistett, es decir, elevarlos estados hasta el final del Compose, y solo me tengo, es decir, yo, a lo mejor en toda la aplicación tengo uno, dos, tres, remember, porque son en el típico para una ley-silista que necesitas, o alguno porque es que es de cajon que la esoológica de vista y no debe salir nunca del Compose, ¿no? Pero no intenta, por ejemplo, meter el view model dentro del Compose, no meter corrutinar dentro del Compose, o es decir, el Compose Abol es lógica de vista y debe ser una vista. No debe contener la lógica de dominio, la lógica de dominio debe quedar aparte y ser inyectada a través de estados. Y puede utilizar corrutinas con un colectas a este, todo lo que te de la ganasos de igual, pero que lo que inyectas son estados al principio del Compose. Otra vez, la que te he dicho esteo, esteo es una auténtica maravilla, porque puedes testear aisladamente y puedes testearlo tipo a su precio, es decir, levantando la aplicación y puedes testearlo aisladamente y las dos maneras muy fáciles. Falta en una serie de métodos para poder hacer testín, pero la gente va inventando. Si yo lo otro día subía a esta coverflow uno que detesta, si existe un pixel de un color en un Compose Abol, y bueno, está teniendo un éxito tremendo, porque es lo típico que necesitas para saber cuando has cambiado el color de un texto, por ejemplo, si el color ha cambiado de manera de hacerlo, pero con esto lo puedes hacer. Busca el primer pixel de otro color y lo tienes. Y ese, bueno, no sé qué más decir, ah bueno, luego el tema de Compose, es esto. Esto es un auténtica maravilla. Es decir, te coges tu Intel y Yale y metes el plugin de Compose y estás creando una aplicación para tu Mac que además corre en la Raspberry Pi y que corre en Ubuntu y que corre en Windows en cuestión de minutos. Es que esas son bros y con todo el conocimiento que tienes de Compose. Yo ahora me estoy haciendo con una calculadora porque me gustan la calculadora si quería tener una calculadora, sabes que la calculadora se es una de estas cosas divertidas de hacer. Porque si es subirla mucho si quieres complicar la cosa puede subirla mucho, pero puede mantenerla muy sencillo, puede hacerla progresar poco a poco. Es una calculadora con un editor de pantalla muy potente, aunque la calculadora si no sea muy potente sea una calculadora más o menos normal, pero que tenga un editor de pantalla salvaje. De la calculadora de la calculadora del mercado y el mismo código me corre perfectamente en Android como me corre en el Mac como me corre en la Raspberry Pi. Y el tema de que está tejiendo en Compose de caro de no tener los biomodos del centro de los Compose a vols tratar de nada más que utilizar el estado, a la hora de testar realmente los test de en Compose son unitarios. ¿Se pueden considerar unitarios? Yo entiendo, a ver, no son unitarios en el sentido de que tienen que correr en una máquina, no pueden correr en memoria del compilador, como puede correr un tesunitario normal, tienes que utilizar un emulador, lo tienes que utilizar en una máquina, pero en la práctica son unitarios. En el sentido de que tú estás testiando un composable y entonces tú lo que dices es si yo te inyecto este estado y este estado y además le digo que apriete el botón que tiene este tag, lo que ocurre recibo este otro… No sé, en este bag que tengo para el botón recibo está señal y además estás mostrando tal texto, estás mostrando tal imagen y estás mostrando tal otra cosa. Y todo esto sin inflar ningún actividad, sin inflar ningún fragmento, sin inflar absolutamente nada, con lo cual yo podría amarle este subitarios. Claro, que maravilla, yo es que está un no entrado apenas y si que te esté algo, algún screenshot con compose, pero claro con lo que has dicho yo ya tengo dudas y dentro de un composable tenemos que remember, si también se podría testiar como estamos diciendo o eso ya o haría que ya no se pueda. Te va a limitar en el momento en que la cosa no es del todo funcional, es decir que si tú le metes los mismos parámetros puedes tener resultados distintos depende del estado que tuviera anteriormente o ya tienes hay defectes y si tienes algo, puedes tener ciertos problemas. El usar a 6 defectes en un composable no es que esté mal pero tienes que limitarlo a lo estrictamente necesario, es decir claro, no hay manera de mostrar en un escafol una snack bar si no inicializarla con un 6 defect. Bueno, si es para eso un concreto y solamente para eso, ha de lo si una ley silis tiene que recordar la posición en la que está, pues necesitarás el ley silis de este y todo como sea, para mantenerlo. Pero que tiene que ser lo mínimo posible, a los mojos, que quieres que cuando yo que sé que cuando le dese un botón sale un pequeño texto para que el usuario que se yo lea unas pequeñas instrucciones y cuando le vuelves a dar el botón se esconde, a lo mejor eso no necesitas sacarlo. Y eso sí lo puedes probar perfectamente desde dentro del de el unités composable digamos no por lo puedes apretar el botón y comprobar si existe esto invisible, con lo que es. Un cari comprobarte ya no es visible, que voy a limitarlo, ya lo recomendada Google y es como funciona, hace el joiste todo lo que puedas. Qué voy a emigrar cuando las cosas estoy aprendiendo, espero que los que nos estén viendo o escuchando también por cierto, lo que estés viendo desde YouTube si nos te suscríbete, pues suscríbelo ya. Y bueno, si estás escuchando y estás por el corriendo nada, ves corriendo a casa y agarras y te suscribes. Yo dicho esto, yo lo preguntar también si tienes alguna anecdote que se pueda contar, bueno si no se puede contar y la quieres contar tampoco pasaría nada, ahora más aparte alguna anecdote que te haya pasado durante estos años. Pues me han pasado muchas, lógicamente, pero hay una que es muy tonta y es muy simple pero que puede ser útil para la gente que está empezando en un sitio, nunca tengáis miedo, desde que yo cuando entre en una de mi dos últimas empresas, no que dice cuál. Bueno, pues a los cuatro días hubo tenía que haber una relis importante y se tuvo que paralizar porque había un pequeño problema, un pequeño problema, no había un texto que no hace un scroll, parecía poca cosa, pero era en un entorno que era bastante complejo y bastante heredado. Entonces, los señor del lugar le habían dicho a Product Owner que eso necesitaba ocho punto, si que por tanto era como mínimo un experiente en la red larga y que necesitábamos retrasar aquello. Yo sinceramente lo veía, de aunque no, yo no era responsable ni tenía nada que hacer con ello, lo veía y digo, lojo, esto tiene que ser muy tonto. Y me metí en ello, y en dos horas lo había resuelto, y cuando sin decirle nada nadie, y ahora que hago, es decir, nigo que podemos hacer la relis sin ningún problema y me consigue la enemista de mis compañeros y la el profundo amor de los Product Owners, o muy cuello y dejo que ellos lo resuelvan que lo van a resolver en torbillas. Cuando se den cuenta de que no era tan marrón o en un día o en dos horas, por decirle que no que lo tenía que decir, que es que estás allí para resolver problemas. No estás ahí para ser coleguita de nadie, estás allí para resolver problemas. Y por supuesto, sobre todo para ayudar a la gente a resolver problemas. La diferencia, por ejemplo, entre un, me preguntó una vez alguien nos recuerdo quién, cuál era para mí la diferencia entre un mí y un señor o un señor. Digo, pues mira, cuando más arriba estás, más obligación tienes de enseñar el orden más. Esa es básicamente la diferencia. Muy bien, muy bien. Y bueno, y que dijeron los compañeros. Pues básicamente se callaron, no dijeron nada porque como era el nuevo, tampoco sabían yo quién era y entonces no quería en arregarse demasiado si hubiera llegado. Pero como era el nuevo, tampoco, y había estado con un señor en la empresa, pues, si hubiera trago mayor, me hubieran dado una colegia seguro. Pero a veces, como se llena en la empresa, pues, entonces un poco se callaron y yo quedé muy bien y a partir de ahí en adelante me preguntaba mucho más. Muy bien, muy bien, muy bien, vale, vale, vale, vale. Estaba muy bien. Y supongo que también, a lo mejor, al mejor, ya se estuvo con una idea fresca, si lo viste claro, ya parte de todo eso es un máquina. Eso sí. Lo vería hasta el y a lo mejor ellos realmente sí que les hubiera llevado tanto tiempo y cuando eso, yo diría que era un mira, pues ya está, lo haré solto el nuevo. Sí, sí, sí, sí. Sí, sí, sí. Sí, sí, sí. Bueno, y hemos estado hablando del Miguel que empezó desde pequeño que le gustaba mucho la programación, que estuvo estudiando de genería técnica en del eco, que después ya cogió y empezó con C++, bueno, incluso cobo anteriormente y después ya se puso con Java con todo el tema de la entación objetos y tal, nos están contando, nos están contando tus proyectos actuales. ¿Y qué hay del Miguel del futuro? ¿Qué quede para? Es que no es lo mismo el Miguel del futuro de un programador que tiene, pues es yo 25, 30, 30, 40 años que uno que tiene 58 y estoy a cinco años de jubilarme o a siete años de jubilarme, ¿de qué? ¿Pensalo? Es así, ¿no? Era aquí el tengo que pensar en eso. A mí la empresa en la que estoy primero me gusta a lo que se dedica, me gusta. Lo que hago y me gusta además que tiene unos cariapaz muy abiertos, con lo cual yo me pudo cambiar, en el momento que me aburra de Android, me pudo cambiar y empezar a hacer paizón, no empezar a hacer vaquen, no empezar a hacer cualquier cosa, incluso como su ingeniero de télico, lo mejor me termino un poquito a programar los brazos robóticos hasta cierto punto, ¿no? No puedo intentar aprender de eso. Yo tengo un plan de quedarme probablemente en esta empresa, salvo que las cosas cambiaran mucho hasta mi fecha de jubilación, que tampoco es tan lejana, pero hecho de menos una cosa que me gusta, hay dos cosas que me gustan, colaborar en lo que pasó fue la física, la física de las guatemáticas, entonces claro, colaborar en no pensó cual no es tan fácil hacer cuando tienes poco tiempo, claro, como es mi caso, ¿no? Y cuando la empresa además te pone a aceptar limitaciones sobre que o pensó cual puedes hacer, o pensó cual no puedes aceptar, y estudiar, pues sí, yo soy una persona que está todo el día, estudiando, ahora estoy muy metido en el tema de computación cuantica, entonces claro como yo la algebra linea no lo había dado desde la universidad, y yo vuelvo a utilizar, que aprendes al algebra linea el de nuevo, que te metes en los conceptos nuevos de computación cuantica, de nosotros no es cuantos, pues probablemente me vaya a dedicar mucho, intentaré dedicarme a computación cuantica, no de una manera práctica, probablemente nadie me va a contratar o me van a ofrecer un puesto de eso, simplemente por el placer de aprender, y intentar colaborar cuanto más con o con oven en source, muy guay, muy guay, te quería preguntar también a quien te gustaría que entrevistara aquí en el podcast de los Androides para un futuro, ¿tienes aquí en el pasado? Pues sí, mira de los así conocidos, y tal hay una persona que, aparte que tiene un carisma celestial, es encantador, además no poder, me he enseñado mucho de lo que yo sé en Androides, y sobre todo me he enseñado a aprender, a romper con todos ir a necesario de cara hacer las cosas bien, y creo que es uno de los mejores programadores que yo he conocido, que es Fernando Franco. Muy bien, muy bien, muy bien, lo tenía por ella montado, lo pasa es que ahora voy a coger y lo voy a subir el prioridad, si, si, muy bien, muy maquina, muy maquina, muy buena, muy buena elección, vale, pues estamos ya que llegando al final, bueno, antes de completar esto, muchísimas gracias Miguel, aparte que me hacía muchísima ilusión, porque antes of the record, estaba comentando a Miguel, que, yo creo que la primera vez que te escuché hablar fue en el pocas de David Hacro, en el que hacía de Androides pocas, Androides pocas, en el que hablaste su inyección de dependencias, y vamos a ir a mi quité, pero madre mía, ¿qué viene? ¿Qué dice? ¿Qué dice? ¿Qué pretición que me había habido? Y, y, realmente, es que, ya lo veis, Miguel nunca ha desfraudado, es que yo creo que ha aprendido muchísimo más hoy, que, que, que, que, que, que, que, que en un, en un mes mirando por ahí artículos de medio y tal vez, una pasada, así que, muchísimas gracias, gracias a David, verdad esto es, placer y un, estar aquí. Y bueno, ¿quién es alguna, ¿quién es añadir alguna cosita más? ¿A algo que, que, que, cada un tintero? No sé, que, sobre todo, que, que os guste aprender, lo más importante en esta profesión es estar siempre aprendiendo, si no te gusta aprender, estar en nuestra profesión, obviamente, pero, pero, esto es muy divertido, mira, por si salía, yo tengo aquí un chisme que, que, me estoy haciendo, que es, a la, este, este se llama Openbot, que es una cosa de Intel, que aquí le pone tu, tu, tu, teléfono y entonces, utilicen de la gente artificial para seguirte por, por el pasado. Qué guay, está muy bien, pero tienes que, que ser electrónico y tienes que hacer tus cositas, y no sé qué, lo bonito de esos pares puedes hacerlo mismo, pero solo con la, y puedes realmente construir, puedes hacer cosas nuevas, si puedes colaborar y puedes ayudar y puedes, no sé, es que es, es como tener un mundo en la palma del teclado, por así. Totalmente, totalmente, pues, muy bien, muchísimas gracias, bueno, ya para finalizar, ¿dónde te pueden encontrar la gente? Miguel Sismah, tanto, su Miguel Sismah en, o MSS-Mah on Miguel Sismah en Twitter y en GIF, básicamente, nos tu imagen en esos dos tipos, y vos costré mi cara, en, en la fina, en el, en el programa de los programadores españoles, que ahí soy relativamente activo y que cualquier cosa que necesiteis, estoy ahí, muy bien, muy bien. Pues, de nuevo, muchísimas gracias, Miguel, de verdad, muchísimas gracias, y al te digo que yo creo que aprendí a más, hoy que en un mes, le llené artículos, y siempre es un placer hablar contigo, Miguel. Vale, muchísimas gracias, adiós. Venga, un abrazo, un abrazo, hasta luego.

En el curso en Android de Unit Testing, hago una mención sobre este episodio.

Publicado: 2022-11-01 Actualizado: 2024-06-06