¿Cuánto gana un programador full stack? ¿Qué tiene de malo ser un desarrollador full stack? Trabajar con datos

Hemos publicado un nuevo libro, Marketing de contenidos en redes sociales: cómo entrar en la cabeza de sus seguidores y hacer que se enamoren de su marca.


desarrollador fullstack es un especialista general. Sus tareas incluyen la creación independiente de sitios web y aplicaciones web: desde el diseño y la interfaz de usuario hasta la parte del servidor. Es casi imposible dar una definición detallada del trabajo de un especialista determinado, qué debe saber exactamente y qué habilidades debe poseer. No todas las personas pueden realizar las funciones de programadores full stack.

¿Quién es un desarrollador Fullstack?

A pesar de la dificultad de definir toda la gama de responsabilidades, existe una opinión generalizada sobre cómo designar programadores full-stack: especialistas que sean capaces de crear un producto completo a partir de un patrón de diseño de interfaz de usuario que cumpla con requisitos mínimos pero suficientes (para satisfacer las necesidades de los usuarios de recursos web).

Un chiste común entre los profesionales es que esta persona es la que intenta todo a la vez, pero no sale nada. A pesar de que esto es solo humor profesional, hay algo de verdad en esto: un programador full stack trabaja solo en todas las etapas del diseño e implementación de un proyecto, por lo que a menudo simplifica mucho, comete errores, pero, como regla general, siempre vuelve a ellos después de probar y ejecutar un recurso o aplicación web.

Un desarrollador fullstack combina responsabilidades de redacción de front-end y back-end. Tiene una gran cantidad de habilidades y puede abordar un proyecto de forma independiente, sin involucrar a especialistas adicionales, ya sean diseñadores de UI o UX. En particular, puede:

  • Gestionar el almacenamiento de toda la información ubicada en el sitio.
  • Trabaje con páginas HTML, imágenes, archivos, flujos de medios y otros datos.
  • Tiene un sólido conocimiento de la ingeniería de sistemas y puede aplicar las habilidades científicas, de ingeniería y de gestión necesarias para traducir las necesidades de un cliente en una descripción de la configuración del sistema.
  • Si es necesario, puede actuar como desarrollador de aplicaciones móviles o recursos web. Para ello, debe poder manejar varios lenguajes de marcado, bases de datos, editores gráficos, diseños y plantillas ya preparados.

Vale la pena señalar que para un desarrollador full stack no es necesario ser profundamente profesional en todos los campos relacionados y tener un conocimiento detallado de las tecnologías: en primer lugar, simplemente no necesita tal conjunto de datos y, en segundo lugar, es casi imposible. para combinar esto en una sola persona. Le basta con conocer los principios básicos de los programas y también poder aplicarlos en la práctica.

Ventajas y desventajas

En primer lugar, los desarrolladores Fullstack pueden ponerse manos a la obra rápidamente y crear un prototipo de producto en un tiempo relativamente corto. En comparación con los especialistas de front-end y back-end, tienen un conocimiento más amplio, gracias al cual constantemente tienen su propia opinión sobre los temas del proyecto actual; no necesitan buscar ayuda de colegas de otras áreas del desarrollo web. Por el contrario, si el equipo tiene un stack completo, es capaz de interactuar con todos los participantes del proyecto, reduciendo así el tiempo de trabajo y los costes técnicos de los canales de comunicación.

Además de las ventajas, también existen desventajas. En particular, estas personas casi nunca son especialistas en una sola cosa, a diferencia de sus colegas que tienen conocimientos y habilidades altamente especializados. Por supuesto, pueden profundizar en un estudio detallado del tema, pero esto, por regla general, no les reportará ningún beneficio, ya que el conocimiento en un solo área les resulta prácticamente inútil. Tampoco existe un área de responsabilidad claramente definida. Es por eso que, si surge algún problema, la necesidad de solucionarlo recae sobre el desarrollador Fullstack, incluso si fue causado por otro especialista. Como resultado, a menudo se abusa de este hecho.

Cómo convertirse en desarrollador Fullstack

