Trabajando en remoto

Remoto, teletrabajo, trabajar desde casa, trabajar desde cualquier sitio… es el concepto de moda entre todos los programadores que conozco. Llevo un tiempo trabajando desde casa y en este post voy a contar algunos consejos que me han funcionado (y otros que no) en más de un año fuera de la oficina.

Lo primero puntualizar un poco. Cuando hablamos de remoto, nos podemos estar refiriendo a un amplio abanico de posibilidades, es decir, según como yo lo veo hay distintos tipos de remoto:

  • Sólo un miembro del equipo es el que no va a la oficina: es el más complicado, porque todo el mundo debe ser consciente de que las conversaciones en la oficina tienen que moverse a un canal más digital.
  • Cuando hay algunas personas que están personas del equipo teletrabajando. Este es más o menos mi caso: somos un equipo pequeño donde hay varias personas que solo vamos a la oficina 1 o 2 veces por semana.
  • No existe oficina: es el caso de empresas tan conocidas como Buffer o similar, es una opción que cada vez se está poniendo más de moda.

Del mismo modo, hay otras muchas maneras de clasificar el teletrabajo: si el equipo está distribuido en distintos husos horarios, si el equipo trabaja con personas de otras oficinas y como es mi caso, la empresa tiene horario flexible y todo el equipo nos solapamos una parte de la jornada.

¿Por qué elegí trabajar en remoto?

En mi caso elegí trabajar en remoto sobre todo para poder conciliar. ¿Qué quiere decir esto? Pues empecemos dando un poco de contexto, en Andalucía las guarderías públicas/concertadas solo permiten tener a un peque 8 horas como máximo. Por lo entre el tiempo de ir/volver a la oficina, el tiempo de comer,… a mi pareja y mi se nos hacia un poco complicada la “logística” de poder cuidar a nuestra peque. Aunque ahora que lo pienso también hay otras muchos factores que han influido:

  • Conciliación, como ya expliqué antes.
  • Los desplazamientos al trabajo y los atascos. Ahora tardo 10 segundos en llegar al trabajo, por lo que no tengo que madrugar tanto.
  • Pocas interrupciones. Si necesito concentración solo tengo que comentarlo en Slack y ponerme el “don’t disturb”.
  • Equipo, ya teníamos una confianza y algunas personas del equipo trabajaban en remoto, por lo que fue fácil para nosotros que otra persona más empezase a trabajar desde casa.

Del mismo modo, creo que el factor clave para que el trabajo en remoto funcione es la confianza: la empresa ya tenía una confianza en mí, sabía como trabajaba y como rendía, dentro del equipo también teníamos confianza para trabajar juntos y yo también tenía confianza en que si seguíamos trabajando bien podríamos trabajar en “remoto” .

Ahora la pregunta es ¿Se puede conseguir esa confianza empezando desde remoto? Creo que son las personas las que hacen el equipo, no el hecho de estar en una oficina u otra. Aunque es cierto que estar en persona ayuda, por eso creo que estar juntos en el onboarding ayuda.

Básicos para trabajar en remoto

Cuando empecé en remoto me lo tomé como una experiencia “piloto”. No quería gastarme dinero porque no sabía si iba a funcionar (aunque era lo que más deseaba del mundo) y porque “total solo trabajaba en casa algunos días” —> ERROR. Aunque sean pocos días creo que es necesario tener un ambiente cómodo.

Cuando empecé a trabajar desde casa, vivía en una casa de 2 habitaciones, así que me despertaba temprano y empezaba a trabajar en el salón. Cuando mi peque se levantaba para ir a la guarde me movía a su cuarto, la mesa en la que trabajaba era pequeña (solo cabía el portátil, nada de monitor).

Equipamiento, no solo el portátil

