miércoles, 28 de octubre de 2015

Javier Martínez: Full Stack Developer



Javier Martínez Domínguez

Finalizó sus estudios de Ingeniería Técnica de Informática en Sistemas en 2014 mientras trabajaba desarrollando para la startup StartThink. Su lista de conocimientos comprende muchas tecnologías: "Phonegap, ionic Framework, Vagrant, Jenkins, Capistrano, Phabricator, Amazon AWS..."
"Backend, administración de sistemas y Frontend... en menos de un año, me ofrecieron encargarme de todo y como consecuencia ocupar el puesto de CTO
LinkedIn
Muchas gracias Javier por estar aquí para charlar sobre tu experiencia, empieza comentándonos tu Proyecto de Fin de Carrera (PFC).

Hola Juan Antonio, en mi PFC desarrollé una aplicación multiplataforma inicialmente enfocada a iOS: Appuesta para conocer el resultado de las quinielas en tiempo real. La experiencia me sirvió para conocer Phonegap y sorprenderme gratamente de su rendimiento, así como para planificar e implementar un proyecto desde cero. Desde la arquitectura de los servidores, diseñada y pensada para escalar en cuanto el proyecto lo requisiese, como a la integración continua o la autenticación basada en OAuth 2.

Como hasta Junio de 2014 no pude presentarlo por no haber estado matriculado del PFC el año anterior, la semana antes de exponerlo la dediqué a reescribir la parte de la app móvil usando un framework que por aquel entonces era prácticamente desconocido y que hoy día no acapara mas que alabanzas: ionic framework. Una vez lo presenté, lo publiqué en la App Store y en menos de 5 meses se registraron más de 100 usuarios, a pesar de no haber aún publicado la versión para Android.

Hace unos días la actualicé la versión 2.0 con nuevas funcionalidades como la posibilidad de ver los goles o resumes de cada partido al poco tiempo de finalizar el mismo. Además la posibilidad de la creación y gestión de peñas y estadísticas sobre la evolución de las quinielas de cada usuario a lo largo de la temporada.

Muy interesante, ¡suerte con ella! Resúmenos tu trayectoria profesional.

Mi carrera profesional se limita a una sola empresa: una pequeña startup StartThink con dos proyectos principales.

El primero de ellos y gracias al cual me incorporé a la empresa es Marketyou, una aplicación web destinada a la visibilidad laboral y a la posibilidad de exponer tu curriculum de una forma más atractiva, visual y dinámica que el clásico curriculum vitae. Actualmente, también tenemos un acuerdo con Anuntis (Infojobs Brasil) en el que ofrecemos una API con la que pueden acceder a nuestro test. Éste está respaldado por la conocida Saville Consulting (Peter Saville) y consiste en una serie de preguntas acerca del candidato, al que no le supone más de 15 minutos. Una vez completado, se obtienen las competencias y fortalezas de dicho candidato. 

El otro proyecto, RankRunner, surgió hace apenas dos años. Éste consiste en un ranking mundial de corredores o runners, aprovechando el auge del running en la actualidad. Además de tener una app móvil propia para hacer el seguimiento de todo tipo de entrenamientos o carreras, hemos implementado conectores para las redes sociales más importantes que existen hoy día: Nike+, Runtastic, RunKeeper, Endomondo...  Gracias a ello, permitimos a los runners poder importar sus entrenamientos de dichas redes y gracias a nuestro algoritmo se clasifican en el ranking, en cual pueden competir o compararse con runners de todas las nacionalidades.

Ahora mismo tenemos más de 11.000 usuarios en RankRunner y 13.000 en Marketyou.

¿Qué es lo que más valoró esta empresa al contratarte y mantenerte en su equipo? 

Cuando me uní a esta startup, realmente no pudieron valorar mucho mi experiencia o curriculum ya que, profesionalmente hablando, era prácticamente inexistente. Me incorporé aprovechando que tenía que cursar los créditos de libre configuración correspondientes a las prácticas de la carrera. Tenía un amigo que trabajaba en la empresa y fue quien me avaló.

Antes de que cumplieran los 3 meses de prácticas, empezaron a sugerirme la posibilidad de hacerme un contrato por 6 meses. Acabé las prácticas y me contrataron para echar una mano en la parte del backend a mi compañero además de administrar los servidores, que hasta entonces recurrían a un freelance periódicamente. Poco antes de concluir el contrato, el compañero que se encargaba de la parte del frontend dejó la empresa y tuvimos que repartirnos su trabajo entre mi compañero y yo, con lo que además de ser el administrador de sistemas y uno de los dos desarrolladores del backend, tenía que hacerme cargo de esa parte del desarrollo.

