SlideShare una empresa de Scribd logo
FULLSTACK JS DEV IN 2017
Aventuras y desventuras del Javascript cotidiano
+ 10y Developer | + 6y Trainer
Full Stack Dev | JS Fanboy
@cortezcristian
LIFE
¿Cómo es la vida un FullStack Javascript Developer en el
2017?
!LIFE
"I'm a developer, I have no life"
WFH
Tuvimos que adaptarnos a nuevas practicas laborales
SOCIAL NETWORKS
Hicimos muchos amigos...
...en LinkedIn
MOST WANTED
...pero tod@s son recruiters
JOB OFFERS
Nos empezamos a encontrar con este tipo de ofertas
JAVA???
Real offer
ASK RECRUITERS
Priceless!
NO OFFENSE
No offense, Que haríamos sin ustedes!
¿Que nos piden de forma explícita?
MongoDB => NoSQL (DBA)
NODE.JS => Server Side Logic (Backend Dev)
Express => Web Framework (with Nginx/Apache?)
HTML / CSS / JS => Client Side Logic (Frontend Dev)
AngularJS => MVW FE Framework
Inglés => ok
JS EVERYWHERE
En todas partes!!!
¿Que nos pueden estar pidiendo de forma implícita?
Metodologías / Scrum / Kanban
Git / Branching Models
UI / UX / Accessibility
Web Performance / HTML5 / Bootstrap
Unit Testing / Mocking / Stabbing
Testing Manual / Automático / TDD
OAuth / Social Networks API / SEO
Caching / Optimizations / REST / SOAP
ODM / ORM / Full Text Search
Scalability / Cloud / Load Balancing
Sys Admin / Operations / Bash
...
Data visualization, WebSockets, aframe (AR/VR)
FULL STACK
Suena demasiado para una sola persona!
2017 SURVEY
La tendencia es bastante marcada
StackOver ow Developer Survey 2017
WHY
¿Por qué existen los FullStack?
Claramente las empresas buscan ahorrar
(devops, hybrid mobile dev)
CODING LIFE
¿Qué buscan l@s recruiters?
(un jugador de toda la cancha)
(que transforme litros de café en JS)
JS
¿Quién dejo que Javascript llegara tan lejos?
V8 JAVASCRIPT ENGINE
Es un motor de Javascript open source
desarrollado por Google, esta disponible
desde el 2008 y actualmente es usado en
el navegador Google Chrome. 
 
