¿Qué debe saber un desarrollador fullstack en 2016? ¿Qué idiomas deberíamos saber realmente?

Primero, lea todas las otras respuestas porque esta realmente requiere que lo haga.

Es posible que haya notado que ninguno de ellos calificaría como desarrollador de pila completa. Aquí están las razones:

Un desarrollador de pila completa [web] tiene que conocer los fundamentos.
Eso significa que HTTP, las capas OSI, entienden DNS, Punto de presencia (POP: por ejemplo, frente a la nube), se mantienen actualizados sobre nuevos protocolos (SPDY, HTTP 2), sobre nuevos estándares y sobre los emergentes. Conozca los impactos de ellos y su poly-fill. Debe saber también sobre SASS & LESS y todo lo que hace mañana hoy. (Por ejemplo, TypeScript)
Saber cuándo hacer SPA (aplicación de una sola página) y cuándo evitarlo.
Como tocará las bases de datos, debe tener un buen conocimiento del tipo de bases de datos y la capacidad de mezclarlas. (Use una base de datos orientada a documentos con una relacional y una gráfica)

Soy consultor, vi a muchas personas que con gusto los identificarán como desarrolladores completos, ¡pero no sé ninguno por ahora! Para ser claros, a menos que seas talentoso, no es posible.

Por lo general, full-stack no es full-stack. Significa desarrollo de back-end y frontal con un conjunto de herramientas y tecnologías proporcionadas por autoridades superiores.

Si tuviera que entrevistar a un verdadero desarrollador de full stack, haría las siguientes preguntas:

  • ¿Qué escribe en telnet para realizar una solicitud HTTP a “http://www.google.be/index”?
  • Explicar cómo “www.google.be” se resuelve en una IP
  • ¿Qué es un registro DKIM y qué es un registro SPF?
  • ¿Qué son los encabezados CORS?
  • ¿Cómo funciona el algoritmo Huffman (se relaciona con gzip)? ¿Cómo se usa en la web?
  • ¿Puede el “cliente” decir qué tipo de contenido acepta? Cómo ?
  • ¿Cuál es la diferencia entre TCP y UDP?
  • ¿Se puede falsificar la IP o el dominio?
  • En la base de datos relacional, ¿cuándo usamos “LEFT JOIN” y “OUTER JOIN”?
  • ¿Qué es una “expresión de tabla común”? (Perdón por Mysqlers)
  • ¿Qué es “elevación variable” en EcmaScript?
  • ¿Cuál es el alcance de una variable en EcmaScript?
  • ¿Cuál es la utilidad de la propiedad “prototipo” en EcmaScript?
  • ¿A qué nos referimos cuando decimos “Modelo de caja” en CSS?
  • ¿Cuál es el doctype de una página html5?
  • ¿Puede pedirle al navegador que guarde en caché los recursos para su uso sin conexión?
  • ¿Es mejor hacer 37 solicitudes en paralelo o emitirlas una por una?
  • ¿Cuál es la diferencia entre un servidor que usa un bucle de eventos o trabajadores? ¿Cuál es más rápido y cuándo?
  • Fingiendo que su idioma implementa todas las facilidades que ofrece el formato de archivo Zip. ¿Cómo extraerías un archivo en particular de un archivo zip? ¿Cómo enumerarías su contenido?
  • Escriba una expresión regular (PERL o POSIX) que valide una fecha y hora ISO. (2015-04-11T09: 33z)
  • ¿Qué son SASS y LESS?
  • ¿Qué son los sistemas de cuadrícula CSS?
  • ¿Qué son las unidades EM, EX, PT y% en CSS?
  • ¿Qué significa este selector: “sección> artículo + p [lang ^ = en] div.foo.bar”?
  • ¿Qué es el jabón?
  • ¿Cuándo es JSON mejor que XML? (y viceversa)
  • ¿Qué son XSLT, XQUERY, XPATH, RelaxNg, XSD?
  • ¿Cuáles son las principales diferencias entre JAVA o .Net y PHP?
  • Dado que tiene suficiente memoria, ¿es una buena idea hacer crecer el caché de consultas MySQL?
  • ¿Deberían los disparadores manejar parte de la lógica empresarial que se duplicaría en exceso en el código de la aplicación?
  • ¿Qué patrón de diseño está oculto en una aplicación de 3 niveles? (cliente, servidor, base de datos)
  • ¿Es seguro md5 para el hashing de contraseñas? ¿Qué pasa con SHA-2, brcypt y scrypt?
  • ¿Qué es SSH?
  • ¿Qué es FTP, SFTP y SCP?
  • ¿Qué son las URL “presignadas”?
  • ¿Qué es un “URI”?
  • Cuando se usa HTTPS, ¿qué se envía en texto claro?
  • ¿Sobre qué principios funciona SSL?
  • ¿Qué son CHAP y WSSE?
  • ¿Qué es PKCS11?
  • ¿Cómo perfilar una aplicación web? (Cliente y servidor)
  • ¿Cuál es la diferencia entre los lenguajes “imperativo”, “funcional”, “declarativo”, “prototípico” y “orientado a objetos”?

Estos son los conceptos básicos!

EDITAR: más preguntas

  • ¿Qué son los archivos “pfx / p12”, “cer” y “PEM”?
  • ¿Cuál es la mejor práctica con respecto al acceso SSH?
  • ¿Para qué sirve la máquina DMZ?
  • ¿Cuándo es HATEOAS y cuándo es relevante?
  • ¿Qué son los verbos HTTP?
  • ¿Cuál es la diferencia entre Apache, Node y Nginx?
  • ¿Se puede bloquear el “ping”?
  • ¿Es el “golpe de puerto” una buena seguridad?
  • ¿Qué es OAuth, OpenId, SAML y CAS?
  • ¿Cómo transferir un nombre de dominio?
  • ¿Qué tipo de bases de datos existen? (Piense en Mongo, Caché, Neo4J)?
  • ¿Cuáles son las ventajas de las bases de datos de gráficos y bases de datos de documentos?
  • ¿Cuándo es más apropiado el flujo de datos y funcional?
  • ¿Qué es el SEO?
  • ¿Cómo ayuda RDF al SEO?
  • ¿Cuál es la diferencia entre UI (interfaz de usuario) y UX (experiencia de usuario)?
  • ¿Qué herramientas puedes probar para la prueba de carga?
  • ¿Qué es el jabón?
  • ¿Qué son los ORM?
  • ¿Son los ORM la panacea?
  • ¿Qué son las “promesas” y los “futuros”?
  • ¿Cuáles son las principales diferencias entre una lista vinculada y una matriz, cuando cada una es más adecuada?
  • ¿Qué son las funciones de alto orden?
  • ¿Cuál es la diferencia entre “aplicación parcial” y “curry”?
  • Al llamar a una función, ¿dónde suelen ir los parámetros en la memoria?
  • ¿Cómo podemos provocar un “desbordamiento de pila”? (En java: “StackOverflowException”)
  • ¿Qué es un “segfault”? ¿Cuáles son las posibles razones?
  • ¿Qué es un sombreador EGL? ¿Dónde está el código “compilado” y “ejecutado”?
  • ¿Es una buena idea crear animaciones en JavaScript ya que CSS3 está respaldado por GPU?
  • ¿Qué son los websockets y cómo usarlos?
  • ¿Qué son los trabajadores web y cómo usarlos?
  • ¿Qué son npm, bower, gruñidos, tragos, cómo usarlos?
  • ¿Qué es TypeScript?
  • ¿Qué es el ES6?
  • ¿Qué es un BNF? ¿Qué tan útil puede ser?
  • ¿Cuál es la utilidad de los analizadores PEG?