Una persona puede ser considerada profesional solo si tiene un conjunto suficiente de conocimientos y habilidades para trabajar con tecnologías básicas para crear recursos y aplicaciones web de manera efectiva.

La primera etapa de la formación debe comenzar con los lenguajes de programación. Basta con estudiar uno en detalle, por ejemplo, JavaScript, PHP o Python. La mayoría de los proyectos estarán relacionados con ellos. Por supuesto, no todos tendrán demanda, pero el usuario debe tener conocimientos básicos sobre cómo estructurar, diseñar, implementar y probar un proyecto.

El segundo paso es el uso de marcos. Cualquiera que sea el lenguaje de programación elegido, irá acompañado de funciones avanzadas adicionales de la plataforma de software de código abierto Spring, Hibernate, etc.

Independientemente del propósito del proyecto, necesitará una base de datos y un almacenamiento en caché para luego poder almacenar una gran cantidad de información diversa. El especialista debe comprender uno o más sistemas de gestión de bases de datos y poder utilizar su potencial. Los DBMS recomendados incluyen MySQL, Microsoft SQL Server, etc.

¿Qué significa ser desarrollador Fullstack?

Como se señaló anteriormente, un programador full stack no delega sus poderes a otros especialistas, sino que realiza todo el trabajo de forma independiente. Por lo tanto, tiene una gran cantidad de conocimientos diferentes.

  1. Administración de servidores. Un desarrollador fullstack debe tener conocimientos básicos de servidor. Esto incluye: administrar un conjunto de herramientas de software que controlan y filtran los paquetes de red que pasan en diferentes niveles; conectarse a servidores remotos a través de una terminal donde no existe una interfaz gráfica de usuario; Gestión de software multiplataforma: servidor HTTP Apache y servidor proxy de correo Nginx. Además, debe poder crear los entornos de desarrollo aislados más seguros y confiables en plataformas abiertas para desarrollar, entregar y operar aplicaciones.
  2. Trabajar con plataformas PaaS en la nube. El alojamiento en servicios web populares puede ser necesario en cualquier momento cuando el cliente necesite cambiar de proveedor. Algunas de las plataformas más populares incluyen Google Cloud y Azure.
  3. Software y hardware parte del servicio. Además del lenguaje de marcado y el software creado para combinar diferentes componentes de un gran proyecto de software, un especialista debe poder trabajar con los servicios web Nginx y Apache y un diseño API conveniente (después de todo, la mayoría de los recursos web se ejecutan en API).
  4. Diseño. En este caso, el especialista debe poder crear un prototipo del proyecto antes de convertirlo a un formato de trabajo. En esta etapa se utiliza todo un conjunto de herramientas gráficas: editor Photoshop o Illustrator, Ngrok, etc.

Esto es sólo una pequeña parte de lo que un desarrollador Fullstack debería saber y poder hacer. Sin embargo, aquí hay algunos matices: en primer lugar, muchos profesionales eligen solo una parte de las tecnologías necesarias, ya que es imposible tener en cuenta todos los programas; En segundo lugar, incluso si el conocimiento de la mayoría de las tecnologías no convierte a una persona en un especialista altamente calificado, aún puede determinar de forma independiente qué será útil cuando trabaje en un proyecto y qué no.

En el campo del desarrollo de tecnologías de la información, la profesión de desarrollador tiene una gran demanda. Por lo tanto, la cuestión de los ingresos, cuánto ganan los especialistas en TI, es de interés para muchos.

Remuneración en Rusia

El salario medio de un desarrollador en Rusia es: 90-155 mil rublos. dependiendo del área de trabajo del especialista:

  • Java,
  • Oráculo,
  • Android, etc.

Estadísticas salariales en la capital (frotos)


  • Los jóvenes especialistas en el campo de TI con poca experiencia laboral pueden contar con el salario de un desarrollador en Moscú: 40.000-60.000.
  • los medianos pueden recibir un promedio de 90.000-120.000,
  • Líderes de equipo, gerentes de proyectos con 3 años de experiencia reciben 100.000 o más.