Por ello creo que uno de los factores básicos para trabajar en remoto es tener un buen equipamiento. No me refiero solo a tener un portátil, sino también otras muchos elementos a tener en cuenta:

  • Portátil, es la principal herramienta para poder trabajar desde donde queramos, en mi caso es un MacBookPro de 13″.
  • Monitor: si en la oficina tenemos una o 2 pantallas, en casa sería bueno tener una configuración parecida. En mi caso solo tengo una grande + la pantalla del portátil.
  • Sillas y mesa: creo que es de las cosas más importantes. Al final estamos trabajando, vamos a pasar sentados bastantes horas… por lo que es bueno invertir en este equipamiento. En mi caso tengo una silla Markus de Ikea, la misma que en la oficina y la mesa es lo suficientemente amplia como para no sentirme agobiado.
  • Buenas conexión a Internet. Es indispensable, no solo para poder buscar en Stack Overflow,  sino también para que escuchemos bien a nuestros compañeros, para que ellos nos escuchen a nosotros, para que podamos compartir pantalla…
  • Espacio físico aka. despacho. Ya sea que tengamos una habitación propia para el despacho o un hueco en el salón, es importante que ese sea nuestro espacio de trabajo. Como he comentado antes, al princpio no lo hacía así, pero desde que tengo un pequeño espacio donde tenerlo todo he ganado muchísimo.
  • cascos/micrófono/cámara: tener una comunicación fluida forma parte de trabajar desde casa, por lo que invertir en unos buenos cascos: con los que estemos cómodos, que tengan un buen micro, que sean compatibles con tu ordenador es algo primordial. Eso de hacer una llamada por Slack o lo que sea y tener que esperar 2 minutos porque no no se escucha, no te veo,… hace que te entre pereza volver a llamar y a la larga no es bueno.
  • apps: todo lo anterior es importante, pero creo que es indispensable que la empresa invierta en herramientas qué faciliten la comunicación. En nuestro caso usamos Webex, pero hay muchas otras como Slack (de pago para poder compartir pantalla), Zoom,…

Comunicación y equipo

Ya hemos hablado de cosas físicas, pero si algo tengo que agradecer a mi equipo y a toda la gente con la que trabajo es que todos hayamos cambiado el chip. Gracias a que todos empezamos a tener mentalidad de “remoto”, creo que es el hecho de que esté funcionando.

Me explico, cuando un equipo está al completo en la oficina, con solo hacer un gesto o llamar a la persona que está al lado puede obtener ayuda, resolver una duda… de la misma manera, es sencillo cruzarte con otra persona por el pasillo y charlas sobre cualquier cosa para “despejarte” y ver de nuevo el trabajo que estabas haciendo con más claridad. Ahora, que en nuestro caso, no estamos todos en la oficina… tenemos que mover la comunicación hacia otro canales. Normalmente Slack o Webex, así que ese “pedir/dar ayuda tiene que ser con más ganas”.

Para nosotros empezar el día haciendo una daily es clave. Contamos que nos tiene bloqueados, o si vemos que alguien lleva 2 días con lo mismo intentamos que la persona que esté más libre eche una mano (hacemos un slicing de muy pequeño de historias, aunque quizás eso sea para otro post), contamos también que hicimos ayer y revisamos el panel por sí podemos “empujar” las historias más prioritarias ha producción.

Por otro lado, también tenemos muchas salas de reuniones, esto nos sirve para poder resolver hablar con cualquier miembro del equipo que esté trabajando desde casa sin interrumpir al resto. Si alguien necesita ayuda, es tan sencillo como llamarlo por Webex y compartir pantalla.

Otro de los puntos es saber si estás disponible, intentamos avisar si nos vamos a comer o desayunar por si alguien te escribe para algo que no se quede esperando la respuesta. Cuando avisar y cuándo no, pues lo mismo que en la oficina: Oye que me voy a desayunar, ¿os venís? Bajo a comprar al Mercadona, ¿necesitáis algo? eso por ejemplo sí. Por otro lado, si en la oficina no avisas cuando vas al baño, cuando estas en remoto tampoco 😉

Al final, no es solo trabajar desde casa, es “aprender” a ser productivo desde un entorno en el que estás solo fisicamente. Eso hay a personas a las que les cuesta más y otras un poco menos. Por lo que la comunicación es esencial.