La pregunta adicional también es básica.

Aquí hay algunas preguntas difíciles (según lo solicitado, sin modificaciones anteriores):

  • Una aplicación web está retrasada. Uno edite el “/etc/resolv.conf” y agregue esta línea “nameserver 8.8.8.8”. Parece solucionar el problema. Por qué ?
  • Agregamos más RAM al servidor y ahora la aplicación se ha ralentizado. La RAM se probó y está funcionando a su máxima capacidad. ¿Cuál es una causa potencial?
  • Una solicitud como esta se envía a un servidor HTTP sin el encabezado HOST. Lo que pasa ?
  • ¿Cuándo es útil un “trie”?
  • ¿Cuáles son las diferentes cerraduras?
  • Escribe dos códigos usando una función recursiva.
    Uno que se puede escribir de forma iterativa sin una pila
    y uno que realmente necesita uno.
  • En C, podemos usar punteros para apuntar a una dirección de memoria aleatoria. Suponiendo que no hay seguridad por defecto (sin protección de memoria), ¿por qué un proceso se bloquea después de una escritura “mala”?
  • APL utiliza una forma compacta de escribir código. La mayoría de los operadores pueden ser seguidos por un “/” para la reducción. “+ / 1 2 3 4” es la suma de la lista 1 a 4 mientras que “× / 1 2 3 4”. ¿Cuáles son las posibles razones de tiempo de ejecución ?
  • Dada esta lista de formas: cuadrado, rectángulo, rombo, trapecio, hexágono, hexágono regular y círculo. Dibuja un diagrama de herencia. (Cada clase tendría propiedades de “nombre”, “área”, “nbSides” y “perímetro”)
  • ¿Cuándo es inadecuada la POO?
  • Dé ejemplos de consultas mejor manejadas por una base de datos gráfica bien estructurada y una base de datos relacional bien estructurada.
  • ¿Es Git una base de datos?
  • Un sitio web exhibe un comportamiento extraño “pseudoaleatoriamente”. Al habilitar la depuración, el error desaparece. ¿Cuál puede ser una causa?
  • ¿Cuándo es más adecuada la búsqueda n que la búsqueda binaria?
  • ¿Cuál es la importancia de los algoritmos de tiempo constante? (Tiempo no limitado delimitado).
  • Una función tiene una complejidad cylcomatic de 8. ¿Suena bien? Qué significa ?
  • Cite varios métodos para hacer que el código sea fácilmente comprobable.
  • Algunos lenguajes tienen propiedades dinámicas y métodos mágicos. ¿Por qué uno no debería abusar de ellos?
  • ¿Por qué no indexamos todas las columnas en una tabla?
  • Cuando un índice de mapa de bits es más adecuado que BTree o hash?
  • ¿Por qué es “scrypt” más adecuado que “md5” en el hashing de contraseñas?
  • Explique cómo verificaría una contraseña en una lista de contraseñas pre-hash con sales únicas.
  • Lo que es perfecto tiene función; Implemente hashing perfecto para enteros.
  • Algunos servidores utilizan bifurcación de otros un bucle par. ¿Cuáles son las ventajas de cada uno?
  • ¿Qué tiene de malo el siguiente código teniendo en cuenta que mysql_real_escape_string no tiene errores (consulte la documentación)? :