Pasaron los 6 meses y me ofrecieron quedarme como indefinido. En menos de un año, mi otro compañero (backend) también dejó la empresa y me ofrecieron encargarme de todo y como consecuencia ocupar el puesto de CTO que hasta entonces él ocupaba.

Tu listado de conocimientos es muy amplio, coméntanos algo más de ellos y tus recomendaciones.


  • Vagrant virtualization for developing environments

Cualquier desarrollador que se precie necesita conocer Vagrant. No es necesario que tenga conocimientos en profundidad sobre cómo funciona, pero sí necesita conocer unos básicos para trabajar con él. Vagrant es una de las herramientas que más adeptos está consiguiendo últimamente en la recreación de entornos para el desarrollo. Permite crear una máquina con todos los requerimientos necesarios para programar un determinado proyecto en cuestión de pocos minutos. Simplemente con vagrant up y gracias al provisioning, que previamente alguien se ha encargado de configurar, podemos recrear por ejemplo el entorno de producción de nuestro proyecto. Es decir, misma versión de PHP, nginx, MySQL, task runners, etc. Con esto nos aseguraremos, o al menos será más probable, de que no tengamos errores a la hora de enviar a producción algo que hemos programado a causa de diferentes versiones, configuraciones de servidores, etc. Lo mejor de todo es que es independientemente de la plataforma y una misma box de Vagrant puede ser usada en Linux, Windows, OSX…


Lejos queda ya, o debería quedar :), la técnica de subir los cambios que vamos realizando en nuestro proyecto desde un entorno local, nuestra máquina, a producción, un servidor web por ejemplo, via FTP. Al igual que utilizamos repositorios (Git, por ejemplo) para llevar un control de los cambios que vamos realizando, necesitamos herramientas como puede ser Capistrano que se encarguen de subir nuestros cambios e indicar a nuestro servidor que hay una nueva versión para que el downtime de nuestro proyecto sea 0 o prácticamente 0. ¿Cómo se consigue esto? Pues, “enseñando” a Capistrano qué pasos ha de seguir en el deploy de nuestra aplicación. Por ejemplo: empaquetar el proyecto, subir vía scp, extraer en un directorio temporal, apuntar el enlace simbólico de nuestra aplicación a la versión que acabamos de subir, hacer que el servicio de PHP actualice los cambios, etc.

Antes de todo lo que Capistrano ha de hacer, entraría en juego lo que se conoce como integración continua y Jenkins es una de las herramientas que más se utilizan en la actualidad para ello, además de ser gratuita. Jenkins nos permitirá detallar un “guión” con todo lo necesario para crear una nueva release o versión de nuestra aplicación. Recreará el proyecto desde 0, instalará todas las dependencias necesarias, optimizará y ejecutará todos los tests que anteriormente hayamos programado. Estas 4 funciones que acabo de detallar son un ejemplo de lo que nos permite hacer, aunque por supuesto hay muchísimas más. Si todo ha salido bien, nos marcará la release como OK y ya nosotros decidiremos si subirla a producción o qué hacer con ella.
  • Phabricator platform (reviewing and auditing code, repositories, tracking bugs, tasks, etc.)

La plataforma Phabricator nace con Evan Priestley, un antiguo ingeniero software de Facebook. Consta de un conjunto de aplicaciones o módulos con los que administrar un proyecto: revisión de código, control de repositorios, seguimiento de bugs, gestor de tareas, chat, calendario… Hoy en día tenemos muchísimos servicios que nos ofrecen esto individualmente, como pueda ser Github, Bitbucket, Slack, Hipchat, Trello, pero quizá ninguno tan completo como Phabricator. Uber, Dropbox, Fedora, Nokia o el mismísimo Facebook son ejemplos de compañías que tienen integrado Phabricator en sus desarrollos.

Conocer Amazon AWS es, sin duda, un plus a la hora de mejorar tu CV o incluso facilitar las tareas del día a día. Uno de los servicios más conocido es Amazon S3, que es el módulo encargado del almacenamiento en la nube. Hay otros como el servicio de mensajes Amazon SQS, que por ejemplo podemos utilizar para el intercambio de mensajes previo a enviar una notificación push al usuario o simplemente a ejecutar tareas en segundo plano en un servidor PHP. También Amazon Route53 nos puede servir de alguna manera para suplir las carencias de no tener un balanceador de carga en caso de que tengamos más de 1 servidor y alguno se caiga o simplemente para enrutar al usuario a uno de nuestros servidores por geolocalización, para reducir los tiempos de carga y la latencia.

¿Cómo conseguiste experiencia en todas estas tecnologías?

Sí, la respuesta es obvia: proyectos personales. Hoy en día hay muchísima, y muy buena documentación, sobre todas estas tecnologías. Además y gracias a comunidades como StackOverflow por ejemplo, además de los canales de ayuda vía IRC, Slack, etc., podemos resolver muchísimas dudas que nos van surgiendo según vamos familiarizándonos con ellas. La única recomendación, aunque más bien debería ser una obligación, es tener unos conocimientos, por lo menos básicos, de inglés. Ya que gran parte de la documentación que nos encontraremos será en este idioma, aunque cada vez haya más en español.

Muchas gracias y mucha suerte en tu carrera profesional Javier que seguro será exitosa.


Por si usáis twitter, hemos habilitado uno para avisar de las nuevas entradas: @_jaalvarez_
Si os gusta el contenido de este blog por favor publicitadlo para que el esfuerzo valga la pena.
Finalmente os recordamos nuestros objetivos

domingo, 21 de junio de 2015

Álvaro Otero Martín: Desarrollador Unity, Android y emprendedor

      Álvaro Otero Martín
Desarrollador Unity, Android y emprendedor

Finalizó sus estudios de Ingeniería Técnica de Informática en Gestión en 2013 y posteriormente completó el Máster de Desarrollo en Aplicaciones Web y Móviles y actualmente cursa el Máster de Videojuegos: Guión, Diseño y Programación en la Universidad de Sevilla
"Los Másters me han ayudado a formarme y conocer compañeros con los que más tarde he podido colaborar profesionalmente" "Actualmente me encuentro trabajando en dos proyectos emprendedores basados en la hostelería, uno de ellos con inversión privada"
LinkedIn
Muchas gracias Álvaro por estar aquí para charlar sobre tu experiencia en el mundo del desarrollo móvil, los videojuegos y el emprendimiento. Coméntanos por qué decidiste participar en dos Másters tras la carrera y qué te ha aportado cada uno de ellos


Gracias a vosotros por esta oportunidad.
Pues básicamente me gusta ponerme a prueba constantemente y querer superarme cada día, por ello tras acabar la carrera quería seguir aprendiendo y mejorando mis habilidades. En un principio estuve desorientado respecto a cómo formarme, si de forma autodidacta, con cursos online o presenciales o realizando algún Máster. Pero tuve la suerte de que cuando acabe la carrera estaba recién implantado el Máster de de desarrollo web y aplicaciones móviles y como siempre me ha llamado mucho la atención todo lo relacionado con movilidad y sobre todo con videojuegos (aunque reconozco que no soy muy "gamer") decidí realizarlo y ver hasta donde era capaz de llegar.
Gracias al Máster de Desarrollo de aplicaciones Web y Móviles en 2013 entre otras cosas pude iniciarme en conocimientos de aplicaciones Android. Como proyecto final creé un gestor de entrenamiento para diferentes modalidades basados en cambios de tiempo permitiendo llevar un historial de entrenamientos, lugares, listas de reproducción y evidentemente un cronómetro para la práctica (Lap2Lap Interval Training). Gracias a ello he trabajado con 3 clientes como freelance y tengo más de 13 aplicaciones a mis espaldas de proyectos personales y algunas aplicaciones que llegaron a alcanzar más de 20.000 descargas que con publicidad pude obtener algo de dinero. Además tengo un grato recuerdo porque me permitió conocer a un grupo de compañeros con los que a pesar de haber pasado 2 años seguimos quedando, tratamos temas, nos consultándonos si tenemos dudas e incluso nos buscamos trabajo y oportunidades y eso no se encuentra con facilidad. Actualmente estoy retomando los conocimientos de iOS, también enseñados en el Máster, para abrirme mercado.

Cuéntanos algo del Máster de Desarrollo de videojuegos

