viernes, 30 de enero de 2015

Una mañana de diario en el hogar 4.0

NOTA: Este post es parte de una serie sobre la vida 4.0. Recomiendo leer el primero, que dio lugar a la serie.

La familia Personita

Mamá Personita se levanta a las 6:15, así que la casa inicia el calentamiento de las habitaciones y baños una hora antes. A las 6:15, la lámpara de su mesilla se enciende poco a poco, con una luz azulada, para permitirle ver sin afectar al sueño de su marido. Suena el despertador. Mamá Personita se levanta, y el sensor de la cama lo detecta y envía a una hoja de cálculo un registro con la información sobre cómo ha dormido esa noche. La casa inicia el calentamiento de la cocina.

El aparato de ahorro de agua recibe una señal y el grifo se abre y cierra. Eso inicia el calentamiento de agua del baño sin gastar agua. Cuando Mamá Personita llega al baño para ducharse, un pequeño LED le indica que el agua ya está caliente. Se desviste y se pesa: la báscula envía un nuevo registro a su hoja de cálculo. Se ducha. La temperatura del agua se ajusta automáticamente a la que el sistema ha aprendido que le gusta a ella. Además, registra el gasto de agua y envía los datos a otra hoja de cálculo dedicada a gastos domésticos.

Cuando Mamá Personita llega a la cocina, la temperatura en ella ya es confortable. Se prepara unas tostadas con jamón. No hay queso blanco, pero su nevera ya lo ha apuntado en la lista de la compra. No se da cuenta de que no apagó la luz del baño, pero da lo mismo: se apaga al no detectar gente en él. Mientras desayuna, abre su aplicación de finanzas domésticas. Todos los gastos de casa se van ajustando según los consumos que realicen, genera previsiones y revisa con ellas los presupuestos.

Mientras Mamá Personita se va a trabajar, a eso de las 6:55, la persiana de la habitación se va abriendo. Cuando son las 7:00, el despertador de Papá Personita suena. Si no hay suficiente luz diurna a esa hora, también se encenderá la lámpara de su mesilla, con la potencia necesaria para que haya suficiente luz, evitando gastos innecesarios. La casa deja de calentar su habitación.

Papá Personita también tiene el agua caliente en el baño. Sin esperas. Y también tiene toda su información de sueño y peso. Se prepara unos huevos revueltos con bacon. Como es algo despistado, se deja el fuego encendido. Pero da igual, porque el sistema detecta que no se está usando y lo apaga. Papá Personita se pone a ver en su tablet las tareas de hoy. Entre ellas está la de ver un vídeo que acaba de subirse a uno de los canales de YouTube a los que está suscrito, así que, mientras desayuna, lo ve.

En ese momento, la persiana de la habitación de los niños se va abriendo, y la luz se enciende poco a poco, calculando su potencia según lo que haga falta para que haya suficiente iluminación. Suena el despertador, pero da igual: no hay quien les levante.

Tras cinco minutos, Papá Personita recibe una notificación en el móvil indicando que sus hijos no se han levantado aún, pero como está viendo el vídeo no lo ha escuchado. ¡Cuando esta con la tablet, Papá Personita no recuerda ni que tiene hijos! Ni se mueve ni lee la notificación, así que, como está calificada de importante, llega un momento en que el móvil envía una señal indicando que no le hacen caso. Sabiendo que Papá Personita está en la cocina, el sistema hace que las luces se vuelven rojas: señal de que algo pasa de lo que no se está enterando. Ya no hay manera de escaparse. Si aún así no hiciese caso y no se detectase movimiento en la cocina, el sistema emitiría una señal de alerta porque algo estaría fuera de lo normal. Pero sí mira el móvil: los niños no se levantan.

Papá Personita va a la habitación y les insiste. Al fin, se levantan, se asean y se ponen el uniforme. Para entonces, la casa ya ha dejado de calentar las habitaciones y baños y ha abierto las persianas de toda la casa. El salón está caliente, y los niños se ponen a ver la tele unos minutos antes de que su padre les diga que hay que irse al colegio. Intentan echarse una partida a la consola, pero sus padres tienen restringido el uso de videojuegos en días de diario, así que no pueden.

Para cuando se van todos, la casa se ha puesto en modo de ahorro de energía. Según la temperatura y la previsión del tiempo, mantendrá las persianas más o menos abiertas para gestionar bien el calor de la casa. Según la previsión del tiempo, el sistema de riego regará o no el jardín. Entre el control de luces, la gestión de calefacción por habitación, el calentamiento de agua sin derrocharla, el sistema dinámico de riego y el registro de los consumos, la familia Personitas vive mejor, ahorra dinero y contribuye a al cuidado del medio ambiente.

Algunas soluciones empleadas:

Para calentar la casa por habitación:
Evohome
Para programar el calentamiento de la casa:
IFTTT
Luces dinámicas:
Philips hue
Monitorización de sueño:
Withings Aura
Jawbone Up
Para ahorrar agua mientras se calienta:
AquaReturn
Báscula:
Withings Scale
Monitorización consumo de agua:
WeMo Water
Monitorización consumo eléctrico:
WeMo Insight Switch
Para enviar los datos de consumo a una hoja de cálculo:
IFTTT
Hojas de cálculo que responden a eventos de IFTTT:
Google Drive
Persianas programables:
Loxone

La vida 4.0

Recientemente leí un artículo sobre la industria 4.0, que gusta llamar a los alemanes. Los americanos llaman al concepto factoría inteligente (smart factory). La cosa trata de la aplicación de datos e Internet a los procesos de producción. Ahora ya se hace, pero ellos plantean llevarlo a su máximo exponente. El concepto industria 4.0 proviene de que esta sería la cuarta revolución industrial (a mí no me salen las cuentas, porque juraría que es una evolución de la tercera, pero en fin, ni soy experto ni alemán, así que no opinaré).