$ id = mysql_real_escape_string ($ _ GET [‘id’]);
mysql_query ($ h, “SELECCIONAR * DE usuarios DONDE id = $ id”;

  • ¿Qué verbos HTTP se usan en JSON-RPC?
  • ¿Qué es el jabón?

Notas:

Algunas preguntas difíciles se cargan a propósito e incluso engañan la forma en que están escritas. Obviamente no espero la misma respuesta de un desarrollador full stack junior y senior.

Esta es una pregunta espuria, porque cada pila es diferente.

Dando un paso atrás y arriba en abstracción … TL; DR: no son las herramientas; es la topología de la pila, la que uno elige (en términos de geo-seguridad, el “paisaje” que se está ocupando). Todo “ingeniero de software de pila completa” debe considerar lo siguiente, y varios marcos de pila pueden ayudar a reducir la complejidad de estos:

  • Infraestructura – maquinaria : uno debe saber cómo implementar el software en el metal desnudo; y luego en una nube pública específica de PaaS o del proveedor; y luego en una nube agnóstica de proveedor; Es bastante importante tener una idea de lo que hacen los sistemas operativos de electrónica y software bajo el capó, para que uno pueda hacer conjeturas informadas durante el diseño y la depuración.
  • Infraestructura: comunicación : la mayoría de nosotros usamos HTTP en estos días; si uno lo hace, uno realmente debería saber cómo funciona, de principio a fin, lo que significa tener al menos un conocimiento superficial de los otros protocolos de los que depende una transmisión HTTP. Si uno envía algún mensaje desde el punto A al punto B, uno realmente debería saber lo que sucede en el medio … es la plomería. Eso va muy bien en …
  • Seguridad : ¿Se ha encuestado / estudiado toda la superficie de ataque de la infraestructura y la aplicación? ¿Se sabe lo que significa hacer esto en la práctica? Si esto nunca se ha cruzado por la mente, uno puede comenzar analizando la superficie de ataque de una comunicación de correo postal entre dos personas, para entender lo que esto implica.
  • Aplicación – jerarquía de memoria : varias partes de la aplicación deben adaptarse a diferentes demandas de espacio-tiempo. Las bases de datos deben almacenar grandes cantidades de información y pueden acceder a ellas a una velocidad más lenta. Los datos en variables temporales pueden ser pequeños, pero se debe acceder a ellos extremadamente rápido. Varios temas en informática abordan esta preocupación fundamental del arte de construir software. Esto se actualiza en decisiones tales como: si usar un RDBMS o un almacén de documentos, en qué infraestructura seleccionar, en la escritura de algoritmos específicos del idioma y en la construcción de cachés.
  • Aplicación – control de acceso : TL; DR – el negocio de asegurarse de que las cosas sean legibles y escribibles solo por los agentes adecuados (máquinas / humanos). Lo que cuenta como “apropiado”, sin embargo, depende de …
  • Aplicación – lógica empresarial : la habilidad relevante para el desarrollador aquí es el “análisis de requisitos”. Uno debe estar lo suficientemente familiarizado con el propietario / gerente del producto para comprender las razones económicas (comerciales / sociales) que motivan el desarrollo de la aplicación. La capacidad del desarrollador para seleccionar los patrones de diseño que se ajusten a esos motivos es más o menos lo que aborda el tema más amplio de la arquitectura de software (ágil o no).
  • Aplicación – lógica de negocios – adquisición de usuarios : este es un subconjunto especial. En el caso del software desarrollado para usuarios “no preparados”, se debe realizar un trabajo no trivial para “adquirir usuarios” para el software.

    El diseño de software desempeña un papel fundamental en esta función empresarial. El software se puede personalizar para satisfacer las demandas de varios embudos de adquisición de usuarios. El desarrollador de dicho software debe intentar comprender completamente los eventos de “adquisición”, “conversión” y “retención” para el caso comercial dado. En algún momento, esto implica estudiar sistemas que no sean máquinas, como culturas locales particulares o el propio cuerpo humano, en cuyo caso la siguiente sección es particularmente relevante …

  • Aplicación – presentación : el campo de estudio relevante aquí es la interacción hombre-computadora. Cada acción y reacción entre el usuario final de un sistema de software ocurre de manera sistemática (aleatoriamente, pero se puede modelar como “sistemáticamente aleatoria”). Cada sistema de software interactúa con sus usuarios finales a través de medios, como SMS, pantallas táctiles, teclados, computadoras portátiles y computadoras de escritorio.

    En esta etapa, el desarrollador debe intentar comprender completamente los límites del medio de máquina relevante: por ejemplo, cómo se registran los eventos de la pantalla táctil, en qué circunstancias es más útil el SMS que HTTP, y qué se puede y no se puede hacer en un navegador web.

    Por el contrario, el desarrollador debe intentar mantener una apreciación del cuerpo humano y su cultura local como el medio “en el otro extremo” de la comunicación. Uno debería considerar los siguientes ejemplos. ¿Cómo sostienen las personas sus pantallas táctiles? ¿Cuál es el proceso de pensamiento de alguien que reacciona a un sonido que puede o no ser un teléfono que suena? ¿Cómo se reconoce el color por el ojo? ¿Cuándo es probable que un segmento de audiencia específico se sienta emocionalmente desinhibido al ver contenido en particular, en una pantalla en particular?

  • (Actualización 🙂 Automatización del flujo de trabajo : otros han escrito extensamente sobre lo que los desarrolladores y operadores de software deberían hacer para obtener eficiencias de escala: pruebas automatizadas, marcos de desarrollo impulsados ​​por el comportamiento, tuberías de entrega continua, monitoreo, respaldo y recuperación automatizados, escalado elástico, etc. I Minimizaremos los comentarios al respecto, ya que no se enfoca en el aspecto de “pila completa” de la pregunta.

Cómo convertirse en un desarrollador web Full Stack: ¿la guía detallada?

Las empresas de nueva creación y de reciente creación suelen tener presupuestos limitados. Incluso las grandes empresas están encontrando formas y medios para reducir sus costos para sobrevivir a la competencia feroz en el mercado. En tal escenario, la capacidad de hacer un trabajo por un solo individuo en lugar de tres puede ser nada menos que un dios envió un regalo. Un desarrollador de pila completa es una persona que puede manejar aspectos de front-end, back-end y bases de datos de un proyecto de desarrollo web. Por lo tanto, en lugar de contratar a un experto en front-end, un desarrollador de back-end y un especialista en bases de datos, las empresas exigen cada vez más un desarrollador de stack completo que sea un experto en todos los oficios.

Esta respuesta se publica en ¿Cuáles son los buenos blogs a seguir para un desarrollador de pila completa?

Si te conviertes en un desarrollador full stack, tendrás amplias oportunidades de trabajo esperándote con las manos abiertas. Su conjunto de habilidades le dará una ventaja para obtener un salario más alto que otros desarrolladores.

Desarrollador Full Stack Vs Ingeniero de Software:

Entonces, si usted es un ingeniero de software listo para actualizar sus habilidades y asumir el desafío, primero veamos cuál es la principal diferencia entre un ingeniero de software y un desarrollador de pila web completa . ¿Qué es lo que necesita saber para destacarse del resto?

Un desarrollador web full stack es alguien que tiene conocimientos tanto de front-end como de backend. Están bien versados ​​en los lenguajes de programación necesarios para el desarrollo del lado del cliente. Saben cómo reescribir aplicaciones finales y API que impulsan el sitio web. Pueden trabajar con bases de datos, sistemas operativos y también pueden manejar actividades de gestión de proyectos. Básicamente, se sienten cómodos trabajando en todos los niveles de desarrollo de aplicaciones.

Un ingeniero de software : por otro lado, es un programador de computadoras que desarrolla aplicaciones de software que se ejecutan en una computadora. Escriben el código usando un lenguaje de programación y lo prueban rigurosamente para asegurarse de que el software se ejecute sin errores y logre el objetivo deseado. Son especialistas en un solo nivel del desarrollo de aplicaciones.

Si es ingeniero de software, debe haber realizado algunos cursos de desarrollo para ampliar su conjunto de habilidades. Veamos cómo un curso de desarrollo web full stack difiere de otros cursos de desarrollo.

La mayoría de los cursos de desarrollo se centran en una capa particular de desarrollo de aplicaciones. Algunos se centran en el desarrollo front-end. En estos cursos, uno aprende idiomas como HTML y CSS que tratan con el aspecto frontal del sitio web que el usuario ve y experimenta. Esto permite al desarrollador crear contenido atractivo que proporciona una experiencia de usuario impresionante. Algunos otros cursos tratan los aspectos de back-end del servidor, la aplicación y la base de datos. Por el contrario, un curso completo de desarrollo web ofrece un paquete completo de conocimientos de front-end, back-end y bases de datos. Estos cursos preparan a los alumnos para trabajar de manera cruzada funcionalmente en la pila completa de tecnología.

Guía de desarrollo web Full Stack:

Sigue esta guía y dale alas a tu sueño de convertirte en un desarrollador full stack.

Hay algunas tecnologías esenciales que debes aprender para llamarte un desarrollador de pila completa. Aquí hay una guía rápida de las tecnologías que debe aprender.

HTML y CSS

Para comenzar su carrera en desarrollo web debe tener los conocimientos fundamentales de HTML y CSS. Son los componentes básicos de la web que le permiten agregar contenido y estilos a sus páginas web. Así que comience su viaje de convertirse en un desarrollador de pila completa al obtener una comprensión sólida de estos conceptos front-end.

JavaScript-

El hecho de que JavaScript se pueda usar tanto en el desarrollo front-end como en el back-end lo hace muy popular. Es una de las tecnologías más populares del mercado donde tienen lugar continuas innovaciones. Con nuevas herramientas y marcos que se lanzan cada año, uno necesita un conocimiento sólido en esta área. El conocimiento de los marcos JS como AngularJS y ReactJS ayudaría a escribir códigos largos con facilidad. Una sólida comprensión de jQuery sería una ventaja adicional.

Conviértase en experto en desarrollo web front-end con los mejores cursos de diseño web en Hyderabad, India.

Lenguajes de programación backend

Después de ganar un fuerte punto de apoyo en la arena de front-end, luego vienen los lenguajes de back-end como Ruby, Python, PHP, etc.que manejan la lógica de la aplicación, la autenticación del usuario y las operaciones de datos. Comience con un idioma que sea más fácil de aprender. Independientemente del idioma que elija, solo asegúrese de ser minucioso con sus matices. Puede aprender NodeJS que se basa en JavaScript que ya habría aprendido antes de llegar a este punto.

Base de datos y almacenamiento web

Para diseñar y desarrollar sitios web dinámicos, uno seguramente debe saber cómo los sitios web basados ​​en bases de datos almacenan y acceden a los datos. Conozca los beneficios del sistema de gestión de bases de datos relacionales como SQL. Comprenda cómo conectar un lenguaje de fondo con una base de datos. Obtenga conocimiento sobre el almacenamiento web para que sepa cómo almacenar cookies, sesiones y datos en caché en el navegador.

Lea más sobre cómo convertirse en desarrollador de pila completa junto con tutoriales

Nota: Esto comenzó a ser un poco largo, por lo que TL; DR , salte a la última sección donde contesto la pregunta directamente.

Cuando escucho la pila completa, pienso en la pila original: LAMP – Linux, servidor web Apache, MySQL y PHP. Esta fue LA pila de facto no hace mucho tiempo, pero luego llegó Nginx para sacar un trozo de Apache, Oracle compró MySQL que asustó a todos a usar otras bases de datos como PostreSQL, y Ruby on Rails, Node.js, etc., se hicieron cargo PHP Linux es lo único que aún queda en pie, pero también es la parte de la pila que necesita saber menos hoy en día (más sobre eso más adelante).

The Old Stack (de abajo hacia arriba)

  • Marco de aplicaciones web / Servidor / Idioma
  • Base de datos
  • Servidor web
  • Sistema operativo

Y tenías que saber cada capa en la pila.

Hoy, uno de los propósitos de las capas ha cambiado un poco, se ha agregado una capa adicional y las capas en las que un desarrollador debe enfocarse en la pila han cambiado un par de muescas. App Framework está cambiando a la capa API. La capa adicional es la aplicación del lado del cliente, que solía ser parte del marco de la aplicación, ahora se está convirtiendo en algo propio que habla con la API. Y el enfoque debe estar en la capa de la base de datos y en adelante, ya que el sistema operativo y el servidor web ya no requieren mucho pensamiento. Aquí está la nueva pila:

The New Stack (de abajo hacia arriba)

  • Clientela)
  • Capa API
  • Base de datos
  • Servidor web – desenfoque
  • Sistema operativo – desenfoque

La base de datos
No entraré en la capa de base de datos, ya que hay un montón de excelentes opciones y las opciones son bastante conocidas. Esto no ha cambiado mucho desde que han aparecido otras versiones de db más nuevas como NoSQL (Mongo, Cassandra) e incluso algunas alojadas como DynamoDB. El mejor ajuste dependerá de su proyecto.

La capa API
Aquí es donde las cosas realmente han cambiado y hubo algunas cosas que provocaron este cambio: el increíble poder de JavaScript en el front-end (Gmail, por ejemplo), el crecimiento de las API y los teléfonos inteligentes.

Una vez que salieron los teléfonos inteligentes, tuvo que crear API que coincidieran con las funciones de su aplicación web para que sus aplicaciones Android e iOS pudieran comunicarse con su aplicación. Entonces, ¿por qué no hacer lo mismo con su aplicación web? Esta es la razón por la que salen nuevos marcos de aplicaciones del lado del cliente como React (Facebook) y Polymer (Google). Estos marcos son 100% del lado del cliente y hablan con las API para obtener datos. Entonces, en lugar de crear una aplicación web en PHP, Ruby on Rails o lo que sea que haya usado hace un par de años, y luego crear una API para que los teléfonos hablen, simplemente construye la API y eso es todo lo que se ejecuta en sus servidores. La mejor parte de esto es que mantiene el lado del servidor agradable y simple y puede usar tecnología rápida y eficiente para hacer la API, en lugar de grandes marcos hinchados como Rails. Si usa Ruby, puede usar algo simple como Sinatra que es perfecto para construir API. O mejor aún, use un lenguaje más rápido como Go (golang) ya que no necesita todos los ayudantes que brindan los grandes marcos para generar vistas.

Los clientes)
El trabajo pesado se ha trasladado al cliente. Regresamos a un mundo de clientes gordos que es bueno y malo. Lo bueno es que el lado del servidor es mucho más simple y construir una API primero hace que sea más fácil construir otras cosas encima. La mala noticia es que los clientes son mucho más complicados y, para empeorar las cosas, probablemente tendrá que construir tres de ellos. Uno para el navegador, uno para Android y otro para iOS. No es divertido, pero espero que esto cambie con los nuevos marcos web del lado del cliente y cosas como los componentes web.

