Documente Academic
Documente Profesional
Documente Cultură
Son tiempos difíciles para el desarrollador frontend. Cada día vemos aparecer nuevas herramientas, sistemas
y paradigmas que desplazan a los anteriores volviéndolos obsoletos. Vivimos en una época de continuo
cambio, de continua renovación. En muchas ocasiones, no hemos tenido tiempo aún de analizar una nueva
tecnología cuando inmediatamente surge otra que reclama la atención de toda la comunidad obligándonos a
considerarla.
El siguiente artículo, publicado originalmente por Jose Aguinaga, ilustra perfectamente las dificultades con
la que se enfrentan los nuevos programadores; no nuevos en el sentido de que se asomen por vez primera al
mundo del desarrollo, sino de aquellos que, o bien han estado ausentes durante un tiempo, o bien llegan
desde otras ramas diferentes como ese subconjunto al que llamamos backend.
La conclusión final es simple y directa: son tiempos difíciles. Basta con que hayamos estados trabajando
durante más de un año en un mismo proyecto para que, a su conclusión, nos enfrentemos con una realidad
muy diferente a la que nos acogimos cuando lo empezamos… Incluso, y aunque el texto nos mienta en sus
primeras líneas, mientras estemos leyendo el texto, el imparable ecosistema frontend estará sacando a la luz
nuevas formas de hacer las cosas.
Un detalle final antes de pasar al artículo: el texto no está escrito en clave de humor y aún así, no podremos
evitar soltar una risota cómplice mientras compartimos la desesperación de su protagonista. Es la otra cara
de esta realidad que nos toca vivir: en el fondo, aunque participemos de ella, todos somos perfectamente
conscientes de la locura sinsentido en que se ha convertido el desarrollo moderno.
Disclaimer
El siguiente artículo es una traducción directa del original “How it feels to learn JavaScript in 2016”, por
Jose Aguinaga, publicado inicialmente en Hackernoon el 3 de octubre de 2016. El texto original puede
encontrarse aquí.
El texto que sigue ha sido inspirado por el artículo “It’s the future”, de Circle CI. Puedes leer el
original aquí. Este fragmento es solo una opinión y, como cualquiera de los frameworks Javascript que
tenemos ahí fuera, no debe tomarse demasiado en serio.
– El término actual es ingeniero frontend, pero sí, yo soy el chico correcto. Desarrollo para la web actual:
gráficas, reproductores de música, drones que juegan al fútbol, lo que quieras. Acabo de volver del JsConf
y del ReactConf, por lo que conozco las últimas tecnologías para crear aplicaciones web.
Genial. Necesito crear una página que muestre los últimos registros de mis usuarios, por lo que solo tendría
que coger los datos de un servicio REST y pintarlos en algún tipo de tabla con sus filtros y mecanismos para
ordenar campos. Querría también que la tabla se actualice automáticamente si algún dato cambia en el
servidor. Estaba pensando que quizá podría utilizar jQuery para traerme los datos y pintarlos, ¿qué te
parece?
– Oh dios mio, no… nadie usa jQuery en 2016. Deberías echarle un ojo a React.
– Es una biblioteca super puntera desarrollada por algunos chicos de Facebook. La gracia está en que
permite manejar cualquier cambio en las vistas de una manera sencilla y eficiente.
Suena muy bien. ¿Puedo entonces usar React para pintar los datos que me llegan desde el servidor?
– Por supuesto, pero primero necesitas añadir al proyecto tanto la biblioteca de React como la de React
DOM.
– Porque una es la biblioteca base mientras que la segunda, es una especializada en manipular el DOM
usando JSX.
– JSX es solo una extensión de la sintaxis Javascript muy parecida a XML. Es como una manera alternativa
de describir el DOM, mucho mejor que HTML.
De acuerdo… De cualquier modo, ¿si añado esas dos bibliotecas ya puedo utilizar React?
– No del todo. Necesitarías también añadir Babel para poder utilizar React.
– Oh, Babel es un ‘transpiler’ que nos permite fijar una versión de Javascript mientras que programamos
en cualquier versión del lenguaje más reciente. Realmente, no TIENES que incluir Babel para usar ReactJS,
pero si no lo haces, te verás obligado a utilizar solo ES5… Y siendo prácticos, es 2016 y deberías
programar en ES2016+, como hace el resto de la comunidad.
¿ES5? ¿ES2016+? Creo que me he perdido aquí… ¿Qué son ES5 y ES2016+?
– ES5 viene de ECMAScript 5. Es la edición sobre la que todos trabajamos porque es la que implementan la
mayoría de navegadores actuales.
¿ECMAScript?
– Sí, ya sabes… El estándar Javascript se fijó en 1999 después de su lanzamiento inicial allá por 1995
cuando se llamaba Livescript y solo funcionaba en el navegador Netscape. Fueron tiempos complicados…
Afortunadamente, desde entonces, las cosas se han ido regulando y hoy contamos con unas 7 ediciones de
esta implementación.
– ¿Te refieres a ES6? Sí, me explico: cada edición es una revisión expandida de la anterior, por lo que si
usas ES2016+, realmente estás usando todas las funcionalidades de las versiones previas.
– Bueno; tu PODRÍAS usar ES6, pero estarías desaprovechando todas las mejoras de ES2016+ como son
el async y el await . Eso quiere decir que si nos quedamos con ES6, nos podríamos utilizar las co rutinas
para bloquear llamadas asíncronas y modificar un flujo de control.
No tengo ni la más remota idea de qué significa eso último. Todos estos nombres son muy confusos. Mira,
solo necesito leer algunos datos desde el servidor. Yo solía incluir jQuery desde un CDN y obtener esos
datos mediante peticiones AJAX. ¿No puedo limitarme a eso?
– Es 2016 hombre… nadie utiliza jQuery. Eso siempre acaba con una maraña de código tipo espagueti.
Todo el mundo sabe eso.
Es verdad… Así que mi alternativa es cargar 3 bibliotecas para coger esos datos y mostrarlos en una tabla
HTML, ¿no?
– Bueno; tu incluyes esas tres bibliotecas, pero las empaquetas después con un gestor de módulos para
terminar cargando un único fichero.
– La definición depende del entorno, pero en web, habitualmente nos referimos a cualquier cosa que
soporte módulos AMD o CommonJS.
– Es una herramienta que nos permite empaquetar las dependencias descritas en CommonJS en ficheros
que puede cargar un navegador. Esto lo hacemos porque la mayoría publican estas dependencias en el
registro npm .
¿Registro npm?
– Es un repositorio público gigantesco donde la gente inteligente sube sus códigos y dependencias en forma
de módulos.
¿Cómo un CDN?
– No exactamente. Es más como una base de datos centralizada donde cualquiera puede publicar y
descargar bibliotecas. Se puede utilizar de forma local durante un desarrollo y subir luego los módulos a un
CDN si eso te gusta más.
– Sí. Por ejemplo, si quieres usar React, te descargas el módulo React y lo importas en tú código. Haces lo
mismo con casi cualquier biblioteca Javascript popular.
– Angular es de… ¿2015?. Pero sí… Seguramente Angular esté allí, junto a VueJS, RxJS y otras bibliotecas
punteras de 2016. ¿Quieres que te hable de ellas?
Estoy aprendiendo demasiadas cosas de golpe, vamos a centrarnos en React… En resumen, si quiero usar
React, tengo que coger su módulo desde el npm y empaquetarlo luego todo con Browserify, ¿no?
– Sí.
Parece un proceso algo complicado… tenemos que coger primero las dependencias y juntarlas después todas
en un único fichero.
– Sí, es complicado… por eso hay que utilizar un gestor de tareas como Grunt, Gulp o Broccoli para
automarizar el proceso. Puede que te vaya bien con Mimosa…
¿Grunt? ¿Gulp? ¿Broccoli? ¿Mimosa? ¿De qué diablos estamos hablando ahora?
– Gestores de tareas. Aunque la verdad es que ya no están de moda… Los usábamos en 2015… Luego nos
pasamos a Makefiles, pero ahora agrupamos todo con WebPack.
– Sí, pero aparentemente nos encanta complicarnos la vida en la web. Más o menos, una vez al año,
volvemos a una tecnología básica de toda la vida… De hecho, si esperamos un poco, en uno o dos años
estaremos todos programando web en ensamblador.
Qué cosas… Por cierto, ¿has mencionado antes algo llamado WebPack?
– Es otro gestor de módulos para el navegador que también puede funcionar como un lanzador de tareas.
Es como una versión mejorada de Browserify.
– Bueno… quizá no sea necesariamente mejor. Solo resulta más estricto a la hora de definir cómo se
empaquetan las dependencias. WebPack permite utilizar diferentes gestores de módulos no limitándose
únicamente a los de tipo CommonJS. Por ejemplo, soporta los módulos nativos de ES6.
La verdad es que estoy algo perdido con todo eso de CommonJS y ES6…
– Todo el mundo lo está, pero no tienes que preocuparte demasiado porque ahora estamos empezando a
usar SystemJS.
– A diferencia de Browserify y WebPack 1.x, SystemJS es un cargador de módulos dinámico que permite
unir varios módulos en varios ficheros diferentes en lugar de hacerlo en uno único.
Pero, tenía entendido que era mejor tenerlo todo en un único fichero grande…
– Sí, pero eso era antes. Ahora, con HTTP/2 a la vuelta de la esquina, es mejor hacer varias peticiones
pequeñas HTTP que una sola de mayor tamaño.
Genial; ¿no podríamos entonces simplemente añadir nuestras tres bibliotecas para React sin utilizar nada
más?
– La verdad es que no. Verás, se podría añadir cada una desde un CDN por ejemplo, pero aún así, todavía
necesitas incluir Babel.
– Pues que de hacerlo así, tendrías que incluir el núcleo completo de Babel, y eso no es eficiente para un
entorno de producción. En producción, necesitas realizar una serie de pre tareas para preparar tu proyecto
que hacen del ritual de invocar a Satán algo similar a hervir unos huevos en un cazo: tienes que minificar
las dependencias, re formatearlas, crear reglas en línea para el CSS crítico, delegar la carga de los scripts,
además de…
Vale, vale, lo pillo… Así que no queremos incluir las bibliotecas directamente desde un CDN. ¿Cómo lo
harías tú entonces?
¡Pero pensaba que ES2016+ era ya un meta conjunto de ES6! ¿POR QUÉ necesitamos ahora esa cosa del
Typescript?
– Ah, porque nos permite utilizar Javascript como si fuera un lenguaje tipado, reduciendo los errores en
tiempo de ejecución. Es 2016, y todos deberíamos añadir algunos tipos a nuestro código…
– Sí, igual que Flow, aunque éste solo comprueba el tipado mientras que Typescript es un meta lenguaje de
Javascript que necesita ser compilado.
– Es un validador de tipos estáticos desarrollado por algunos chicos de Facebook. Lo han programado en
OCaml… ¡la programación funcional es increíble!
– Es la moda más puntera a día de hoy. Ya sabes: programación funcional, funciones de orden superior,
currying, funciones puras…
Pero, yo aprendí POO en la Universidad… ¡pensaba que era la metodología más eficiente!
– Sí, pero solo hasta que Java fue adquirida por Oracle… Quiero decir que la POO estuvo bien hace
tiempo, y todavía se puede encontrar en algún proyecto a día de hoy… pero actualmente, todo el mundo
coincide en que modificar estados es similar a ir por ahí pateando bebés, por lo que ahora la comunidad se
ha mudado a la programación funcional y a sus objetos inmutables. Los chicos de Haskell lo han estado
proclamando a los cuatro vientos desde hace años, y ni hablemos de los de Elm… afortunadamente, ahora
tenemos bibliotecas como Ramda que nos permiten utilizar la programación funcional en Javascript plano.
¿Estás dejando caer nombre tras nombre solo para volverme loco? ¿Qué demonios es Ramnda?
¿Qué David?
– David Chambers. Un tío fantástico y uno de los responsables de Ramda. Deberías echarle un vistazo
también al trabajo de Erik Meijer si estás interesado en todo esto de la programación funcional.
Vale, tenemos que parar esto. Todo suena muy bien, y estará correcto, pero creo que es exageradamente
complicado e innecesario para mi idea inicial. Solo necesito coger datos desde el servidor y mostrarlos.
Estoy seguro de que no necesito conocer a toda esta buena gente y aprenderlo todo para montar una tabla
con datos dinámicos. Vamos a volver a React… ¿cómo puedo traerme los datos desde el servidor con React?
– Bien… actualmente React no sirve para traerse datos, solo para pintarlos.
¿Así que necesitar algo llamado Fetch para coger los datos? Quienquiera que esté poniéndole nombres a
estas cosas necesitaría un buen diccionario de sinónimos…
– Bueno, Fetch es el nombre de una implementación nativa para realizar peticiones XMLHttpRequests.
– Sí… cada vez que realizas una petición asíncrona al servidor, tienes que esperar la respuesta, lo cual
requiere de añadir alguna función dentro de otra. Eso, al final, termina generando lo que llamamos
‘Pirámide del Infierno’.
– Exactamente. Manipulando las callbacks a través de promesas, podemos escribir un código mucho más
asequible y sencillo. También nos permite crear mocks, testearlos e, incluso, realizar varias peticiones
simultáneas y esperar a que todas ellas hayan cargado.
– Sí, pero solo si tus usuarios utilizan un navegador moderno; de otro modo, necesitas incluir un pollyfill de
Fetch, o usar Request, Bluebird o Axios.
– Es Javascript… Debe haber como miles de bibliotecas que hacen exactamente lo mismo. De hecho, lo que
tenemos que conocer son solo los nombres de las mejores. Pero vamos… sí: son muuuuuuchas, e incluso a
veces, añadimos en ellas alguna imagen de Guy Fieri…
¿Acabas de mencionar a Guy Fieri? ¿El restaurador, autor, presentador, comediante y celebrity? Pasemos
del tema… ¿Qué hacen estas Bluebird, Request o Axios?
– No usamos ninguna palabra que empiece por ‘J’ en 2016. Limítate a Fetch y su polyfill cuando el usuario
no lo soporte. O Bluebird, Request o Axios en su lugar. Luego, solo tienes que gestionar la promesa
con await dentro de una función asíncrona y ¡boom!, tienes control total del flujo.
Es la tercera vez que mencionas eso de ‘await’, pero no tengo ni idea de qué es.
– await nos permite bloquear una petición asíncrona. Eso mejora el control sobre cuándo recibimos los
datos y aumenta la legibilidad general del código. Es realmente increíble, solo tenemos que asegurarnos de
añadir las reglas ‘stage-3’ a Babel, o usar algún plugin de ‘syntax-async-functions’ y ‘transform-async-to-
generator’.
Esto es una locura.
– No, la locura es tener que precompilar el código Typescript para luego pasarle Babel y así, poder
usar await .
– Lo estará en la próxima versión, pero actualmente solo funciona con ES6, por lo que si queremos
usar await en el navegador, primero tenemos que compilar el código Typescript en ES6 y luego pasarlo a
ES5 con Babel.
– Bueno; es fácil. Se programa todo en Typescript. Todos los módulos que utilizan Fetch, se compilan a
ES6; luego, se utiliza Babel con las reglas ‘stage-3’ para convertirlos en ES5 y los cargamos con SystemJS.
Si nuestros usuarios no tienen Fetch, entonces tenemos que utilizar el polyfill, Bluebird, Request o Axios.
Por último, todas las promesas las manejamos con await .
Tenemos un concepto diferente de lo que significa ‘fácil’. Entonces, después de todo ese ritual, ¿podemos
finalmente traernos los datos del servidor y mostrarlos con React?
– Oh, gracias a Dios. De lo contrario, tendría que explicarte Flux y sus implementaciones como Flummox,
Alt, Fluxible… Aunque, para ser honestos, deberías utilizar Redux.
Creo que voy a pasar de todos esos nombres… Te repito que solo necesito pintar los datos.
– Perfecto; si solo quieres eso realmente no necesitas React. Irías sobrado con un motor de plantillas.
¿Me estás tomando el pelo? ¿Esto te parece divertido? ¿Así es como tratas a la gente que quieres?
– Quiero decir… incluso aunque uses un sistema de plantillas, yo seguiría con la combinación Typescript +
SystemJS + Babel si fuera tú.
Solo necesito mostrar datos en una página, no realizar el fatality original de Sub Zero. Solo dime qué
sistema de plantillas necesito y lo retomamos desde ahí.
– Hay muchos… ¿cuál te resulta familiar?
Ummm… no recuerdo los nombres. Hace tiempo que no uso esas herramientas.
¿Otro?
– ¿Mustache? ¿Underscore? Creo que hasta Lodash tiene uno… pero son todos herramientas del 2014 o
así.
– ¿Jade? ¿DustJS?
No.
– ¿DotJS? ¿EJS?
No.
– ¿Nunjucks? ¿ECT?
No.
– Quería decir Pug… no, Jade… la cuestión es que Jade ahora se llama Pug.
– ¡Correcto!
Entonces, dependiendo del navegador que esté usando, también necesitaré Babel…
– Exacto.
Y, si quiero incluirlo sin tener que añadir la biblioteca completa, necesito cargarlo como un módulo desde el
npm.
– Eso es.
– Ahí lo tienes.
Y, a no ser que estemos usando WebPack, necesitaremos automatizarlo todo con un gestor de tareas.
– Lo has pillado.
Pero, como ahora se lleva eso de la programación funcional y los lenguajes tipados, necesitamos pre
compilar primero Typescript o añadir ese Flow.
– Justo.
– Estás ‘on-fire’.
De este modo, podemos utilizar Fetch, promesas, control de flujo, y toda esa magia…
– No te olvides de incluir el polyfill de Fetch en caso de que no lo soportemos. Safari todavía no lo maneja.
¿Sabes qué? Creo que lo tengo todo… Una idea general del mundo web, y todo Javascript de paso.
– Eso está genial. En unos años, sin embargo, estaremos todos programando en Elm o WebAssembly.
Me vuelvo al backend. Simplemente, no puedo con todos estos cambios, y versiones, y ediciones, y
compiladores, y ‘transpilers’. La comunidad Javascript se ha vuelto completamente loca si piensa que
alguien puede manejar todo esto.
¿Por qué?
– ¿No has oído nada sobre Python 3?
Bonus
El texto anterior, ya de por sí magnífico, ha removido de forma innegable las arenas de la comunidad. Al
artículo original no le faltaron un gran número de comentarios y foros externos donde aún hoy se continúa
discutiendo sus implicaciones.
A modo de corolario, quería traer el comentario realizado por uno de los pesos pesados en el mundo del
desarrollo actual (citado por cierto en el mismo texto) como es Addy Osmani:
Addy Osmani, destacado miembro de la comunidad Javascript; ingeniero Google y miembro del Chrome
Team.
Animo a todos aquellos que quieran estar al día con el ecosistema Javascript a que sigan estos tres simples
consejos: primero, hazlo; luego, hazlo bien; entonces, hazlo mejor.
Primero, hazlo
Coge aire y conciénciate de que eres totalmente nuevo en este mundillo. Es perfectamente razonable no
utilizarlo todo. De hecho, es mejor así. Piensa en un simple prototipo que sirva para cumplir tu propósito: no
hay nada malo en utilizar como base HMTL/CSS/JS.
Por lo general, no solemos tener en cuenta que cualquier tema nuevo requiere de un tiempo de aprendizaje y
experimentación para dominarlo. Los principiantes no deben agobiarse por utilizar la biblioteca más puntera
o el patrón reactivo de la semana. A mí, me tomó varias semanas el comprender correctamente Babel y
React. Bastante más el hacerme con IsomorphicJS, Webpack y todas esas bibliotecas que hay
alrededor. Preocúpate de empezar por lo más sencillo.
También es importante recalcar que todos, incluidos aquellos programadores que escriben las herramientas
mencionadas aquí, pasan por los mismos estadios de frustración y fatiga durante el aprendizaje y puesta a
punto de esto que llamamos Javascript moderno. Me gustaría animar a los programadores a recordar que
todos estamos en el mismo barco, y que nuestras herramientas están aquí para ayudarnos. Si no lo están
Sobre la traducción
Por lo general, siempre he defendido el uso de términos castellanos para todo aquello que tiene que ver con
la programación: considero que nuestro idioma dispone de un vocabulario lo suficientemente vasto como
para no estar recurriendo continuamente a los palabros anglosajones.
Sin embargo, durante la traducción de este artículo, me he permitido respetar algunos de los términos
originales, bien sea porque no tienen una traducción directa al español, o bien porque ésta, al ser muy
forzada, desdibuja la idea original del autor. Es por lo anterior que podemos encontrar palabras como
transpilers, polyfill y similares.
Muchas gracias por el esfuerzo, la verdad actualmente me siento así, estube aprendiendo Javascript con Node.JS para
querer montar una pequeña página mientras aprendía, al inicio iba todo bien creando modulos, pero conforme querías
realizar algo más completo, te encontrabas con un sin número de librerías y frameworks que adoptar. Que al final
termine desplazandoe a seguir aprendiendo Backend haciendo uso de jQuery para manejar el DoM y el Ajax ya que no
soy muy de front-end pero personalmente me gusta dejar un acabado bonito y presentable en un producto final. Quizá
después aprenda Angular-2 o Vue.js cuando me sienta completamente seguro y confiado en mis capacidades de
BackEnd y así mejorar un poco en FrontEnd. Ojala algún día la comunidad se ponga de acuerdo en facilitar este
mundillo, porque se está volviendo un verdadero caos.
Excelente artículo.
Hice backend cuando se llamaba “webmaster” y lo dejé un tiempo. Ahora volví con front-end y son miles de
cosas que aparecen y todo el mundo habla pestes de jquery por ser “viejo” y mencionan todos los términos
que salen en el artículo y me perdia cuando tenía que aplicar uno u otro.
compartir.
Genial! Excelente articulo estoy empezando con JavaScript y me parece de locos,vengo del back-end,pero
me ha aclarado mi duda que deberia de aprender primero y cosas así,aparte que me he partido a risas ,por
que estoy en la misma situacion que el que tenia la duda jajajaajjajaja
De hecho se basa en un paneo bien hilado de las tantas de herramientas que surgen a a diario para el
ecosistema JS.
Da mucho que pensar y por supuesto mucho que planificar para actualizarse o estudiar, pero en mi humilde
opinión siento que lo más importante, eso que a veces llamamos el santo grial no está en la superficie del
articulo, está en sus aguas profundas..
A modo serie éxitosa: Debemos adentrarnos en una lucha desencarnada por controlar los 7 reinos de JS
hasta llegar a su trono.
Joey Clover
Co-fundador técnico en Tabb Drink
Manchester, Greater Manchester, Reino Unido
Anterior 1. Intoware ,
2. Apposing ,
3. Cielo
Educación1. Xaverian College
Si usted es responsable de garantizar que su lugar obtenga una gran cantidad de ventas de bebidas para aumentar sus ingresos, ha venido al
lugar correcto. Muchos establecimientos luchan por encontrar formas de vender bebidas. ...
En primer lugar, estoy dando este consejo basado en mi experiencia personal al ser contactado por más de 200 reclutadores. Voy a explicar el
camino para llegar a mi puesto actual a través de un reclutador y lo que mi ...
Joey Clover ha compartido
Activado los martes - La catástrofe de Cuphead - Joey ...
Esta serie se activa los martes. Hablo sobre temas que desencadenan grupos de personas. Hoy estoy...
¿Tienes curiosidad acerca de Microservicios? Si tu quieres saber...
Si está buscando mudarse a Microservicios, tengo algunos consejos extremadamente útiles para usted que ...
Joey Clover ha compartido
Mi artículo reciente ahora se publica bajo HackerNoon. Si tu...
He estado construyendo mi carrera en los últimos años. He tenido varios trabajos en una variedad de ...
Joey Clover ha compartido
Bueno, ¿verdad?
He estado construyendo mi carrera en los últimos años. He tenido varios trabajos en una variedad de ...
Extracto
Tengo un enfoque sensato para el desarrollo de software.
Creo que una empresa no tendrá éxito a menos que invierta en su personal.
Tengo años de experiencia en empresas que van desde empresas de nueva creación hasta corporaciones multinacionales.
Aunque me enfoco principalmente en el desarrollo de software móvil nativo, tengo un fuerte apego a las aplicaciones 3D, como
los juegos. He pasado mucho tiempo estudiando renderización 3D, sombreadores, geometría, bibliotecas y los géneros para
mejorar mi experiencia en estas áreas. Si no estoy usando Unity o Unreal, normalmente estoy haciendo mi propio uso de C ++ con
SFML y OpenGL.
Un día típico para mí consiste en usar y dominar las siguientes herramientas y tecnologías:
Git, Jira, Confluence, Jenkins, CircleCI, Travis, Swift, Objective-C, BDD (Pepino, Calabash, Appium), TDD.
Mis intereses y pasatiempos personales son mucho más grandes y consisten en:
GoLang, MongoDB, Haskell, ReactJS, AngularJS, TypeScript, C #, desarrollo de juegos, Android, Java, RealmDB, desarrollo
empresarial, StartUp + y muchos más.
Experiencia
Cofundador
Tabb Drink
junio de 2016 – actualidad (1 año 5 meses)Manchester, Reino Unido
Desarrollador Xamarin
Intoware
junio de 2017 – octubre de 2017 (5 meses)Nottingham, Reino Unido
Proporciono mis servicios a un equipo llamado Varenberg. Construimos e integramos componentes independientes y reutilizables
para ser utilizados en todo el conjunto de aplicaciones móviles Sky. He estado expuesto a una serie de aplicaciones y he escrito un
código confiable y estable que se ejecuta en cientos de millones de dispositivos. La seguridad y la escala son primordiales en mi
toma de decisiones diaria. Con cada decisión, debo considerar seriamente los efectos que tendría en la seguridad y la escala.
Sigo el proceso de desarrollo Agile estándar. Utilizo herramientas como Jira, Confluence, Jenkins, Git, Xcode, entre otras, para
asegurar que el trabajo que realizo tenga la documentación y se rastree. Participo en sesiones de preparación de backlog, stand-ups
diarios, retrospectivas y otras actividades ágiles.
La cultura en Sky es fantástica. Las oficinas son geniales y cuidan de las personas que trabajan con ellos. Los edificios tienen sus
propias cafeterías donde los alimentos y bebidas son muy rebajados y muy deliciosos.
Ingeniero de Software Móvil
TheLADbible Group
enero de 2016 – abril de 2016 (4 meses)
Fui responsable del desarrollo de aplicaciones sofisticadas con un alcance masivo. Desarrollé las aplicaciones con un equipo de
ingenieros talentosos y al mismo tiempo me aseguré de que tuviéramos procesos establecidos para garantizar un desarrollo rápido
y eficiente. Implementé la integración y el despliegue continuo de las aplicaciones y también escribí una serie de guías que los
ingenieros deberían seguir cuando trabajen en las aplicaciones. Era mi responsabilidad garantizar que los ingenieros de
aplicaciones puedan desarrollar, construir y desplegar las aplicaciones de la manera más eficiente posible. Esto implica la creación
de pruebas de aceptación e historias de usuarios, utilizando confluencia para la documentación y Jira para administrar los sprints
utilizando la metodología scrum. Trabajé en estrecha colaboración con el equipo de Data Science para garantizar que rastreamos
los análisis correctos de las aplicaciones y también los utilizamos para implementar pruebas A / B en las aplicaciones. Trabajé con
el Administrador de desarrollo de software para crear una hoja de ruta para las aplicaciones e informarle cualquier
progreso. También trabajo con el equipo de UI / UX para que las aplicaciones sean hermosas y un placer de usar. Este papel ha
presentado muchos desafíos.
Desarrollador líder de iOS
Fatsoma
marzo de 2015 – enero de 2016 (11 meses)Manchester, Reino Unido
Desarrolla, mantiene y despliega aplicaciones que se distribuyen a miles de dispositivos en todo el mundo. Las aplicaciones
permiten a las personas navegar por eventos, comprar boletos y disfrutar de un nuevo tipo de experiencia social.
He sido responsable de desarrollar un flujo de trabajo mejorado al implementar un servidor de compilación con integración
continua (jenkins) y conectarlo con el software de comunicación dentro de la compañía que utiliza Hubot. Flowdock se utiliza
para la comunicación dentro de la compañía y tiene un bot (fatbot) que puede comunicarse con el servidor de compilación y
distribuir compilaciones de diferentes ramas de GitHub a quien lo solicite en la herramienta de comunicación.
Soy responsable de garantizar que la aplicación se libere sin problemas y sin errores. Hago esto introduciendo TDD en la base de
código existente. Appium también se usará para pruebas de integración y para garantizar que la aplicación sea lo más estable
posible.
También estoy integrando pruebas A / B en las aplicaciones móviles para asegurar que estamos tomando decisiones efectivas
sobre la copia y los diseños / experiencia del usuario dentro de la aplicación.
Professional iOS Developer
LateRooms.com
diciembre de 2014 – marzo de 2015 (4 meses)
Desarrolle, mantenga e implemente aplicaciones que se distribuyen a cientos de miles de dispositivos en todo el mundo. Las
aplicaciones permiten que las personas encuentren, visualicen y reserven hoteles a precios excelentes, a la vez que ofrecen una
excelente experiencia de usuario.
He trabajado con una gran variedad de software para mantener y desplegar las aplicaciones, que incluyen software de integración
continua, control de versiones, herramientas de administración de proyectos, suites de pruebas y más. El rol implica una gran
cantidad de programación de pares y revisión de código que ayuda a desarrollar habilidades vitales para convertirse en un buen
ingeniero de software.
Jenkins se utiliza para la integración continua y está estrechamente relacionado con Github. Jenkins está configurado para
verificar automáticamente las solicitudes de extracción en GitHub y ejecutar pruebas unitarias estándar y pruebas de
comportamiento. GitHub / Git se utilizan para el control de versiones. Tengo experiencia en el uso de una herramienta de gestión
de proyectos llamada LeanKit que se utiliza para crear historias y tareas para cada uno de los sprints.
Mientras se desarrollan las aplicaciones, se usan las prácticas TDD y BDD. Calabash / Cucumber se usan para BDD lo que
significa que está escrito en el lenguaje Ruby. Las aplicaciones necesitan pruebas unitarias y pruebas de comportamiento para casi
toda la funcionalidad de la aplicación y esto es lo que nos ayuda a crear un producto estable y fantástico.
Desarrollador líder de iOS
Rormix
julio de 2014 – diciembre de 2014 (6 meses)
Diseñe, desarrolle y mantenga una aplicación innovadora y rica en funciones para iOS. He sido responsable de reconstruir toda la
arquitectura de la aplicación desde el principio. Tengo una responsabilidad y es crear un producto receptivo y entretenido para la
audiencia.
He trabajado estrechamente con el desarrollador principal de Android y los diseñadores. Influí en el diseño de la aplicación e
implementé las características que se solicitaron. He usado una gran variedad de herramientas mientras trabajaba en la aplicación
Rormix. El mayor beneficio de este rol fue poder cometer errores y aprender de ellos y poder elegir cómo implementar las
funciones o qué características creía que eran demasiadas complicaciones.
La aplicación es rápida, receptiva, está bien diseñada y ayuda a los oyentes a encontrar nuevos gustos o talentos de artistas que no
son lo suficientemente populares como para ser considerados 'principales' o artistas que solo buscan aumentar su alcance para
publicitar a un gran número de usuarios.
Ingeniero de software
RealityMine
abril de 2014 – agosto de 2014 (5 meses)
Desarrolla, mantiene y despliega aplicaciones de calidad empresarial que se distribuyen a cientos de miles de dispositivos. Las
aplicaciones se crean para monitorear el comportamiento del consumidor en dispositivos móviles y ayudarán a avanzar
significativamente en la industria del marketing.
✔Desarrollo de software
Usé herramientas como Perforce, Jenkins y Jira. Perforce estaba usando en armonía con Jira para administrar los proyectos de
manera muy efectiva y permitir revisiones de códigos mucho más flexibles. Los proyectos se completaron de forma ágil y se
requirieron revisiones de código para cualquier cambio en la base de códigos. Estaba sujeto a revisión de código y a ser un revisor
de código. Jenkins es un servidor de compilación que se utilizó para administrar la construcción de la aplicación en múltiples
plataformas y tiene pasos de compilación automatizados que ahorran una cantidad significativa de tiempo en lugar de hacerlo en
cada máquina local de los desarrolladores.
Usé Objective-C y XCode para desarrollar aplicaciones de iPhone que eran críticas para el rendimiento y que requerían técnicas
inteligentes para completar las tareas que se les asignaban. He tenido experiencia con frameworks privados y exponer el hardware
de nivel inferior en dispositivos iOS. Tuve que desarrollar, mantener, aprovisionar y desplegar aplicaciones a lo largo de todo el
ciclo de vida mientras construía una aplicación de marca blanca. Usé el servidor de compilación Jenkins para administrar las
compilaciones para las aplicaciones y fui responsable de mantener los certificados para las aplicaciones junto con el uso de un
servidor de aprovisionamiento.
Usé Java y Eclipse para desarrollar aplicaciones de Android similares a las del iPhone. Dado que las plataformas son
completamente diferentes, me he enfrentado a diferentes desafíos y obstáculos que tuve que superar. Fui responsable de
desarrollar, mantener y desplegar las aplicaciones de Android. Usé el servidor de compilación Jenkins para administrar el edificio
y la certificación de las aplicaciones de Android.
Desarrollador de aplicaciones móviles
Bright Future Software
septiembre de 2013 – abril de 2014 (8 meses)
* Asumió la responsabilidad como Líder de equipo y realizó scrums regulares y administró el proyecto utilizando Agile PM
Techniques.
* Administró el empaque y la distribución de la aplicación.
* Desarrolló una sólida comprensión de la API de Youtube para Android
Proyectos
Sr. Moore's Last Seconds
julio de 2013 – julio de 2013
El señor Moore es un juego que hice con un equipo de otras dos personas dentro de un plazo apretado de 72 horas y la descripción
es la siguiente: "El señor Moore sufrió un accidente automovilístico fatal y su vida brilló ante sus ojos. Recordó los eventos clave
en su vida, y él estaba preocupado por algunos. Tómate la vida del señor Moore y ayúdalo a alejarse del daño del destino ".
Miembros de equipo:
o Joey Clover ,
o Tomás Banzas,
o Paul Fredericks
BBC paradero
Fecha de comienzo enero de 2014
BBC Whereabouts fue una aplicación creada para que la BBC la utilizara internamente para resolver el problema de la falta de
comunicación (o la falta de comunicación) entre los gerentes y sus asistentes personales. La aplicación permitiría a los gerentes
actualizar su ubicación para la próxima semana y les notificaría cada viernes para hacerlo. Durante el desarrollo de la aplicación,
tuve la responsabilidad de desarrollar y entregar la arquitectura front-end para la aplicación. Trabajé junto a un talentoso diseñador
de UI / UX para hacer que la aplicación no solo fuera funcional sino también receptiva y visualmente atractiva. También fui
responsable de diseñar, desarrollar y entregar el lado del servidor de la aplicación (API del servidor) para permitir que la
aplicación interactúe eficientemente con los datos dentro de la base de datos.
Miembros de equipo:
o Joey Clover
TheLADBible
Fecha de comienzo enero de 2016
Entre las aplicaciones que se están desarrollando en TheLADBible, la aplicación de iOS fue una de ellas. El equipo de
TheLADBible trabaja arduamente para garantizar que la aplicación sea de alta calidad y brinde a los usuarios el contenido que
esperan.
Miembros de equipo:
o Joey Clover
Aptitudes
Mobile Applications
iOS development
Objective-C
Android
Programming
Java
Game Programming
ActionScript
Software Development
Swift
Object Oriented Design
Systematic Approach
CSS3
JavaScript
Flash
HTML 5
jQuery
C++
Android Development
Game Development
PHP
OOP
Web Development
JSON
C
Agile Methodologies
Eclipse
JIRA
iOS
Databases
Perforce
Agile Project Management
C#
Software Design
Git
Web Applications
Continuous Integration
HTML5
CSS
Ver menos
Certificaciones
Fundamentos del desarrollo de software
Microsoft, Número de la licencia: E498-8034
diciembre de 2013 – actualidad
Cursos
Xaverian College
o Biología
o Química
o Informática
Idiomas
Inglés
Educación
Xaverian College
Ciencias de la Computación
2011 – 2013
Informática
de Nivel
Avanzado Química de Nivel Avanzado Biología de Nivel Avanzado
Actividades y grupos: Junior Robot Competition (1st place regional, 3rd place national), Rugby
Sale High School
2008 – 2012
Aquí tienes un anticipo de lo que los miembros de LinkedIn opinan sobre Joey:
Joey es un excelente desarrollador móvil con una gran capacidad para aprender rápido, incluso en áreas nuevas
para él. Esto se aplica a las nuevas tecnologías, así como a nuevos campos de negocios o procesos. Es una gran
persona para trabajar en equipo y tiene la capacidad de comprender e idear una solución a un problema complejo.
Ver menos
Joey es un desarrollador altamente motivado, que a menudo trabaja las 24 horas para cumplir con sus plazos. Joey
sería una excelente incorporación a cualquier equipo y se ha ganado mi más alta recomendación.
Grupos
Solución de quiosco basada en Linux (android, ios)
Developers - Android, iOS developer , Blockchain, Ethereum, Java, Ruby, .net, php, django, etc
Gente de TI en el mundo
Grupo de desarrolladores de iOS
Todo móvil
NCD CDI
Empleos de Desarrollador de iPhone
Universo Aplicaciones Móviles
Plain Old C Programming
Desarrolladores de iOS
SUPERCODERS
Programación Funcional
Introbiz (UK) Ltd
IOS y Android North West + Yorkshire
Ver menos
Desde hace seis meses nuestros reportes financieros se organizan en esos tres
pilares. Microsoft va a hacer estas tres cosas, no va a hacer más.
Pero queda mucho por hacer. En PC somos líderes, en tabletas ha habido una
mejora sustancial y en móviles la región de América Latina siempre ha sido uno
de los lugares donde se usa muchísimo Windows Phone. Quizás a nivel mundial no
se vea así, pero la adopción en esta región ha sido muy importante. En el
Perú, Windows Phone es el segundo sistema operativo más utilizado en
celulares.
Es un dato sorprendente.
Así es, mucha gente no lo sabe.
Te tocó lanzar Windows 8, luego Windows 10. Ya has cumplido cinco años al
frente de la oficina en el Perú. En muchas transnacionales, eso significa
tiempo de cambios.
“Necesitamos empresarios que participen más activamente en política” Jueves, 23 de agosto del 2012
EMPRESAS07:16 Luis Torres Mariscal, presidente de la CADE 2012, adelantó que la conferencia de este año
Con una extensa trayectoria en Microsoft, Guzman-Barron tiene hoy el desafío de dirigir las
operaciones de la compañía en Perú. Su convencimiento sobre las ventajas que brindan los
productos de su empresa al ecosistema BPO no muestra grietas, “Al suscribirse a Office 365 los
usuarios cuentan con las aplicaciones de Office que ya conocen, pero siempre actualizadas e
instaladas en su totalidad para su uso en diferentes dispositivos y adicionalmente encuentran
herramientas que les permiten trabajar mejor en equipo y a ser más productivos” indicó.
Es un mercado que está creciendo, no solo en Perú sino en toda la región. El BPO permite a las
empresas enfocarse en el core de su negocio y asegurar que todos sus esfuerzos y talento este
dedicado a generar lo que sea más productivo y estratégico para la compañía.
Claro, hoy el cliente es un usuario, aprende y empieza rápido, con una muy baja inversión inicial y
utiliza un servicio que se adapta constantemente. Pasamos de la adquisición de grandes activos,
asociados a gastos operativos también grandes, a un mundo donde solo se paga por uso. A su
vez, esta serie de facilidades les exige a las empresas ser más ágiles, ahora se ven forzadas a
cambiar la forma de administrar sus proyectos, y nuestra misión es ayudar a producir el cambio.
¿Qué compañías están hoy más predispuestas a incorporar el BPO a sus operaciones?
¿En qué medida las soluciones de CRM como Microsoft Dynamics estimulan la
tercerización de procesos?
Comenzando por la premisa de que muchas compañías tienen una solución de CRM, pero no la
utilizan, básicamente porque están abocadas a esquemas de ventas, entonces nosotros con
Microsoft Dynamics nos abocamos a lograr una visión de 360 grados de la relación con sus
clientes.
Esta herramienta ayuda a las empresas a interactuar correctamente con sus clientes,
permitiéndoles obtener ventajas de su información manteniendo la privacidad y protección de sus
datos, generando eficiencia a la operación. En este mundo cada vez más conectado, es clave ver
cómo la plataforma de CRM interactúa con los clientes a través diferentes plataformas digitales,
porque la relación de una compañía con su cliente no termina en el community manager, en
muchas ocasiones ahí comienza.
Aquí también la nube es un aspecto importante…
En efecto, gracias a que Microsoft Dynamics está en la nube, permite una rápida implantación.
Por otro lado, hay que tener en cuenta que el CRM es una estrategia que, para generar valor,
requiere a su vez una serie de procesos más precisos.
“Como peruano, estoy feliz de volver a mi país para llevar nuestro negocio a su máximo potencial e impulsar la
relevancia de Microsoft en Perú como un agente de cambio en beneficio de nuestros clientes, socios y empleados”,
dijo Guzmán-Barrón. “Toda mi familia está muy contenta haciendo los preparativos para volver”.
Después de una década exitosa en Microsoft, Luis Torres Mariscal, actual Director Gerente General de Microsoft
Perú, ha decidido retirarse de la compañía. “Durante su reconocido liderazgo en el país, obtuvo excelentes
resultados llevando Microsoft Perú a un nuevo nivel de éxito, relevancia e impacto en el mercado, por lo cual tiene
todo nuestro reconocimiento y gratitud”, señaló Hernán Rincón, presidente de Microsoft Latinoamérica, añadiendo
que “tenemos un gran optimismo por el potencial del Perú y creemos que la tecnología será el gran habilitador para
hacerlo realidad; esa será la misión de Guillermo en el país, tal como la misión de Microsoft a nivel mundial”.
De igual forma, desde la misma fecha, Simón Santoro asumirá la dirección del segmento de pequeña y mediana
empresa, y César Oviedo la dirección de la organización de servicios para la subsidiaria peruana.
CIO, Perú
https://cioperu.pe
Guillermo Guzman-Barron
Aptitudes
Idiomas
Educación
Cursos
Cursos adicionales
o Leadership Excellence (Columbia University)
o Strategic Marketing (Kellogg Business School)
o Marketing Innovative Technologies (Harvard Business School)
o Leadership Journey (Wharton Business School)
Web API
Una API es una interfaz de programación de aplicaciones (del inglés API: Application Programming Interface).
Es un conjunto de rutinas que provee acceso a funciones de un determinado software.
Son publicadas por los constructores de software para permitir acceso a características de bajo nivel o
propietarias, detallando solamente la forma en que cada rutina debe ser llevada a cabo y la funcionalidad que
brinda, sin otorgar información acerca de cómo se lleva a cabo la tarea. Son utilizadas por los programadores
para construir sus aplicaciones sin necesidad de volver a programar funciones ya hechas por otros, reutilizando
código que se sabe que está probado y que funciona correctamente.
En la web, las API's son publicadas por sitios para brindar la posibilidad de realizar alguna acción o acceder a
alguna característica o contenido que el sitio provee. Algunas de las más conocidas son las API's de: