Contactos

¿Qué es el desarrollo full stack? Desarrollador full-stack: ¿un personaje mítico o un empleado muy real? ¿Es posible el entrenamiento individual?

Las empresas emergentes, los directores de TI y los diseñadores culpan a los desarrolladores completos por su lista de habilidades poco realista, la mala calidad de sus productos y su falta de versatilidad. Los desarrolladores full-stack se defienden.

A marcadores

En su blog en el sitio web de IT Academy, Alexey Sukhorukov ofrece las opiniones más duras y controvertidas de los profesionales de la industria de TI sobre si realmente existen los desarrolladores full-stack y qué tan bien afrontan sus tareas.

Según el informe anual StackOverflow (cerca de 100.000 desarrolladores de todo el mundo participaron en la encuesta en 2018), casi el 50% de ellos se consideran desarrolladores full-stack.

Primeras consultas de búsqueda desarrollador de pila completa no apareció antes de 2010. Y a partir de este momento su número comienza a crecer enormemente. El gráfico muestra la dinámica de popularidad (100 puntos es la popularidad máxima) de la consulta de desarrollador full-stack en todas sus variaciones en Google.

Desarrollador full-stack- hoy en día se trata de una categoría separada de especialistas, muy demandada y muy extendida. Sin embargo, no todo el mundo está de acuerdo ni siquiera con el hecho mismo de su existencia.

Hoy en nuestro material. oponentes del concepto full-stack presentarán sus duras acusaciones sobre la calidad, versatilidad y realidad de la existencia de tales desarrolladores. Y ellos mismos desarrolladores de pila completa sus opiniones serán refutadas.

En el punto de mira - tres preguntas más urgentes sobre esta profesión

1. ¿Es posible saber todo de la lista de requisitos para un full-stack?

Existen desarrolladores full-stack “reales”, al igual que hay genios y personas que han estado programando desde que tenían 12 años. La descripción de "desarrollador full-stack" tiene tan poco sentido como la de "genio" o "alguien que puede hacer cualquier cosa". Ampliaré esta idea con más profundidad. La siguiente ilustración muestra una versión incompleta de la misma "pila" que se menciona en todas estas vacantes.

En la mayoría de los casos, un desarrollador sólo necesita una o dos habilidades de cada capa. Algunas habilidades se pueden aprender en un par de horas (por ejemplo, compilación simple usando “./configure && make && sudo make install” o usando un VPS). Otras habilidades pueden tardar años en adquirirse.

Lo que se espera de un desarrollador "full stack" está mucho más allá de las capacidades de una persona promedio. Sí, hay personas que son capaces de esto, conozco a algunas de ellas. Pero también hay muchos grandes desarrolladores, diseñadores y directores de proyectos que definitivamente no son full-stack. Hay quienes se llaman a sí mismos full-stack, pero apenas pueden identificar más de media docena de palabras en la pila que publiqué arriba.

Para reiterar, en mi opinión, un desarrollador full stack es alguien que tiene una experiencia significativa en todos los puntos del stack y se siente cómodo con una o dos herramientas. Estos desarrolladores son valiosos no porque sepan todo lo que utilizará, sino porque pueden adaptarse rápidamente en función del conocimiento que han acumulado.

Con base en este conocimiento, puedo llamarme con confianza un desarrollador completo. Sin embargo, prefiero el término "Desarrollador" o "Ingeniero de software" sólo porque son un poco menos malignos y bastante inespecíficos.

2. ¿Puede un desarrollador full-stack crear un producto de calidad?

Veo malos diseños en Internet y creo que se debe a falta de habilidad. No es porque los diseñadores no estén bien preparados para la tarea en cuestión o porque los ingenieros no conozcan los estándares web. No, la razón es que existe una amplia gama de habilidades de desarrollo web que permanecen completamente ignoradas. A pesar de la evidencia de que el desarrollo front-end es una actividad enfocada y de tiempo completo, veo que muchas empresas contratan ingenieros completos.

Constantemente veo interfaces tremendamente inaccesibles que no tienen estados focales y formas que no permiten una navegación eficiente con el teclado. Veo interfaces móviles inutilizables y aplicaciones web gigantes que son lentas y torpes porque nadie ha descubierto cómo funcionan los navegadores en el nivel más básico. Si contrata ingenieros completos, terminará con falta de concentración y experiencia. Porque no existe el unicornio ni el ingeniero completo.

El desarrollo completo es la capacidad de percibir una amplia variedad de ideas. Con el tiempo, ese talento será cada vez más demandado. Ser un desarrollador full-stack no significa pasar instantáneamente de mantener un clúster de Hadoop a programar middleware en Java y luego ejecutar JavaScript completamente en el navegador. Las especializaciones se inventaron por una razón. Pero un desarrollador que comprenda toda la tecnología escribirá mejores aplicaciones.

Por lo tanto, el desarrollador de la interfaz de la máquina comprenderá lo que están haciendo los desarrolladores del lado del cliente y podrá interactuar con ellos. La aplicación no generará consultas que provoquen que la base de datos se vuelva loca. Un desarrollador de cliente que entienda el diseño puede ayudar al diseñador a preparar una hermosa aplicación que seguirá funcionando eficazmente en cualquier plataforma.

Según Mark Loukides, los desarrolladores full-stack no son los unicornios que algunos creen que son. Se parecen más a un árbol y se ramifican en herramientas, servicios en la nube, diseño, datos y redes.

Cuanto más adoptes ideas diferentes, más aprenderás sobre otras especializaciones, no sólo la tuya. Cuanto más eficazmente trabaje, por la sencilla razón de que aprenderá a interactuar con sus colegas. Además, tener un amplio arsenal de ideas y conceptos te ayudará a afrontar mejor tus tareas principales. Esto es por lo que nos esforzamos, aquí es donde radica todo el beneficio del desarrollo completo.

3. ¿Un desarrollador full-stack es un generalista?

Vayamos con el concepto de "Desarrollador Full Stack" que todo el mundo está utilizando con ardor últimamente. Especialmente en sitios como Hacker Noon o Medium que intentan ayudar a los aspirantes a desarrolladores a convertirse en "desarrolladores completos". Cada vez más empresas publican trabajos que requieren un "desarrollador completo".