En cuanto a conocimientos me ha abierto mucho la mente con nuevas ideas y nuevas formas de trabajar gracias a aspectos que antes no dominaba como la parte de arte aprendiendo el manejo de Photoshop que aunque parezca fácil hay que echarle muchas horas y más cuando no sabes dibujar muy bien y luego mejorando mi nivel de programación y conociendo el mundo de Unity3D y todos sus entresijos. En él también hemos formado un buen grupo y tengo muy buenos compañeros sobre todos los que han formado conmigo el grupo para la práctica final del Máster que son todos muy buenos.


¿Has desarrollado ya algún videojuego?

Gracias al Máster llevé a cabo mis dos primeros juegos en el mundo de Unity. El primero de ellos "Survival Zombie" es un juego de 
curiosa estética y consiste en aguantar sin que te maten. Tu personaje es una tortuga guerrera que va luchando contra diferentes tipos de zombies y para ello tienes un arsenal muy amplio de armas que poder utilizar. Además tiene un sistema de monedas integrado de forma que puedes ir obteniendo nuevas armas y personajes. El segundo de ellos "Cat Runes un “runner”, en mi caso se trata de un personaje gatuno que va corriendo por la carretera y evita árboles, vallas, cubos y coches con inteligencia. Ahora mismo estoy adaptando para dispositivos iOs tanto estos juegos como el resto de aplicaciones móviles realizadas para Android. Desde la web  WeMobile podéis ver todos los trabajos y cuando salgan para iOs se actualizaran automáticamente las referencias al app store

Sé que has comenzado algunas aventuras emprendedoras, coméntanoslas.

Siempre he tenido un defecto o virtud y es que no me gusta estar parado, necesito hacer cosas ya sea a nivel laboral como de aprendizaje y mejora de mí mismo. Es por ello que cuando acabé el Máster de Aplicaciones Web y Móviles y debido al mundo que se me abrió en el ámbito de la movilidad decidí aumentar mi nivel como desarrollador Android e intentar ir haciéndome cada vez más experto. Creé 
WeMobile como lugar donde alojar mis proyectos personales Android y poco a poco se incorporaron otros compañeros que se dedicaron al diseño gráfico. Finalmente ha servido como publicidad y me han contactado varias veces para proyectos puntuales como freelance.

Hace unas semanas asistí a la Feria de empleo de Sevilla con conferencias de emprendedores 
 y me traje muy buena impresión y la autoestima muy alta porque pienso que tengo mucho futuro si trabajo duro y es por eso que he empezado a darle un nuevo enfoque a WeMobile como algo más serio, buscando formas nuevas de marketing, introduciendo WeMobile en el mundo de las redes sociales y abriendo el campo a aplicaciones iOs y videojuegos basados en el motor de Unity.

Además me encuentro trabajando en dos proyectos emprendedores diferentes, ambos basados en la hostelería. 


Cuéntanos algo más de ambos

En uno de ellos se pusieron en contacto conmigo gracias a Linkedin y en el otro caso se trató de un compañero que estudió conmigo en bachillerato. Ambos proyectos están a punto de salir al mercado, por lo que no puedo entrar en mucho en detalle, pero del primero puedo avanzar que se trata de realizar una aplicación para cada bar/restaurante de forma que aparezca la carta actualizada y un sistema de votos para que los clientes vean cuáles son sus tapas/bebidas/postres preferidos, lo que ayuda también al negocio a conocer sus puntos fuertes y bajos. 

En cuanto al otro proyecto se trata de una red social entre chefs y consumidores inicialmente como aplicación móvil para dispositivos Android e iOS pero que posteriormente queremos llevar al mundo Web, Windows phone y Blackberry. Los chefs son personas normales (no salen en televisión y no tienen porqué ser chefs de restaurantes) que saben preparar algún plato especial con mucho éxito y por el que creen que pueden obtener ingresos. Los consumidores, (nuestro nicho de mercado son universitarios o trabajadores sin tiempo para cocinar) podrían comer caliente y probar nuevos platos a un precio económico. En este proyecto ya tenemos un inversor que quiere apostar por nosotros y que según nos ha comentado hay varios más que piensan que es una gran idea.

Pues sí, suena genial, espero que haya suerte y dentro de poco muchos de nosotros esté probando este sistema que podría evitar comer rápido y mal a un precio razonable. 

Mucha suerte Álvaro y esperamos tener noticias de tus éxitos emprendedores.

Por si usáis twitter, hemos habilitado uno para avisar de las nuevas entradas: @_jaalvarez_