Mi pasantía en Bloom

Me presenté como ingeniero de software en prácticas en Bloom en agosto de 2018. Durante un período de 15 semanas, aprendí muchas cosas, principalmente sobre la criptomoneda y cómo funciona.

Me topé con Bloom cuando estaba buscando empresas que están involucradas con cripto. Visité su sitio y luego descubrí que estaban usando Ruby / Rails en su pila. Hice la solicitud porque estaba interesado en aprender cómo funciona el cifrado y la tecnología detrás de él, además de que están usando Rails en su pila, que estoy usando para crear aplicaciones web simples. Envié mi solicitud por correo electrónico junto con mi currículum. Después de un par de días, Ramon, el CTO de Bloom, respondió a mi solicitud. Hicimos una entrevista en línea, y me aceptaron.

En mi primera semana, me encargaron aprender sobre Estelar. Stellar es una plataforma que conecta bancos, sistemas de pagos y personas. Aquí en Bloom, seguimos el desarrollo basado en pruebas o TDD para abreviar. TDD está escribiendo las pruebas primero como una guía sobre cómo debería ejecutarse el escenario, y luego las pruebas le indicarán si los resultados esperados del escenario se cumplieron o no. Bloom crea aplicaciones usando las bibliotecas Ruby de Stellar. La red de pruebas Stellar, o el campo de juego principal de Stellar para desarrolladores, es el Laboratorio Stellar. Utilicé la red de prueba para visualizar cómo funciona una transacción o proceso en Stellar. Primero, aprendí cómo generar una cuenta, financiarla y pagar otras cuentas. Luego me encargaron crear una gema de Ruby llamada stellar_spectrum. Es un proyecto de código abierto que permite al usuario de la gema utilizar los canales de pago de Stellar con facilidad. Ramon me comentó los detalles sobre cómo debería funcionar la gema.

Tengo que aprender a usar Sidekiq y Redis. Mientras trabajo en la gema, siempre me confundo porque en realidad es mi primera vez que uso stellar_sdk y mi primera vez en la construcción de una gema real. Fracasé muchas veces, así que conseguí que Ramon me ayudara. Escribimos los casos de prueba con RSpec.

Después de trabajar en stellar_spectrum, trabajé en otro proyecto llamado stellar_multisig. stellar_multisig es un Motor de Rails que apunta a asegurar transacciones a través de Multisignatures. Era como crear una gema de Ruby, pero con modelos, controladores y rutas. Trabajar en stellar_multisig es divertido porque pude perfeccionar mis habilidades en TDD y crear API RESTful.

Mis primeras expectativas en la empresa fueron que pensé que sería difícil y estresante, dado que todavía estoy estudiando. Resulta que fue realmente divertido, tener que conocer gente nueva y experimentar una cultura diferente cuando estoy en la universidad. Un problema que a veces experimento es el tráfico. Soy de Manila, y cuando voy a la oficina de Makati, siempre tengo mucho tráfico. Viajo en autobús, y el supuesto viaje de 20 a 45 minutos desde Manila a Makati de repente se convierte en 1 hora y media, en el peor de los casos, 2 horas. Por otro lado, cuando decido no ir a la oficina, hago trabajo a distancia. Me di cuenta de que hacer trabajo a distancia te ahorra tiempo, dinero y esfuerzo, especialmente que hago pasantías mientras asisto a clases en mi universidad. También me di cuenta de que estar en un ambiente de trabajo real trae más alegría y aprendizaje que asistir a clases universitarias típicas. Por último, me di cuenta de que podría haber hecho más en mis 15 semanas de pasantía. Siempre he pensado en mis actividades escolares, que de repente me olvido de mi responsabilidad como pasante.

Adoptar TDD en tu flujo de trabajo no es malo

Escuché que mucha gente dice que escribir pruebas es una molestia en la programación porque se cree que "de todos modos, va a terminar, probar y corregir el código. ¿Por qué reducir el desarrollo al escribir otro conjunto de códigos?" No estoy de acuerdo con eso porque Escribir pruebas primero puede hacer que tu pensamiento sea más rápido. A medida que escribes las pruebas, te estás dando una visión general sobre qué código escribirás. Si el código falla, entonces debe modificar su código un poco y luego probarlo de nuevo. Además, cuando está siguiendo TDD, puede establecer prioridades en el proceso más vital del sistema, evitando el escenario "esto debería haber funcionado" que es común en las aplicaciones sin pruebas unitarias. La adopción de TDD también le ayuda a identificar códigos erróneos o defectuosos que pueden dañar la producción, por lo que es adecuado para un desarrollo iterativo y ágil. El artículo de My Medium sobre la construcción de Rails Engine con TDD está aquí.