Esto enlaza con otro concepto que está muy de moda últimamente: el llamado internet de las cosas. Consiste, igualmente, en conectar todo, de manera que cualquier aparato de nuestra vida diaria sea susceptible de actuar según los datos que obtiene de otros objetos. La idea es interesante, porque nos permitiría dejar de lado tareas mínimas que llevamos a cabo todos los días en favor de tranquilidad, confort y ocio. Amén de que un ordenador puede hacer muchas cosas de manera más eficiente que nosotros como, por ejemplo, ajustar de forma dinámica la iluminación de la casa, que mi lavadora se ponga en marcha cuando termine el friegaplatos, comprobar la temperatura de casa desde mi móvil o que un cuadro digital de casa muestre la última foto de portada de National Geographic.

Pero, en general, la revolución no es el hecho de que mi lavadora pueda obedecer órdenes. La revolución real consiste en que los datos se pueden compartir entre distintas fuentes, centralizar, gestionar y convertir en órdenes para otros aparatos. Lo complicado no es que la lavadora se ponga en marcha, sino que lo haga cuando le llega un dato de una fuente distinta como el friegaplatos o mi móvil.

Así que, para subirnos al barco de la tecnología moderna, necesitamos dos cosas. Por un lado, aparatos compatibles con sistemas de este tipo, capaces de generar y compartir datos, así como de actuar según le digan esos datos. Por otro lado, necesitamos plataformas o servicios que nos permitan "enchufar" esos aparatos a otros y compartir información.

Eso, aplicado a casa, es el hogar inteligente. Aplicado a los procesos de fabricación son las fábricas inteligentes (o 4.0). Aplicado al transporte será, digo yo, transporte inteligente. Y todo controlado desde dispositivos móviles inteligentes, claro. Todo muy inteligente. Luego está todo enchufado a ordenadores que son más tontos que un cebollo, pero en fin... Entenderán que el uso y abuso del término inteligente me hace pensar que se reduce el valor de esa palabra y, con ello, de nuestra inteligencia (años luz por delante de la de los ordenadores aún) pero, nuevamente, no discutiré.

Los aparatos todavía son caros, he ahí un problema, aunque su precio decrece rápidamente. Por otro lado, está pendiente la implementación de sistemas de seguridad eficaces en ellos. Sobre los servicios, ya los hay. El mejor de todos, en mi opinión, es IFTTT. Desde luego, siempre está la opción de hacerse todo uno mismo, cosa perfectamente posible gracias a Arduino, Raspberri Pi, LittleBits y a los diferentes entornos de programación de que disponemos. Pero claro, en general hay que saber un mínimo de programación (ejem...).

¿Y qué se puede conseguir con todo esto? Pues, de momento, bastante, pero mucho menos que en un futuro cercano. Las cosas que llegarán de aquí a cinco cortos añitos son impresionantes. Por ello, iniciaré una serie de posts mostrando lo que podría ser la vida de una familia, unas vacaciones, una pyme o un ciudadano cualquiera en un mundo próximo, muy 4.0

jueves, 22 de enero de 2015

Por qué creo que el colegio debería enseñar computación

Hace unos días tuve una conversación en familia sobre la enseñanza de computación en el colegio versus enseñanza de terceros idiomas. La discusión fue entretenida, pese a que me sentí solo en mis tesis frente al resto. Pero fue bastante instructiva y en todo momento emocionante. Como suele pasar, tras tener la conversación aún le das ciertas vueltas, especialmente si sientes que no has logrado hacer llegar tus ideas a los demás. No digo que les hayas convencido o no, sino que, realmente, no has logrado transmitir bien las cosas.

Además, recientemente vi un vídeo de Computerphile titulado should everybody learn to code? donde se pregunta a Tom Rodden, profesor de Ciencias de la Computación de la Universidad de Nottingham, si todos los jóvenes deberían aprender a programar en el colegio. El vídeo es interesante.

En general, hay dos puntos aquí: Primero, si programar es una habilidad útil. Segundo, si es más útil que alguna otra que haya en el currículo escolar, para quitarla y poner programación en su lugar.

¿Es programar una habilidad útil para todos?

En las diversas discusiones, debates y vídeos que he visto, el problema se enfoca desde la probabilidad de que una persona vaya a programar en su vida. Tom Rodden, sin embargo, busca la respuesta desde un punto con el que yo estoy más de acuerdo gracias a mi experiencia profesional. El problema no es si la gente necesitará programar, sino si la gente deberá interactuar con ordenadores. Entender los ordenadores es importante, porque te permite saber qué pueden hacer y qué no y comprender mejor los problemas derivados de su uso y cómo hacerles frente. Si se sabe programar lo básico, los ordenadores dejan de ser ese "aparato mágico que hace cosas no sé cómo".

En mi trabajo actual debo enfrentarme al hecho de que, siendo una empresa de servicios 100% online, la gente de marketing y operaciones no tiene ni idea de lo implica hacer cambios, lo que hace que un alto porcentaje de la comunicación entre ellos y nosotros sea del tipo "¿se puede hacer esto?" y "¿cuánto llevaría?".

Peor aún, esa gente no tiene ni idea de lo que la tecnología puede hacer por ellos. Mi trabajo consiste en parte en darles soluciones a sus problemas, porque son incapaces de imaginarlas. No es que no conozcan los detalles técnicos, sino que ni siquiera son capaces de llegar a plantearse lo que la tecnología es capaz de hacer por ellos, porque no pueden alcanzar una imagen ni medianamente cercana de las posibilidades que la tecnología les ofrece. Eso les limita y, con ello, limita a toda la compañía.

Imaginen la Edad Media. Nadie sabe leer ni escribir. El hijo de un campesino le dice a su padre que le gustaría aprender a leer. ¿Qué haría su padre? En el 99% de los casos le daría una colleja y le mandaría al campo al grito de "¡para qué querrás tú eso!" En parte es cierto, porque en la Edad Media (al contrario de lo que vemos en las películas), ni había carteles ni nada. ¿Para qué? Además, tampoco había acceso a libros. Pero imaginen el poder de un grupo de chavales que supiesen leer y escribir. Podrían dejar historias por escrito, transmitirse conocimiento entre ellos, ¡poner carteles y usarlos!

