chufla87
Usuario (Argentina)
Las empresas demandan un Full Stack developer cuando buscan una persona técnica, que conozca bien todos los aspectos del front-end, back-end, los diferentes sistemas operativos y componentes que quedan en el medio. Actualmente la demanda de desarrolladores de estas características va en aumento, ya que deben ser capaces de asumir diferentes tareas. De hecho, empresas como Facebook, Instagram, Twitter, Despegar.com, Google, Mercado Libre, entre otras, sólo contratan desarrolladores con este tipo de perfil. El desarrollador Full Stack es el generalista de los desarrolladores, con mucho conocimiento técnico y no hay que confundirlo con el desarrollador Senior. En resumen, es un desarrollador que puede crear aplicaciones complejas desde cero él sólo. Para ello debe ser una persona que entienda en profundidad cómo interactúan las distintas capas de una aplicación. Estos son los 9 aspectos principales que debe saber un desarrollador Full Stack: 1. Desarrollo Web Lamp El Kit más básico para ser un desarrollador Full Stack es conocer desarrollo de aplicaciones WEB + LAMP, o sea Linux, Apache, MySQL y PHP. Ahora muchas de estas tecnologías son intercambiables por otras similares, NginX en lugar de Apache, PostgreSQL en lugar de MySQL o Ruby on Rails en lugar de PHP. Por supuesto que existe un equivalente en Microsoft que sería Windows + Microsoft IIS + .NET + Sql Server. 2. Desarrollo Web Mean El siguiente kit de un Full Stack es el llamado MEAN, que consiste en MongoDB, Express, Angular y NodeJS. A diferencia del conjunto anterior este stack busca entregar la mayor cantidad de carga al lado del cliente pero requiere de una forma bien distinta de pensar las cosas. 3. Modelamiento No hay que perder de vista el diseño del modelo y el análisis de requerimientos, estos dos skills son mandatorios. Obviamente estos no son sólo conocimientos teóricos sino que se tiene que conocer y manejar diversos tipos de diagrama de datos, mínimamente un buen manejo de UML. 4. Control de versiones Además un desarrollador Full Stack debe saber utilizar herramientas de versionado como GIT, (SVN “ya pasó de moda” y es mirado despectivamente dentro de la comunidad), a su vez se tiene que saber vincular GIT con herramientas de testing y deployment, ya sea Jenkins, heroku, bizagi, Go Cd, etc. 5. PAAS Y Soluciones Cloud Un buen desarrollador Full Stack debe entender de manejo de PAAS (Plataform as a Service) como Heroku y Amazon. No sólo cómo usarlas, si no que entender sus costos y cómo escalan y cuándo deben ser usadas estas soluciones y cuándo no. 6. Métricas Debe entender cómo extraer datos de sistemas de métricas como google analytics. Hay que tener en mente que el desarrollador Full Stack no sólo es un desarrollador, es además un analista. 7. Aplicaciones móviles El Full Stack Developer tiene que estar 100% actualizado, por lo cual, debe saber cómo crear aplicaciones móviles, tanto híbridas como nativas. Sumando a los requisitos el conocer de frameworks web-mobile como PhoneGap y Titanium, de Frameworks Mobile como Ionic y Ratchet y obviamente debe saber Objective C (y Swift) y Java. 8. SEO (Search Engine Optimization) y SEM (Search Engine Marketing) En blogs siguientes les voy a explicar la diferencia, pero un Full Stack tiene que tener en cuenta que no es suficiente sólo saber construir aplicaciones, hay que saber publicarlas. Publicar en las appstores no es cosa de principiantes, y estar primero en Google es todo un desafío, y esto se hace mucho más difícil cuando internet está lleno de malas prácticas. 9. Seguridad Un desarrollador que no saber realizar inyecciones de queries via SQL es el mismo desarrollador que dejará expuesta toda la base de datos de su aplicación. Es importante para un Full Stack saber de seguridad informática. Desarrollador Full Stack en el mundo laboral Es normal que las empresas quieran conseguir a los mejores trabajadores, por la menor cantidad de dinero posible, pero hay que tener en cuenta que este tipo de conocimientos no es trivial. Si bien se entiende que el Full Stack developer tiene más amplitud de conocimiento que expertise en los mismos, hay entender que adquirir conocimientos en todos estos temas demora de muchos años de práctica. Por lo tanto no existe ni existirá algo así como Full Stack Developer Junior. Hoy en día los alumnos salen de sus carreras de ciencias de la computación, o ingeniería informática sin conocimientos de estos temas, por lo que una empresa los pida significa que este alumno debe tener 4 años de estudios universitarios y como un mínimo 5 a 10 de práctica. Un "Full Stack developer" es un desarrollador con un perfil técnico muy completo que conoce bien tanto lo referente a back-end como lo referente a front-end, se maneja en sistemas y sabe entender. Se trata de un perfil cada vez más demandado y bien remunerado.
Los Ninjas o Shinobi (en japonés) fueron un grupo militar de Japón, entrenados especialmente de maneras no tradicionales para hacer el arte de la guerra. Hoy adoptamos este término ancestral para aplicarlo a un tipo particular de desarrolladores de software: Ninja Developer. Previamente a hablar de qué es un Ninja Developer, es necesario describir ciertos conceptos. Stack Tecnológico Es una pila o conjunto de tecnologías que en la mayoría de los proyectos trabajan de forma conjunta para resolver una determinada problemática. Este Stack normalmente está conformado por lenguajes y/o Frameworks que actúan en diferentes capas de la aplicación: Front-EndBack-EndBase de DatosSistema OperativoComo ejemplos de Stacks podemos encontrar: LAMP (Linux, Apache, MySql, PHP), LEMP (Linux, Nginx, MySql, PHP), MEAN (Mongo, Express, Angular, Node), ELK (ElasticSearch, Logstash, Kibana), etc. Programadores Full Stack Básicamente es un desarrollador que maneja alguno de los stacks tecnológicos conocidos, por lo cual puede programar en cualquiera de las capas de la aplicación con las tecnologías que aplican a su stack. Si quieres conocer más sobre este perfil, te recomiendo leer este post sobre los aspectos fundamentales que debería conocer un Fulls Tack Developer. http://latamdigital.softtek.co/9-aspectos-que-debe-conocer-un-full-stack-developer ¿Qué hace que este tipo de desarrollador sea merecedor del título "Ninja"? El Ninja Developer no se limita a un solo lenguaje ni a un solo stack tecnológico, es el políglota de los desarrolladores. El Ninja siempre tiene un lenguaje base, del cual tiene un dominio avanzado pero se siente cómodo utilizando cualquiera. A su vez, entiende y aprovecha los frameworks para poder usar el conjunto que considere necesario para la problemática que desea resolver. Dijimos que los Ninja Developers son políglotas. Esto se debe a que manejan de manera eficaz lenguajes funcionales como Lisp, Haskell, Scala o Clojure al mismo tiempo que dominan otros lenguajes como los estáticos entre los cuales encontramos JAVA, Groovy, C++. Los lenguajes dinámicos como JavaScript, Ruby, Python y PHP son utilizados por este tipo de desarrolladores con prácticamente el mismo nivel de destreza que los mencionados anteriormente. Lo mismo ocurre con los lenguajes para desarrollos mobile (Android, Swift u Objective-c), lenguajes para el desarrollo de juegos como lo es Lua (c), lenguajes asíncronos como Nodejs y los utilizados para estadísticas como R (de gran uso con BigData). Con respecto a la persistencia de datos, se mueve indistintamente en base de datos relacionales como NO-SQL (MongoDB, Cassandra, New SQL, etc). Además, sabe elegir la mejor tecnología para el problema que debe resolver. Ninja Developer es una forma de referirse a un programador avanzado y por lo tanto, muy deseable ante los ojos del mercado laboral. Ninja Developer en el mundo laboral Es frecuente que las empresas quieran incorporar a sus equipos los mejores profesionales, por la menor cantidad de dinero posible, pero hay que tener en cuenta que este tipo de conocimientos no es trivial. Si bien se entiende que el Ninja Developer tiene más amplitud de conocimiento que expertise en los mismos, hay entender que adquirir conocimientos en todos estos temas demora de muchos años de práctica. Así, no existe ni existirá algo así como Ninja Developer Junior/ Semi Sr. Actualmente, los alumnos finalizan sus carreras de ciencias de la computación o ingeniería informática sin conocimientos de estos temas. Para que un alumno pueda aplicar a un puesto de Ninja Developer, es necesario tener 4 años de estudios universitarios y un mínimo 5 a 10 de práctica. Un Ninja Developer podría definirse como un desarrollador Full Stack que puede programar en varios Stacks tecnologicos. Se trata de un perfil cada vez más demandado y muy bien remunerado. Si eres desarrollador y aún te falta mucho por recorrer en el camino de ser un Ninja Developer, no te preocupes, ¡ocúpate! Esto no se aprende en la universidad y está bien que así sea. La universidad es un disparador. Enseña a pensar y a aprender. Hoy puedes saber todo pero en dos años este conocimiento será obsoleto. En nuestra profesión hay que estar siempre actualizados porque somos eternos aprendices.