Vacantes abiertas en la capital e ingresos de ellas por trabajo ru (rub.):

  • En LLC PRISCO“Se requiere desarrollador de Delphi, salario: 70 000-120 000. El solicitante debe tener al menos un año de experiencia laboral y conocimientos de Firebird, Delphi, SQL.
  • EN " iCraft Óptica Nueva York"Se requiere desarrollador ERP Python Odoo, salario de hasta 120.000 Se requiere experiencia mínima de 1 año. El currículum se revisará después de completar una tarea de prueba para verificar el nivel de conocimiento del solicitante.
  • JSC "Proyectos comerciales" requiere un desarrollador RHP, salario: 80 000-120 000 Cualquier educación, experiencia laboral de al menos 3 años, tiempo completo.
  • a la empresa Aviasales Se requiere desarrollador full stack, salario desde 2000 en dólares, trabajo en o. Phuket. La experiencia requerida del solicitante es de 3 a 6 años. El trabajo es muy responsable. Este especialista debe estar abierto a nuevos conocimientos, comprender tecnologías back-end y front-end, diseño, herramientas de desarrollo web y administración de sistemas.
  • En LLC Sistemas de comunicación“Se necesita desarrollador web, salario 50.000 al mes. Registro oficial.

Ingresos en diferentes áreas de trabajo (frotar):

Una profesión bastante popular en Rusia: desarrollador web, salario - 2 5 000-150 000 por mes.

Promedio - 52 000.

Además, los salarios de los desarrolladores web varían según la región del país:

  • Región de Astracán — 132 500,
  • Región de Kaluga — 105 000,
  • Territorio de Altai - 70.000,
  • República de Altái: 60.000,
  • Región de Kaliningrado - 52.500.


Beneficio en otros países:

  • Ucrania: 4.500-55.000 grivnas. Salario medio - 8.000 grivnas.
  • Kazajstán - 60.000-300.000 tenge.
  • Bielorrusia — 550-4300 bel. frotar., en promedio - 950 bel. frotar.


Lista de precios de trabajos, cuánto cuestan en promedio los servicios de un programador web por un solo trabajo:

  • Diseño - $200.
  • Pancartas - desde $10.
  • Logotipos: desde $100, pero definitivamente necesitarás un ejemplo. Si se trata de una licitación para el logotipo de una gran empresa, el coste del trabajo puede alcanzar entre 1.000 y 10.000 dólares.
  • Creación de un recurso llave en mano desde $450.
  • Diseño HTML: $90.
  • Sistemas de gestión de contenidos: 350 dólares.
  • Programación web: 200 dólares.
  • Destello: $150.
  • Compras en línea: $750.
  • Promoción, optimización SEO - desde 300$.

Vale la pena señalar que cuánto recibe un programador depende de la cantidad de trabajo realizado. Si trabaja en equipo, las ganancias se distribuyen entre el diseñador, el gerente y otros empleados.

Ganancias de especialistas que trabajan con diferentes sistemas operativos.

Una de las especialidades TI más populares para 2018 es la de desarrollador iOS, con salarios promedio en el país en el rango de 50 a 200 mil.


La especialidad es considerada una de las más jóvenes; la edad promedio de los programadores es de 25 años.

Entre los solicitantes hay más hombres: el 94% y sólo el 6% mujeres.

El 67% habla inglés y sólo el 44% de los trabajadores en este campo tienen permiso de conducir. Los salarios de los desarrolladores de Android también son varias veces superiores a la media nacional. 110.000 rublos..

Los salarios máximos alcanzan los 170.000 mensuales.

Informe de resultados conjunto


Estadísticas salariales por ciudad:

  • Moscú - 140.000,
  • San Petersburgo - 110.000,
  • Ekaterimburgo - 64.000,
  • Cheliábinsk - 58.000,
  • Sámara - 57.000,
  • Krasnoyarsk - 57.000,
  • Kazán: 50.000.

Datos de Moscú

  • En Moscú, los especialistas sin experiencia laboral y los estudiantes de universidades especializadas reciben la menor cantidad: entre 40 y 60 mil rublos.
  • Sobre todo: 150-200 mil rublos. son recibidos por solicitantes en Moscú y San Petersburgo con experiencia laboral de al menos 3 años y experiencia exitosa en varias startups.