Ok, ahora volviendo a responder la pregunta:

¿Qué debe saber un desarrollador fullstack en 2015?

  1. Al menos una buena base de datos: (consejo: facilítese el uso y use uno alojado para evitar tener que hacer las operaciones / gestión de la misma, esa es la parte más difícil de una base de datos (Heroku Postgres, Mongolab, DynamoDB, Google Cloud Datastore) )
  2. Sepa cómo construir API REST – acepte JSON y escupe JSON – (consejo: dado que no necesita un marco completo aquí, use algo rápido como The Go Programming Language para que no necesite portarlo a algo más rápido más tarde)
  3. Sepa cómo construir un cliente (s) – (consejo: si tiene que elegir uno, elija una de las nuevas tecnologías web que se ve bien en el escritorio, tabletas y teléfonos, como Polymer Project, que es una implementación de componentes web. nada peor que solo admitir un teléfono).
  4. Todo desarrollador debe saber HTML / JavaScript, esos son los dos que simplemente no puede evitar, los usará de una forma u otra en algún momento.

La pregunta es ¿qué debe saber un desarrollador de pila completa en 2015? Primero, definamos el desarrollador de pila completa. Las aplicaciones de software web, móviles o de otro tipo generalmente tratan datos. Esos datos a menudo se almacenan en algún lugar a través del código que los captura, los muestra y, a veces, los cambia.