Reuniones 1 a 1 con su gerente

Tener una reunión individual con su gerente le brinda la oportunidad de crecer más, no solo como empleado, sino también como persona. Si su gerente lleva a cabo 1 a 1, tiene la oportunidad de fortalecer su relación de trabajo con su gerente. 1-on-1 es una gran vía para el coaching y la retroalimentación, por lo que definitivamente aprenderá mucho. 1-on-1 también le brinda la oportunidad de presentar las cosas de las que quiere hablar, ya sean problemas o problemas en la oficina. Tener una sesión 1-a-1 con su gerente también lo ayuda a saber más sobre la compañía y su gente.

La comunicación bidireccional entre usted y su gerente es la mejor manera de aprender. Usted tiene la oportunidad de hablar y escuchar y su gerente también tiene la oportunidad de hablar y escuchar. Esta conversación 1-a-1 es la mejor avenida para el desarrollo de su carrera, ya que le puede preguntar a la persona que probablemente sea una persona mayor que tenga mucha experiencia en este campo. Esta es la oportunidad que no querrá perder, ya que puede pedirle consejos sobre cómo abordar los problemas en su campo. También te hace un empleado más eficiente al preguntar cómo te va, y 1-a-1 también aumenta tu confianza en ti mismo.

Yo, como pasante, tener conversaciones de 1 a 1 con Ramon realmente me ayudó a prever qué carrera seguiré después de graduarme. Me aconsejó sobre qué ambiente de trabajo debería tomar un empleado en función de las necesidades y deseos del empleado.

Trabajar de forma remota / emparejamiento remoto

Ahora, esta es una de las mejores experiencias que tuve cuando estoy en Bloom. Realmente tuve la oportunidad de trabajar de forma remota. Trabajar de forma remota brinda muchos beneficios: ahorre el tiempo de viajar a través del tráfico, ahorre dinero de la tarifa y aumente la productividad. También pude experimentar el emparejamiento remoto, que es la codificación en tiempo real con alguien de forma remota. Trabajar de forma remota es realmente divertido, además me hace más productivo porque tengo un compañero que me ayuda a resolver un problema.

Probar herramientas desconocidas que mejoran el flujo de trabajo y la productividad

Trabajar en Bloom me hizo probar herramientas desconocidas también. Aprendí a usar el buen ole infame Vim. Este chico malo realmente me hizo buscar en Google muchas veces en mi primera semana de uso. Me tomó mucho tiempo antes de acostumbrarme. Probé el sitio Vim-Bootstrap para generar mi archivo de configuración .vimrc. Viene con NERDTree y buscador de plata. vim-surround no se incluye con él, por lo que debe instalarlo manualmente.

El siguiente es tmate, que nos permite emparejar de forma remota en el terminal a través de SSH. Esta es la herramienta perfecta para las personas que codifican en el terminal, como Vim o Emacs. Esto es lo que usamos en Bloom cuando estamos programando en par y queremos compartir una sesión de terminal.

También pude usar RSpec y FactoryBot para TDD. Estas herramientas son súper eficientes al crear aplicaciones o gemas de Rails. FactoryBot se utiliza para crear datos de prueba, y RSpec para crear pruebas unitarias.

La comunicación es la clave.

Siempre que tenga un problema en un código, buscaré primero el problema. Si no entiendo el problema, le preguntaré a mis compañeros de desarrollo. La gente aquí en Bloom es accesible, y no dudarán en ayudar. Incluso en la oficina, cada vez que pregunto algo, responden de inmediato. También el ambiente de trabajo aquí en Bloom es agradable.

Aprender criptomoneda es genial. Abre una gran oportunidad para que las transacciones y los pagos sean seguros. Aquí en Bloom, usamos la tecnología Stellar para crear aplicaciones. Hice una pasantía en Bloom y me divertí mucho. Pude probar muchas cosas, como seguir el modo TDD al crear aplicaciones / gemas Ruby, usar vim como editor de texto y muchos más. También tuve que intentar trabajar de forma remota, el emparejamiento remoto y las conversaciones 1 a 1 con mi jefe.

Fue una gran experiencia trabajar aquí en Bloom. Realmente aprendí mucho, no solo como ingeniero de software, sino también como futuro profesional. Realmente me gusta la gente aquí en Bloom porque siempre son amables y agradables. Me di cuenta de que podría haber hecho más, pero deseo que este no sea el final de mi viaje en la tecnología de la cadena de bloques.

Si está buscando una pasantía como ingeniero de software, se inclina por aprender criptografía y sabe cómo programar en Ruby, entonces definitivamente recomiendo tomar una pasantía aquí en Bloom.