Proyecto en Google Code
NODE.JS
Node.js es un entorno de programación del
lado del servidor basado en Javascript, con
I/O de datos en una arquitectura orientada
a eventos y basado en el motor Javascript
V8. Fue creado por Ryan Dahl en 2009 y su
evolución está apadrinada por la empresa
Joyent.
Introduction to Node.js with Ryan Dahl
BASIC HTTP SERVER
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hola Mundon');
}).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/')
Arrancamos el server:
$ node holamundo.js
Server running at http://127.0.0.1:8080/
Y listo ya tenemos un servidor HTTP muy básico
Pasamos de esto...
JavaScript All the Way Down
Linux Journal (Apr 09 2015) by Federico Kereki
...a esto
JavaScript All the Way Down
Linux Journal (Apr 09 2015) by Federico Kereki
JS DEL LADO DEL SERVIDOR
NPM
NPM es el gestor de paquetes o cial de
Node.JS. Fue creado por  Isaac Schlueter  y
venia incluido junto con Node.JS desde la
version  0.6.3 liberada en el 2011 .
Mientras Isaac estaba trabajando en
Joyent y comenzó encargado de mantener
el proyecto Node.JS.
https://npmjs.org/
Node.js Creator Ryan Dahl Cedes Role as Gatekeeper to
NPM Creator Isaac Schlueter
(2012)
Nos pasaron cosas... Te lo resumo...
2013 - Empezaron a llover proyectos en Node.JS (not a toy)
2013 - Implementamos Promesas ( )
2014 - Hubo un desentendimiento y surgió
2015 - IBM adquirió
2015 - Combines Node.js and io.js Into
Single Codebase
2016 - The unpublish left-pad asco (
)
2016 - Nos copamos con `npm publish`, tal vez demasiado...
Promises/A+
io.js
StrongLoop
Node.js Foundation
npm ERR! 404 'left-
pad' is not in the npm registry.
FULLSTACK JS DEV in 2017
text editors, frontend libs, desktop apps, cli-tools, build tools,
automation, web frameworks, real-time, nlp, orms,
networking, security... and more!
Awesome Node.js
Somos las comunidad mas grande del planeta!
modulecounts.com
Node Community
Video: Node.js Live (Paris) - Ashley Williams, You Don't Know npm (2016)
MOST USED DEPENDENCIES (david-dm.org)
MONGO DB
MongoDB (de la palabra en inglés
“humongous” que signi ca enorme) es un
sistema de base de datos NoSQL orientado a
documentos, desarrollado bajo el concepto
de código abierto.
Creado por la empresa 10gen (ahora MongoDB Inc.)
MONGO TERMS
SQL  MongoDB 
database
table
row or
column
index
database
collection
document BSON 
eld
index
MONGO BSON
En vez de guardar los datos en tablas como se
hace en las base de datos relacionales,
MongoDB guarda estructuras de datos en
documentos tipo con un esquema
dinámico. (BSON)
JSON
Especi cación de BSON
¿Como se ve un documento?
{
"username" : "cortezcristian",
"name" : "Cristian Cortez",
"email" : "cortez.cristian@gmail.com",
"created" : ISODate("2013-08-01T14:49:27.029Z"),
"last_login" : ISODate("2013-08-01T14:49:27.029Z"),
"location" : "Rosario, Santa Fe, Argentina",
"language" : "es",
"_id" : ObjectId("51e836cdefeebf1a42000001")
}
Document-Oriented Storage
EN RESUMEN...
MONGO INDEX
Mongo soporta indexado de la misma
manera que las bases de datos relacionales.
Indexado
MONGO FILES
Almacenamiento de archivos
MongoDB puede ser utilizado como un
sistema de archivos, tomando la ventaja de la
capacidad que tiene MongoDB para el
balanceo de carga y la replicación de datos
utilizando múltiples servidores para el
almacenamiento de archivos.
Originalmente especi cado para documentos BSON que superen los 16MB
GridFS
MONGO BASIC CMDS
Listar las Bases de Datos
> show databases
Usar una base de datos
> use chatdb
Mostrar colecciones
> show collections
te preguntarás...
MONGO DB
El siguiente QUERY...
UPDATE users SET online = false WHERE name = "Alfa"
...en MongoDB se haría asi:
db.users.update(
{ name: "Alfa" } ,
{ $set: { online: false } },
{ multi: true }
)
MONGO ODM
Object Document Mapping ODM es una nueva
denominación ya que en MongoDB trabajamos con
Documentos y no con tablas y relaciones. 
MONGOOSE
Mongoose es un ODM que nos provee de una solución de
modelado de datos basada en Schemas y que nos ayuda a
integrar validaciones, querys, logica de negocios, etc.
Mongoose
WEB DEVELOPMENT
Designing A RESTful API That Doesn't Suck
Software design patterns implemented in EcmaScript 6
Bootsnipp.com: Home of free code snippets for Bootstrap
Accessibility Evaluation Tool
Don't Make Me Think
(nociones adicionales)
Don't make me think!
FULLSTACK JS DEV in 2017
SURVIVAL TIPS
(5 consejos prácticos)
#1 Decisiones sobre datos
"No sólo hay que saber buscar, hay que saber
elegir."
COMMON MISTAKES #1
(*) not real books
INDICADORES DE CALIDAD
Cantidad de Issues / Stars. Last release date.
Tests Passing? (unit / e2e) (%) / Code Climate
Builds / CI / Reviews / Contribution Process
Dependencias actualizadas? Checkeo de seguridad ( )
Comunidad Activa? Docs ( ). Soporte via Chat?
Performance. compatibility
Cobertura
nsp
inch-ci.org
Browser/OS
#2 Comunicación
"No sólo hay que estar abierto a aprender de
los demas, hay que estar preparado."
FULLSTACK JS DEV in 2017
COMMON MISTAKES #2
(*) not real books
GIT
Para comunicarse (git blame)
Para conocer al equipo (git summary)
Para fomentar la sana competencia
Para sacar estadísticas ( )
Para encontrar cuellos de botella (git effort)
Para organizar el ujo de trabajo ( )
git-extras
git- ow
#3 Evitar la optimización temprana
"Dividí el problema en pequeños partes, buscá
soluciones simples y consistentes que no
requieran demasiado esfuerzo."
COMMON MISTAKES #3
(*) not real books
WTFS PER MINUTE
KISS
Simple is better than complex. ( )
Evitar la parálisis por análisis (5, 4, 3, 2, 1!)
Aprender del código de los demas
Hacer sesiones de debugging cuando no se logra terminar
de entender cómo funciona alguna libreria
Ser prolijo y consistente, no por los demas sino para uno
mismo
The Zen of Python
#4 Auto-conocimiento
"Para conocer nuestra propia productividad,
es necesario empezar a medirla."
COMMON MISTAKES #4
Esperar que tu productividad la mida la empresa
No poder dar un estimado de cuanto llevará el trabajo
Perder la noción del tiempo invertido en las tareas
No poder garantizar la calidad del trabajo entregado
Resolver las tareas en el orden incorrecto
urgente/importante
GTD
Pomodoro Technique Illustrated: The Easy Way to Do
More in Less Time
The Coaching Habit: Say Less, Ask More & Change the Way
You Lead Forever
Getting Things Done: The Art of Stress-Free Productivity
The Lean Startup
The Art of Non-Conformity
Cracking the Tech Career
The Power of Habit
#5
"Disfrutar el camino, signi ca disfrutar tu
propio camino."
"Plans are worthless, but planning is everything."
- Dwight D. Eisenhower
Gracias!
cortez.cristian@gmail.com