Cuidado

No todo es de color de rosa cuando trabajamos desde casa, tenemos una serie de inconvenientes añadidos que tenemos que conocer. En mi caso, los que veo son:

  • Soledad. estamos en casa intentando resolver algo y no sale, no encontramos solución. En la oficina nos escucharían resoplar y seguro que alguien del equipo nos preguntaría si nos pasa algo. Esa situación trabajando en remoto no sucede. Tenemos que ser más abiertos, pedir ayuda y no solo eso, sino preguntar a las personas del equipo si necesitan ayuda. Por eso para mi es muy importante la daily, porque sirve para ver si llevamos atascados en algo mucho tiempo, si hay alguna persona libre que pueda echarnos una mano, etc.
  • Salud. cuando empecé a trabajar en casa el número de pasos que daba al cabo del día se redujo de 10.000 pasos a 3.000 pasos… no podía ser. Por ello intento levantarme más o menos cada hora, dar un paseo por mi casa y sobre todo hacer ejercicio al menos 2/3 veces por semana. Esto último es ineludible.
  • Desayuno/descanso: si en la oficina nos tomamos un descanso para desayunar, en remoto también. Eso de hacernos un café y tomárnoslo encima del ordenador hace que nuestro cerebro no descanse. Desayunar en un bar, o en otra zona de la casa, o lo que sea. En mi caso paro a desayunar, salgo del “despacho” voy a la cocina, riego las plantas y me asomo a la terraza a que me de el aire.
  • Estamos trabajando: es una de las cosas que más cuesta, no solo a mi sino a la gente que nos rodea. Si estamos trabajando no creo que sea buena idea parar para tender, poner una lavadora, recoger el lavaplatos, ponerte a cocinar… no digo que no podamos hacerlo, sino que seamos conscientes de que estamos trabajando.
  • One to One: en mi opinión es una de las tareas más difíciles, tener conversaciones privadas a través de una pantalla es difícil, es más, en mi caso aprovecho los días que voy a la oficina para hacer todas las reuniones posibles.
  • Salir de casa: está relacionado con las dos primeras, creo que es necesario salir de casa al menos una vez al día. Ducha, ropa de calle y a andar un poco. En mi caso es fácil porque tengo que recoger a la peque a la guarde, o ir al parque,.. pero cuando eso no sucede tengo que salir sí o sí.

Resumen

Trabajar en remoto es una opción como cualquier otra, no es mejor ni peor. Es cierto que no todas las personas les gusta esta forma de trabajar y también es cierto que no todas las empresas están preparadas para el trabajo el remoto. Lo que si es cierto, es que es una opción muy valiosa y que las empresas que puedan ofrecer remoto (aunque solo sean unos días a la semana) tienen más posibilidades de encontrar talento.

Para mi lo más importante, lo que me gustaría que nos llevásemos del post es que es bueno que empecemos a tener mentalidad de “remoto”: a no interrumpir, a mover conversaciones a otros medios más digitales (comentarios en un issue tracker aka. Jira, chat de Slack,…), a pensar en la persona que tenemos al lado antes de recibir una llamada de teléfono, en resumen a ser más “remotos”. Al final, si algún día tenemos que trabajar desde casa, tendremos mucho ganado si somos digitales.

Desarrollo de software en provincias: de Madrid al cielo

2 años desde que dejamos Madrid para volver a Sevilla. En este tiempo han pasado muchas cosas: nuevo trabajo, nuevos compañeros, un par de mudanzas, una hipoteca,… voy a contaros como fue ese “salto”.

Las razones por las que me cambié son claras: queríamos vivir más cerca de la familia (el AVE ya cansaba) y Madrid con un bebé lo veíamos logísticamente “complicado”. En cuanto al salto… son muchas dudas empezando por: yo me voy con lo que parece un buen trabajo (incluso en las entrevistas hice preguntas que no se me hubiesen ocurrido hacer en otro caso), pero ¿qué pasa con mi pareja?