Un equipo de desarrolladores de software puede tener una persona asignada para ocuparse de los datos. Otra persona trabaja con el código de servicios que es el puente entre el almacenamiento de datos y los procesos que necesitan esos datos. La creación de la captura de entrada y la experiencia del usuario puede recaer en otro desarrollador que construya pantallas web, de escritorio o móviles.

Una persona puede especializarse en cualquiera de estas áreas. Un desarrollador de pila completa puede hacerlos todos para crear la solución de atrás hacia adelante. ¿Qué debe saber un desarrollador de pila completa en 2015?

Un desarrollador de pila completa debe ser un experto en aprender cosas nuevas. No es un maestro en una tecnología determinada, pero es lo suficientemente flexible como para poner en práctica los aspectos esenciales de una tecnología. Esa es la primera habilidad.

Debe ser un diseñador. Quizás no en el sentido artístico, pero capaz de ver el panorama general. Deben ser capaces de crear un modelo mental del negocio y la tecnología que se ajuste a un proceso comercial. UML, diseño orientado a objetos y arquitecturas de componentes son cosas buenas para saber.

El principal atributo técnico de un desarrollador de pila completa es que tienen un producto mínimo viable orientado a cómo crean soluciones. Esto es vital para obtener los primeros productos de lanzamiento y establecer una línea de base para el desarrollo futuro. Al escribir código, saben cómo y cuándo ser frugales en el código que escriben.

Idiomas

La elección del lenguaje de programación depende de lo que planeas hacer en tu carrera o proyectos privados. Algunos lenguajes de programación han ido y venido en relevancia profesional en la última década y la anterior. Más caerá en las próximas décadas. Otros se han mantenido estables durante ese tiempo.

Desarrolladores de sitios de Internet

JavaScript es la base para el desarrollo del lado del cliente. Cualquiera de Java, PHP y Go serán pilares en el desarrollo del lado del servidor. Dependiendo de cómo Google ferias con sus ofertas en la nube, Go puede convertirse en el idioma dominante del lado del servidor. Te servirá saber SQL hoy, incluso cuando el acceso a los datos comience a evolucionar hacia la consulta de datos con formato JSON.

Desarrolladores móviles

Tanto Android como iOS se mantendrán con éxito por algún tiempo. Puede Swift para iOS y Java para Android o puede aprender C ++ y Qt para ambos. Existe demanda para cualquiera de estas opciones.

Desarrolladores de escritorio

Muchas organizaciones aún querrán experiencias de escritorio de primera clase. Si bien C # .NET es una opción para el software interno que puede ejecutar multiplataforma (GTK # y Mono Windows Forms), muchas soluciones de alto nivel seguirán pidiendo algo más. En ese caso, se beneficiará más aprendiendo C ++ y Qt a menos que tenga un caso para soluciones específicas de plataforma que requerirán alguna forma de C ++ o Java.

Desarrolladores Full Stack

Dadas estas descripciones de roles generales, puede comenzar con cualquiera de estos idiomas. PHP, Java, JavaScript, Go y C ++ tienen una sintaxis basada en un lenguaje ancestral común, C. Un desarrollador de pila completa se beneficiará al conocer un puñado de lenguajes como base para el crecimiento futuro. Con más conocimiento, será más fácil adquirir nuevas herramientas necesarias para un proyecto.

JavaScript continuará dominando en el futuro previsible

Si supiera lo que sé ahora y estuviera aprendiendo a codificar desde cero hoy, esto es lo que aprendería:

  1. HTML: la estructura de las páginas web
  2. CSS: el estilo visual de las páginas web
  3. Bootstrap: una herramienta de “diseño receptivo” que ayuda a que sus sitios web se vean bien en tabletas y teléfonos
  4. jQuery / Ajax: una herramienta fácil para controlar el contenido en el navegador
  5. Chrome DevTools: una herramienta para comprender y depurar sitios web, directamente en su navegador
  6. JavaScript: el único lenguaje de programación que utilizan todos los navegadores web
  7. Algoritmos comunes: recetas paso a paso para hacer las cosas
  8. Ágil: un conjunto de principios de desarrollo de software que centran el diseño y la producción de un proyecto en las necesidades de sus usuarios.
  9. Git: un sistema de control de versiones para guardar y compartir sus proyectos
  10. Ya sea una base de datos relacional popular como PostgreSQL o una base de datos no relacional popular como MongoDB
  11. Node.js: una plataforma basada en eventos para crear servidores web y aplicaciones de red escalables.
  12. Express.js: un potente marco de desarrollo web
  13. Chai.js o Jasmin.js para probar
  14. Angular.js o React.js son agradables, aunque te sorprendería lo mucho que puedes lograr con jQuery.

Hay muchos recursos gratuitos para aprender todas estas tecnologías, incluido Free Code Camp. ¡Buena suerte!

Actualización 9 de abril de 2015:

La encuesta para desarrolladores de Stack Overflow 2015 acaba de salir. De 26,000 desarrolladores, 30% se autoidentificaron como desarrolladores full stack. Estas son las tecnologías que utilizaron los encuestados:

Un desarrollador fullstack debería saber cómo aprender cosas nuevas rápidamente, porque es poco probable que lo que sepas hoy se use mañana.

¿Aprendiste node.js? Estás siendo transferido a un equipo que está trabajando en un proyecto de Python.

¿Disfrutaste tus 4 meses trabajando en ese proyecto de Python? Hay una aplicación de rieles en la que necesitamos ayuda.

Las habilidades blandas son primordiales.

Tenga una idea general sobre las herramientas disponibles y los problemas que resuelven para saber cuándo reconocer situaciones problemáticas en las que una herramienta puede ayudar.