Más contenido relacionado

PDF
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
PDF
Conceptos básicos y aplicaciones prácticas de programación para SEO
PDF
Patrick aljordcampuspartysl
PDF
Shapado: Como ganar dinero con el software libre
PPTX
Gutenberg sin miedo
PDF
Manual Tutorial Javascript Con Ejemplos
PDF
Presentación RodrigoPolo.com @ Barcamp Guatemala '09
PDF
Jboss Forge 101
Cómo volarle la peluca a tus usuarios con la velocidad de tu sitio?
Conceptos básicos y aplicaciones prácticas de programación para SEO
Patrick aljordcampuspartysl
Shapado: Como ganar dinero con el software libre
Gutenberg sin miedo
Manual Tutorial Javascript Con Ejemplos
Presentación RodrigoPolo.com @ Barcamp Guatemala '09
Jboss Forge 101

Similar a FULLSTACK JS DEV in 2017 (20)

PDF
Cloud para tu juego en una tarde
PDF
Code Blast 2012 - Node.js
PPTX
Introducción a SharePoint Framework
PPTX
Mallorca MUG: Introducción a MongoDB
PDF
Aprendiendo GWT
PPTX
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
PDF
Programación Reactiva, Javascript Isomorfo y Meteorjs !
PDF
¡Que lo haga otro! Automatizaciones SEO para vivir mejor
PDF
Gwt I - entendiendo gwt
PDF
Jsf Java Server Faces
PPTX
Bootcamp Javascript Online
PDF
Bdd, cucumber y gherkin. desarrollo dirigido por comportamiento
PDF
Gwt seminario java_hispano_manolocarrasco
PPT
Proyectos escalables con Drupal
PPTX
NOSQL: Primeros Pasos en MongoDB
PPTX
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
ODP
Presentación rails 3 Santo Tomás Concepción
PDF
Patrick aljordcampuspartysl
PDF
Instalacion adobe dream weaver
PPT
Sistema integrado
Cloud para tu juego en una tarde
Code Blast 2012 - Node.js
Introducción a SharePoint Framework
Mallorca MUG: Introducción a MongoDB
Aprendiendo GWT
Desarrollo de Aplicaciones con Node.js | INTERSYS UNPRG | 2012
Programación Reactiva, Javascript Isomorfo y Meteorjs !
¡Que lo haga otro! Automatizaciones SEO para vivir mejor
Gwt I - entendiendo gwt
Jsf Java Server Faces
Bootcamp Javascript Online
Bdd, cucumber y gherkin. desarrollo dirigido por comportamiento
Gwt seminario java_hispano_manolocarrasco
Proyectos escalables con Drupal
NOSQL: Primeros Pasos en MongoDB
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Presentación rails 3 Santo Tomás Concepción
Patrick aljordcampuspartysl
Instalacion adobe dream weaver
Sistema integrado
Publicidad