Salario medio de los desarrolladores de juegos en 2018 en diferentes plataformas:

  • Rusia: 25.000-100.000 rublos.
  • Moscú: 50.000-220.000 rublos.

Jerarquía de rangos de empleados y sus ingresos (rub.):

  • jóvenes: 48.000;
  • medios: 98.000;
  • líderes de equipo, gerentes, presentadores: 160.500.

Beneficio en otras direcciones populares (RUB):


  • Salario medio J ava desarrollador en Rusia es 125 000 .
  • Para un desarrollador frontend, el salario oscila entre 40.000 y 150.000 en Moscú. Interfaz salario promedio de desarrollador 110 000 por mes. En palabras simples, dicho especialista se dedica a crear una vista personalizada del sitio y su plantilla. Debe tener conocimientos en diferentes áreas: diseño, maquetación, programación.
  • Las industrias comerciales a menudo requieren especialistas que trabajen con la plataforma Pega. Salario del desarrollador de 40.000 a 200.000. Los gerentes de grandes proyectos pueden recibir 250 mil o más.
  • 40-100 mil rublos. salario mensual Destello- desarrolladores, también se les llama diseñadores flash. Su principal campo de actividad es la creación de:
    • aplicaciones interactivas,
    • juegos flash,
    • interfaces con animación, gráficos, sonido y otros elementos animados.
  • Perl- El desarrollador tiene un ingreso promedio de 95 000 . Rango salarial - de 60.000 a 180.000 en tus brazos. La característica principal del lenguaje Perl son sus numerosas posibilidades para trabajar con texto.
  • BI. revelador . Salario en Moscú – desde 70 000 de Desarrollador Junior de BI a 200 000 Arquitecto BI con más de 3 años de experiencia
  • Revelador aplicaciones moviles. El salario, como en otras áreas, depende de la experiencia y el lugar de trabajo del empleado. Recurso Supertrabajo indica la cifra del salario promedio en 110 000 rublos/mes

Niveles salariales en EE. UU.

Una profesión muy demandada en los Estados Unidos es la de desarrollador de software.


Salario medio - $73,200 por año, según las estadísticas del recurso PayScale.

  • Salarios mínimos anuales - 46,5 mil dólares.
  • Salarios máximos por año - 107 mil dolares.


Salarios en grandes empresas globales:

  1. Salario promedio para Desarrollador de software V Microsoft Corp. equivale a $ 111 000 por año. En Microsoft, el salario de un desarrollador programador puede alcanzar $ 147 000 por año. Según las estadísticas, el 80% de los empleados son hombres y el 20% mujeres.
  2. El salario promedio de los programadores de SV Amazon.Com Inc es $ 102 600 Dólares estadounidenses por año. Rango de ingresos por profesión en la empresa: $ 72 500-153 500 por año.
  3. Salario medio de los desarrolladores en una empresa de TI Máquinas de negocios internacionales(IBM) Corp. en 2017 fue $85,000 Estados Unidos por año.
  4. Desarrollador de software en Google, Inc.. gana un salario promedio de $86,000 Estados Unidos por año. El máximo que pueden recibir los especialistas de Google es $ 102 600 por año. A modo de comparación, salarios de los desarrolladores en Yandex: desarrollador de interfaces – 73.500 rublos. por mes, que es aproximadamente $15,500 por año.


Primero 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 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 en realidad 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.

Contras

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 estás al día con todas las tendencias.
Nuevamente, esto se desprende del primer punto. Por alguna razón que no entiendo, 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 algunas personas incluso escriben funciones que serían similares a sus implementaciones habituales 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 se da el caso de 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.

Ventajas

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 la interacción de 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 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, dedicar tiempo a escribir otra bicicleta es simplemente un delito en relación con la duración de tu 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 montado 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

La controversia sobre la definición de "desarrollador full-stack" no sólo provoca un acalorado debate en línea, sino que también genera inconsistencia en cuanto a cómo evaluar, atraer y contratar a dichos desarrolladores.