Y es que hay ocasiones en que saber algo abre la puerta a una forma de pensamiento diferente, cuyo poder solo podemos imaginar una vez lo tenemos. La programación es una de esas disciplinas. No se trata de programar: se trata de entender. Entender la tecnología que nos rodea. Se trata de entender qué pasa cuando meto una tarjeta de crédito en un cajero, por qué ciertas transacciones son seguras y otras no, diferenciar una web donde es seguro comprar de una que no lo es, saber por qué narices el nombre de mi hijo no es una contraseña segura. Se trata de saber en el trabajo que esto o lo otro podría hacerse más fácilmente lanzando una simple query a una base de datos, generando un proceso de tal tipo o haciendo una sencilla aplicación. No se trata de hacerlo nosotros, sino de saber que lo podemos pedir porque puede hacerse y el impacto en nuestra productividad es muy grande. Entender la tecnología es entender el mundo en que nos movemos, porque ese mundo, hoy (y más mañana, cuando esos chavales dejen el colegio), está lleno de ordenadores.

¿Y es más importante que otras disciplinas que se enseñan actualmente?

Yo creo que sí. Concretamente, y eso es lo que dio pie a la discusión familiar, creo que es más importante que terceros idiomas. También creo que se podría unir a la enseñanza de algunas ciencias, como matemáticas y, sobre todo, física.

No digo que los terceros idiomas no sean importantes o que no tengan utilidad, cuidado. Digo que la programación tiene más utilidad, y más de cara al futuro. Encima, puede ayudar a reforzar mucho otras disciplinas consideradas "huesos" para muchos, como son las matemáticas y la física.

Los idiomas enseñan métodos de comunicación diferentes, que nos permiten abrir nuestra mente y comunicarnos de formas nuevas. Además, fomentan que los chavales viajen y se muevan por el mundo, haciendo que su mente sea mucho más abierta y cosmopolita. Todo eso es bueno. Pero seamos realistas: hablamos de terceros idiomas. Nosotros hablamos español de forma nativa. Además, en el colegio debería enseñarse el inglés y, si está bien enseñado, el nivel final de los alumnos debería ser muy bueno. Partiendo de esa base, cualquier chaval sería capaz de comunicarse con casi 1500 millones de personas en el mundo, y casi todas las del mundo desarrollado.

El gran argumento usado en esa discusión era que de la gente que tiene gran éxito profesional (habría que ver a qué se refieren con eso, porque sospecho que se trata de gente que gana pasta gansa), la mayor parte habla más de dos idiomas. Independientemente de que esa estadística es dudosa (se basa en una cena de antiguos alumnos de una titulación sobre negocios), y que, como digo, habría que ver qué se considera "éxito", ocurren dos cosas: Primero, que esa condición puede ser consecuencia de su "éxito", no la fuente del mismo. Segundo, que no se preguntó cuántos de ellos sabían programar.

Hay mucha gente en el mundo que yo mejor conozco, como es el de los videojuegos y el software, que son personas de éxito, residentes en Estados Unidos, que con suerte chapurrearán algo que recuerden del francés que aprendieron en el colegio. Hablamos de grandes nombres de la industria. Pongamos un ejemplo: Mark Zuckerberg, fundador de Facebook. No habla español. Aprendería algo de francés en el colegio, claro, que hasta hace poco era la lengua más enseñada como segundo idioma en Estados Unidos. Aparte de eso, en 2010 (siendo ya multimillonario), se puso a aprender chino mandarín. ¡Caray, habla chino! Sí, vale, pero eso ha sido tras su éxito. Su éxito proviene de la programación. ¿El creador de Minecraft? ¿Los dueños de Valve? ¿Los fundadores de Google? ¿Bill Gates? Seguro que algunos de ellos hablan idiomas, pero apuesto a que, los que lo hagan, los han aprendido después de su éxito inicial, que es 100% tecnológico.

En el mundo de los negocios es mucho más común el viajar y tratar con otras culturas. Pero en muchos otros campos, eso no es tan habitual. La gente que hace un master de negocios en Estados Unidos y viene de otra parte del mundo probablemente acabe en una buena firma multinacional, aproveche para viajar cuando es relativamente joven y aprenda idiomas. Parte de su éxito, basado en relaciones, se refuerza si sabe hablar bien otros idiomas. Pero eso, insisto, no es lo habitual.

Lo segundo que comentaba es que no se preguntó a los comensales de la cena cuántos sabían programar. Insisto: no se trata de ser programador, sino de entender cómo funcionan los ordenadores. Y para eso lo mejor es saber fundamentos de programación. Muchas personas de esas que solemos llamar "de éxito" son ingenieros, arquitectos o técnicos que tienen algún conocimiento de programación. Entienden lo que un ordenador puede hacer. Entienden, al menos por encima, cómo funcionan las comunicaciones, sistemas de almacenamiento de datos, etcétera.

El tiempo en el colegio para muchos no es suficiente. Freímos a nuestros hijos a extraescolares: danza, música, ajedrez, terceros idiomas, fútbol... Se suele considerar gente de éxito a esas personas que tienen pasta y puestazos. Aparte de que creo que es un error, me parece que la real fuente de ese tipo de éxito suele radicar en la capacidad de trabajo. Suele pasar, que niños que hacen muchas cosas, llámese extraescolares, suelen adquirir una gran capacidad de trabajo, precisamente porque trabajan mucho. Eso no les hace más creativos, por ejemplo, que un niño que juega libremente. Ni más felices (lo que para mí define el éxito), pero sí les da mayor capacidad de trabajo. Podrán sacar mejores notas con menor esfuerzo, acceder a carreras que requieran mayor nota y, con ello, tener una mayor probabilidad de alcanzar puestos de trabajo de más alto nivel.

Pero, aparte de que no creo que eso sea el éxito, muchos de los que ahora lo tienen fueron a extraescolares de idiomas. A veces se trataba de que, con su tiempo extra y no siendo propensos al juego, se plantearon qué actividad coger y los idiomas eran una perfecta opción. La mejor, considerando que hasta hace poco no había extraescolares de programación. Pero hoy día está disponible: hay muchas empresas que ofertan actividades de programación o robótica. Y es una actividad que aporta mucho más que un tercer idioma.

