• Mejorando la visibilidad de información en equipos remotos

    Estás teniendo una acalorada discusión con tus compañeros de trabajo acerca de cómo resolver ese problema con el que llevan atorados un par de semanas. Todos están trabajando de manera remota, y están teniendo la discusión en el canal de chat de la empresa. Han intentado varias propuestas de diferentes miembros del equipo, pero ninguna parece terminar de lleno con el problema.

    De repente a una de tus compañeras le llega a la cabeza la solución ideal que sí va a funcionar. Rápidamente la redacta y la publica en el mismo hilo de conversación que han estado usando para coordinar los esfuerzos de resolución de la situación. “Si quieren lo platicamos en una llamada”, escribes. Presionas Enter en tu teclado, y unos minutos después todo el equipo está platicando cara a cara en un Google Meet repasando el plan de acción.

    Todos aceptan, entienden su rol, y comienzan a trabajar. Por fin encontraron la solución que les permitirá continuar con la siguiente fase de su proyecto, y la implementarán en tiempo récord.

    Todo parece estar tranquilo. Un éxito seguro, un problema menos, y todo gracias a la excelente colaboración de los miembros del equipo.

    Hasta que tiempo después alguien hace la pregunta: ¿Me pueden explicar por qué se resolvió esto así? Pero hace 6 meses que la persona que propuso la solución se fue de la organización.

    La problemática

    El escenario que describo anteriormente sucede más de lo que te imaginas, y no es exclusivo de organizaciones o empresas grandes. Seguramente alguna vez te has preguntado por cómo llegaste a cierta decisión en tu vida personal, o en tu proyecto individual. No es raro.

    El cerebro humano está diseñado para generar ideas (y es excelente en ello), no para almacenarlas. El dicho reza que dos cabezas piensan mejor que una, no que dos cabezas recuerdan mejor que una. Reconociendo esto, podemos tomar acciones concretas para no complicarnos la vida a nosotros mismos al momento de que necesitemos recordar cómo fue que llegamos a una decisión.

    Una técnica para esto es pensar en las ideas y acuerdos en términos de Flujo y Stock.

    Flujo y Stock

    Seguramente habrás escuchado en alguna ocasión que cierto producto se encontraba fuera de stock al momento de intentar comprar algo en una tienda. “Nos llega pedido en 15 días,” como es de costumbre.

    En el mundo de la economía, los negocios, y la logística existe el término Flujo y Stock, que nos permite pensar de diferentes maneras en las unidades más importantes para un determinado contexto. Al enmarcar la unidad con la que estamos lidiando en el concepto de Flujo y Stock, se vuelve mucho más sencillo determinar cómo deberíamos de manejar dicha unidad.

    Una manera más amigable para asimilar el concepto de Flujo y Stock es pensar en que tenemos una tienda de libros. Piensa en cuáles libros pondrías en las vitrinas para atraer clientes. Estarás de acuerdo que la respuesta es que en las vitrinas deberían ir los libros actuales, novedosos o que están en auge, pues son ellos los que atraerán a la tienda a los clientes potenciales que van pasando.

    Y entonces, ¿cuáles libros deberías guardar en tu almacén? Los libros clásicos, de conocimiento antiguo; no son tan populares, pero debes tenerlos a la mano de una manera relativamente accesible porque eventualmente va a llegar un cliente a preguntarte por uno de ellos. Es ahí cuando dices “permíteme tantito, déjame ir por él a la bodega”.

    De manera concreta:

    • Flujo hace referencia a una transacción que se haga con una unidad de medida durante un periodo de tiempo. Cuántos libros vendes por hora. Estos libros van en la vitrina.
    • Stock hace referencia a una unidad de medida en un marco de tiempo en particular. Cuántos libros tienes disponibles para venderhoy. En tu stock tienes los libros clásicos.

    Flujo y Stock del conocimiento

    Podemos categorizar cómo administramos nuestros bienes físicos, y determinar si los debemos de guardar en un almacén, o tenerlos en las vitrinas de una tienda. De la misma manera, podemos categorizar el conocimiento y la información que manejamos en el día a día. El concepto de Flujo y Stock, al ser asimilado y transportado al reino del conocimiento, nos permite discernir con mayor claridad cómo deberíamos administrar una idea.

    Podremos decidir si un pedazo de información es de flujo (novedosa, popular, y que debería ir en la vitrina), o de stock (de valor histórico, clásica, y que debería ir en el almacén).

    La información que determinemos flujo va en las vitrinas de la era digital: aplicaciones de chat, videollamadas, correos electrónicos, o cualquier otro medio de comunicación cuya naturaleza sea efímera. Estos medios de comunicación están hechos para ser consumidos “al pasar”, al igual que un exhibido afuera de una tienda.

    Entre las características de los medios de comunicación ideales para transmitir información de flujo se encuentran:

    • se centran en la facilidad de transmitir, no preservar, la información (chats privados, videollamadas por Zoom o Google Meet),
    • usualmente ofrecen una experiencia personalizada para cada usuario (Facebook, Twitter, Instagram, WhatsApp), y
    • generan silos de información dentro de una organización (correo electrónico).

    Por el contrario, la información que determinemos stock debería de ir en nuestros repositorios digitales de información: documentos en la nube, notas compartidas, o almacenes de código a los que todos los miembros del equipo tengan acceso. Si contrataras un nuevo vendedor en tu librería, él o ella necesitaría acceso a tu bodega de libros para poder hacer su trabajo. Sucede exactamente igual con el conocimiento.

    Entre las características que hacen que un medio sea apto para almacenar información de stock se encuentran:

    • la habilidad de que todos los miembros de la organización estén viendo el mismo contenido al mismo tiempo (carpetas compartidas, como Google Drive o Dropbox),
    • la posibilidad de colaborar simultáneamente en la edición del contenido (Google Docs, Office365, Dropbox Paper)
    • la preservación de un historial de modificaciones, con marca de tiempo y detalle del cambio (Google Docs hace esto también)
    • el contenido es indexable y se pueden realizar búsquedas complejas

    También es de vital importancia asegurarse que la información stock debe de contener todo el contexto necesario para ser útil. Para esto, te recomiendo que sigas el PURLÚ (Principio de la URL Única). De nada sirve tener información guardada, si es dificil interpretarla.

    ¿Cómo saber si una pieza de información es Flujo o stock?

    Una definición muy personal para la información que considero como flujo en mi día a día es preguntarme si la idea podría caber en un Tweet. Si la respuesta es sí, entonces comunico la idea a través de un canal apto para información fluctuante.

    Ejemplos de información que considero flujo:

    • Notificar al equipo que un proyecto se completó de manera exitosa.
    • Confirmar un dato con alguno de mis compañeros.
    • Pedir o dar una actualización de estatus de una iniciativa.
    • Pedir por referencias sobre algún trabajo previo.
    • Información relacionada con ocio.

    Por otra parte, cualquier pieza de información que tenga un valor histórico dentro del contexto en el cual está siendo manejada, debería de ser considerada información de stock.

    Notificar que un proyecto se completó de manera exitosa es claramente información de flujo, y podríamos hacer dicho anuncio a través de Slack, Google Chat, o en un correo electrónico sin problema. Sin embargo, el historial y resumen de entrega del proyecto completado es información de stock, y por lo tanto deberíamos de preservarlo en un folder compartido de Google Drive o Dropbox, al cual tienen acceso los miembros del equipo a quienes podría servirles dicha información.

    Puedes aplicar esta misma forma lógica en tu día a día para determinar si algo debería ser comunicado como información de flujo, o información de stock. Además, puedes ir un paso más allá y pensar también en organizar los canales de comunicación de tu equipo, algo de lo que también escribí.

    Conclusión

    Estudiar otras áreas de la vida nos expone a ideas que podemos moldear para resolver problemas que ni siquiera estábamos conscientes que teníamos. En esta ocasión, hemos explorado un concepto de economía, nos hemos quedado con su esencia, y lo adaptamos a un área de interés muy particular: la administración de la información y conocimiento.

    Ser eficiente, en esencia, se trata de remover fricciones. Al remover la fricción de recuperar conocimiento e información, estamos elevando nuestras probabilidades de tener éxito en lo que sea que estemos haciendo. Aplicando el concepto de Flujo y Stock en nuestro trabajo y vida personal, dejaremos de tener la incertidumbre naciente de la falta de organización del conocimiento.

  • 5 Soft Skills para dominar si desarrollas software

    Los Soft Skills son imprescindibles para cualquier desarrollador de software. Puede que seas capaz de codificar mientras duermes, pero si no tienes la capacidad de comunicarte te encontrarás en una situación incómoda. Y a menos que pretendas trabajar por tu cuenta para siempre, no es lo ideal.

    Un estudio en el estado de Sonora demuestra que los mismos desarrolladores de software dicen que los Soft Skills son igual o más importantes que conocer ciertas tecnologías.

    Este artículo te enseñará los Soft Skills principales que pueden ayudarte a hacer o deshacer tu carrera como desarrollador de software.

    Comunicación

    La buena comunicación es una habilidad esencial para cualquier trabajo profesional. Pero es especialmente importante para los desarrolladores de software que son serios con su trabajo. Desarrollar software, a final de cuentas, se trata de resolver problemas — para y con otras personas.

    No importa si trabajas por tu cuenta como freelancer o en un equipo de desarrollo, vas a tener que comunicar ideas complejas a otras personas. Lo único que cambia es el medio. El diseño de una API comunica cómo debería ser utilizado tu servicio. Cómo redactas reporte de un bug comunica muchas veces no solamente lo que se debe de resolver, sino cómo debería de resolverse.

    Los desarrolladores de software, como personas lógicas que somos, tendemos a pensar en términos de unos y ceros. Pero tener esta misma mentalidad al momento de comunicarnos con otras personas, especialmente personas que no tienen nuestra misma formación, no hace otra cosa más que perjudicar nuestra carrera.

    Aprende a comunicar, y verás cómo tu código e ideas se vuelven 100% más efectivos.

    Negociación

    Los desarrolladores de software también tendrán que negociar con personas. Es raro el escenario en el que no tendrás la necesidad de discutir con otra persona para resolver un problema.

    Si trabajas eres freelancer, por ejemplo, tendrás que negociar fechas de entrega, alcance del proyecto y hasta tu compensación. Si eres parte de un equipo, tendrás que encontrar la manera de llegar a acuerdos con respecto a metodologías de trabajo, herramientas y hasta qué convenciones seguir.

    ¿Usarás tabs o spaces?

    ¿Por qué deberíamos de usar Ruby y no Elixir?

    ¿Deberíamos desarrollar este feature antes de refactorizar el sistema?

    No hay manera de que te escapes de tener que negociar cuando desarrollas software. Incluso, si lo piensas, diseñar una API se trata meramente de negociar qué es lo que el usuario te debe de dar vs. lo que tú le vas a regresar.

    Ser excelente negociando hará tu vida desarrollando software mucho más productiva. No

    Habilidades interpersonales

    Empatía, tacto, persuasión, liderazgo, entre otras. Las habilidades interpersonales son importantes cuando hay que interactuar con otros miembros del equipo para que no se sientan molestos o disgustados por tu presencia. No es divertido tener un compañero grosero, combativo, que se queja de todo y no sabe cómo adaptarse al grupo.

    Pero, yo diría, son mucho más importantes porque desarrollar software, al final del día, se trata de resolverle problemas a las personas.

    Muy rara vez se desarrolla un software para que funcione en un vacío. Es casi seguro que si estás desarrollando una aplicación o sistema, o implementando un algoritmo, es porque alguien, en algún lado, necesita resolver un problema. Es aquí donde las habilidades interpersonales marcan la diferencia entre un software mediocre (dogmático, apegado a las ideas del programador) y un software realmente útil (usable, que resuelve los problemas del usuario).

    Cuando desarrollamos software tenemos que tener siempre en mente a nuestro usuario. Por más novedosa que sea nuestra arquitectura, o más eficiente sea nuestro algoritmo — nada de eso importa si no estamos resolviendo el problema de la persona que usará nuestro desarrollo.

    Sucede exactamente lo mismo en el contexto del equipo de desarrollo: ¿de qué sirve que seas el que más sabe de algún tema si nadie quiere trabajar contigo?

    Eres una persona, y te mueves en un mundo de personas. No dejes que tus habilidades interpersonales se echen a perder.

    Trabajo en equipo

    Complementando a las habilidades interpersonales, viene el trabajo en equipo. Que es similar, pero no lo mismo. El trabajo en equipo es uno de los Soft Skills más citados en currículums, pero no muchos saben realmente qué significa.

    Más allá de poder comunicar ideas complejas a tus compañeros, y de poder “llevar la fiesta en paz”, la habilidad de trabajar en equipo se podría resumir en la siguiente frase: tú no eres lo más importante del equipo.

    Debes de ser capaz de observarte dentro del contexto del equipo, y ver cómo puedes apoyar, no cómo puedes obtener más control. Un desarrollador que sabe trabajar en equipo gestiona soluciones, delega responsabilidades y apoya en lo que puede. Pero nunca bloquea esfuerzos, acapara responsabilidades o tiene actitud de “quítate, yo lo hago”.

    Seguramente has escuchado el término 10x Programmer — hace referencia a un programador que hace el trabajo de 10 personas, presumiblemente porque es tan bueno. Pero piénsalo de esta manera: un 10x Programmer no solamente hará el trabajo de 10 personas, sino que hará que 10 personas no quieran trabajar con él o ella. Y, a largo plazo, esa es una posición en la que no quieres estar. Muy bueno tirando código, pero insoportable al momento de colaborar.

    No seas ese rockstar.

    ¿Quieres ser un 10x Programmer? Trabaja en equipo y haz que 10 personas crezcan para cumplir sus metas y objetivos.

    Paciencia

    Seguido me preguntan qué es lo que se necesita para poder desarrollar software profesionalmente. Muchas personas no se esperan que la respuesta que usualmente comparto es: paciencia. Un Soft Skill que usualmente pasa desapercibido porque es personal.

    Desarrollar software es como armar un rompecabezas en tu cabeza. Solamente que no sabes cómo se debería de ver el diseño final, ni qué tamaño debería tener, ni si está en la orientación correcta. Si te frustras fácilmente, no sabes cómo lidiar con incertidumbre, y buscas la gratificación inmediata de todas tus experiencias, probablemente serás miserable desarrollando software.

    No solamente deberás ser paciente con tus propios problemas — cuando estés intentando encontrar un error en un programa o aprendiendo una nueva tecnología. También deberás de ser paciente con personas que no hablan el mismo idioma que tú, o que no tienen la misma experiencia empírica. Tendrás que explicar conceptos complejos a personas que no saben de lo que estás hablando, y te harán preguntas sin sentido. Deberás lidiar con cientos de intentos fallidos para configurar alguna parte de tu stack.

    Desarrollar software es un ejercicio de paciencia constante.

    Si no eres paciente contigo mismo, y con las personas que te rodean en tu industria, probablemente la pasarás mal.

    Y si estás leyendo esto porque apenas estás considerando iniciar tu carrera desarrollando software, te ofrezco una disculpa. Sé que puede sonar nada divertido, y hasta como una advertencia de que no lo hagas. Pero, por experiencia propia te digo: hasta las veces que perdí la paciencia y lloré porque no podía configurar una simple tabla en mi aplicación de iOS valieron la pena. Porque durante los siguientes 10 años pude aprender de los mejores, viajar por el mundo, hablar en conferencias y mi código hoy corre en cientos de millones de dispositivos. Porque fui paciente.

  • Cómo evitar llamadas de trabajo innecesarias

    “Esta llamada pudo haber sido un correo” es algo que todos hemos pensado en alguna ocasión. Independientemente de si tu equipo Google Meet, Zoom o Microsoft Teams es muy probable que la herramienta no sea el problema, sino el cómo colaboramos.

    Gran parte de la población mundial descubrió hace un año, por primera vez, el mundo del trabajo remoto. Lo que antes se resolvía en charlas en los pasillos de la oficina, ahora se tiene que resolver a la distancia — probablemente coordinando 2 o más husos horarios diferentes.

    Desafortunadamente la transición al teletrabajo no ha sido tan suave para todos. Algunas personas y organizaciones han decidido que la única manera de sentirse productivos es (adivinaste) teniendo tantas llamadas como puedan caber en un día. De primera mano he visto amigos y familiares que vienen de industrias tradicionales que desde que comenzó la pandemia tienen llamadas constantes de 9 am a 6 pm, dejando muy poco espacio para realmente trabajar. Y lo peor, la mayoría de esas llamadas sí pudieron haber sido un simple correo.

    Después de más de una década trabajando de manera remota, te quiero compartir algunas técnicas que he aprendido para evitar tener reuniones innecesarias en Zoom o Google Meet.

    Bloquea tu calendario

    Tan sencillo como esto. Si usas Google Calendar, debes de saber que existe la capacidad de crear un tipo de evento especial para bloquear espacio en tu calendario. Automáticamente rechazará cualquier invitación a un evento que te hagan durante ese marco de tiempo.

    Personalmente bloqueo de lunes a viernes el espacio de 2 pm a 3 pm, mi hora de comida, y de 5 pm a 10 pm. Hace años que no tengo una llamada de trabajo después de las 5 pm, y mi hora de comida es sagrada.

    Es posible que no uses Google Calendar, o que no tengas activada la opción para crear ese tipo de evento. En ese caso, puedes simplemente crear un evento con un nombre opaco, como “FUERA” o “NO DISPONIBLE”.

    Esta solución es parcial, puesto que hay personas a las que simplemente no les importa la agenda de las demás y mandan invitaciones a eventos sin siquiera verificar si los invitados tienen disponibilidad. Pero, por lo menos, si utilizas la opción de fuera de la oficina, Google rechazará la invitación por ti.

    ¿Sabes qué quieres decir?

    Probablemente en más de una ocasión hayas recibido un mensaje como este:

    Hola, ¿cómo estás? ¿Me regalas 10 minutos para rebotar unas ideas?

    La respuesta por defecto a una proposición de este tipo debería de ser “no”.

    La cultura laboral latinoamericana es muy propensa a querer complacer a nuestros colegas, líderes o jefes. Se nos ha hecho creer que poner nuestro bienestar y productividad por delante es hacerle falta a la compañía. Se dice que no estamos jugando en equipo, y que no tenemos “puesta la camiseta”.

    Lo que muchas personas no saben es que al decir que no a una propuesta de este tipo no estás siendo egoísta. En realidad estás ayudando a evitar perder el doble del tiempo que la persona que quiere hablar contigo cree. 10 minutos tuyos, y 10 minutos de ellos.

    Dependiendo de tu situación, te invitaría a contestar la invitación a una llamada de 10 minutos con una versión de lo siguiente:

    Ahora estoy algo ocupado, lo siento. Si no te molesta, déjame tus preguntas o tu idea aquí en el chat y cuando tenga tiempo la reviso y te comparto mis comentarios.

    Así la otra persona se ve en la necesidad de estructurar sus ideas o preguntas para poder escribírtelas. Este proceso es primordial, pero muchas veces ignorado. ¿Sabes realmente lo que quieres decir o simplemente quieres escupir un montón de pensamientos? Este es un buen Litmus test.

    Cuando comiences a emplear esta técnica para rechazar “llamadas rápidas” tendrás una epifanía. Te darás cuenta de que la mayoría de las veces, al intentar escribir las preguntas o definir la idea, se responden ellos mismos y tu opinión ya no será necesaria.

    Ejerce tu derecho a rechazar invitaciones

    Me atrevería a apostar que todas las aplicaciones de calendario tienen la opción de rechazar una invitación a un evento. ¿Cuántas veces has presionado ese botón?

    Durante mi proceso de formación profesional creía que una invitación a un evento era algo que se tenía que tomar sí o sí. Conforme fui creciendo y agarrando experiencia me di cuenta de que, en virtud de hacer mejor mi trabajo, vale más la pena proteger mi tiempo y creatividad que tomar una llamada — en la mayoría de los casos.

    Así que fui desarrollando una serie de políticas personales en las que me baso para determinar si acepto o no una invitación a un evento en el calendario. Te las comparto a continuación.

    Política #1: Procuro no enviar o aceptar invitaciones para el mismo día. Soy introvertido por naturaleza, y “encender” el “modo llamada” me cuesta muchísima energía. Prefiero tener por lo menos un día de margen para poder llegar preparado y asegurarme de que puedo aportar el valor necesario a la llamada. ((Esto no siempre es posible, y hay veces en las que simplemente se tiene que entrar a la llamada — sobre todo en situaciones críticas. Ni modo.))

    Política #2: Si el nombre o la descripción del evento no te dicen exactamente de qué se va a tratar la llamada, no acepto la invitación. En algunas ocasiones selecciono “Posiblemente” y respondo la invitación pidiendo clarificación sobre el propósito de la llamada. Una vez que esté claro el por qué es importante reunirnos, puedo decidir si acepto o no.

    Política #3: Actualizaciones de estado se hacen por correo, no por llamadas. Las reuniones para actualizar al equipo sobre progreso son el ejemplo primordial de llamadas que pudieron ser un correo. Para estos casos, si sé que puedo hacer llegar la información que me van a pedir por correo así lo hago y rechazo la invitación. Y como manager te comparto: es liberador cuando un miembro de mi equipo me responde con un “aquí está lo que me necesitas saber” y rechaza la invitación a la llamada.

    Política #4: Los horarios personales son sagrados. La hora de la comida, vacaciones y cualquier hora después de las 4 pm son intocables.

    Conclusiones

    El trabajo remoto fluye con muchas menos complicaciones si aceptamos la idea de que estar ocupado no es lo mismo que ser productivo. Y, te anuncio, las llamadas te mantienen ocupado.

    Como con todas las herramientas, también debemos de asegurarnos que estamos usando la herramienta adecuada para resolver cada problema. Si bien tener una llamada puede sonar como un atajo para atender una situación de manera más rápida, lo cierto es que intentar resolver absolutamente todo en llamadas es contraproducente. Si pasas 8 horas en llamadas todos los días, ¿a qué hora trabajas?

    Puedes encontrar el hilo de esta publicación en Twitter.

  • Aparición: Let Swift Podcast S02E08

    Hace un par de semanas tuve el gusto de participar con Pedro Rojas y Angel Morales en su programa, Let Swift Podcast. Hoy, la primera parte de la conversación que grabamos (de casi 3 horas de contenido) está disponible para que la escuches n Apple Podcasts, Spotify, Google Podcasts o PocketCasts.

    Como probablemente sepas, trabajé desarrollando aplicaciones para iOS por un poco más de 10 años antes de cambiar de carrera y dedicarme de lleno al management. La charla con Pedro y Angel fue una excelente oportunidad para volver a mis raíces y compartir un poco de lo que aprendí durante todo ese tiempo.

    El contenido es un poco técnico (solo un poco), pero estoy seguro de que le podrás encontrar valor. En general, hablamos de…

    ?Los retos de aprender iOS por cuenta propia

    ?? Freelancing

    ?¿Cómo es dar pláticas en otros países?

    ??¿Cómo mejorar nuestros softskills?

    Mil gracias a Pedro y Angel por recibirme en su casa.

  • Investigadores de Stanford identifican 4 causas de la “fatiga de Zoom”

    4 consejos puntuales que son realmente sencillos de implementar:

    1. Procura que la videollamada no ocupe toda tu pantalla.
    2. Oculta el recuadro que muestra tu cara.
    3. Cambia tu entorno dentro y asegúrate de tener suficiente espacio para moverte constantemente.
    4. Si tienes muchas llamadas, date tiempo de tomar algunas en modo de “solo audio”. Sobre todo en aquellas llamadas que no necesites participar activamente.

    Creo que el punto 4 es el que le da en el clavo a toda la situación.

    Algunas industrias, al moverse al trabajo remoto, decidieron que para sentir que se está haciendo el trabajo es necesario tener llamadas. Discutir, planear… “Colaborar”. Pero no se dan cuenta de que tener que estar en una llamada discutiendo un tema en particular está quitando tiempo efectivo para poder hacer el trabajo.

    La solución para no tener fatiga de Zoom no es usar la herramienta diferente. Es no tener tantas llamadas en primer lugar.

    Link

Ayudo a personas que trabajan con software a mejorar sus carreras profesionales.

Los miembros tienen acceso a Pathways, pueden comentar en las publicaciones, interactuar con la comunidad, y muchos otros beneficios. Conoce más.

Agrégame a tu lector RSS, o suscríbete a mi newsletter para recibir los nuevos artículos que publique.