Y si bien sería más fácil simplemente dejar esta discusión en un segundo plano, el término "desarrollador full-stack" no desaparecerá. La demanda de profesionales con estas habilidades ha aumentado un 198% sólo en el último año. Además, la mayoría de desarrolladores de todo el mundo utilizan estas palabras para describir su tipo de actividad (según la nuestra).

En este artículo intentaremos explicar por qué existe confusión respecto al nombre de esta especialización y presentaremos el punto de vista de cada lado. También ayudaremos a los reclutadores y gerentes de contratación a ponerse de acuerdo con el equipo sobre lo que se entiende por "full-stack" y qué habilidades necesitan.

Para comprender mejor la controversia actual en torno al término "desarrollador full-stack", veremos dónde empezó todo.

El nacimiento de un desarrollador full-stack

El término "" se puso de moda no hace mucho. Una de las primeras menciones se remonta a 2008, y la primera búsqueda de “desarrollador full-stack” en Google no apareció hasta 2010. Desde entonces, la popularidad de esta consulta ha comenzado a crecer.

El “desarrollador full-stack” ha estado en las tendencias de búsqueda de Google desde 2004. El aumento de popularidad se refleja en diferentes grafías, como "desarrollador fullstack" y "desarrollador fullstack".

Pero si este tipo de actividad existía de alguna forma en la época anterior a Internet, ¿por qué no vemos que el término aumente su popularidad hasta principios de la década de 2010? Resulta que la respuesta a esta pregunta requiere una breve excursión histórica.

Historia

Finales de los 70 y principios de los 80

Antes de Internet, antes de la era móvil, normalmente una persona participaba en la escritura de un programa de principio a fin. También trabajó en hardware. La separación de responsabilidades puramente de programación era bastante rara.

Finales de los 80 y principios de los 90

La organización cliente-servidor está llegando al mundo: grupos de programadores comienzan a colaborar para crear aplicaciones. El trabajo en equipo se está convirtiendo en la nueva norma.

Finales de los 90 y principios de los 2000

Internet "viene": las tecnologías se están volviendo cada vez más especializadas y, en consecuencia, las personas involucradas en ellas están desarrollando una especialización limitada.

Mediados de la década de 2000

El desarrollo se está volviendo muy caro debido a la dificultad de gestionar un gran número de especialistas involucrados en un proyecto. Por otro lado, los sitios web 2.0 son cada vez más comprensibles y funcionan mejor.

Finales de la década de 2000

Las tecnologías relacionadas se están simplificando hasta el punto en que muchos programadores pueden volver a crear aplicaciones y sitios web de principio a fin. El nacimiento oficial del término “desarrollador full-stack”.

Principios de la década de 2010/presente

El rápido aumento de tecnologías más complejas ha hecho que la pila se vuelva más "en capas". Se ha vuelto más difícil para los desarrolladores mantener el conocimiento en el nivel apropiado. Están empezando a aparecer especialistas en front-end y back-end. El desarrollo “full stack” adquiere un significado nuevo y más amplio.

Según la historia del término, "desarrollador full-stack" ganó popularidad por primera vez a mediados de la década de 2000, cuando tecnologías más simples y optimizadas permitieron a muchos desarrolladores completar proyectos por completo. Este enfoque fue diametralmente diferente del de finales de los años 1990 y principios de los años 2000.

Con el tiempo, el cambio hacia tecnologías más complejas y más capas en la pila (principios de la década de 2010) llevó a una nueva división de roles. El trabajo backend y frontend está cada vez más separado, lo que ha llevado a la popularización de los términos "desarrollador frontend" y "desarrollador backend".

En respuesta, durante el mismo período de tiempo, el término "desarrollador full-stack" también ganó popularidad. Esto se debe a un intento de destacar a los desarrolladores que no encajan en el sistema binario de especialistas de frontend/backend. En cambio, se posicionan como una tercera generación de desarrolladores que pueden manejar responsabilidades tanto de front-end como de back-end.