Habiendo, como hay, en el colegio horas para ese tercer idioma (en España suelen ser francés o alemán), creo sinceramente que la programación es mejor alternativa. Mucho mejor.

lunes, 19 de enero de 2015

Un pensamiento

Yo no quería hacer un blog tipo diario, sino de temas muy concretos como la educación y la tecnología. Pero esta mañana he visto dos vídeos de un canal estupendo de YouTube llamado Computerphile y me he sentido más... padre mayor. Casi abuelete. Creo que puedo entender mejor las historias de mi padre sobre ordenadores y tarjetas perforadas que lo que mis hijos podrán entender jamás las mías. Pero claro, igual soy víctima de esa tendencia del ser humano a pensar que entiende mejor a otros de lo que otros le entienden a uno. La vida...

Los vídeos, que a alguno como mis queridos SCía y SUrbi resultarán simpáticos, familiares y nostálgicos, son: vídeo 1 y vídeo 2.

Disfrutadlos, abueletes.

Por cierto: la imagen que acompaña este post es la pantalla de inicio del Amstrad CPC 6128, que fue mi primer ordenador, allá por 1986.

miércoles, 14 de enero de 2015

Los valores en la empresa

Hoy, amigos míos, he recibido dos paquetes. Mejor dicho, he recibido uno y estoy cerca de recibir el otro. Entre que tengo quejas hacia ambos envíos y que, por motivos que igual comento en otra ocasión, he estado pensando en Amazon y su orientación al cliente, he decidido escribir este post. Y es que me parece mentira, en los tiempos que corren y siendo las empresas que son, que un usuario tenga que pasar por esto. Normalmente no daría nombres, pero mira por dónde hoy voy a hacerlo, a ver si por un casual entre la decena de personitas que leen cada post hay alguno que curre en una de ellas, se da por enterado y hace algo.

Un día compré un videojuego...

Hace hoy un mes compré en Zavvi un videojuego. Lo esperaba, por motivos que no voy a escribir aquí (ni falta que hace, espero), antes del 5 de enero. Salió de sus almacenes el día 12 de diciembre. Hombre... Son 24 días naturales. Suficiente, espero. Ya sé que son las fiestas y mucha gente hace envíos, pero hombre... La propia web decía que esperase 15 días antes de quejarme. 15, no 24.

Lo he recibido hoy. Justo un mes después.

Pero que las cosas lleguen tarde puede pasar. De hecho, según parece se ha liado una en Barajas con los paquetes de aquí te espero. O sea, que probablemente no es responsabilidad de Zavvi, (aunque sí son responsables ante mí). Igual ni siquiera es responsabilidad de la empresa de correos de Holanda, que me entrega el paquete (aunque sí lo es ante Zavvi). Seguramente es responsabilidad de quienes llevan la parte de paquetería de Barajas (tócate las narices, con lo poco que me gusta a mí caer en el tópico de criticar a los españoles, y al final la culpa de todo la tiene un español). Pero me da igual: yo me quejo a Zavvi.

Lo primero es que me mandan un PDF para que lo firme "manualmente, no digitalmente" y así investigar lo ocurrido. Pero alma mía, ¿no tenéis un número de pedido o algo por el estilo para decirme dónde está el paquete? ¿No podrías haberme dado el numerito a mí desde el principio para yo seguir el envío sin daros la tabarra? Si no lo tienen, ya es que no piensan en mí: piensan antes en sus costes. Y no es que Zavvi sea mucho más barato que Amazon.

Lo segundo es la maravillosa parte de soporte de su web. Subo el archivo. No hay indicador alguno de que esté subido, ni error ni nada. Pruebo otra vez. Nada. Bueno, vaya mierda de web, que subes un archivo y no te dice que lo has subido, ¿no? Así pues, voy a presuponer que está subido y en el mensaje les voy a decir algo así como "aquí tenéis el archivo". Toca esperar... A los tres días (¡tres días! Mucho para los tiempos tecnológicos que corren) escribo preguntando qué hay de lo mío y me dicen que tengo que mandar el archivo. WTF!!!! En efecto, según parece el archivo no se había subido. ¿Por qué? Pues hoy me he enterado. Pero ¿no habían leído el mensaje anterior donde les decía que ahí estaba el achivo? ¿No podrían mejorar un simple sistema de subida de archivos? ¡¿De verdad es imprescindible que me ponga a firmar y a consentir y su puñetera madre para preguntar a una empresa de correos "qué hay de este paquete"?!

Esta mañana me propongo subir el dichoso archivo. Lo preparo en PDF y lo subo. Y esta vez sí, mira por dónde, me salta un error. El error, atentos, es el siguiente:

Aparte de que mola el parseo de caracteres especiales, ¡¿me están diciendo, en serio, que el archivo es demasiado pequeño?! Es un hito en la historia de Internet, cuando nos sobró ancho hasta pedir que manden ¡¡¡¡más, por favor MÁAAAAS!!!!

Y no, claro: el mensaje es erróneo y el problema era el contrario. Mi PDF (que ya me vale a mí) pesaba 4'3 Mb. Hago un JPG y lo subo. Resuelto todo, a esperar tocan. Y va y a la hora o así llega el paquete.

Los mensajes de error, amigos de Zavvi, son parte MUY IMPORTANTE en la atención a usuarios. Deben ser correctos y comprensibles. Siempre.

...y otro compré un armario

Entre tanto, el sábado compramos un armario en IKEA. IKEA, esa empresa admirable por la forma que ha tenido de innovar cuando fue pequeña y llegar a ser lo que es hoy. IKEA, más que acostumbrada a ayudar y asistir a usuarios contentos y descontentos por más de medio mundo. IKEA, como saben, manda los muebles a casa si pagas por ello. Y el armario resulta que no cabía en el coche. Así pues, pagamos.

Te dan a elegir tres franjas horarias para recibir el paquete. Sé que la algoritmia y todo el sistema logístico para entregar paquetes es complejo (lo digo en serio), por lo que entiendo lo de las tres franjas horarias. Creo que podrían flexibilizar más, probablemente, pero en fin, suficiente. Me vale. Elijo de 14 a 18h. Antes trabajo, después tenemos médico y otro par de cosas. Pero claro, yo salgo de trabajar a las 15:30, así que me gustaría saber con más detalle la hora de entrega. Y pregunto. La respuesta fue "el lunes, a primera hora, le mandamos un mensaje al móvil con la hora de llegada". Guay.