Sin embargo, al adoptar este término general, nosotros, como empleadores, ahora nos vemos obligados a repensar nuestras opiniones sobre las habilidades necesarias para realizar el trabajo. El término "desarrollador full stack" viene con una lista de requisitos absolutamente ridícula.

Los requisitos enumerados en esta lista me parecen ridículos. Full stack es un término que define algo que no existe, no puede existir, porque es un estándar que no se puede hacer cumplir. Nuestros empleadores no deberían utilizar este término: indique sus requisitos, no los oculte bajo un nombre gracioso. Si tiene un buen trabajo en una buena empresa con el título "full stack", intente convencer a su jefe de que sería mejor utilizar un título más claro que refleje mejor los detalles del puesto.

Estoy escribiendo mi propia guía paso a paso sobre cómo convertirme en un desarrollador full-stack. Es imposible conocer todos los componentes en una lista de requisitos de pila completa, pero puede reducir la lista significativamente si puede instalar una pila de Devops con anticipación. Además, es posible que desee cubrir cada "capa" hasta obtener "conocimientos suficientes", especialmente al comienzo de un proyecto.

Formo a mi equipo para que se conviertan en "ingenieros full stack", pero cada uno de ellos se enfoca en un área específica de desarrollo: iOS, Android, web y API. Utilizamos principalmente JavaScript y React/React Native, por lo que puedo intercambiar sus posiciones. Con el tiempo, una vez que la estructura esté completa, puedo reasignarlos a posiciones a lo largo de pilas verticales específicas. Por ejemplo, uno para consumidores, otro para proveedores, uno para administradores y otro para desarrolladores. Y los cuatro serán intercambiables. Un equipo tan versátil de "ingenieros completos" puede reducir significativamente los costos de personal y el tiempo de desarrollo.

Vacante: Desarrollador web Full Stack

Una de las áreas más populares en el campo de las tecnologías de la información es el desarrollo web. Los desarrolladores web Full Stack ocupan un lugar importante en él. Se trata de generalistas que pueden crear aplicaciones tanto de cliente (frontend) como de servidor (backend), y además tienen conocimientos de administración de sistemas. Les pedimos a los representantes de la empresa que hablaran sobre los conocimientos, las habilidades y la experiencia relevantes para los desarrolladores web Full Stack en la actualidad.

  1. ¿Qué conocimientos y habilidades debe tener un desarrollador web Full Stack?
  2. ¿Cuál es el conjunto de herramientas de un desarrollador web Full Stack?
  3. ¿Cuáles son los requisitos de la empresa para el nivel educativo de los empleados potenciales?
  4. ¿Cuáles son los requisitos de experiencia laboral?
  5. ¿Existen requisitos especiales que estén determinados por las características específicas de las actividades de la empresa?

Alexander Mayorov, jefe del departamento de desarrollo frontend de Tutu.ru

1. Primero, definamos la terminología de quién es un desarrollador web. Por el nombre queda claro que se trata de un programador que trabaja con la web. Pero la web consta de partes de cliente y servidor. El cliente se escribe utilizando un lenguaje de marcado, un lenguaje de descripción en cascada de estilos y el lenguaje de programación de scripts JavaScript. Al mismo tiempo, todo este "bien" se ensambla en el servidor y se implementa en producción mediante utilidades especiales. La parte del servidor se puede escribir en cualquier formato, pero un requisito previo es la presencia de un servidor web HTTP como mínimo (aunque no solo HTTP).

Si describimos la lista completa de competencias, resulta que los conocimientos y expectativas de un desarrollador web Full Stack van más allá de las capacidades de un programador común. Un desarrollador de este tipo debe saber cómo escalar una aplicación a varios millones de solicitudes por minuto, poder elegir entre MongoDB y MySQL, utilizar y configurar servicios en la nube, dominar una docena de herramientas de gestión de configuración para implementar aplicaciones en Ruby, PHP, JavaScript (algo más) o combinaciones de los mismos, comprender las diferencias entre arquitectura orientada a servicios y aplicaciones monolíticas y muchas otras cosas.