Pero, por supuesto, no toda la comunidad tecnológica está de acuerdo con esta interpretación. Aunque es difícil decir cuándo comenzaron estas disputas, dos acontecimientos actuaron como catalizadores de las mismas. El primero fue un post. por el ex ingeniero de Facebook Carlos Bueno de 2010 sobre lo que es una pila completa. El segundo evento fue cuando Lawrence Gellert escuchó a un empleado de Facebook decir en una conferencia que la empresa solo contrata “desarrolladores Full Stack” (2012).

¿Qué tenemos como resultado? El acalorado debate sobre la terminología aún sigue vivo, casi 10 años después.

Las desventajas de ser un desarrollador full-stack

Los miembros del campo de desarrolladores anti-full-stack dominan el debate sobre en qué consiste (o no) un full-stack. En resumen, su argumento gira en torno a la idea de que un desarrollador full-stack es alguien con "la capacidad de gestionar fácilmente backend y frontend a un nivel superior".

Si bien existen algunas variaciones de esta idea, este grupo cree que los desarrolladores full-stack deberían poder:

  • Escriba código front-end de primera clase al mismo nivel que un especialista en front-end limitado.
  • Escriba código backend igualmente excelente al mismo nivel que un especialista en backend.
  • Administrar la infraestructura del servidor.
  • Comprender la gestión de proyectos no técnicos y los requisitos comerciales, sobre cuya base podrá coordinar su trabajo con el producto.
  • Monitorear el trabajo de QA, DevOps y temas relacionados con la seguridad.

Y si bien este grupo reconoce que muchos desarrolladores pueden realizar alguno trabajan dentro de ambas disciplinas, creen que pocas personas pueden hacerlo por igual Bien. En resumen, consideran que un verdadero desarrollador full-stack es una especie de unicornio. Y las personas que se hacen llamar desarrolladores full-stack (y hay demasiados) lo hacen sin tener las calificaciones adecuadas.

Las afirmaciones de este campo con respecto al término "desarrollador full-stack" se reducen a los siguientes puntos:

  • Esta es una forma que tienen las empresas de imponer exigencias poco realistas a los empleados. Esto les permite cargar a un empleado con una gran cantidad de responsabilidades, lo cual es beneficioso para la empresa, pero el beneficio viene a expensas del empleado. Las empresas quieren realizar mucho trabajo y mucha experiencia a bajo coste (en comparación con contratar varios especialistas).
  • Este término implica un nivel general de experiencia que la mayoría de los desarrolladores no tienen.. Un verdadero desarrollador full-stack debe tener “doble competencia” (tanto en el front-end como en el back-end) y esto es imposible dada la velocidad del desarrollo tecnológico. Cuando alguien se llama a sí mismo full-stack y tiene menos de ese nivel de experiencia, este es un uso irrazonable del término.
  • Esto fomenta un conocimiento amplio pero superficial. Un desarrollador full-stack nunca puede sumergirse ni en el backend ni en el frontend. Un desarrollador que intenta cubrir toda la pila es “un sueco, un segador y un jugador de flauta”, y no logra dominar ningún área.

Los representantes de este campo coinciden en que hay muy pocos verdaderos desarrolladores full-stack. Sin embargo, tienden a creer que las personas que se definen como full-stack son en realidad desarrolladores front-end con algunos conocimientos de back-end (o viceversa).

El caso para ser un desarrollador full-stack

El campo full-stack, a su vez, aboga por una comprensión más amplia de este término. Rechazan la idea de que un desarrollador full-stack deba tener el mismo dominio en cada capa de la pila. En cambio, necesita conocimiento práctico de toda la pila y conocimiento experto de varias de sus capas.

La definición de full-stack, con un conjunto de requisitos menos restrictivo, describe a una persona que es capaz de:

  • Hasta cierto punto, tenga confianza al escribir código tanto de front-end como de back-end.
  • Genere un producto mínimo viable por su cuenta o con un poco de ayuda de otros según sea necesario.
  • Ser un experto en múltiples tecnologías.
  • Mostrar al menos un conocimiento básico de tecnologías no especializadas.