La primera, en plan detallista, es que recibí el mensaje el propio sábado. Me da igual, claro, pero dado lo insatisfactorio del mensaje (como ahora comentaré), la premura me hizo preguntarme si ese era el mensaje que esperaba o era uno previo y el lunes recibiría el bueno. Pues no, este era "el bueno".

La segunda cuestión es que el mensaje fue el siguiente: "La entrega de sus muebles IKEA con número ####### programada para el 12/01/15 en franja de 14 a 18, se realizará aprox. de 15:00 a 17:00". Yo soy tiquismiquis con la lengua, así que me niego a escribir, como hacen ellos, esos mensajes sin tildes. Pero independientemente de eso, la cuestión es: Que no me detalles una hora exacta pase, porque hay imprevistos. Que no seas capaz de darme un margen de media horita, tal vez una, bueno... Pero tío: ¡me has reducido una franja de cuatro horas a dos! ¡Ya solo poniendo la franja a voleo acertarás la mitad de las veces! Pero es que, encima, ¡¡me dices que es aproximada!! ¡Tócate los huevos! ¿Qué margen de error considerarán "aproximado"? ¿Media hora? Pues ya son tres horas de cuatro, menuda aproximación, ¿no? Una gran ayuda, señores míos.

No me creo, hoy día, que esta gente, haciendo un esfuercito, no sea capaz de generar algoritmos y sistemas de previsión que no sean capaces de atinar con un 90% de acierto una hora de entrega con un margen de media hora. Existen modelos de previsión de tráfico, sistemas de conocimiento de tráfico en tiempo real, algoritmos para generar rutas óptimas, cálculos de previsión de tiempos de descarga según datos históricos (volumen, piso, zona, etc.). ¿De verdad solo saben dar una hora "aproximada" que cubre el 50% del tiempo máximo disponible?

Y eso es IKEA. Me da igual si ellos directamente o una subcontrata: para mí es IKEA. Y eso que aún no lo han entregado: veremos si a las 15h está.

¿Y Amazon, a qué viene?

Llevo tiempo comprando cosas en Amazon. Me considero uno de esos pioneros en España que compraba por Internet cuando a una aplastante mayoría le resultaba insegura la red. Y seguramente en esa época lo era, pero había que romper moldes, creo yo. Mi experiencia siempre ha sido muy positiva, y nunca se han retrasado. No pretendo hacer publicidad de Amazon, cuidado: dependiendo del caso, prefiero sitios más baratos (cuando no tengo prisa, por ejemplo), pero a lo que voy es a que Amazon, en contra de otras empresas, tiene como primer y principal valor corporativo "Customer Obsession: Leaders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Although leaders pay attention to competitors, they obsess over customers".

Los valores en las empresas son fundamentales. Pueden ser pura palabrería, lo que implica que su valor real será ese: la palabrería. Pero en algunos casos, son bastante más que eso. Normalmente, en las grandes corporaciones, son más que eso. Habrá quien piensa que esas grandes corporaciones pueden permitírselo. Yo creo que es que gracias a tener y mantener esos valores han llegado a donde han llegado. Es cierto que a veces los valores cambian (unos funcionan mejor que otros), pero no es común. A veces, incluso, a lo largo de la historia de la compañía, se van definiendo con mayor claridad.

Cuando una empresa tiene ciertos valores, debe modificar su estructura, e incluso innovar, en pos del mantenimiento y mejor cumplimiento de dichos valores. Por seguir con el ejemplo de Amazon, su forma de desarrollar productos y servicios es bastante diferente a otras empresas. Normalmente, otras empresas especifican el producto, teniendo en cuenta las necesidades técnicas que va a requerir. Luego, para vender internamente el proyecto y evaluar el beneficio, establecen las ventajas y las miden. Finalmente, con el propósito de probarlo, hacen "casos de uso", es decir, ejemplos de uso por parte de un usuario para hacer lo mismo y probar que funciona. En Amazon hacen justo lo contrario, precisamente porque su prioridad es el usuario: Primero hacen los casos de uso, haciendo hincapié en las ventajas que el cliente va a encontrar en el nuevo producto o servicio. Luego ponen por escrito las ventajas y, cuando la gente está de acuerdo en que para el usuario es positivo, se escribe la funcionalidad y se define la parte técnica.

Son muchas las empresas que tienen muy claros sus valores y los siguen. Esos valores se vuelven parte de la cultura de la empresa. Son importantes. La definen, de hecho. Si una empresa no los sigue y no los tiene siempre presentes, no solo no valen de nada: la empresa será una gran chapuza, con malos cimientos. Los valores deben ser parte del carácter de quien crea la empresa. Si la empresa tiene la innovación como valor, es porque el tío que la lleva es un innovador. Si no, cuando tenga que tomar decisiones rápidas que impliquen innovar o no, no lo hará. Y al no hacerlo, sus empleados acabarán haciendo lo mismo: no innovar. Entonces, la cultura no estará alineada con los valores de la empresa.

Mucha gente, cuando emprende, ni siquiera tiene en cuenta los valores: ni los escribe. Mal hecho. Entre quienes los ponen por escrito, la mayor parte pone palabras bonitas, que queden bien y al leerlas parece que la empresa es seria y todo. Realmente, creo yo, los valores han de ser una conjunción perfecta entre lo que tú eres y lo que tus potenciales clientes quieren.

¿E IKEA no tiene al usuario en sus valores?

Pues... Sí y no. IKEA tiene como primer valor el respeto, tanto entre los propios trabajadores como con clientes y proveedores. Pero "respeto" no es "customer obsession". Cuidado, no critico los valores de IKEA: simplemente aclaro la diferencia. IKEA tiene cosas muy buenas que Amazon no tiene.