2. De aquí resulta que un desarrollador Full Stack es una especie de Jedi o ninja, un desarrollador senior con conocimientos en muchas áreas:

  • uno o más lenguajes de programación del lado del servidor (PHP, JavaScript, Perl, Ruby, Python, C#, Java...);
  • conocimiento de una o más bases de datos relacionales y capacidad para trabajar con ellas: MySQL, PostgreSQL, MS SQL...;
  • conocimiento de uno o más almacenamientos NoSQL y bases de datos orientadas a documentos: MongoDB, Redis...;
  • conocimiento de los principios de funcionamiento del protocolo HTTP, sus versiones y características, y de la pila de red en su conjunto;
  • conocimientos generales de administración y capacidad para trabajar con sistemas similares a Linux;
  • Conocimiento de tecnologías y lenguajes del cliente: JavaScript, CSS, HTML.

Y además de todo esto, está el conocimiento de los marcos para el desarrollo de servidores y clientes, así como la capacidad de combinar todo esto arquitectónicamente en un solo todo, la capacidad de crear servicios y API para la interacción. Cada uno de los puntos es un gran área de estudio separada, en la que se pueden dedicar varios años.

Un desarrollador completo debe tener un buen conocimiento de cada componente de la pila de tecnología web para poder tomar decisiones informadas sobre su implementación y uso. También debe poder explicar sus elecciones a colegas y directivos.

Razonando más, llegamos a la conclusión de que quizás un desarrollador web Full Stack no debería dedicarse a la programación activa en absoluto, sino centrarse en el papel de arquitecto de sistemas. Una persona con conocimiento de todo el stack tecnológico puede anticipar problemas de comunicación e integración entre capas antes de que puedan perjudicar el proyecto que se está desarrollando.

Aun así, el papel de arquitecto implica una especialización limitada. Es imposible escribir todo y poder utilizar eficazmente todas las herramientas existentes.

Incluso como tal, Full Stack es un gran conjunto de habilidades, con una comprensión profunda de cómo interactúan las tecnologías dentro de una pila y cómo los cambios en una capa de la pila afectan a otras capas.

Pero en realidad, la mayoría de las veces en los sitios de contratación, Full Stack se entiende como un desarrollador web con conocimientos medios o incluso mínimos en cada área (y en su mayoría solo relacionados con los lenguajes de desarrollo y la capacidad de trabajar con bases de datos, pero no con su configuración y administración).

Por lo tanto, este término puede evocar diferentes asociaciones y emociones en diferentes personas (incluidas las negativas).

3. Requerimientos mínimos:

  • conocimiento de sistemas tipo Unix, capacidad para trabajar con Bash, experiencia básica en administración;
  • conocimiento y capacidad para trabajar con el DBMS relacional MySQL o cualquier otra base de datos SQL;
  • conocimiento de la pila de red, conocimiento de los principios de funcionamiento del protocolo HTTP y sus versiones;
  • capacidad para trabajar con servidores Nginx y Apache (comprendiendo sus diferencias, ventajas, características...);
  • conocimiento de uno o más lenguajes de programación de scripts del lado del servidor (en nuestro caso, PHP mínimo);
  • conocimiento de la capa de cliente a nivel intermedio (JS, HTML, CSS);
  • capacidad para trabajar con un sistema de control de versiones;
  • capacidad para trabajar con sistemas de almacenamiento en caché (redis, memcache...);
  • capacidad para trabajar con bases de datos NoSQL: MongoDB;
  • Experiencia escribiendo pruebas unitarias.

La lista de requisitos puede ser más amplia, dependiendo del proyecto y las tareas.

4. Un buen desarrollador Full Stack tiene 5 años o más de experiencia. Como muestra la práctica, es posible dominar más o menos las habilidades en cada área a nivel profesional en un promedio de 1,5 a 2 años de experiencia laboral continua, mientras que cada capa de la pila consta de varias herramientas y lenguajes de programación diferentes.

5. Los detalles se describen en el párrafo 3. En el buen sentido, un desarrollador Full Stack es un solitario que trabaja en alguna tarea, tal vez RnD, o es el líder de algún equipo, un arquitecto de sistemas que comprende toda la arquitectura de la web. aplicación y determina cómo debería ser una aplicación web.

Evgeniy Kuzin, Jefe del Departamento de Proyectos de Red, Doctor Web LLC

1. Un desarrollador full stack es una persona que tiene conocimientos prácticos de cada nivel del entorno de información en el que trabaja y sabe cómo utilizar estos conocimientos. Si hablamos de un desarrollador web, entonces se trata de conocimiento desde el backend profundo hasta el frontend mismo, conocimiento del sistema operativo utilizado y sus mecanismos (almacenamiento en caché, comunicación entre procesos, trabajo con memoria), sus fortalezas y debilidades.

Luego, el software de servidor requerido, los detalles siempre están determinados por la tarea, pero muchas herramientas pueden considerarse estándar: servidor web, DBMS, servidor de caché, servidor de cola. Configura efectivamente este zoológico, tomando en cuenta el conocimiento sobre la plataforma y tus tareas.

Luego, el código backend en sí, la red y el protocolo HTTPS, el código frontend y, a veces, incluso el diseño y su representación por parte de los navegadores.

Además, el desarrollador de FS no necesariamente está directamente involucrado en todas las etapas del desarrollo de aplicaciones; la opinión generalizada de que el desarrollador de FS es una bendición para las empresas que buscan reducir sus costos en personal de programadores/administradores de sistemas es sólo parcialmente cierta. Lo que es más importante es que el desarrollador de FS se asegure de utilizar sus conocimientos y, como resultado, esto le permitirá crear mejores programas, tanto desde un punto de vista técnico como en general.

2. El más extenso, que se deriva directamente del hecho de que un desarrollador web de FS se ocupa literalmente de todo: utilidades para configurar y optimizar el sistema operativo, bibliotecas de aplicaciones, marcos, analizadores y perfiladores de código, depuradores, utilidades de análisis de tráfico, entornos de desarrollo integrados y, por supuesto, Por supuesto, un navegador con todas las extensiones necesarias.

3. La educación técnica especializada ha sido y será una gran ventaja, porque no importa lo que se diga, es extremadamente difícil revelar plenamente sus habilidades y desarrollar el pensamiento correcto de ingeniería y programador sin educación. Sin embargo, la decisión final siempre se toma en función de los resultados de la entrevista; hay casos en que la falta de educación formal del candidato se compensa con la experiencia.

4. En principio, esto es lo mismo que con la educación. No existen requisitos absolutos de experiencia, expresados ​​​​en años de experiencia o en la cantidad de proyectos completados, pero de hecho, sin una cierta cantidad de experiencia, un desarrollador simplemente no podrá tomar las decisiones técnicas correctas y crear aplicaciones de alta calidad. . Qué enfoque elegir, qué plataformas son más seguras, qué herramientas, bibliotecas y por qué debería utilizarlas es una experiencia.

5. Se hace especial hincapié en la seguridad, debido a las particularidades de las actividades de Doctor Web. Debido a la naturaleza de nuestro trabajo, luchamos constantemente contra los creadores de virus y otros atacantes en la red, por lo que nuestros servicios web se examinan periódicamente para encontrar vulnerabilidades. Arquitectura de red segura, actualización oportuna de componentes y bibliotecas vulnerables, precisión en el procesamiento de datos provenientes de fuentes no confiables: estos aspectos reciben la máxima prioridad.

Yuri Trukhin, experto en tecnología de la nube InfoboxCloud

1. Un desarrollador web Full Stack requiere conocimientos en las siguientes áreas:

  • comprensión de los principios de funcionamiento de servidores, redes y tecnologías de nube;
  • capacidad para diseñar y desarrollar niveles de datos y lógica de negocios, justificando soluciones arquitectónicas;
  • habilidades en el desarrollo de servicios de alta carga. Comprender las capacidades de escalamiento;
  • conocimiento de algoritmos;
  • capacidad para diseñar y desarrollar API e integrar servicios utilizando API;
  • conocimiento de tecnologías web (HTML, CSS, JavaScript) y habilidades para diseñar interfaces de usuario modernas;
  • comprender la experiencia del usuario;
  • capacidad para trabajar con clientes y formular especificaciones técnicas a partir de requisitos comerciales;
  • Conocimiento de métodos de desarrollo flexibles y capacidad para trabajar en equipo;
  • habilidades para trabajar con arquitectura de microservicios;
  • Deseo de aprender y mejorar constantemente.

2. Head, IDE (IntelliJ IDEA), editores de texto (Atom, SublimeText, vim), Git.

3. En igualdad de condiciones, en la entrevista se selecciona un candidato con educación superior o título académico.

4. Es deseable tener al menos 1 año de experiencia en servicio y/o desarrollo backend.

5. Se requiere comprensión de los principios operativos de Odin Automation y Microsoft Azure Pack y la capacidad de desarrollar paquetes APS (https://www.apsstandard.org).

Bobir Rakhimov, desarrollador de interfaz de usuario de Kaspersky Lab

1. Un desarrollador Full Stack es un desarrollador que puede ofrecer una solución web completa. Es decir, la parte del cliente y la parte del servidor (de ahí el nombre - Full Stack - la pila completa). Además del conjunto estándar de conocimientos de un desarrollador front-end en forma de JavaScript, HTML, CSS, también se requiere que conozca y pueda implementar la parte del servidor. Se puede implementar en diferentes frameworks: JavaScript (aplicaciones Node.js), C# (ASP.NET Web Forms/MVC), Java, Python (Django), Ruby (Ruby on Rails). La elección de un framework u otro viene determinada por los requisitos de la aplicación en cuanto a rendimiento y el tipo de operaciones que se pretende realizar en el servidor.

2, 3. Los requisitos varían según la plataforma elegida anteriormente.

4. Experiencia laboral: al menos 2-3 años (desarrollo de servidores), más la presencia de aplicaciones implementadas.

5. No hay requisitos especiales.

Alexey Skibin, desarrollador web de Game Stream JLLC, centro de desarrollo de Wargaming en Minsk,

Larisa Bugaeva, reclutadora de Game Stream JLLC, centro de desarrollo de Wargaming en Minsk

1. COMO.: Primero es necesario definir qué es un Stack para el desarrollo de proyectos. Según tengo entendido, se trata de un conjunto de tecnologías que se utilizan en un proyecto específico. Por ejemplo, podría ser JavaScript y HTML para el front-end y Python + Django + PSQL + AMQP para el backend.

De hecho, no basta con conocer la tecnología. Para ser un desarrollador web Full Stack, es necesario comprender el enfoque para utilizarlos.

El conjunto ideal para un desarrollador web Full Stack:

  • conocimiento de tecnologías de servidores web;
  • comprensión del diseño/modelado de capas de bases de datos;
  • comprensión del diseño de lógica empresarial;
  • comprender cómo interactúa el front-end con la lógica empresarial y la capa de datos (capa API).

También es útil poder escribir pruebas unitarias y perfilar su código, evaluar/analizar el trabajo con la base de datos.

2. COMO.: No soy particularmente exigente con las herramientas. Yo suelo:

  • PyCharm;
  • Extensiones de Django o perfilador de Python para análisis de código;
  • Analizar en la base de datos y New Relic para el análisis de consultas;
  • Zabbix o algo similar para comprobar el estado del servidor.

3. LB: En nuestra empresa no existen requisitos especiales para el nivel de educación. En mi práctica, había un candidato que conocía muy bien C++ y que solo había recibido educación secundaria. Lleva varios años trabajando en el equipo del servidor.

4. LB: Si hablamos de los puestos de desarrolladores web Full Stack con los que trabajé, se requería experiencia relevante en proyectos de alta carga. Buscábamos un desarrollador backend sólido que no tuviera problemas para escribir la funcionalidad necesaria en JavaScript. También buscábamos especialistas con conocimiento de los marcos Knockout y React.

5. LB: Nuestra especialidad son las cargas altas. En consecuencia, es muy deseable tener experiencia trabajando en proyectos similares. La experiencia trabajando en una empresa de productos también será una ventaja, porque... La subcontratación a menudo no presta suficiente atención a las pruebas y la automatización de procesos.

Marina Trokai, generalista de recursos humanos, Andrey Bryukhanov, jefe del departamento de desarrollo web de la empresa Auslogics

1. La empresa Auslogics desarrolla una serie de productos de software, para cuya promoción y soporte trabaja un equipo de desarrolladores Full Stack. El equipo se está ampliando constantemente y añadiendo nuevos especialistas altamente cualificados. Como cualquier otro puesto en la empresa, los programadores Full Stack deben completar una tarea de prueba y, después de aprobarla con éxito, sigue una entrevista técnica.

Trabajamos con PHP, JS, MySQL, HTML y CSS. Entre los frameworks disponibles públicamente, se prefieren Yii, Symfony y jQuery. Para control de versiones - Git

2. Cada desarrollador elige de forma independiente las herramientas que le resultan más convenientes. Los IDE más utilizados son NetBeans y PHPStorm.

3. Como se señaló anteriormente, en Auslogics, completar una tarea de prueba es una parte integral del procedimiento de revisión del solicitante. Aparte de esto, también hay una entrevista técnica. Son estos dos componentes de la selección los que permiten evaluar la conformidad del nivel de conocimientos declarado del solicitante con los requisitos de la empresa. Sin embargo, los exámenes no se envían a todos los solicitantes que envían su currículum, sino solo a aquellos cuya experiencia especificada cumple con los requisitos de la vacante. La educación, la formación avanzada y la actividad científica desempeñan, por supuesto, un papel importante, pero no decisivo. Al tomar una decisión final a favor de un candidato en particular, analizamos la capacidad del solicitante para razonar, buscar soluciones óptimas a los problemas asignados y estudiar nuevas tecnologías de manera cualitativa. Estas habilidades son mucho más importantes que los diplomas y certificados.

4. Para participar en el concurso para el puesto de desarrollador Full Stack, un especialista debe tener sólidos conocimientos de HTML, CSS, PHP, JavaScript y SQL. Familiarícese con cualquiera de los marcos PHP modernos. El conocimiento de los conceptos básicos de *nix (bash, LAMP) y (o) la capacidad de utilizar Photoshop como parte del diseño de plantillas utilizando diseños ya preparados es siempre una ventaja innegable.

Dado que la empresa es australiana, se requieren conocimientos sólidos del idioma inglés, suficientes para comprender la documentación técnica y mantener la correspondencia estándar. La familiaridad con las tecnologías relacionadas es siempre una ventaja definitiva. Por ejemplo, utilizamos Codeception para automatizar las pruebas y Capistrano para la integración continua.

5. El equipo de Auslogics trabaja en un formato diferente al de la mayoría de las demás empresas de TI: todos los empleados, excepto la oficina de Sydney, trabajan a tiempo completo, pero de forma remota. Esto da mucha libertad, pero también requiere mayor independencia, autoorganización e iniciativa. Un enfoque creativo, una actitud minuciosa a la hora de escribir código, una visión del producto final y su implementación clara son la clave del éxito del proyecto. Para nosotros es importante la actitud de los empleados hacia los productos y proyectos de la empresa. Es el tipo de pensamiento de “producto” del desarrollador lo que determina la calidad futura del código. Una perspectiva amplia, el conocimiento del área temática y del mercado de aplicaciones son ventajas que le permitirán desarrollar un producto verdaderamente de alta calidad. Nuestros programadores no sólo no tienen miedo de cambiar los requisitos y reelaborar la arquitectura, sino que a veces son ellos mismos los iniciadores de esto, tomándolo como un desafío y un motivo de superación personal.

Egor Malyshev, desarrollador web de JetBrains

1. Un desarrollador web Full Stack es un especialista calificado que puede participar activamente en todas las etapas del desarrollo de una aplicación web, desde la lógica del servidor y su implementación utilizando diversas tecnologías y marcos, hasta el código del cliente que se ejecuta directamente en el navegador.

En mi opinión, lo primero es presentar una imagen general de los procesos que ocurren en la aplicación. Lo más valioso es la capacidad de planificar la estructura de la aplicación, de imaginar cómo todas sus partes interactuarán entre sí y con los componentes externos. Las sutilezas y matices de ciertas implementaciones no son tan importantes en este caso; se pueden delegar a aquellos más enfocados en el desarrollo front-end o back-end.

La tarea principal de un desarrollador web Full Stack es garantizar la creación del esqueleto de aplicación correcto, que posteriormente resistirá la creciente carga funcional en forma de características y componentes.

2. Dado que la mayor parte del tiempo tienes que trabajar con código, la herramienta número uno es, por supuesto, IntelliJ IDEA Ultimate. No podemos prescindir de nuestros otros productos: utilizamos YouTrack para configurar y realizar un seguimiento de tareas, TeamCity para automatizar la construcción de ensamblajes.

3. La mera presencia de un diploma o incluso una disertación dice poco sobre una persona. No requerimos calificaciones formales, sino que evaluamos a los candidatos en función de su experiencia, habilidades demostradas y cómo comprenden situaciones difíciles y encuentran una salida a ellas.

4. Como ocurre con la educación, cifras secas como “cinco años de experiencia en el desarrollo de grandes aplicaciones” no son en sí mismas un factor determinante. Por supuesto, la experiencia es importante, pero evaluamos la experiencia en sí y no el tiempo durante el cual se obtuvo.

5. Inglés escrito y preferentemente hablado. Además del hecho de que se utiliza activamente para la comunicación dentro de la empresa (tenemos muchos empleados de habla inglesa), el desarrollo front-end en sí requiere escribir varios textos. Además, una parte importante de la documentación de diversas API y productos de software suele estar escrita únicamente en inglés, y también es el estándar de facto para la comunicación en diversas comunidades y conferencias.

La empresa proporciona a los empleados un mayor grado de libertad en su trabajo, lo que impone una mayor responsabilidad y exige cada vez más la capacidad de autoorganizarse y gestionar eficazmente su tiempo para completar a tiempo las tareas asignadas.

Preparado por Igor Shtompel


En contacto con

Antes que nada, definamos los términos. Hay muchas ideas diferentes sobre quién es un desarrollador full stack, algunos incluso creen razonablemente que dichos desarrolladores son un mito, pero en este artículo nos referiremos a un desarrollador que tiene el conocimiento y las habilidades para escribir software desde cero y ponerlo. ponerlo en producción. En este caso, el software puede diseñarse para una plataforma web, aplicaciones móviles o aplicaciones de escritorio. Un desarrollador full stack ideal es aquel que, hasta cierto punto, posee todas las plataformas y puede desarrollar e instalar su propio software en ellas. Pero esto es más bien un mito.

No es una mala definición de quora.com

Cuando las personas buscan un desarrollador completo, esperan ver un mago de la tecnología que canta y baila.
O al menos alguien que no se quejará demasiado cuando le pidan que trabaje fuera de su zona de confort.


Quizás, a juzgar por el título, a alguien le parezca que se trata de una publicación quejumbrosa que habla de lo mala que es la vida para un escolar no calificado que obtuvo todo de varios artículos en Internet. No, el post no es una queja, estamos hablando de full stack, no de full slack, y al final también se considerará la lista de ventajas. Y no consideraremos a un estudiante de escuela, sino a un desarrollador con cinco o más años de experiencia. Veamos qué desventajas hay en tal desarrollo.

Desventajas

En todos los ámbitos eres peor que un especialista.
Parece bastante obvio, pero lo explicaré de todos modos. Si pasó seis años en una tecnología, entonces obviamente su conocimiento será mayor que el de alguien que pasó seis años trabajando en varias. Tenías más proyectos, estuviste más involucrado en algunas soluciones típicas, leíste y escribiste más código.

Es más difícil para ti profundizar
Un buen desarrollador full stack siempre está muy cargado. Y tu tiempo para aprender cosas nuevas se distribuye entre todas las tecnologías con las que trabajas. Naturalmente, su desarrollo es más lento que el de un programador altamente especializado.

Es más probable que experimente una sobrecarga de tareas
Si trabaja en varios proyectos desde varios lados a la vez, incluso con una buena gestión del tiempo sucederá a menudo que todos los proyectos requieren mayor atención y tiempo. Esto tendrá que resolverse transfiriendo algunas de las tareas a otros desarrolladores, distribuyendo prioridades o planificando cuidadosamente. Por supuesto, cualquier desarrollador tiene la posibilidad de sobrecargarse; como usted sabe, en el mundo real cualquier tarea debe realizarse "ayer". Pero estas tareas pueden aparecer repentinamente en lotes.

Es difícil reemplazarte
Para algunos, esto puede parecer una ventaja: es difícil despedirte, eres amado y apreciado. Pero la otra cara de la moneda es la imposibilidad de transferir tareas, llamadas en cualquier momento del día, problemas para salir de vacaciones, dificultades para intentar hacer otra cosa.

No tienes un área clara de responsabilidad
Si no hay agua en el grifo, ¡la culpa es de la pila llena! No importa qué problemas surjan, no importa qué errores aparezcan, lo más probable es que tengas que solucionarlos, incluso si el problema en realidad debería ser responsabilidad de otro desarrollador. Lo que pasa es que tu imagen del mundo es mucho más completa y puedes localizar y corregir el error más rápido. Desafortunadamente, a menudo se abusa de esto.

"¡Oh, dáselo, él lo resolverá!"
En una situación en la que es necesario lidiar con un código antiguo o incorrecto, lo más probable es que usted se vea involucrado. Es especialmente triste cuando un empleador quiere ahorrar dinero contratando a un desarrollador para todo el proyecto. Y lo abres y te das cuenta de que es más fácil tirarlo y reescribirlo por completo.

No conoces todos los conjuntos de la biblioteca.
Esto se desprende claramente del primer punto, pero me gustaría mencionarlo por separado, aunque sólo sea porque las vacantes a menudo requieren experiencia trabajando con bibliotecas específicas.

No puedes seguir todas las tendencias.
Nuevamente, esto se desprende del primer punto. Por alguna razón que desconozco, a menudo buscan un desarrollador que pueda implementar perfectamente algo que se lanzó hace seis meses. Por desgracia, no puedes conocer y poder usar ES6 al mismo tiempo, hablar sobre las diferencias entre la última versión de Symfony y los posibles problemas de migrar de Oracle a Tibero en este momento. Es posible que haya leído sobre esto, pero simplemente no tuvo tiempo de probarlo.

No siempre se escribe código óptimo
Lo más probable es que tu código sea claro, esté bien organizado y comentado. Pero seguramente un especialista más cualificado podría haberlo hecho un poco mejor. Otra cuestión es que esto no suele ser crítico. Es realmente malo si el lío de idiomas en tu cabeza te obliga a utilizar enfoques y soluciones que de ninguna manera son adecuados para el proyecto actual. Es terrible ver cómo algunos incluso escriben funciones que serían similares a las implementaciones con las que están familiarizados en otro idioma.

¿Miras a menudo manuales?
Incluso las funciones para trabajar con cadenas se ven diferentes en todos los idiomas, y mucho menos en algo más complejo. Si cambia a menudo entre diferentes tecnologías e idiomas, lo más probable es que constantemente tenga un manual colgado en su computadora al que pueda echar un vistazo, lo que, por supuesto, reduce un poco la velocidad de trabajo.

Quizás empieces a envidiar los salarios de los especialistas.
Si empieza a buscar vacantes para su habilidad más cara, es posible que se sienta decepcionado: los especialistas con amplia experiencia laboral pueden recibir muy buen dinero por ello. Seamos honestos: no tienes tanta experiencia trabajando con una tecnología específica. Pero incluso si profundizas en esta tecnología y adquieres los conocimientos necesarios, ¿te gustaría seguir haciendo esto por el resto de tu vida? Por ejemplo, ¿administrar el DBMS de Oracle?

Desventajas del empleo

Por otra parte, me gustaría mencionar las dificultades que surgen al cambiar de trabajo.

Te llamaré para trabajar usando palabras clave aleatorias en tu currículum.
RR.HH. no se fija en el hecho de que usted trabajó en esta tecnología en un pequeño proyecto hace tres años. Vio una palabra que parecía una vacante que había que cubrir, se plantó y está tratando de ubicarte allí a toda costa, sin interesarse por tus deseos y preferencias actuales.

Pila completa pila completa
No importa cuán amplio sea su especialista, es poco probable que encuentre un lugar para trabajar con exactamente la misma pila de tecnología. Sucede, pero muy raramente. Sin embargo, las intersecciones suelen ser bastante grandes y nada te impide mejorar lo que falta y ampliar aún más tus horizontes.

ellos no te creen
Sí, este es un problema tan divertido y real. Si pones demasiadas cosas en tu currículum, simplemente no te creerán y ni siquiera intentarán comprobar o preguntar sobre el nivel de conocimientos que tienes. Por eso, por muy gracioso que parezca, la mejor manera es eliminar sin piedad de tu currículum toda información que consideres irrelevante para tu futuro. Mejor aún, adapte su currículum a cada vacante.

Te resultará más difícil encontrar una vacante adecuada
Rara vez se buscan desarrolladores fullstack y no siempre es posible que un empleador con una vacante de este tipo pueda competir con una vacante altamente especializada en términos de condiciones. Y surge la pregunta: ¿qué palabras clave utilizar al buscar una vacante? Si es, digamos, un desarrollador de Java, simplemente especificó Java en la búsqueda y comenzó a hacer clic. Pero el full stack es un poco más complicado. Por lo general, el problema se resuelve suscribiéndose a varios filtros diferentes según las palabras que le resulten más interesantes, o simplemente seleccionando según el nivel salarial deseado. Esto último no siempre funciona, porque para mi gran desconcierto todavía hay una enorme cantidad de vacantes sin ningún rango salarial indicado. Aparentemente, ¿RR.HH. teme que todos quieran el máximo descrito? Extraño. Si alguien conoce los argumentos a favor de dicha estrategia de contratación, que los proporcione en los comentarios.

pros

Ahora, finalmente, sobre las cosas sabrosas.

Puedes elegir con quién quieres trabajar a continuación.
Es mucho más fácil para usted cambiar la orientación (perdón por la ambigüedad) que para un desarrollador normal. Ves muchas cosas en la aplicación, puedes resolverlas y comprender lo que te interesa. Sí, tendrás que dedicar tiempo a profundizar, pero será un tiempo bien empleado. Sí, lo más probable es que tengas que iniciar varios proyectos favoritos para probar todo lo que quieras. Pero, una vez más, esto da buenos resultados.

Te quemas menos
Si tiene la oportunidad de cambiar periódicamente de proyecto, se cansará mucho menos de usar lo mismo. Por supuesto, a menos que seas un fanático incondicional y no disfrutes simplemente escribir todo en, digamos, vainilla C o asm.

Es más fácil para usted convertirse en líder de equipo o arquitecto
Una ventaja bastante obvia: cuanto más comprenda la estructura general, mayores serán sus posibilidades de convertirse en un líder. Por supuesto, si tienes ganas y capacidad de comunicación.

Puedes depurar cualquier cosa
Una ventaja obvia. Su pensamiento sistémico ha alcanzado un nivel en el que puede arreglar cualquier cosa, en cualquier lugar.

El trabajo es más divertido, interesante y educativo.
En un día puedes adquirir muchas habilidades y conocimientos nuevos en cosas completamente diferentes.

Solo, puedes crear cosas maravillosas en la intersección de diferentes tecnologías.
Sólo usted puede hacer lo que el enfoque estándar requiere de 3 a 4 personas. ¿Programar un microcontrolador para Internet de las cosas que se comunique con un servidor web, escriba en una base de datos y cuyos datos se puedan ver en un sitio web, aplicación o dispositivo móvil? ¡Fácilmente! Sólo usted puede imaginar todo el sistema e implementarlo sin acuerdos, malentendidos ni retrasos.

Sus soluciones funcionan más rápido y de manera más confiable
Al comprender cómo interactúan los diferentes sistemas, podrá elegir mejores formas de combinarlos. Entiendes mejor cada componente y no tienes miedo de utilizarlo. Tomemos como ejemplo las “tecnologías ingeniosas” (el ciclomotor no es mío, se menciona en las publicaciones). En general, la nube es una manera maravillosa de resolver una gran cantidad de problemas, incluidos los problemas de escala. Desafortunadamente, veo cada vez más que se utilizan soluciones en la nube simplemente porque el desarrollador no sabe cómo y tiene miedo de resolver su problema de otra manera, pero lo presenta como una ventaja adicional. Y se pueden hacer muchas cosas, mucho más baratas y mejores, si se tiene al menos una comprensión superficial del problema.

Puedes usar casi cualquier fuente.
En un mundo donde prácticamente cualquier problema aplicado ya ha sido resuelto, perder el tiempo escribiendo otra bicicleta es simplemente un delito en relación con la duración de la vida. Ahora puede tomar cualquier repositorio en cualquier idioma y utilizarlo como punto de partida para su solución. Volarás con una brisa fresca sobre el rastrillo que miles de desarrolladores han recogido antes que tú.

Estas consiguiendo Zen
Ahora ya sabes que no existe un lenguaje de desarrollo mejor que el resto. Sabes que no existe la mejor base de datos. Puede suponer que alguna herramienta se adapta mejor a sus propósitos... pero está dispuesto a utilizar alternativas si hay alguna razón para ello, por ejemplo, las calificaciones de otros desarrolladores. Ya no se escriben artículos sobre pruebas sintéticas creadas para mostrar las ventajas de una tecnología sobre otra. Usted sabe que un aumento del cinco por ciento en la productividad probablemente no valga dos de sus meses-hombre. Y finalmente podrás dedicar el tiempo libre de holívares a algo útil. Por ejemplo, para establecer una relación con una chica (por ejemplo, llamémosla Katya). Ahora comprende que las tecnologías son diferentes, que las personas son diferentes y que solo necesita encontrar la manera correcta de conectar todo. Amas el mundo y

Dirigido a diferentes niveles de formación. Cada programa comienza con un curso básico, al que pueden inscribirse estudiantes que hayan estudiado los conceptos básicos del campo elegido y tengan conocimientos mínimos de la especialidad de interés. Para matricularse en cursos de nivel avanzado y profesional sin aprobar los cursos básicos, se propone someterse a una prueba previa o una entrevista con un formador.


¿Existen restricciones de edad para estudiar en el centro?

No existen tales restricciones en IT-Academy. Pero es importante comprender que formamos principalmente especialistas jóvenes, y la mayoría de las empresas de TI dan preferencia para este puesto a candidatos que aún no hayan cumplido 32 años (según una encuesta entre residentes del Hi-Tech Park realizada en 2017). Por lo tanto, es aconsejable decidir la dirección de su interés lo más rápido posible y recibir capacitación para comenzar a construir su exitosa carrera en TI.


¿Es posible estudiar sin saber inglés?

Puedes tomar algunos cursos con conocimientos mínimos de inglés. Pero recomendamos aumentar el nivel de dominio del idioma directamente antes del curso o durante la formación, ya que pueden surgir dificultades en la futura búsqueda de empleo. La industria de TI se ha vuelto internacional desde hace mucho tiempo, por lo que para sentirse seguro en la profesión, no debería haber problemas con la comunicación. Además, todos los lenguajes de programación populares se basan en lexemas en inglés y para trabajar cómodamente con ellos se requiere un nivel mínimo Pre-Intermedio.


¿IT-Academy ofrece cursos de inglés?

Por el momento, IT-Academy puede ofrecer formación en inglés con un descuento de hasta el 20 % de nuestros socios: una de las escuelas de idiomas más grandes, Streamline Language School. El programa de afiliados exclusivo será de interés para todos los que quieran aprender un idioma extranjero, en primer lugar, inglés, para entrar con confianza en la industria de TI.

¿La IT Academy proporciona formación en profesiones de TI más específicas? Después de todo, hoy en día no sólo hay demanda de programadores y evaluadores.

IT-Academy monitorea el desarrollo del mercado educativo, las tendencias en TI y la necesidad de especialistas específicos. En base a esto, se toma la decisión de lanzar nuevos cursos. Hoy en día, el Centro Educativo ofrece formación en 20 programas diferentes en áreas como desarrollo y pruebas de software, análisis empresarial, diseño web, marketing, ventas, trabajo con datos, etc. Podemos ofrecer cursos relevantes a aquellos que quieran dedicarse a las ventas de TI, dominar las herramientas modernas de minería de datos, aprendizaje automático y Big Data, y comprender los conceptos básicos de la visualización de procesos y datos utilizando la herramienta Tableau.

¿Es posible el entrenamiento individual?

No. Sobre la base de IT-Academy, solo se ofrecen clases grupales y se garantiza la actitud atenta de los profesores hacia cada alumno.


¿Qué destinos son los más populares?

Por el momento, los cinco programas educativos más populares son pruebas de software, desarrollo Java, desarrollo front-end, análisis empresarial y diseño web.


¿Puedo inscribirme en varios cursos a la vez?

Sí, es posible. Selecciona las áreas que te interesen y nuestros especialistas, tras valorar la programación, te propondrán los cursos más adecuados para que no haya solapamientos.


¿Cuánto cuesta la formación en IT-Academy y está disponible el pago a plazos?

El costo varía según el curso de estudio y el horario de clases seleccionado. En promedio, de 200 a 500 rublos por mes. Puedes conocer el importe exacto seleccionando uno de los cursos. IT-Academy proporciona cuotas para el período de estudio con pagos mensuales.


¿Cómo inscribirse en la formación?

Puedes dejar una solicitud a través de la web haciendo clic en “Registrarse” junto al curso que te interesa y rellenando el formulario, o contactarnos por teléfono. Y, por supuesto, estaremos encantados de verle en nuestra oficina, donde podrá recibir asesoramiento personalizado sobre todos los temas de su interés.

¡Hola! Muchos de ustedes, al conseguir un trabajo, responder a vacantes y proyectos independientes, a menudo han notado que en casi todos los lugares donde necesitan Desarrollador full-stack, y los salarios se ofrecían muy altos y las condiciones de trabajo eran buenas. La mayoría de la gente está interesada en este tipo de puestos vacantes, pero no todo el mundo sabe quién es y qué tareas realiza. Sobre las dificultades y alegrías del trabajo. Desarrollador full-stack hablaremos ahora.

¿A quién se le puede llamar desarrollador Full-stack?

Generalmente, Desarrollador full-stack es un programador que crea sitios web y aplicaciones web. Un especialista así debe saber mucho, identificarse Desarrollador full-stack Sólo alguien que sea un absoluto profesional en programación web puede hacerlo. Conseguir un trabajo así es bastante difícil y no todo el mundo lo consigue. Específicamente sobre lo que debes saber y estudiar. Desarrollador full-stack discutiremos a continuación.

¿Qué necesita aprender un desarrollador full-stack?

Si quieres dominar esta profesión, antes que nada debes saber HTML Y CSS Una ventaja, y crea tranquilamente tus propios sitios web, aunque sean sencillos (al principio). No es difícil y hemos hablado de cómo hacerlo y por qué más de una vez. Esto te llevará un mes si trabajas duro en ello.

Por supuesto, ya nadie escribe código ni crea sitios web sin complementos. HTML Y CSS - HTML5 Y CSS 3. Adiciones muy simples, pero extremadamente efectivas y útiles que le permiten evitar escribir cientos de códigos en javascript, y también permite un diseño adaptable, sin el uso de varios tipos de complementos. Acerca de HTML5 Y CSS 3 También se ha dicho mucho. Puedes dominarlos en un período de tiempo incluso más corto que HTML Y CSS.

EN Desarrollo completo solo necesitas un lenguaje de programación javascript. Este es uno de los componentes más importantes de esta profesión. Debes conocer y escribir muy bien este idioma. Una gran cantidad de código escrito por ti y también varios tipos de ejercicios te ayudarán a dominarlo. En general, se necesita mucha práctica, cuanto mejor lo sepas javascript, más probabilidades habrá de que seas elegido.

Para simplificar el código y reducir la cantidad de trabajo realizado por un especialista, se creó una biblioteca para js con derecho jQuery. Hay que tomarlo con la misma seriedad que el js, porque esta biblioteca abre enormes posibilidades, simplifica enormemente la complejidad y la cantidad de trabajo, y lo mismo puede decirse del código.

Además de todo lo escrito anteriormente, también necesitarás jax. Será necesario para que el intercambio de datos entre el servidor y el usuario se produzca “en segundo plano”. Por ejemplo: usted, estando en una pestaña del sitio, fue a otra haciendo clic en ella, en sitios que no utilizan jax Habrá un clic normal en el enlace, pero en otros sitios donde se aplicará, el contenido simplemente cambiará. Sin largas descargas ni nada más, todo es rápido y fluido. Esto ayuda a optimizar la página y hacer que el sitio funcione rápidamente.

hablando de la biblioteca jQuery hablamos de simplificación. Vale la pena decir aquí sobre Hablar con descaro a. Pero no se utiliza para js, y para CSS. Más abstracto codigo css y su simplificación, para eso está este metalenguaje.

Ya que estamos hablando de Hablar con descaro a, entonces sería un pecado no decir algunas palabras sobre Menos. Complemento para CSS, ampliándolo con capacidades dinámicas. Menos creado en base a Hablar con descaro a y su sintaxis SCSS.

Ahora pasamos a la parte más difícil, a saber: PHP. El lenguaje de programación en sí no es complicado, pero en el contexto de todo lo que hablamos hoy: PHP parece más complicado. Lo necesitará para muchas tareas. Desde crear un motor para un sitio web hasta crear el tuyo propio CMS.

Aquí vale la pena mencionar el trabajo con bases de datos, más específicamente el trabajo con mysql. Nada complicado, todo esto se estudia junto con PHP, pero por muy fácil que sea, es sumamente importante y necesario.

Muchos desarrolladores lo omiten o lo conocen superficialmente, cometiendo así un gran error. Estamos hablando ahora, por supuesto, de XML. Esto es muy similar a HTML lenguaje de marcado, pero de ninguna manera son intercambiables. Resuelven problemas completamente diferentes. Mismo XML diseñado para almacenar y transportar datos, cuya tarea principal es también qué son estos datos.

Lo último que debes saber y poder utilizar Desarrollador full-stack- Este CMS. Los motores listos para usar, como los llaman los programadores y desarrolladores, son necesarios principalmente para aquellos que no saben cómo crear sitios web manualmente, o si una persona no está interesada en esto, no tiene tiempo, etc. Es muy fácil dominar cualquiera de ellos y se puede hacer en una semana. Los más populares son: WordPress Y Joomla.

Resultados

Hoy nos familiarizamos con la profesión. Desarrollador full-stack y aprendió qué tareas realiza, qué debe saber y poder hacer. Por el momento, este es un trabajo común y cada día hay más vacantes. Por supuesto, hablamos de todo lo que debes saber. Desarrollador full-stack, pero esto requerirá más de un artículo, y lo principal es que siempre debes estar al tanto de las actualizaciones, leer y aprender cosas nuevas todos los días. En general, para desarrollarse. No hay otra manera, porque quien no se esfuerza por más se queda sin nada. ¡Buena suerte en tu futuro trabajo!



¿Te gustó el artículo? Compártelo