Último (6)

PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
Conceptos basicos de Base de Datos y sus propiedades
DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
sistemas de informacion.................
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
AutoCAD Herramientas para el futuro, Juan Fandiño
Su punto de partida en la IA: Microsoft 365 Copilot Chat
Conceptos basicos de Base de Datos y sus propiedades
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
sistemas de informacion.................
Derechos_de_Autor_y_Creative_Commons.pptx
Publicidad

FULLSTACK JS DEV in 2017

  • 1. FULLSTACK JS DEV IN 2017 Aventuras y desventuras del Javascript cotidiano
  • 2. + 10y Developer | + 6y Trainer Full Stack Dev | JS Fanboy @cortezcristian
  • 3. LIFE ¿Cómo es la vida un FullStack Javascript Developer en el 2017?
  • 4. !LIFE "I'm a developer, I have no life"
  • 5. WFH Tuvimos que adaptarnos a nuevas practicas laborales
  • 6. SOCIAL NETWORKS Hicimos muchos amigos... ...en LinkedIn
  • 7. MOST WANTED ...pero tod@s son recruiters
  • 8. JOB OFFERS Nos empezamos a encontrar con este tipo de ofertas JAVA??? Real offer
  • 10. NO OFFENSE No offense, Que haríamos sin ustedes!
  • 11. ¿Que nos piden de forma explícita? MongoDB => NoSQL (DBA) NODE.JS => Server Side Logic (Backend Dev) Express => Web Framework (with Nginx/Apache?) HTML / CSS / JS => Client Side Logic (Frontend Dev) AngularJS => MVW FE Framework Inglés => ok
  • 13. ¿Que nos pueden estar pidiendo de forma implícita? Metodologías / Scrum / Kanban Git / Branching Models UI / UX / Accessibility Web Performance / HTML5 / Bootstrap Unit Testing / Mocking / Stabbing Testing Manual / Automático / TDD OAuth / Social Networks API / SEO Caching / Optimizations / REST / SOAP ODM / ORM / Full Text Search Scalability / Cloud / Load Balancing Sys Admin / Operations / Bash ... Data visualization, WebSockets, aframe (AR/VR)
  • 14. FULL STACK Suena demasiado para una sola persona!
  • 15. 2017 SURVEY La tendencia es bastante marcada StackOver ow Developer Survey 2017
  • 16. WHY ¿Por qué existen los FullStack? Claramente las empresas buscan ahorrar (devops, hybrid mobile dev)
  • 17. CODING LIFE ¿Qué buscan l@s recruiters? (un jugador de toda la cancha) (que transforme litros de café en JS)
  • 18. JS ¿Quién dejo que Javascript llegara tan lejos?
  • 19. V8 JAVASCRIPT ENGINE Es un motor de Javascript open source desarrollado por Google, esta disponible desde el 2008 y actualmente es usado en el navegador Google Chrome.    Proyecto en Google Code
  • 20. NODE.JS Node.js es un entorno de programación del lado del servidor basado en Javascript, con I/O de datos en una arquitectura orientada a eventos y basado en el motor Javascript V8. Fue creado por Ryan Dahl en 2009 y su evolución está apadrinada por la empresa Joyent. Introduction to Node.js with Ryan Dahl
  • 21. BASIC HTTP SERVER var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hola Mundon'); }).listen(8080, '127.0.0.1'); console.log('Server running at http://127.0.0.1:8080/') Arrancamos el server: $ node holamundo.js Server running at http://127.0.0.1:8080/ Y listo ya tenemos un servidor HTTP muy básico
  • 22. Pasamos de esto... JavaScript All the Way Down Linux Journal (Apr 09 2015) by Federico Kereki
  • 23. ...a esto JavaScript All the Way Down Linux Journal (Apr 09 2015) by Federico Kereki
  • 24. JS DEL LADO DEL SERVIDOR
  • 25. NPM NPM es el gestor de paquetes o cial de Node.JS. Fue creado por  Isaac Schlueter  y venia incluido junto con Node.JS desde la version  0.6.3 liberada en el 2011 . Mientras Isaac estaba trabajando en Joyent y comenzó encargado de mantener el proyecto Node.JS. https://npmjs.org/
  • 26. Node.js Creator Ryan Dahl Cedes Role as Gatekeeper to NPM Creator Isaac Schlueter (2012)
  • 27. Nos pasaron cosas... Te lo resumo... 2013 - Empezaron a llover proyectos en Node.JS (not a toy) 2013 - Implementamos Promesas ( ) 2014 - Hubo un desentendimiento y surgió 2015 - IBM adquirió 2015 - Combines Node.js and io.js Into Single Codebase 2016 - The unpublish left-pad asco ( ) 2016 - Nos copamos con `npm publish`, tal vez demasiado... Promises/A+ io.js StrongLoop Node.js Foundation npm ERR! 404 'left- pad' is not in the npm registry.
  • 29. text editors, frontend libs, desktop apps, cli-tools, build tools, automation, web frameworks, real-time, nlp, orms, networking, security... and more! Awesome Node.js
  • 30. Somos las comunidad mas grande del planeta! modulecounts.com
  • 31. Node Community Video: Node.js Live (Paris) - Ashley Williams, You Don't Know npm (2016)
  • 32. MOST USED DEPENDENCIES (david-dm.org)
  • 33. MONGO DB MongoDB (de la palabra en inglés “humongous” que signi ca enorme) es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto. Creado por la empresa 10gen (ahora MongoDB Inc.)
  • 34. MONGO TERMS SQL  MongoDB  database table row or column index database collection document BSON  eld index
  • 35. MONGO BSON En vez de guardar los datos en tablas como se hace en las base de datos relacionales, MongoDB guarda estructuras de datos en documentos tipo con un esquema dinámico. (BSON) JSON Especi cación de BSON
  • 36. ¿Como se ve un documento? { "username" : "cortezcristian", "name" : "Cristian Cortez", "email" : "cortez.cristian@gmail.com", "created" : ISODate("2013-08-01T14:49:27.029Z"), "last_login" : ISODate("2013-08-01T14:49:27.029Z"), "location" : "Rosario, Santa Fe, Argentina", "language" : "es", "_id" : ObjectId("51e836cdefeebf1a42000001") } Document-Oriented Storage
  • 38. MONGO INDEX Mongo soporta indexado de la misma manera que las bases de datos relacionales. Indexado
  • 39. MONGO FILES Almacenamiento de archivos MongoDB puede ser utilizado como un sistema de archivos, tomando la ventaja de la capacidad que tiene MongoDB para el balanceo de carga y la replicación de datos utilizando múltiples servidores para el almacenamiento de archivos. Originalmente especi cado para documentos BSON que superen los 16MB
  • 40. GridFS MONGO BASIC CMDS Listar las Bases de Datos > show databases Usar una base de datos > use chatdb Mostrar colecciones > show collections
  • 42. MONGO DB El siguiente QUERY... UPDATE users SET online = false WHERE name = "Alfa" ...en MongoDB se haría asi: db.users.update( { name: "Alfa" } , { $set: { online: false } }, { multi: true } )
  • 43. MONGO ODM Object Document Mapping ODM es una nueva denominación ya que en MongoDB trabajamos con Documentos y no con tablas y relaciones. 
  • 44. MONGOOSE Mongoose es un ODM que nos provee de una solución de modelado de datos basada en Schemas y que nos ayuda a integrar validaciones, querys, logica de negocios, etc.
  • 45. Mongoose WEB DEVELOPMENT Designing A RESTful API That Doesn't Suck Software design patterns implemented in EcmaScript 6 Bootsnipp.com: Home of free code snippets for Bootstrap Accessibility Evaluation Tool Don't Make Me Think (nociones adicionales)
  • 46. Don't make me think!
  • 49. #1 Decisiones sobre datos "No sólo hay que saber buscar, hay que saber elegir."
  • 50. COMMON MISTAKES #1 (*) not real books
  • 51. INDICADORES DE CALIDAD Cantidad de Issues / Stars. Last release date. Tests Passing? (unit / e2e) (%) / Code Climate Builds / CI / Reviews / Contribution Process Dependencias actualizadas? Checkeo de seguridad ( ) Comunidad Activa? Docs ( ). Soporte via Chat? Performance. compatibility Cobertura nsp inch-ci.org Browser/OS
  • 52. #2 Comunicación "No sólo hay que estar abierto a aprender de los demas, hay que estar preparado."
  • 54. COMMON MISTAKES #2 (*) not real books
  • 55. GIT Para comunicarse (git blame) Para conocer al equipo (git summary) Para fomentar la sana competencia Para sacar estadísticas ( ) Para encontrar cuellos de botella (git effort) Para organizar el ujo de trabajo ( ) git-extras git- ow
  • 56. #3 Evitar la optimización temprana "Dividí el problema en pequeños partes, buscá soluciones simples y consistentes que no requieran demasiado esfuerzo."
  • 57. COMMON MISTAKES #3 (*) not real books
  • 59. KISS Simple is better than complex. ( ) Evitar la parálisis por análisis (5, 4, 3, 2, 1!) Aprender del código de los demas Hacer sesiones de debugging cuando no se logra terminar de entender cómo funciona alguna libreria Ser prolijo y consistente, no por los demas sino para uno mismo The Zen of Python
  • 60. #4 Auto-conocimiento "Para conocer nuestra propia productividad, es necesario empezar a medirla."
  • 61. COMMON MISTAKES #4 Esperar que tu productividad la mida la empresa No poder dar un estimado de cuanto llevará el trabajo Perder la noción del tiempo invertido en las tareas No poder garantizar la calidad del trabajo entregado Resolver las tareas en el orden incorrecto urgente/importante
  • 62. GTD Pomodoro Technique Illustrated: The Easy Way to Do More in Less Time The Coaching Habit: Say Less, Ask More & Change the Way You Lead Forever Getting Things Done: The Art of Stress-Free Productivity The Lean Startup The Art of Non-Conformity Cracking the Tech Career The Power of Habit
  • 63. #5 "Disfrutar el camino, signi ca disfrutar tu propio camino."
  • 64. "Plans are worthless, but planning is everything." - Dwight D. Eisenhower