Apenas termine la facultad empecé a trabajar en Roshka y estuve aquí por 2 años y medio, trabaje en varios proyectos, no solamente con desarrolladores Clase A sino también con gente Clase A. Por lejos el mejor grupo humano con el que me toco trabajar en la vida. Me apoyaron para muchísimas cosas, entre las mas claves, enseñar en la UCA y enviarnos a todo el #devTeam a un diplomado de Java en la Universidad Comunera (UCOM), sin dudar un segundo, el mejor curso de Java del planeta.
A finales del 2011 me dieron una beca Fulbright por lo que ya empezaba a despedirme de Roshka y a sentirme alumno de The Ohio State University. Al comienzo del segundo semestre del masterado asistí a una feria de trabajo en la universidad, al ver el cartel de Amazon y de otras empresas grandes ya estábamos todos demasiado contentos, aunque sea con que nos escuchen un ratito y acepten nuestros CV's. Después de un par de semanas me llamaron y me pidieron que vaya a una serie de entrevistas, me hicieron muchísimas preguntas, sobre todo temas de Java, POO y algoritmos. Si no era por el curso de Java de la UCOM (gracias Pollo, Maestro, Mirnac, Angie, Miguel, en fin, todos los profes y la Roshka), sinceramente no tenia ni una chance en esa entrevista. Finalmente, me ofrecieron ir a trabajar el verano en el headquarters de Amazon en Seattle para un internship de 12 semanas.
En los primeros días tuvimos varias presentaciones sobre Amazon y sobre todas las herramientas de desarrollo que utilizan. Ahí recién empecé a dimensionar lo gigante que era la empresa. Amazon tiene 97.000 empleados, de los cuales 1400 éramos interns. No manejo bien estos números, pero creo que solo un 25% de estos empleados son desarrolladores, el resto son de logística, marketing, finanzas, etc. La experiencia estuvo impecable, el trato, la gente y los beneficios por ser solamente un pasante son de otro planeta. La empresa se encarga de absolutamente todo, vos lo único que tenes que hacer es programar, programar y programar.
Amazon - Edificio Port 99, cafetería del piso 21. |
Los temas que mas me impresionaron de la experiencia:
1. Amazon no solamente es el retail website que todos conocemos y sus mas de 160 millones de usuarios activos, tiene muchas otras empresas y emprendimientos, los mas populares en mi opinión: AWS, Kindle, Amazon Studios, IMDb, Zappos. La arquitectura dentro de la empresa es orientada a servicios, cada departamento tiene una serie de clientes y a la vez es consumidor de una serie de servicios. Cada departamento tiene independencia tecnológica, lo que significa que siempre que cumplan ciertas normas pueden elegir las tecnologías que quieran para desarrollar sus servicios.
2. "It's still Day 1 at Amazon", por mas que la empresa haya crecido muchísimo desde su fundación en el 1995, todavía mantienen ese espíritu de startup, de adaptarse rápido a los cambios y de tomar decisiones sin demasiada burocracia. Claro reflejo de esto, en la empresa hay un deploy de software cada 7 minutos.
3. Me impresiono también la calidad técnica de muchos de los desarrolladores y el buen ambiente laboral que hay adentro, muchísima libertad dentro del trabajo, siempre y cuando entregues tu trabajo terminado y bien hecho.
Amazon - Port 99, piso 24. |
Todos los pisos con paredes-pizarron por donde mires, de lo mas normal ver a la gente discutir ideas en cualquier momento/lugar. Muchas actividades para distender también como mesas de ping-pong, esos old-school arcade games gigantes, mesas de pool, beer-friday, entre otras.
4. Tienen un build-system que se llama Brazil, al comienzo no entendía los beneficios de un build-system tan complejo, pero después de un par de semanas comencé a apreciar los beneficios. Básicamente un servicio esta formado por N paquetes, vos podes hacer checkouts independientes, es decir, bajas 1 de los N paquetes, modificas, probas en localhost, y estas listo para hacer un deploy. NO necesitas bajar los N paquetes para probar el servicio (siempre y cuando no necesites modificar los N paquetes).
Como parte del build-system hay un plugin para Eclipse e IntelliJ. El plugin te baja los fuentes y te agrega un VersionSet que es el conjunto especifico de las librerías que necesitas para compilar y correr todo localmente. Esto hace que arreglar un bug o agregar una funcionalidad sea extremadamente sencillo. Aquí hay mas detalles de un ex-empleado que en teoría trabajo en el equipo de desarrollo de esta herramienta.
5. Tienen un deployment-system llamado Apollo. Básicamente una vez que haces un check-in de tu código, arma un subconjunto de tu VersionSet para hacer el deploy, y a la par tenes una herramienta web que te muestra en un pipeline como va corriendo el deploy desde la etapa Alpha, Betha, Gamma, Development, Pre-Production hasta Production. Todo haces desde tu IDE, sin distraerte ni un segundo con línea de comandos ni nada extraño.
6. Nadie puede hacer check-in de UNA línea de código antes de pasar por un Code Review. De nuevo, tienen un plugin y todo esto esta integradísimo con el IDE y con una herramienta web que te ayuda a responder a los comentarios que hicieron sobre tu código. Cuidan mucho también los coding/naming conventions. Mucho TDD también dentro de los equipos, cada pedazo de código que escribís, tiene que tener adjunto su conjunto de unit/integration tests.
En fin, a esta altura ya nadie esta leyendo esto, pero no quiero terminar sin decir que aguante La Roshka y toda su gente, ojala tenga el honor de compartir de nuevo la #piezaInternacional o la de #inviernoTodoElAño con el impecable #roshkaDevTeam. Salud!
Todo esto es exclusivamente una opinión mía, en ningún momento escribo en nombre de Amazon ni de ninguno de mis compañeros de trabajo.