Una empresa no puede tener todos los valores del mundo. Debe decidir. Ocho o diez valores ya son muchos. IKEA nació como una pequeña tienda de muebles. Cuando empezó a tener éxito, la competencia, de mayor tamaño que IKEA, reaccionó y emprendió una guerra de precios. Muchas empresas pequeñas se han quedado ahí y han desaparecido, pero IKEA no. Su fundador decidió hacer los muebles desmontables y los diseñó para poder llevar muchos en un camión. Donde la competencia metía una silla, IKEA metía siete, con lo que redujo drásticamente sus costes y, con ello, pudo hacer frente a la guerra de precios. Al final, IKEA creció y abrió una gran tienda en la capital. Al abrir tuvieron una avalancha de gente y las colas empezaron a ser inmanejables. De nuevo, muchas empresas habrían provocado con ello una imagen nefasta y habrían perecido. Y, de nuevo, IKEA no: preguntaron a los clientes si no les importaba llevarse ellos mismos la mercancía y dieron acceso a los almacenes. Y así nació el modelo de IKEA.

IKEA es innovación. Solemos creer que la innovación es tecnología, pero no es así siempre. De sus siete valores de empresa, tres están presentes en esa historia:

  • Daring to be different: We question old solutions and, if we have a better idea, we are willing to change.
  • Cost-consciousness: Low prices are impossible without low costs, so we proudly achieve good results with small resources.
  • Constant desire for renewal: Change is good. We know that adapting to customer demands with innovative solutions saves money and contributes to a better everyday life at home.

Cuando los ejecutivos de IKEA se reúnen, su primera pregunta es "¿podemos mejorar las cosas, aunque implique cambiar, para reducir gastos de producción y así ofrecer mejores precios a nuestros clientes?" Cuando se reúnen los de Amazon, se plantean algo ligeramente diferente: "¿podemos mejorar la experiencia de usuario, haciendo que todo sea más fácil para él?" Ambas cosas son estupendas, y ambas me enamoran. Son dos empresas fantásticas con filosofías diferentes.

Así pues, si algún lector va a montar una empresa, no escriba los típicos valores que los demás pondrían porque quedan bonitos, como "calidad, precio e innovación". Piensen en las decisiones que toman cada día y detecten sus prioridades reales. Investiguen empresas diversas, de cualquier sector, vean cómo funcionan y averigüen con cuáles se identifican más, lean sus valores y detecten los que realmente les gustan y motivan y, sobre todo, con los que se sientan cómodos.

Y lo mismo pasa cuando uno busca trabajo. Estar en una empresa grande puede parecer estupendo, pero no lo es tanto si no te identificas con sus valores. Sentir que tus valores y los de la empresa están alineados es fenomenal. Porque hace que estés más a gusto, que tus decisiones tengan mayor probabilidad de ser aprobadas por tus superiores y que, en definitiva, seas más feliz en tu trabajo.

viernes, 9 de enero de 2015

Enseñar a manejar dinero

Mis hijos tienen ahorros. No les damos paga, pero alguna vez alguien les ha dado dinero y lo han guardado en su hucha. Aunque mi mujer y yo creemos que es importante que aprendan a valorar las cosas y a manejar el dinero, la realidad es que a día de hoy no hemos iniciado ninguna acción concreta para enseñar a nuestros hijos cómo se gana dinero y qué hay que hacer con él.

Así pues, de cara a este año nos hemos planteado iniciar un plan para que aprendan conceptos que nos parecen importantes. No lo hemos concretado, pero sí nos hemos propuesto pensar en ello y ponernos manos a la obra. Así que me ha dado por darle unas vueltas. Este post es un "pensamiento en voz alta" (¿o debería decir "pensamiento en letra clara"?) sobre lo que me gustaría que consiga el sistema que desarrollemos para nuestros hijos.

Objetivos

Las cosas cuestan

Entender que las cosas tienen un coste económico es importante. Hasta ahora les hemos ido dando o negando lo que nos pedían, que siempre ha ido a cargo de nuestro bolsillo. En general, sobre todo al mayor, sí les hemos hecho conscientes de los costes de algunas cosas, pero estaría bien que ellos se den cuenta porque tienen que pagarlo.

Ganar dinero cuesta

La paga semanal me parece un sistema estupendo para que los niños tengan dinero. Sin embargo, el dinero no llueve del cielo, y papá y mamá no estarán aquí siempre para darles una renta. Mi hermana no da paga a sus hijos: ella y mi cuñado les dan trabajo para que consigan dinero. Es estupendo, porque realmente saben que ganar dinero cuesta. Sin embargo, no todos tenemos posibilidad de dar trabajo. En un sitio web leí sobre una familia donde la madre pone un cartel en la cocina ofreciendo tantos dólares a cambio de ayuda para fregar, limpiar y cosas así. Me pareció una buena idea, pero por otro lado ¿qué consecuencias puede tener a largo plazo que los niños hagan tareas de casa a cambio de una recompensa? ¿No deberían saber que ciertas cosas, especialmente las tareas de casa, hay que hacerlas porque es un trabajo que debe compartise?

Conseguir trabajo cuesta

Si bien no para este momento (¿o sí?), sino para cuando sean algo mayores, creo que estaría bien aprender que conseguir trabajo no es ir a papá y mamá y pedirles algo que hacer. Ir ahí fuera y buscarse la vida es difícil. Conseguir trabajo cuesta. A lo mejor es mucho pedir, pero creo que establecer algo de negociación de por medio cuando son mayores o, incluso, incentivar la propia iniciativa, puede ser muy positivo.

Ahorrar es importante

En una web leí hace tiempo que unos padres hacen que sus hijos planteen cosas caras que quieran comprar a medio plazo, y les obligan a reservar un porcentaje de la paga para conseguirlo. Me parece estupendo. El establecimiento de "botes" u objetivos a medio plazo hace que los niños aprendan a ser pacientes y a aprender que el esfuerzo no solo es económico, sino a veces también es de tiempo. Saber mirar al largo plazo es importante.

El poder del interés compuesto

Me parece fundamental que los niños sientan en sus propias carnes el poder del interés compuesto. Se me ocurrió una vez que su hucha produzca intereses, altos al principio (cuando son más niños, porque si no pensarán que se gana muy poco) y bajo a la larga. Si eso se une al punto siguiente, puede ser un aprendizaje de maravillosas consecuencias.