En otras palabras, desde este punto de vista, un desarrollador full-stack no necesita ser un experto en todas las capas de la pila. Más bien, debe ser un generalista eficiente y experimentado. Debe ser una persona con una amplia base de conocimientos, especialización propia y disposición a admitir la falta de conocimientos profundos en aquello en lo que no se especializa.

Hay varias consideraciones clave en defensa del término "desarrollador full-stack":

  • Un buen desarrollador no almacena sus conocimientos. La mayoría de los desarrolladores trabajan tanto en el front-end como en el back-end. Pero para ser bueno en cualquiera de estas áreas, es necesario comprender ambas. Hacer una distinción rígida entre ellos desalienta a los desarrolladores a aprender algo fuera de su propia especialización. Pero en cierto sentido, la frontera entre backend y frontend es artificial.
  • Las empresas necesitan generalistas. Es posible que un especialista no siempre sea adecuado para todos los fines comerciales. Las pequeñas empresas y las nuevas empresas con personal y fondos limitados necesitan desarrolladores con amplia experiencia y diversos conocimientos. Es más probable que las grandes empresas deleguen el trabajo a especialistas individuales, pero también pueden atraer desarrolladores completos en el contexto de la gestión de proyectos.
  • Los desarrolladores full-stack construyen puentes entre el frontend y el backend. Los desarrolladores que se especializan en una de estas áreas ocupan sus propios nichos, pero los desarrolladores full-stack ayudan a cerrar la brecha entre ellos. Como comprenden ambas partes, pueden identificar problemas y oportunidades que pueden escapar a la atención de un especialista.

Estos argumentos demuestran que los desarrolladores full-stack no reemplazan, sino que complementan el trabajo de los especialistas de front-end y back-end. Su valor radica en su capacidad para comprender y trabajar con todo el proyecto, y para aplicar conocimientos técnicos generales a todo lo que abordan.

Esta filosofía se puede resumir en una cita de The Pragmatic Programmer:

"Cuanto más sepas, más valioso serás... mientras más tecnología conozcas, mejor podrás adaptarte al cambio".

denominador común

Para aquellos que, en medio del debate, estamos intentando descifrar el concepto del término "desarrollador full-stack", hay buenas noticias. Ambas partes coinciden en que un desarrollador full-stack debe comprender todas las capas de la pila. La principal diferencia entre los debatientes es cuánto conocimiento de cada capa debe demostrar dicho desarrollador.

Para acercarse a un denominador común, un documento publicado recientemente por la Asociación de Sistemas de Información analizó las 5 definiciones más utilizadas del término “desarrollador full-stack”. Este fue un intento de derivar una definición general del término. Esto es lo que sucedió como resultado:

“El desarrollo de pila completa es una metodología que cubre todas las capas de la pila y al mismo tiempo crea una solución completa e implementable para los requisitos comerciales. Los desarrolladores full stack tienen una amplia experiencia en todas las capas del stack y un nivel experto de conocimiento en algunas de ellas. En una pila determinada, deben poder producir un producto mínimo viable”, Hacia una definición consensuada de desarrollo completo, 2018.