Tenga una idea general de la arquitectura y el uso de lenguajes y herramientas y, en general, cómo funcionan en la práctica, para que pueda establecer paralelos rápidamente cuando necesite aprender otros nuevos. Mire las descripciones generales de los distintos idiomas y herramientas para ver qué hacen de manera diferente. Siéntase libre de aprender en profundidad, pero tenga en cuenta que nunca podrá saber cuándo el que no ha aprendido será el que necesita saber. Si ya tienes una idea básica de cómo funciona, puedes retomarla mucho más rápido.

Aprenda a encontrar el 20% de la información que necesita saber para ser productivo y luego, en su tiempo libre, aprenda los detalles para ser eficiente.

Lo más importante, saber cómo escribir código legible. No existe un lenguaje o herramienta que haga esto por usted.

Después de leer las respuestas, me sorprendió mucho que ninguno de ellos mencionara lo siguiente:

  1. Creación de servicios REST y diseño de API.
  2. Pruebas automatizadas de aceptación de UI utilizando bibliotecas como Cucumber y Selenium. Otras herramientas para mejorar las pruebas, como jayway / rest-sure y junit-team / junit
  3. Conocer la diferencia entre las plantillas del lado del cliente y del servidor y sus pros / contras.
  4. Ser competente con un tipo de entorno * nix ya que la mayoría de los servidores se ejecutan en Linux. Debe sentirse cómodo con las tareas de administración de archivos / discos en general, curp, grep (o ack), tail, vim, scp y general.
  5. Diagnóstico de problemas en cualquier nivel (Cliente, HTTP / Red, Servidor, Base de datos, SO)
  6. Comprenda cómo escribir código limpio y modular incluso con su CSS (Arquitectura escalable y modular para CSS)

Editar: ¡Debe leer la Guía del autoestopista para herramientas modernas de JavaScript !

React y React Native definitivamente están cobrando impulso este año ( un nuevo cliente web, reconstruido desde cero ).

Como otros han mencionado, definitivamente deberías elegir JavaScript y también recomendaría Java . Deberías sentirte cómodo con Git y la terminal. Debe comprender el proceso de desarrollo completo (desde la recopilación de requisitos hasta la producción).

Debería ser excelente escribiendo Vanilla JS y entendiendo los fundamentos y cómo funcionan los navegadores. Esto facilitará la recolección de cualquier biblioteca JS nueva / moderna que satisfaga sus necesidades / requisitos.

No mucho ha cambiado realmente desde 2014. Sepa lo que alguien le pagaría realmente bien para desarrollar en 🙂

Mi lista sería la siguiente:

Backend:
Nodo, js / IO.js, C #, Ruby on Rails, Java: cualquiera de estos es una buena opción, sugeriría elegir 2, mi elección Node.js & C # (aunque estoy decidiendo recoger Ruby on Rails este año)

Interfaz:
CSS3 / HTML5 / Javascript (obvoius), Sass & Less, jQuery (todavía grande), Angular (hoy en día imprescindible), Bootstrap o Foundation o ambos.

Base de datos:
Algo SQL (todavía imprescindible al menos en forma básica), Almacenes de documentos, Almacenes de valores clave. No necesariamente importa cuáles, la mayoría de las API son muy similares, pero más importante es que sepa cómo funcionan y cuándo / por qué usarlas.
También diría un sistema distribuido, ya sea Hadoop, Elastic Search o algo similar.

Nube:
Trabaje en al menos una plataforma en la nube, si no en los 3 grandes y algunos PaaS

General:
Conozca al menos Git básico (pull / push, commit, etc.). Conozca 1 o 2 patrones ágiles. Conozca la diferencia entre funcional y orientado a objetos. Conozca al menos en un nivel básico cómo hacer programación paralela y cuáles son las fallas

Índice TIOBE de los últimos años
Dic dic delta
2011 2010 Language Rating Dic 2010
1 1 Java 17.561% -0.44%
2 2 C 17.057% + 0.98%
3 3 C ++ 8.252% -0.76%
4 5 C # 8.205% + 1.52%
5 8 Objetivo-C 6.805% + 3.56%
6 4 PHP 6.001% -1.51%
7 7 (Visual) Básico 4.757% -0.36%
8 6 Python 3.492% -2.99%
9 9 Perl 2.472% + 0.14%
10 12 JavaScript 2.199% + 0.69%
11 11 Rubí 1.494% -0.29%

con los últimos dos años
Oct Oct Delta
2014 2013 Clasificación del idioma Oct 2013
1 1 C 17.655% + 0.41%
2 2 Java 13.506% -2.60%
3 3 Objetivo-C 10.096% + 1.10%
4 4 C ++ 4.868% -3.80%
5 6 C # 4.748% -0.97%
6 7 Básico 3.507% -1.31%
7 5 PHP 2.942% -3.15%
8 8 Python 2.333% -0.77%
9 12 Perl 2.116% + 0.51%
12 10 JavaScript 1.771% -0.27%
16 13 Rubí 1.128% -0.12%
17 81 Dart 1.119% + 1.03%

simplemente no vaya con la sensación de los desarrolladores web, Perl / Shell / C / C ++, etc. se usaron en una gran cantidad en el pasado y no es tan fácil reemplazar los sistemas existentes. Por el contrario, Delta está aumentando para Perl y C, mientras que es negativo para JAVA y javascript

Según TIOBE, perl / C está funcionando bien, por lo que no diría que sus conceptos básicos están en peligro. En el futuro, cada idioma enfrentará problemas por su existencia y estos idiomas ya están en el “vivirlo” en el futuro.

Idiomas y marcos:

  • JavaScript / jQuery
  • HTML5 / CSS3 / MENOS
  • Node.js
  • AngularJS / Meteor
  • Ruby / Rails
  • Pitón

Pruebas:

  • Transportador
  • Mocha / Chai
  • PhantomJS / CasperJS
  • Jazmín
  • Pepino / RSpec

Bases de datos y almacenamiento en caché:

  • MongoDB
  • Cassandra
  • Redis
  • ElasticSearch
  • PostgreSQL

Infraestructura y red:

  • Linux
  • Conmutación y enrutamiento
  • IPv4 / TCP / UDP / HTTP
  • SSL / TLS
  • Scripting de shell
  • Rastrillo / Gruñido / Trago
  • Cómo configurar un entorno de CI
  • GitHub
  • Amazon AWS, S3, RDS, BeansTalk, SNS / SES, etc.
  • Marioneta / Chef / Ansible
  • Estibador
  • HAProxy / nginx