Ese es la primera gran “pregunta”: ¿qué pasa con mi pareja?

Ella tenía un trabajo genial en Madrid, saltar a Sevilla parecía que la abocaba al paro. Buscar trabajo en Sevilla, sin conocer el mercado: ¿Qué empresa va a contratar a una mujer en edad de tener niños? Quizás os parezca surrealista pero mi pareja ha escuchado en más de una jod* entrevista las preguntas: ¿Tienes hijos? ¿Piensas tener más? Al final, (con un poco de suerte) consiguió tele-trabajar desde Sevilla y viajar a Madrid regularmente. Antes de saber que iba a continuar trabajando lo único que hacíamos era rellenar Excels con supuestos (suponiendo que no ingresamos nada, suponiendo que encuentras algo media jornada, suponiendo,…)

Otro de los miedos que teníamos es ¿Qué pasa si sale mal?

Si sale muy mal desde el principio, podríamos dar marcha atrás. Puesto que el primer mes teníamos el piso de Madrid y estábamos buscando algo en Sevilla.
Pero y ¿si sale mal, más tarde? Esa era otra de las preguntas. Cambiarse de ciudad es costoso(tiempo +  esfuerzo + dinero):
– Buscar piso (en un principio de alquiler) en una ciudad nueva, es cierto que ya habíamos vivido en Sevilla antes, pero vivir de estudiantes en zonas de estudiantes no es lo mismo que buscar piso para una familia,.
– Gestionar una mudanza. Teníamos un piso en Madrid, nada en Sevilla, muebles, ropa y casi 6 años de vida en otra ciudad.
Guardería: Mi hija tenía una guardería que habíamos seleccionado con mimo. En Sevilla teníamos que esperar a saber dónde iba a estar el piso, para luego dar vueltas buscando guarderías con plazas y que se adecuaran a nosotros (horario, crianza,…)

En resumen, todo esto no solo mermaría nuestros ahorros, además teníamos el añadido a la inestabilidad de no saber si mi pareja iba a tener trabajo hacía de la vuelta a Sevilla suponiendo que mi trabajo fuese todo perfecto. Un salto casi al vacío.  Al final no salió mal, de hecho salió bastante bien: en mi trabajo pasamos de ser una startup pequeñita a ser parte de un grupo multinacional, mi pareja no solo continuo “teletrabajando” sino que cambió de trabajo, con la pequeña encontramos guarderías que encajaban-

Una de las cosas buenas de Madrid es la cantidad de ofertas de empleo. Si al cambiar de una empresa a otra sale mal, es más fácil encontrar otra nueva empresa o volver a la anterior. Es cierto que el mundo IT está muy loco pero creo que en Madrid tienes más oportunidades. Del mismo modo, no significa que en Sevilla no haya movimiento, De hecho sí lo hay: Qashops fue adquirida por Vente Privee (esta es la adquisición que más me alegró), Bitnami fue adquirida por VMWare, Geographica fue adquirida por Carto, Optima, Sngular, AtSistemas, cada más empresas ofrecen remoto,… el ecosistema en Sevilla es genial, solo que en mi opinión es más lento y al ser una ciudad más pequeña “todo el mundo se conoce”.

En cuanto al movimiento, en Madrid asistía a Meetups y conferencias. habitualmente Pensaba que al volver a Sevilla esto iba a ser complicado.Nad pero ni más lejos. En Sevilla hay una comunidad sorprendente. Existen multitud de Meetups: PHPSevilla, SVQJUG, GesProSev, DataBeers, SevillaJS, TypescriptSevilla,… y planificando un poco es posible ir a Madrid/Barcelona para alguna conferencia de vez en cuando. En resumen, sorprendente la calidad y cantidad de movimiento que tenemos por el sur.