Invertir

De momento esta parte no me interesa tanto, aunque estoy abierto a ideas que permitan enseñarlo desde ya. Supongamos que se hacen mayorcitos y han aprendido a ahorrar y el poder del interés compuesto. Poco a poco les hemos ido bajando el interés y ahora mismo no obtienen mucho dinero en su hucha. ¿Cómo podríamos hacer para enseñarles que hay inversiones y que estas inversiones, a largo plazo (gracias al interés compuesto) pueden darles grandes beneficios?

El coste de la vida

También para mayores, me encantaría que los niños fuesen conscientes de que la vida, en sí, cuesta dinero. Que sus padres pagan todos los meses por vivir donde viven, por el agua que consumen, por la comida, por la electricidad que alimenta la consola...

Ser solidario

En el objetivo "ahorrar es importante" menciono a unos padres que obligan a sus hijos a ahorrar para objetivos a medio plazo. Esa misma familia les obliga a dedicar parte de sus ganancias a obras solidarias. No sé si eso es algo que habría que enseñar como parte de la educación financiera, pero hacer consciente a los niños de las necesidades de otros, desde luego, sí lo es. Igual no es mala idea.

Manejar presupuestos

Cuando los niños tienen edad suficiente para manejar álgebra elemental creo que es bueno que lleven sus cuentas. Cuando se planteen objetivos a medio plazo estaría bien que calculen cuánto tardarán en alcanzarlos, así como saber en todo momento, sin contar el dinero, cuánto tienen.

La hora de las cuentas

Mi mujer y yo hubo un tiempo en que llevábamos nuestras cuentas al céntimo, y dedicábamos siempre tiempo a revisarlas y ponerlas a punto. Perdimos la costumbre con la última mudanza, pero está entre nuestros objetivos del año recuperar la costumbre. Sería una estupenda idea que hagamos esas cuentas siempre el mismo día de la semana y a la misma hora y que, junto a nosotros, los niños hagan las suyas, bajo nuestra supervisión. Así verán que es algo que hacen ellos y hacemos nosotros, los mayores, y lo tomarán como una costumbre.

Imprevistos

Esto, como algún otro objetivo de los que se me van ocurriendo, es un plus. ¿Sería posible introducir en su economía el concepto de imprevistos? Cuando alcancen cierta edad vendrán solos, pero ¿se les puede hacer conscientes antes de lo que implican y de la necesidad de reservar un dinero para ellos en su presupuesto?


Estos son, escritos a bote pronto y en el orden que han salido, los objetivos que se me ocurren que podría cumplir un buen sistema de enseñanza de finanzas personales. Cuando tengamos claro el sistema y cómo implementarlo, escribiré otro post.

¿Se os ocurren otros objetivos? ¿Qué más cosas creéis que es importante que los niños (o adolescentes) aprendan sobre sus finanzas personales?

miércoles, 17 de diciembre de 2014

El buen programador

A mí, programar me gusta. No considero que sea mi trabajo ideal, porque hay cosas que me gustan más, pero me gusta. De hecho, en el trabajo de programador hay tres vertientes. Una me apasiona, otra me encanta y la tercera la detesto. En general, no me considero un gran programador.

En primer lugar, me apasiona conocer las necesidades del usuario, entender sus problemas y diseñar soluciones óptimas para él. Resulta apasionante conjugar las necesidades del usuario con una buena arquitectura de código y negociar con la parte más técnica de la empresa las soluciones que se necesitan. Realmente, esta tarea no es puramente del programador, sino, según la organización de la empresa, del jefe de proyecto, el project owner o el business analyst, que es la función en la que yo más encajo.

En segundo lugar, me encanta el desarrollo de arquitecturas buenas y algoritmos que solucionan problemas. Es como jugar a un rompecabezas apasionante. El diseño de soluciones técnicas es fascinante, sobre todo cuando las condiciones que se exigen son muchas o complejas. Eso hace la labor aún más interesante. Además, en general no se me da mal, lo que siempre lleva a una mayor satisfacción personal.

¿Y qué es lo que detesto? Pues tirar código absurdo. Escribir para nada. Teclear cientos o miles de líneas cuando, como suele pasar en mi lugar de trabajo, hay un 90% de probabilidades de que no se usen jamás. A veces, cuando lo que haces es aplicar una solución a un problema, te motiva porque estás pensando en ver la solución en marcha. Pero cuando las cosas pasan a ser tonterías sin ningún estímulo intelectual, simplemente no puedo con ellas. Así que, más bien, no detesto tirar código: detesto tirarlo en mi empresa.

En la empresa en que trabajo, como digo, esta tarea se come la mayor parte del tiempo, lo que hace que mi productividad descienda rápidamente. Además, como me gusta el código modular y fácil de mantener, suelo dedicar algo de tiempo extra a conseguir que los proyectos estén bien hechos, sobre todo porque luego hay que cambiar muchas cosas y cuesta el doble o triple de lo que costó el desarrollo inicial. Aquí eso no se estila. Somos los reyes del quick & dirty: si luego cambian, ¡pues ya lo veremos entonces! Y luego nos ganamos fama de lentos ante marketing, o tenemos que decir que "no" a todo lo que piden porque ni habíamos pensado que pudieran pedir lo que siempre piden. Así pues, ante mi jefe pronto me gané la fama de lento y, curiosamente, su juicio ante eso es que no soy un buen programador. Nunca me ha gustado ese juicio. Nunca me ha gustado el quick & dirty. Nunca he encajado con la cultura de esta empresa.

El otro día, nuestro nuevo jefe de operaciones apareció por la cocina y dijo algo similar: "si un programador hace las cosas rápido, es bueno. Si no, pues... no". Es la cultura de la empresa. Y yo me pregunto, ¿qué es un buen programador? ¿Realmente es alguien que implementa una solución rápido?