Para el desarrollo completo de la pila, debe comprender:

  • Sistemas de alojamiento (la computadora; el sistema operativo; y servicios de soporte como DNS, SSH, correo electrónico y Apache)
  • Pila de aplicaciones (servidor web como Apache o IIS; base de datos relacional como Oracle, MySQL y PostgreSQL; y lenguajes web dinámicos del lado del servidor como Python, PHP, NodeJS y Ruby)
  • Aplicaciones web (framework de controlador de vista de modelo como Agavi, Django y Turbine; modelado relacional de objetos como Propel, SQL Alchemy y Torque; y modelos, vistas, lógica de aplicación y desarrollo front-end que incluyen audio, video, HTML, CSS y JavaScript)

En los últimos años, la pila completa se ha vuelto “más completa”. En tiempos más simples, una pila era bastante sencilla y consistía en LAMP (Linux, Apache, MySQL y PHP) o MEAN (MongoDB, ExpressJS, AngularJS y NodeJS) .

Pero con el advenimiento de las herramientas, los servicios en la nube, el diseño, los datos y las redes, los desarrolladores completos ahora tienen que lidiar con un juego de pelota completamente nuevo.

Un desarrollador de stack completo cuya habilidad radica en el front-end tiene que escribir un código consistente y mantenible que se traduzca en una experiencia de usuario sin problemas, libre de monstruos y clics innecesarios. Además de las capacidades de secuencias de comandos, un desarrollador de pila completa que también puede jugar con la tipografía, el color y el diseño, es un recurso codiciado.

Se espera que los desarrolladores de full stack puedan crear, consultar y manipular bases de datos con facilidad. Hay varios para elegir, que van desde SQLite a MongoDB a Oracle. El que aprender dependerá del proyecto en el que esté trabajando. Una base de datos alojada le ahorrará al desarrollador de pila completa el tiempo y el esfuerzo que conlleva administrarlo. Los grandes proyectos tienen administradores de bases de datos dedicados.

Será genial si conoce algunos marcos, PHP específicos, como Zend y Symfony o Django para Python, o Ruby on Rails para Ruby; software de control de versiones como SVN o GIT; y Linux

Los desarrolladores de full stack deben conocer la dinámica empresarial en la que trabajan. Esto significa que una comprensión profunda de las necesidades del cliente debe ser la fuerza perpetua detrás del diseño del producto.

Puede leer más información al respecto en Por qué contratar un desarrollador de pila completa y cuánto cuesta

Full stack si no eres freelance significa que debes poder concentrarte en 3 cosas:

  • Aplicación FrontEnd: ya sea IOS o aplicaciones de Android o la web. En la web, los marcos mvc / databinding más populares son angular, knockout y ember.
  • API Endpoint: al menos esté familiarizado con un marco para la API de descanso. Las opciones populares son express.js o sail.js en la familia de nodos, frasco en python (o pirámide) y la API web oficial del sitio ASP.NET de Microsoft (odio esos enlaces automáticos de quora).
  • Almacenamiento de datos: sepa cómo consultar al menos en la base de datos nosql y una base de datos sql. También recomiendo aprender realmente bien un sistema de caché.

Si eres un profesional independiente, entonces necesitas saber algunas cosas más:

  • Supervisión del servidor
  • Operación de implementación y configuración de compilación
  • Todos los aspectos comerciales del trabajo independiente
  • Ser competente en el dibujo de interfaces de usuario

No tienes que ser experto en ninguna de estas cosas. Pero debes saber lo suficiente para hacer piezas de trabajo.

Interfaz:

  1. HTML
  2. JS
  3. CSS
  4. ventaja si lo sabe (Scss / less, Jquery, jquery UI, Responsive css)

BackEnd:

  1. Python / Java / Ruby
  2. Django / Flask / Hibernate / SqlAlchemy /

Bases de datos:

  1. Mysql
  2. Mongo

Servicio web:

  1. Escribir web con java / python
  2. Rest API access
  3. Json
  4. Mecanismo de autenticación de API

Cosas que saber:

  1. Patrones de diseño
  2. Convenciones de codificación como pep8
  3. Crear un programa modular con bibliotecas compartidas
  4. Documentación de código
  5. Monitoreo del uso / error / datos de la aplicación

Hay toneladas más. Una cosa a tener en cuenta: aprender todo esto no es como lo académico, donde estudias todo esto y luego te pones a prueba.
Es más como construir aplicaciones simples / crudas primero. Luego agregue piezas, como el monitoreo. Luego, aprender y escribir código modular, agregar bibliotecas compartidas, etc.

Desafortunadamente, la pregunta toca dos temas separados pero muy a menudo combinados: ingeniería de software además del conocimiento de lenguajes específicos.

Agregaré mi voto por SQL, en lo que respecta a los idiomas. No habla de ello en las fiestas correctas, no etiqueta sus proyectos con él, y generalmente trata de evitar escribir ninguno hasta el punto de reinventar la rueda rehaciendo los conceptos de SQL de una manera no relacional, aparentemente solo para evite tratar con la palabra r.

Eso es para los idiomas. En cuanto a la pila, es todo, desde el dominio de su negocio hasta qué países o ciudades sucederán en su “pila” este año. En el medio está el metal. Si no le gustan las computadoras como entidades físicas, o no comprende los protocolos de red, no comprende su pila. Ya se ha mencionado la atención al diseño, organización y proceso. Si no le gustan esos, es decir, si le disgusta activamente cualquier parte del negocio, su sueño completo está fuera de su alcance.

No digo que debas poder hacer todo, desde soldar tu propio hierro, desde piezas de chatarra hasta llevar a los clientes a clubes de striptease. Es más como poder realizar análisis L1 a 3 y soporte para cada parte de su pila. Fuera de los ejemplos triviales de LAMP, es probable que no pueda arreglar muchas cosas usted mismo, pero debe saber dónde encajan y quién se especializa en ellas.

Que ser un FSD es una jerga para el gato mal pagado de todos los oficios y maestro de ninguno.

Asumes toda la responsabilidad sobre ti mismo y por un tiempo sientes que eres una superestrella y la columna vertebral de la startup / empresa para la que trabajas, y también podrías ser … Y entiendo el atractivo en eso.

Pero el estrés, la presión para cumplir (en todos los frentes) y ser dueño de cada punto de falla en la pila eventualmente te afectará.

Cuídate. El mejor idioma que puedes aprender en 2015, 2016 y en cualquier año futuro es el de tu cuerpo. No trabajes demasiado. Y evite compensar en exceso su estrés físico con emoción intelectual. Estado allí, hecho eso, escapó por poco de la depresión mórbida.

Me sorprende que nadie haya mencionado Machine Learning (ML) como un área que un ingeniero de pila completa debería conocer. Por lo tanto, me gustaría agregar ML al resto de las contribuciones a esta pregunta.

ML juega un papel importante en muchos productos y algunos de ellos no serían lo mismo sin él. Por ejemplo, Quora usa ML en varios sistemas como explica Xavier Amatriain aquí ¿Cómo usa Quora el aprendizaje automático en 2015?