Otro punto de los más controvertidos son “los costes de la vida” . En mi caso el coste básico de la vida en Sevilla no es menor que en Madrid. Puntualizo. El alquiler no ha variado ni un ápice (pagaba lo mismo que en Madrid). En cuanto a la cesta de la compra pues lo mismo, Carrefour tiene casi los mismos precios en Sevilla que en Madrid, la gasolina cuesta lo mismo.

En la parte que sí se nota es el ocio: ir de tapas, ir al cine, un café,… aunque por otro lado se nota en la diversidad: en Madrid puedes ir a un libanés, thai, japones, surcoreano, etíope, comer baos, manolitos, lolopolos…
Para mi una de las factores más favorables es que aunque no pueda comer en un coreano, ahora mi pequeña puede comer en casa de sus abuelos más a menudo que antes.

Del mismo modo que en el ocio la diversidad también se ve reducida en otros aspectos como por ejemplo: encontrar una guardería abierta en Agosto en Sevilla, colegios no religiosos,…

Recapitulando, para mí ese salto casi al vacío del que hablábamos al principio ha sido una alegría.No voy a negar que hemos tenido algo de suerte.
En el plano laboral ahora formamos parte del grupo Vente Privee, mi pareja tiene trabajo estable, mi hija va a una guardería estupenda.
Si bien es cierto que antes de venir tuvimos muchísimas dudas, al final con esfuerzo todo ha salido a pedir de boca. Como anécdota cuando mi pareja y yo estábamos analizando y charlando sobre la vuelta “a casa” siempre terminábamos nuestras conversaciones con: ¿qué es lo peor que puede pasar? Volvernos a Madrid, pues si ya estamos aquí y tan mal no nos va ¿no? Es de las conversaciones que recuerdo con más cariño.

Después de estos 2 años recordamos ese tiempo y nos reímos porque finalmente lo hemos conseguido: disfrutar de nuestra familia que antes teníamos lejos, ir a la playa en menos de 2 horas, pasear por una ciudad tan preciosa como Sevilla, una piso estupendo, hemos reducido el tiempo de ir al trabajo, vivimos felices… en definitiva en provincias nuestra vida ha mejorado

¿Cómo saber si encajaré con la cultura de empresa? Pregunta en la entrevista

Se habla mucho de cultura empresarial, de tener una cultura de empresa sana, de talento y de como retenerlo,… pero cuando estamos en una entrevista de trabajo como candidato ¿cómo saber si vamos a encajar? ¿la cultura será acorde a mis valores? ¿Cómo averiguarlo?

La verdad es que no hay una formula secreta, en este post voy a intentar contar algunas preguntas que he hecho para averiguar como sería trabajar en ese sitio y si de verdad la oferta encaja en lo que busco.

Sigue leyendo “¿Cómo saber si encajaré con la cultura de empresa? Pregunta en la entrevista”

go y json

Vamos a seguir aprendiendo un poco más acerca de GO.
En la serie de posts hemos creado una aplicación para ver la puntuación de un jugador y para añadir un punto dado un jugador.
Es la hora de empezar con aprender JSON.
Para ello ampliaremos la API con un nuevo endpoint que nos devuelva la lista de jugadores y sus puntos en formato JSON.

5519473590_20a555fdf9_z.jpg

Añadir el endpoint:

  • GET /league que devuelve la lista de jugadores con sus puntos

Sigue leyendo “go y json”

Retrospectiva y objetivos 2019

Va llegando final de año y es hora de echar la vista atrás, analizar todo lo que ha pasado este año y ver como mejorar para el próximo año. Si tuviera que resumir 2018 en un titular sería: “A velocidad de crucero”.

Cuando vine a Sevilla pensaba que no iba a poder ir a muchos meetups, conferencias,… pero todo lo contrario. Me he encontrado que aquí la peña se mueve un montón y siempre están dispuestos a echar un cable. Así que repasando un poco he ido a: varios PHPSevilla, a varios SVQJUG (incluso uno en inglés de la sevillana Trisha Gee), Databeers, Management 3.0, Taller de organización del backlog con LEGO, Taller de cocina,…  y además me dió tiempo a escaparme a Madrid para la MadridSoftwareCrafter, la TarugoConf + Taller “Programar con escafandra” en la TarugoConf.