Entendámonos: cualquiera que haga un trabajo, si es capaz de hacer el mismo trabajo el doble de rápido es mejor. Por narices. A igualdad en todo lo demás, si en una cosa se es mejor, pues se es mejor en términos globales. Lo que pasa es que eso no suele suceder. Cuando digo que en la empresa hablan de rápido me refiero a que, cuando lo dicen, se refieren a que la velocidad es el parámetro, prácticamente único, por el que se rigen. Si tu código no hay quien lo entienda, da igual. Si no se puede mantener, da igual. Si el usuario tiene que hacer ocho clics para una tarea que se le podría apañar con uno, ya ni te cuento. Aquí he tenido que escuchar una frase mítica, que fue algo así como: "A mí la usabilidad me parece una tontería, al final se trata de si lo pueden hacer o no". ¡¡¡¡Pero qué @#$%&!!!! Da igual si es fácil o difícil, si soporte tiene que usar una hoja de papel para apuntar el ID de un usuario para luego buscarlo en otra pantalla... Da igual.

Una nota antes de empezar: no escribo esto para justificar ni argumentar contra la opinión de mi jefe sobre si soy o no buen programador, pese a que no estoy de acuerdo con él.

Así pues, ¿qué es ser buen programador?

Jens "Jeb" Bergensten, desarrollador de Minecraft, dice que "un buen programador es alguien que busca información y a quien gusta el pensamiento crítico". Tras buscar por la web posts sobre el tema y coger al azar seis de ellos, me he encontrado con que cinco mencionan la "búsqueda de información" que Jeb comenta, y los seis hablan de "pensamiento crítico", citándolo como tal o de forma similar. Así pues, ya tenemos dos características. Sobre la velocidad, se menciona en dos posts, aunque uno no habla de rapidez, sino de "atenerse a las fechas".

Me resulta curioso que tres de los posts hablan de la capacidad del programador para comunicarse con el resto. Creo que cualquiera necesita eso, sea programador o no, pero lo que realmente me llama la atención es que de los tres, dos lo describen como "capacidad para enseñar". Esto, en mi opinión, seguramente se debe a que, dada la nula formación que tiene la gente en programación, la comunicación de los departamentos técnicos con el resto suele considerarse del tipo "deja que te explique, porque no tienes ni idea". Mi experiencia como business analyst es que lo habitual es que eso ocurra en ambas direcciones: los demás departamentos también suelen pensar que los programadores son gente cuadriculada que no entiende ni jota de sus asuntos y a quienes, por tanto, hay que explicarles lo básico porque no tienen ni idea. Eso, en parte, es lo que más me apasiona del papel de business analyst. Es como ser un traductor, pero a lo bestia: no solo traduces, que es algo relativamente automatizable, sino que eres capaz de ver los problemas desde dos puntos de vista diferentes, entenderlos y encontrar soluciones. Imaginen una pieza de madera con forma de cuña. Un departamento la ve desde un lado y percibe un triángulo, mientras el otro la ve de frente y percibe claramente un rectángulo. Y tú ves la cuña. Y eres capaz de diseñar soluciones específicas basándote en lo que ves, y de negociarlas para que ambos queden plenamente satisfechos. Es maravilloso, porque entras en un conflicto y sales con una solución que nadie era capaz de percibir y que deja contento a todo el mundo. Y eso es fascinante.

Si hay un project owner o un business analyst, el programador creo que necesita las dotes de comunicación habituales en cualquier profesional. Solo requiere de esas habilidades hasta el punto de mencionarlas en un listado de características del buen programador cuando no existe ninguna de esas figuras y ha de hacerlo el propio programador.

Tres posts mencionan también la estructura del código, y los seis mencionan los errores y su gestión. Cinco mencionan la pasión por la programación (supongo que cualquiera ha de ser un apasionado de su trabajo), dos hablan de crearse sus propias herramientas y otros dos de búsqueda de la perfección.

Mi lista

He aquí una lista de características. Para mí, un buen programador es alguien que tiene suficiente de cada uno de los elementos de la lista, sin primar ninguno sobre los demás y, además, en alguno de ellos destaca especialmente. ¿En cuál? Pues supongo que en el que más se adapte a la cultura de su empresa o el que más útil resulte para el proyecto en que esté trabajando. Habrá programadores en los que prime la velocidad y otros en los que destaque la limpieza de código.

Pasión
Esta es común a todos los demás trabajos que existen en nuestro universo.
Velocidad
Esta también es común a todos los demás trabajos que existen en nuestro universo.
Dotes comunicativas
Esta también es común a todos los demás trabajos que existen en nuestro universo. Lo básico, no hace falta más: como en cualquier otro curro, no exageremos. Y no se trata de enseñar, sino de dejar que te enseñen para conocer las necesidades de tu cliente.
Buena estructura de código
Un código bien estructurado es fácil de mantener y comprender. Y si está comentado, mejor. Y si está documentado, vamos... un altar para el señor.
Capacidad para crear buenos algoritmos
La algoritmia es la base de la buena programación. Hay gente que habla de patrones de código (algo así como recetas para resolver problemas-tipo). Por contra, hay quienes piensan que quien programa con patrones es mal programador. Creo que los patrones es interesante conocerlos, pero quien programa conforme a ellos es porque no suele ser capaz de adaptarlos y generar soluciones más eficientes.
Gusto por aprender
Este mundo avanza muy rápido, y siempre están saliendo nuevas herramientas que es bueno conocer. Además, es bueno tener curiosidad por las necesidades de los usuarios.
Voluntad de hacer herramientas útiles
Solo cuando un programador asume que su herramienta puede ser útil, y tanto más cuanto mejor entienda los problemas de los demás, estará dispuesto a trabajar más para hacer ciertas cosas. Implementar funcionalidades que mejoran la vida de los usuarios normalmente implica más trabajo para el programador. Por eso debe encontrar motivación en la felicidad del usuario y la utilidad de la herramienta.

Y nada más. No creo que mucho más que añadir. Lo de la gestión de errores es algo que, pienso, va con la vocación. Es como decir que un buen albañil necesita ser capaz de poner ladrillos. A ver... Eso no es necesario para ser un BUEN albañil: es necesario para ser albañil.

¿Qué otras características añadiríais vosotros?