Si es un reclutador o gerente de contratación y desea llevar la discusión en una dirección constructiva, puede seguir los siguientes pasos:

  • Asegúrese de que sus solicitudes sean razonables. Nadie de ambos bandos espera que un desarrollador full-stack pueda ofrecer resultados iguales a los de todo un equipo de desarrolladores. Si decide que tiene sentido que su equipo contrate a un desarrollador full-stack, asegúrese de no empezar a buscar un "unicornio" sin darse cuenta y no le pida a una persona que coincida con los resultados de muchas personas. Lo más importante es estar preparado para la posibilidad de que haya más de un conjunto de habilidades para tener éxito en este puesto.
  • Descubra cómo su empresa colabora con los desarrolladores.¿Cómo comparten el trabajo los miembros de su equipo y quién los supervisa? ¿Qué nivel de flexibilidad en términos de front-end y back-end esperan de cada colega individual, sea full-stack o no? Si los reclutadores y gerentes de contratación adoptan esta perspectiva, les resultará más fácil comprender cómo debería funcionar un desarrollador full-stack en el contexto de su empresa. Esto ayudará a que el proceso de contratación sea más eficiente.
  • Concentrarse enlas necesidades de su empresa. En general, cuanto más grande es la empresa, más desarrolladores especializados (y otros profesionales) pueden trabajar para ella. Si su equipo está creciendo, considere cómo trabajará un desarrollador full-stack en él, no solo hoy, sino también a largo plazo a medida que el equipo crezca. Un equipo de 300 personas puede tener más espacio para desarrolladores full-stack que un equipo de 8 mil personas.
  • Piense en "full-stack" como una guía aproximada. La variedad de opiniones sobre la interpretación de este término sugiere que los desarrolladores full-stack pueden ser muy diferentes. El hecho de que un candidato se llame a sí mismo no es una indicación de que sea una buena opción para usted. Por otro lado, un candidato que se autodenomina desarrollador front-end o back-end puede tener conocimientos lo suficientemente amplios como para calificar para su puesto full-stack. No ignores la terminología, pero tampoco te obsesiones demasiado con ella, deja que las habilidades de los candidatos hablen por sí solas.

¿A qué “campamento” pertenecen usted y su equipo? ¡Comparte en los comentarios!

Un desarrollador fullstack es un especialista que puede crear una aplicación web desde cero: tanto la parte cliente como la parte servidor. No todo el mundo podrá responder a las preguntas de con qué tecnologías debería trabajar un especialista así, qué habilidades tener y qué conocimientos tener. Te contamos quién es un desarrollador full-stack y cuáles son sus ventajas a nivel laboral.

Habilidades requeridas para un desarrollador full-stack

Ha pasado mucho tiempo desde la década de 2000, por lo que el LAMP estándar (Linux, Apache, MySQL, PHP), que era utilizado por casi uno de cada dos desarrolladores en aquel entonces, no es suficiente para considerarse un desarrollador full-stack. Hoy en día, un desarrollador full-stack debe tener habilidades y capacidades completamente diferentes en su cartera.

Servidor y alojamiento

Comprensión de las operaciones de servidores y hosting. Conocimientos en el uso del sistema de archivos, alojamiento en almacenamiento en la nube. Y también trabajar con la gestión del acceso a datos y recursos de red.

Trabajar con datos

Un desarrollador full-stack debe poder crear un modelo de datos equilibrado, estar familiarizado con bases de datos relacionales y no relacionales y poder trabajar con formatos XML/JSON.

Tecnologías de fondo

Esto incluye conocimiento de los lenguajes PHP, Python o Ruby, la capacidad de crear interacción cliente-servidor, desarrollo de API, trabajo con análisis y marcos relacionados.

Interfaz de usuario

Un desarrollador full-stack debe poder trabajar con diseños, dominar el diseño y conocer lenguajes de marcado. También es necesario tener conocimientos de JavaScript para crear una interfaz visualmente atractiva.

Diseño de experiencia de usuario

La capacidad de desarrollar UX es un punto obligatorio con el que cualquier desarrollador full-stack debe estar familiarizado al menos en un nivel básico. Es necesario comprender cómo interactuará el usuario con la interfaz; esta es una parte importante del éxito del proyecto.

¿Cuáles son las ventajas de un desarrollador full-stack?

Una característica importante de un desarrollador full-stack para un empleador: dicho especialista puede ocupar puestos de especialistas tanto de front-end como de back-end. Existe el mito de que Facebook reclutó exclusivamente desarrolladores full-stack en la década de 2000.

En los sitios de búsqueda de talentos, cada día aparecen entre 7 y 10 nuevas vacantes para desarrolladores full-stack, y está disponible un salario de 119.000 rublos por mes si tiene al menos un año de experiencia en desarrollo.

Obtener las habilidades necesarias

Puedes estudiar por tu cuenta para adquirir todas las habilidades anteriores, pero este enfoque no garantizará tu éxito. Una mejor manera es inscribirse en una universidad en línea.