Estas son algunas de las herramientas comunes utilizadas en los sistemas ML:

  • Scikit-learn
  • Python / C ++
  • Pandas
  • NumPy
  • Ciencia
  • PyTables
  • HDFS
  • Matplotlib
  • MongoDB / MySQL

También me refiero a este artículo sobre el desarrollo completo de la pila. El ascenso y la caída del desarrollador Full Stack.

En mi opinión, depende de su entorno de desarrollo. Si eres un chico de Linux Enviro, se supone que no debes saber cómo funciona Entitiy Framework [1]. (de todos modos, es bueno saber que el framework de entidades es una herramienta ORM para .net)

Los desarrolladores de full stack no solo están destinados a conocer tanto el desarrollo front-end como el back-end junto con un montón de cosas. En realidad, se supone que tienen conocimientos sobre temas (por ejemplo: lenguajes de programación) que proporcionan un enfoque correcto a un problema, incluso él o ella no conocen el tema en sí.

Por ejemplo, suponga que tiene una aplicación empresarial que atiende a un número promedio de usuarios por día. Y sus servidores de aplicaciones pueden manejar dicha carga. Después de un tiempo, a medida que nuevos usuarios agregaron a su aplicación, sus servidores comenzaron a volverse lentos. En este punto, un desarrollador de pila completa debería poder identificar el cuello de botella y proponer una estrategia de escala para la aplicación. (si es necesario) Y estas habilidades requieren tener un conocimiento teórico de algunos equilibrios de carga y redes.

Otro escenario de ejemplo, supongamos que tenemos una aplicación construida en un marco PHP pesado. Y podemos manejar la carga para el panel de control del usuario y el sitio web público. Sin embargo, estamos atendiendo muchas solicitudes a través de nuestra API. Para cada solicitud de API, estamos cargando múltiples números de componentes de marco pesado para crear una respuesta. Dedicamos muchos ciclos de CPU a cada solicitud de API que ralentiza otros componentes en el servidor. En un escenario como este, una solución ideal sería separar la parte API de la aplicación en una instancia de nodejs. Por ejemplo, un desarrollador de pila completa debe saber que puede resolver el problema separando la API de una instancia de nodejs, incluso si no sabe cómo codificar nodejs.

Además de estas explicaciones, permítanme decir mi opinión sobre lo que debe saber un desarrollador de pila completa en 2016.

  • Los desarrolladores de stack completo están destinados a ser contratados principalmente por startups. Como mencioné anteriormente, un desarrollador de pila completa debería saber cómo escalar una aplicación web. Al menos de manera teórica.
  • Habilidades de administración de Linux . Sin excepciones.
  • Sólidos conocimientos de redes y servidores web.
  • Javascript Espacios de nombres, devoluciones de llamada y cierres.
  • jQuery fuera de pista. Y conceptos básicos para ReactJS y AngularJS
  • D ocumento Objeto M odel conocimiento.
  • Gestores de paquetes para la web. Compositor | Bower | NPM etc.
  • CSS y HTML seguro.
  • Procesadores CSS y JS.
  • Muy buen conocimiento para al menos un marco principal para el idioma principal de elección.
  • Experiencia en almacenamientos de datos en memoria.
  • Habilidad para trabajar con varias API.

Notas al pie

[1] Marco de la entidad

En primer lugar, para ser un desarrollador fullstack necesitamos un conocimiento básico de tipos de aplicaciones como

  1. Aplicación web
  2. Aplicación de escritorio

Ahora, cuando pensamos en un desarrollador web, también deberíamos saber sobre los idiomas a continuación

  1. HTML
  2. Css
  3. Codificación de backend
  4. Base de datos
  5. JavaScript

Arriba están los requisitos básicos ahora, hablemos de la plataforma que necesitamos, luego, en caso de que pertenezca a la plataforma Java, me gustaría sugerir

  1. Node.js
  2. angular.js
  3. Mongodb
  4. HTML5
  5. Css3
  6. Jquery
  7. Servicios web: JSON / soap / XML

También puede aprender jsp, servlet, struts, hibernate, spring, jsf junto con tomcat, jboss, etc.

Así es como puede ser un desarrollador fullstack que trabaje con todos los idiomas al mismo tiempo.

Node, angular, mongo son las plataformas más recientes y en crecimiento hoy en día y también son mucho más confiables en términos de escalabilidad y rendimiento. Como mongo es una base de datos orientada a documentos nosql y angular es una aplicación de una sola página.

En pocas palabras, necesita conocer la “pila completa” de cualquier sistema en el que esté planeando desarrollar.

En general, esta imagen resume lo que podría significar ser un desarrollador “full stack”, aunque la mayoría de las personas omitirán la parte del “servidor web”, “navegador” y “SO” del desarrollo real y se centrarán en el código del lado del cliente , código del lado del servidor y base de datos.

No hay nada especial sobre 2016, los requisitos para “full stack” son los mismos, e igual de vagos.

Siempre es agradable y refrescante poder desarrollar este Full Stack, también:

More Interesting

¿Puede un ingeniero de software con 8 años de experiencia, después de pasar 2 años en la empresa, postularse y unirse a otra empresa como 8 años de experiencia (no 10) y un aumento del 20%?

¿Qué hace un gerente de producto (software) diariamente?

¿Debo unirme a BNP Paribas como ingeniero de software?

¿Qué preguntas de la entrevista le preguntas para un puesto de desarrollo de software?

Como ingeniero de software, ¿qué aprendiste en Google que te hubiera gustado saber desde el principio?

Dejé de codificar durante 6 meses y ha sido realmente difícil recuperarlo. ¿Cómo puedo evitar que esto vuelva a ocurrir y mantener mis habilidades?

¿Alguien puede dar un ejemplo simple en tiempo real de análisis de valor límite y partición de equivalencia?

¿Por qué me piden que escriba un algoritmo durante la entrevista DevOps en lugar de las secuencias de comandos relacionadas con DevOps?

¿Todas las herramientas de software finalmente se basarán en la nube y se utilizarán a través de un navegador?

¿Qué lenguajes de programación debe saber un desarrollador de software?

¿Cuáles son las habilidades más exigentes en las principales empresas de tecnología como Google, Facebook y Microsoft?

Ingeniería de software e ingeniería informática: ¿Qué asignatura sería mejor en China para el programa de pregrado?

¿Qué es exactamente SAP y qué hacen estos desarrolladores?

Como ingeniero de software, ¿cómo planea su carrera después de los próximos 10 años (2027)?

¿Puedes codificar aplicaciones para productos de Apple y androides con javascript?