Incluso le eché valor y presenté una charla sobre “git y personas” en la Commitconf (la experiencia fue emocionante y aprendí muchísimo).

Sigue leyendo “Retrospectiva y objetivos 2019”

Hacer test de integración a una API en Go

Ha llegado la hora de usar nuestra API hecha en Go. Tenemos la API llena de tests unitarios gracias a TDD, además con las responsabilidades separadas usando inyección de dependencias.
Partiendo de la aplicación de los post anteriores en este vamos a crear un punto de entrada main.go y usaremos test de integración para comprobar que todo funcione.

La API que estamos desarrollando sirve para guardar el numero de partidas ganadas por un jugador.
Tenemos 2 endpoints:

  • GET /player/{name} obtiene la puntuación de un jugador dado su nombre.
  • POST /player/{name} añade un punto al jugador.

De momento, lo que nos importa es seguir el flujo de TDD (test – código – refactor) mientras aprendemos GO. Así que no tenemos base de datos, sino que lo guardamos todo en memoria.

Sigue leyendo “Hacer test de integración a una API en Go”

Crear una API con TDD en GO parte 2

En el anterior post ya creamos una pequeña API en GO aplicando TDD. En ese caso se trataba solo de leer datos con peticiones GET.
Basándonos en esa parte y ya que tenemos el gusanillo de TDD(hacer un test, el código y refactorizar) vamos a implementar una petición POST, que nos servirá para guardar datos.
Si recordamos, la idea de la API es ir guardando el numero de partidas ganadas por una serie de jugadores y poder consultar el numero de partidas ganadas por jugador.
Básicamente tendremos:

  • Obtener la puntuación de un jugador GET /player/{name} ya implementado en el post anterior.
  • Añadir una nueva partida ganada a un jugador POST /player/{name}

Como siempre mantendremos nuestro ciclo de TDD: Red, Green, Refactor. Para ello trabajaremos haciendo una solución iterativa y añadiendo mejoras en cada ciclo de TDD.

30627718347_e5af269af4_z
SanchezM LittleFinland GoldButte2

Sigue leyendo “Crear una API con TDD en GO parte 2”

Mi paso por la CommitConf Estrategias branching: trabajando con git y personas

Hace unos días estuve en la CommitConf dando una charla sobre “Estrategias branching: trabajando con git y personas” y aquí os cuento un poco la experiencia de preparar una charla, ponerte delante de gente y recibir feedback.

34849470784_0eeaf985dc_z.jpg

¿Cómo fue el proceso?

A mediados de Abril se abrió el “Call for Papers” y me animé a enviar dos propuestas de charlas: una charla sobre refactoring que finalmente no fue escogida y otra sobre estrategias de branching.

Sigue leyendo “Mi paso por la CommitConf Estrategias branching: trabajando con git y personas”

Crear una API con TDD en GO

En este post vamos a crear una pequeña API en GO aplicando TDD como en toda la serie de post.
Ya tenemos el gusanillo de TDD: hacer un test, el código y refactorizar. Así que vamos a seguir con esa filosofía.

La idea de la API es ir guardando el numero de partidas ganadas por una serie de jugadores y poder consultar el numero de partidas ganadas por jugador.
Básicamente tendremos:Sigue leyendo “Crear una API con TDD en GO”

Tdd con go: punteros, errores y el típico ejemplo de wallet

Ya hemos aprendido a usar structs para modelar figuras. Ahora vamos a ir un poco más allá usaremos struct para administrar el estado.
Vamos a realizar el típico ejemplo de una cuenta de banco. ¡El mundo fintec es nuestro!

Vamos a hacer una cartera en al que podremos depositar fondos. Como siempre en toda esta serie implementaremos nuestra cartera haciendo TDD.

Sigue leyendo “Tdd con go: punteros, errores y el típico ejemplo de wallet”