Etiqueta: desarrollo

  • El concepto de Shokunin en la Ingeniería del Software

    El concepto de Shokunin en la Ingeniería del Software

    Durante años he sentido una extraña atracción por quienes trabajan con una dedicación casi silenciosa, como si en cada gesto hubiera algo más que técnica.

    Hace poco encontré que existe una palabra que define exactamente eso.

    El término japonés shokunin (職人) suele traducirse como “artesano”, pero esa equivalencia se queda corta. En la tradición japonesa, shokunin no solo describe a alguien que domina un oficio manual o técnico, sino a una persona que encarna una filosofía de vida profundamente arraigada en la disciplina, la humildad y el servicio a la comunidad.

    Un shokunin es alguien que persigue la perfección en su trabajo, aun sabiendo que nunca la alcanzará plenamente. Esta búsqueda constante no se vive como frustración, sino como un camino, casi espiritual, de mejora continua. La repetición, el detalle minucioso y la atención absoluta al proceso son formas de meditación activa. Cada gesto, por pequeño que sea, se realiza con intención y respeto.

    Corren tiempos en los que la tendencia parece avanzar, precisamente, en sentido opuesto. Agentes de Inteligencia Artificial que simultáneamente trabajan por nosotros en decenas de áreas distintas y que nos descargan de la responsabilidad de conocer sus entresijos. Pero que también nos despojan de la sensación de autoría, de vínculo con el objeto que construimos.

    En el mundo de la IA tengo la sensación de que dejamos de ser plenamente dueños de lo que creamos: nos movemos en el territorio de las ideas, mientras la ejecución, ese lugar donde antes habitaba el oficio, se nos escapa entre las manos.

    Hay en el trabajo del shokunin algo que roza lo sagrado. No se trata solo de crear un objeto útil o bello, sino de insuflarle una parte del alma. Existe la creencia implícita de que la dedicación, la honestidad y la energía del artesano quedan “impregnadas” en lo que produce. Por eso, un cuchillo, una cerámica o una pieza de madera hecha por un verdadero shokunin no es solo un objeto: es una extensión de su espíritu.

    Este ideal está influido por corrientes filosóficas y religiosas japonesas como el budismo zen y el sintoísmo. Del zen toma la noción de atención plena (estar completamente presente en cada acción), y del sintoísmo la idea de que los objetos pueden poseer una esencia o “espíritu” (kami). Así, el acto de crear se convierte en una forma de armonizar con el mundo y de honrar los materiales utilizados.

    Hoy todo se produce en masa de forma automatizada, basándose en algoritmos probabilísticos y los productos digitales destilan en su inmensa mayoría un aroma a sintético cuya principal característica es su falta de alma.

    Quizá sea cierto que los objetos, aun los digitales, pueden poseer parte de nuestra alma. Y en esta carrera hacia la automatización y la abstracción sin control estamos eliminando la conexión entre nosotros y el resultado de nuestros pensamientos.

    Esto no pretende, en ningún caso, ser un discurso en contra de la IA. Hay en ella algo profundamente fascinante: una extensión de nuestra inteligencia que multiplica lo posible.

    Y, sin embargo, en esa misma expansión se abre una grieta sutil: la de una creación que ya no exige el mismo contacto, la misma fricción, la misma presencia. Como si, al facilitarnos el camino, también nos alejase de él.

    El shokunin tiene, además, una responsabilidad social: su trabajo debe contribuir al bienestar de los demás. No trabaja solo para sí mismo ni para el beneficio económico, sino para servir a la comunidad con integridad. Esta dimensión moral implica honestidad, compromiso y una profunda modestia: incluso el maestro más experimentado se considera siempre un aprendiz.

    Hallar este concepto en medio de esta zozobra tecnológica: cuando se avecinan cambios tan disruptivos que ni la ciencia ficción alcanza a vislumbrarlos, cuando a cada instante brotan expertos en tecnologías que hace apenas seis meses no existían y gurús que, cual Nostradamus, anuncian la inminente llegada de un Apocalipsis digital; se me antoja una pequeña pero rotunda victoria frente a esa manera desbocada y carente de propósito de entender la vida.

    En la mitología cultural japonesa moderna, el shokunin se ha convertido casi en una figura arquetípica: alguien silencioso, disciplinado, obsesivo con el detalle, que encuentra sentido en la repetición y belleza en lo cotidiano. Su taller es su templo, sus herramientas son extensiones de su cuerpo, y su obra es una conversación continua entre tradición e innovación.

    ¿Podemos ser shokunin en la era de la IA? ¿O estamos renunciando, sin darnos cuenta, a la parte más humana de crear?

  • Rituales

    Rituales

    De un tiempo a esta parte he experimentado una fascinación especial por comprender muchos de los procesos asociados con la producción.

    Desde el artesano japonés que dedica toda su vida a perfeccionar el arte de crear pinceles caligráficos hasta la gestión de pedidos en un Dunkin Donuts. Todas estas actividades comparten, en esencia, la puesta en valor de las rutinas.

    Rutinas vs Rituales

    Todo proceso conlleva necesariamente manejar rutinas establecidas.

    Leí hace poco una frase que me encantó. Decía algo así como «un ritual es una rutina con significado para ti». Eso me hizo reflexionar sobre cómo los rituales terminan siendo fundamentales para aquellos que convierten una actividad en su pasión.

    El ritual es una sucesión de acciones que representan algo. A diferencia de una rutina, un ritual no requiere un fin específico ni tiene por qué ir enfocado a un objetivo determinado, pero sí que exige que el completarlo tenga cierta trascendencia.

    El ritual ha sido la forma que hemos tenido toda la vida de transmitir un mensaje. Ya sea a una comunidad, como a nosotros mismos.

    Está tanto en la coreográfica ceremonia católica ejecutada al milímetro durante una misa, como en esa copa de vino tinto que se sirve mi padre justo antes de disfrutar de una buena comida.

    Rituales que nos dirigen

    Que un ritual no tenga un objetivo definido no implica que no podamos utilizarlo como mecanismo para alcanzar nuestras metas.

    Si un ritual nos transmite un mensaje, ¿por qué no modular ese mensaje en nuestro beneficio? Podemos emplear el ritual para predisponernos hacia una tarea o, como mínimo, hacia una dirección determinada.

    Para lograrlo, podemos convertir muchas de nuestras rutinas en rituales si les otorgamos un verdadero significado. Si vinculamos la acción con la emoción.

    Acción y Emoción

    Aquí está el elemento fundamental. La acción, entendida como la acción voluntaria, es un proceso que ejercemos de forma consciente y que, generalmente, está dirigido por nuestro lóbulo frontal.

    En cambio, las emociones surgen de forma inconsciente desde otra parte completamente distinta de nuestro cerebro: amígdala, hipotálamo, etc.

    Son dos circuitos independientes que puede ir de la mano si se aprende a relacionar la accion con la emoción. De esta manera, a través de este vínculo, desencadenar comportamientos, siguiendo un poco la idea de Albert Ellis y su Terapia Racional Emotiva Conductual.

    Rituales en la vida real

    La conclusión de todo esto es que quiero probar estas ideas en mi día a día.

    Por ejemplo, justo antes de irme a dormir, quiero tratar de asociar todas esas pequeñas acciones que realizo casi de forma automática con un sentido real.

    Quiero convencerme de que todo ese pequeño proceso desemboca en una sensación de placer cuando, después de un largo día, por fin me permito descansar.

    Y ahí agregar aquellos pequeños pasos que quiero que doten de verdadero valor al ritual: diez minutos de lectura, dejar todo listo para el día siguiente… Cualquier cosa que me haga sentir que el proceso tiene sentido.

    Igual es la enésima ida de olla que me viene de tanto mezclar filosofía, psicología y productividad barata de mercadillo.

    Pero imagínate que funciona.

  • Volver a empezar

    Volver a empezar

    Quiero volver a escribir.

    Es un hecho que llevo demasiado tiempo dándole vueltas a cómo enfocar el blog, qué es lo que al resto del mundo puede interesarle.

    Me he pasado demasiado tiempo analizando, planificando y reflexionando acerca de eso sin entender que lo básico, lo fundamental, lo que convierte a un blog en una herramienta de comunicación maravillosa es que sencillamente me tengo que decidir a escribir lo que a mi me apetezca.

    Y eso es lo que voy a intentar hacer a partir de ahora.

    Sin presiones, sin complicaciones, sin grandiosos temas que tratar obligatoriamente.

    Sencillamente dando rienda suelta a aquellos temas que me importan, que me parezcan curiosos, interesantes o ni siquiera eso.

    Volvamos a empezar.

  • Aplicaciones síncronas y asíncronas

    Aplicaciones síncronas y asíncronas

    En el mundo de las aplicaciones web nos encontramos con dos grandes tipos de ellas que, además, siguen una evolución histórica.

    En los inicios de Internet las comunicaciones se basaban en el modelo cliente – servidor en el que el usuario realizaba una consulta (cliente) y el servidor respondía a esta petición.

    Este comportamiento se conoce como comunicación síncrona y por tanto a aquellas aplicaciones que siguen este modelo se les denomina aplicaciones síncronas.

    Aplicaciones Síncronas y sus limitaciones

    Las aplicaciones síncronas, por su diseño, presentan una serie de limitaciones que con el paso del tiempo y la evolución del uso y la capacidad de la red, han terminado por ser determinantes en el desarrollo de tecnologías alternativas.

    Una de estas limitaciones involucra la actualización de los datos que se muestran en pantalla. Por ejemplo, considera una aplicación que muestra los precios de las acciones de un mercado bursátil cualquiera. Idealmente, la aplicación debe ser capaz de actualizar los valores en un determinado intervalo de tiempo: 10 segundos, por poner un caso. Cada 10 segundos el navegador enviaría una petición al servidor para obtener la versión más actualizada de los datos. El problema obvio que surge de este modo de funcionamiento es que existirá un lapso de tiempo en el que los datos estén desactualizados y esto puede suponer una merma importante de las prestaciones de una aplicación.

    En estos casos y para superar estas limitaciones, las aplicaciones síncronas están siendo sustituidas por lo que se conoce por aplicaciones asíncronas.

    Aplicaciones Asíncronas

    Las aplicaciones asíncronas permiten la notificación de un cliente cuando un evento ocurre en la parte del servidor. De esta forma, las aplicaciones asíncronas pueden actualizar su información de forma mucho más eficiente y rápida que las síncronas.

    Para permitir un comportamiento asíncrono la comunicación se produce en paralelo (simultáneamente) con el flujo síncrono (principal).

    Aunque existen numerosos tipos de comunicaciones asíncronas, nos encontramos con tres principales: poll, long-poll y push.

    Comunicación asíncrona POLL

    El navegador envía las peticiones HTTP al servidor en intervalos regulares. El servidor responde con actualizaciones. Esto permite al sistema actualizar intermitentemente la aplicación dentro del navegador.

    Comunicación asíncrona LONG-POLL

    El cliente genera una petición HTTP hacia una dirección conocida del servidor. Cuando el servidor tiene una actualización, responde con un mensaje HTTP. Inmediatamente después de recibir la respuesta, el cliente genera una nueva petición HTTP.

    Comunicación asíncrona PUSH

    El cliente abre una conexión con el servidor enviando una petición HTTP a una dirección conocida del servidor. El servidor entonces envía una respuesta que aparentemente nunca termina lo cual implica mantener la comunicación siempre abierta. Cuando es necesario, el servidor envía un sub-mensaje de actualización al cliente a través de la conexión abierta. Durante el tiempo en el que la conexión está abierta, el servidor envía mensajes PING al cliente para prevenir que éste cierre la conexión por timeout.

    Una interacción más natural.

    Con la llegada de este tipo de aplicaciones asíncronas, el usuario se relaciona con las aplicaciones de una forma mucho más natural. Esto termina por permitir desarrollar soluciones que se integran mejor y tienen una respuesta más eficiente en determinados entornos donde la información es un bien valioso y la rapidez de respuesta una virtud necesaria.

  • Raspberry Pi: Comenzamos.

    Raspberry Pi: Comenzamos.

    Llevo varios meses dándole vueltas a comenzar una sección específica en el blog  dirigida a desarrollos tanto a nivel de software como hardware que van apareciendo y que considero interesantes.

    Para empezar a hacer boca creo que uno de los «jueguetes» más interesantes que he adquirido en los últimos meses es la Raspberry Pi.

    La Raspberry Pi es un PC del tamaño de una tarjeta de crédito con los componentes básicos para ser funcional y que permite realizar infinidad de pruebas y pequeños experimentos resultando muy útil para aquellos que quieran iniciarse en un sinfín de disciplinas relacionadas con los sistemas, las redes de computadores o la electrónica. Siendo esto último uno de sus puntos fuertes: no hay una única forma de usarla.

    Tanto si quieres ver vídeos y navegar por Internet como si quieres aprender y emplear la placa como plataforma para divertirte y experimentar. Aquí van alguno de sus posibles usos:

    Propósito general

    Es conveniente recordar que la Raspberry Pi es un ordenador y puedes, de hecho, usarlo como tal. Puedes lanzar un entorno gráfico con un navegador, que es lo que comúnmente tienen la mayoría de ordenadores y más allá de la navegación puedes instalarte un sinfín de aplicaciones tales como LibreOffice (la alternativa opensource a MS Office) entre otras.

    Aprender a programar.

    Dado que desde su concepción, la Raspberry Pi se pensó como herramienta para aprender, viene con intérpretes y compiladores precargados para muchos y variados lenguajes de programación. Para los que se inician en el mundo de la programación, dispone de una aplicación denominada Scratch que nos permite programar en un entorno gráfico amigable. Además su sistema operativo es Linux con lo que permite introducirse en esa entorno y conocer los entresijos de los sistemas basados en este tipo de OS.

    Plataforma para proyectos

    La Raspberry Pi se diferencia de un ordenador convencional no sólo en el precio (<40€) sino también por su capacidad de integrarse con proyectos electrónicos: controlar LEDs y dispositivos AC, hacer uso de sus salidas binarias, etc.

    Hay más, mucho más, que poco a poco os intentaré ir descubriendo. Estad atentos.

    Fuente | Getting Started with Raspberry Pi.