Profesión: Desarrollador de backend

No hay razón para detenerse: 
estoy caminando, deslizándome.
Y en el mundo no hay tales picos,
lo que no se puede tomar.
V. Vysotsky


Si este artículo no fue publicado en Habré, sino en una revista educativa, comenzaría así: “Recuerda los sitios que te gustan, que tienen una navegación conveniente y una interfaz agradable. ¿Pero sabías que esto es solo la punta del iceberg ...? Pero probablemente todo lo sabe sobre Habré, por lo tanto, no hay letras. El backend de cualquier proyecto web es un sistema complejo que permite que la aplicación trabaje rápidamente, busque de manera eficiente, brinde información rápidamente al usuario, almacene datos de manera segura y, si es necesario, trabaje con otros sistemas externos. Es como un reloj suizo: lo compran por estilo y placa de identificación, pero los entendidos saben que debajo de la esfera restringida se encuentra el mundo mágico del reloj. Y los desarrolladores de backend son magos de mecanismos, organismos, intestinos, vísceras, o como lo llaman en aplicaciones web. Eh, sin letra no era posible! 

En resumen, hoy estamos analizando otra profesión en la serie "Profesión ...". Entonces, ¿qué pasa si vas a los desarrolladores de back-end? 


El backend siempre es un poco doloroso

¿Quién es?


Hablando académicamente, un desarrollador de back-end es un programador que es responsable de la lógica interna y computacional de un sitio web o aplicación web, así como de otros sistemas de software e información. Estrictamente hablando, el backend no es solo para soluciones web, está disponible tanto para aplicaciones de escritorio como móviles, como de hecho, el backend es todo lo que se relaciona con el hardware y el software del servicio. Pero históricamente sucedió que el backend y el frontend comenzaron a distinguirse especialmente claramente en el desarrollo web. Y dado que esta es también la esfera más popular en este momento, hablaremos específicamente sobre la web (para el escritorio, muchas tesis también serán válidas, pero hablaremos sobre los desarrolladores móviles en uno de los problemas por separado).

El desarrollador de back-end crea componentes y funciones que son accesibles para el usuario de la aplicación o el sitio a través de la interfaz. En pocas palabras, los patrocinadores son programadores que desarrollan todo lo que el usuario no ve y no toca directamente. Es decir, un hermoso formulario de ingreso de datos o una canasta de una tienda en línea es una interfaz y el almacenamiento de datos en un DBMS, un montón de campos de formulario de registro y una canasta, la integración con una pasarela de pago, cartas automáticas, carga y actualización de contenido es todo un back-end. Por lo tanto, si el formulario de registro comenzó a dar un error en la base de datos, la falla es ... el probador :-) (por qué, también lo diremos en la próxima serie).

De qué es responsable el desarrollador de backend:

  • asegurando el correcto funcionamiento de todas las funciones del sitio y su lógica computacional;
  • organización y trabajo con bases de datos a través de DBMS;
  • desarrollo de lógica básica y algoritmos de operación de aplicaciones;
  • API
  • integración necesaria con servicios externos;
  • Pruebas y depuración de aplicaciones y componentes individuales.

En general, el cerebro y la sangre del sitio están en la conciencia del desarrollador del backend. Simplemente no es necesario pensar que este es el dios y el rey de todo desarrollo, y el resto de los participantes en el proceso se congelan en previsión de sus acciones; esto no es del todo cierto (bueno, casi).


Los desarrolladores frontend pintan la lámpara de amarillo y frotan el back-end para que la lámpara funcione, pero solo durante el día.


Los desarrolladores de backend están sorprendidos de dónde todos tuvieron problemas con estas bombillas, recuerda que olvidó poner luz en la base de datos, se calma y culpa al front-end.

¿Dónde se necesita?


Como en el caso del desarrollo front-end, absolutamente en todas partes hay un sitio web o aplicación que interactúa con el usuario en la web. Es otro asunto que todo el mundo necesita back-end de diferentes niveles: en la oficina de una red social condicional o un gran sitio de anuncios, el desarrollador de back-end no solo debe tener habilidades básicas, sino también trabajar con cargas altas, arquitectura de microservicios y contenedorización (Docker, Kubernetes), conocer los sistemas de monitoreo ( como Zabbix, Grafana), tienen habilidades de Scrum (opcional para empresas específicas). Y para una pequeña tienda en línea, un montón de DBMS necesarios para PHP-Ajax, algo de HTML es suficiente, a veces incluso menos. Está claro que tanto los salarios como los requisitos de experiencia también son completamente diferentes. 

Tradicionalmente en Habré Careerencontramos 444 vacantes del desarrollador de back-end, que es casi 2 veces más que en la interfaz. En hh.ru, alrededor de 1800. En general, los proveedores de servicios frontales lo esperan en las estaciones de trabajo, donde la búsqueda del sitio funcionará durante dos horas :-) Pero en serio, la compañía puede tener 2-3 desarrolladores de back-end por interfaz, especialmente si Estamos hablando de aplicaciones con lógica interna compleja y lógica de negocios (tienda en línea, CRM-ERP, portal corporativo, etc.).

salario promedio


También veremos los salarios en Haber Career. Tome los datos para la segunda mitad de 2019, independientemente de la propiedad de una pila en particular. 
Nivel de especialista
salario promedio
Pasante (pasante)
35 345 rub.
Júnior
55 241 rub.
Medio
105 048 rub.
Mayor
168 350 rub.
Presentador (líder)
185 335 rub.

Si comparamos con los salarios de las licitaciones iniciales, el crecimiento es insignificante, de varios cientos de rublos a 6,000 rublos. (en el medio). Pero estos son valores realmente muy promedio, mucho depende de la pila de programación, habilidades adicionales, experiencia y el lenguaje de desarrollo principal. Por cierto, PHP está en primer lugar para todos los niveles del desarrollador de back-end, y hablaremos más al respecto.

Requisitos profesionales básicos


Los requisitos para el back-end son aún más sensibles a las características de la empresa y sus procesos comerciales que el front-end. A veces puede ser muy extraño a primera vista cosas como "comprender los principios del refrigerador de pescado como empresa", "conocimiento de los conceptos básicos de ventas o experiencia en ventas", "conocimiento brillante de JavaScript, CSS y HTML". Pero parece loco y repulsivo solo con el primer enfoque. De hecho, el desarrollador de backend está realmente más inmerso en los procesos de negocio, no solo debe desarrollar el código de acuerdo con ellos, sino también ajustar algunas cosas a tareas específicas, comprender cómo funciona desde adentro. Si nunca ha visto un embudo de ventas y no entiende qué tipo de basura es, nunca podrá desarrollar su lógica junto con filtros, cortes y transiciones (incluso si tiene excelentes especificaciones técnicas, es difícil de resolver).Bueno, en el ejemplo con "conocimiento brillante de JavaScript, CSS y HTML" todo es simple: el administrador probablemente no confía realmente en su otro desarrollador y está listo para reconsiderar su enfoque de desarrollo. Esto sucede a menudo en pequeñas empresas. 

Pero también hay un conjunto básico de requisitos que un desarrollador de back-end verá en casi cualquier trabajo.

  • Conocimiento de al menos un lenguaje de programación "servidor": PHP, Go, ASP.NET, C / C ++, Python, Ruby, Java. En algunos casos, el conocimiento de JavaScript para el backend (Node.js) es suficiente, pero esto es más un plus que un punto.
  • Conocimiento de API (REST, SOAP - cada vez menos).
  • Comprender los principios de Apache, NGINX, IIS y otros servidores.
  • Habilidades para escribir pruebas unitarias y cubrir código con pruebas.
  • Los fundamentos de la seguridad de la red y el conocimiento de las herramientas para garantizarlo.
  • Conocimiento de marcos web populares que pueden resolver los problemas de desarrollar una aplicación específica.
  • Habilidades para escribir consultas de bases de datos y diseño de bases de datos.
  • Conocer los conceptos básicos de la interfaz de usuario no es una ventaja, sino un punto obligatorio; de lo contrario, será extremadamente difícil diseñar y escribir una aplicación.

Una gran ventaja tanto para el currículum como para tu trabajo real será otro conjunto de conocimientos.

  • Administración de UNIX o conocimiento de Linux (puede usar cualquier kit de distribución).
  • Conocimiento de los principios de funcionamiento de HTTP (almacenamiento en caché, autorización, estructura de mensajes, encabezados, códigos de respuesta, etc.)
  • Modelo OSI. 
  • Las habilidades en la preparación y evaluación de los términos de referencia (TOR) es una habilidad muy importante que es necesaria para recopilar la información más precisa sobre los requisitos de software. 

"¡Sí, enloquece!" - dirás y tendrás razón. Sin embargo, tengo buenas noticias: las herramientas de desarrollo del backend cambian mucho más lentamente que el front-end, así como los requisitos quedan obsoletos por mucho tiempo. Así que lo dominé una vez y leí los resúmenes para mantenerme al día con las cosas, pero especialmente para no hervir porque el diseño plano se ha puesto de moda y la tarjeta de producto en su sitio ha estado fuera de tendencia durante dos días :)

Por cierto, hay muchos matemáticos buenos y fuertes entre los backenders, porque el desarrollo del backend es una ciencia exacta, y la calidad del resultado depende en gran medida de cómo se verifiquen los algoritmos, patrones, ciclos, funciones elegidos y aplicados.
Pasante (pasante)
Júnior
Medio
Mayor
Presentador (líder)
  1. C ++
  2. C #
  3. Golang
  4. SQL
  5. .RED

  1. Php
  2. Pitón
  3. Java
  4. Java Spring Framework
  5. PostgreSQL

  1. Php
  2. Pitón
  3. Java
  4. PostgreSQL
  5. Java Spring Framework

  1. Php
  2. Java
  3. Pitón
  4. PostgreSQL
  5. Java Spring Framework

  1. Php
  2. Java
  3. MySQL
  4. PostgreSQL
  5. Sistemas altamente cargados


+ OOP, marcos

+ OOP, marcos, Docker
+ sistemas altamente cargados, OOP, frameworks, Docker
+ Linux, OOP, frameworks, Docker
Las 5 tecnologías principales que están en demanda entre los especialistas de acuerdo con "Habr Career", la segunda mitad de 2019, el resultado final son las habilidades "adicionales".

El principio de formar la lista: los usuarios, al ingresar datos sobre salarios, indican las habilidades que tienen prioridad (¡qué pueden hacer!). Es decir, estos no son los requisitos del empleador, sino las habilidades de los especialistas en cada categoría.

Como puede ver, las empresas están listas para realizar pasantías en las universidades básicas C, C ++ y C #, pero en el futuro prefieren especialistas con un "conjunto de trabajo" de back-end. Preste atención al interés en contenedores y sistemas muy cargados. 

Por cierto, aquí hay otra hoja de ruta para ti, pero ya para el backend del desarrollador(Los otros también están en el sitio; en mi opinión, este es uno de los mejores y más sistemáticos que he visto sobre este tema). Mira, imprime y avanza hacia la parte superior del backend. 


Cualidades personales importantes


El respaldo es bueno, puede ser introvertido :) Su área de trabajo con los usuarios se minimiza, básicamente, todos los contactos de trabajo con gerentes o colegas. Estos tipos a menudo trabajan en TK y hacen todo lo que se describe en el documento o de tal manera que se obtenga una condición lo más cercana posible al objetivo (TK, ya sabes, también son imperfectos, o incluso nada ...).

Sin embargo, hay un conjunto de cualidades, sin las cuales no debe pensar en la dirección del backend. Pueden parecerte algo así como las cualidades de un empleado que necesita un "equipo joven en desarrollo dinámico", pero no, se trata de imperativos internos que ayudarán no solo a hacer bien el trabajo, sino que también lo harán con comodidad interna (y no "salir") ").

  • . , : , , , .. , — (, - - - CRM-).
  • . , , .
  • . — , , , « » , , - ( ).
  • . .
  • , . — .
  • . , . , . — . 
  • . — . , , . — ( ).
  • . , , , , , , , . , , — «» , « ».


Aquí está lo que se escribió para el desarrollador front-end.

Para cualquier programador, un inglés de al menos intermedio superior con un sesgo en inglés técnico es altamente deseable. Para que pueda leer en el original las numerosas recomendaciones de Google y otras compañías para un desarrollo óptimo (¡mucha documentación útil!), Autoestudio con la ayuda de conferencias extranjeras, comunicarse con colegas en foros, hacer preguntas y también leer libros sobre usabilidad y diseño, entre los cuales hay muy muchas ediciones geniales en inglés y aún no traducidas. 

Lo mismo es cierto para el back-end, aún más. En los comentarios al artículo anterior, notaron que el nivel de intermedio superior es demasiado grande para un especialista en TI, lo suficientemente bajo. Yo juzgo por mí mismo y por el nivel de los libros de texto. Digamos que de intermedio a intermedio superior, el paso no parece un receptor y el nivel de "chat" se toma fácilmente. Pero de superior a avanzado: el abismo, la complejidad y el vocabulario. Sin embargo, si lee las reglas y comprende que está leyendo a un nivel diferente, nadie lo llevará a tomar el examen, úselo. 

Donde estudiar


En principio, las mismas universidades técnicas, cursos, autoeducación y universidades corporativas. Pero hay matices importantes.

  • - (, , .), . - — , . , , , .. 
  • — - (, PHP Java) - -, , ( ).
  • , / . , .
  • open source , .
  • , , (-), . , , , , . , , - , - , .. ( / ). 



Es necesario elegir herramientas de capacitación basadas en el lenguaje de programación seleccionado y la pila actual en un momento particular. Las recomendaciones generales son las siguientes.

  • Un libro básico sobre su lenguaje de programación: me gustan las ediciones O'Reilly, muchas son traducidas por Peter. 
  • Del mismo modo, libros básicos en tu pila. 
  • Libros de cocina por idioma y recomendaciones corporativas, artículos de blog, etc.
  • Beck Kent, Programación extrema. El desarrollo a través de las pruebas es, en principio, un gran libro para cualquier desarrollador, pero especialmente para el back-end. Entrar en la filosofía TDD es costoso.
  • Joel H. Spolsky: puedes leer su blog, aún puedes encontrarlo en el libro electrónico de Runet "Joel sobre programación", una colección de publicaciones en ruso.
  • « », « » — «» , .
  • « » — «» , .
  • , Youtube . , , . , . 
  • webref.ru — , , . 
  • codecademy.com — , , , . 
  • ITc | comunidad de programadores : un automóvil de información organizada con cursos, conferencias y cualquier otra cosa. Lea los comentarios, determine fácilmente lo mejor para aprender.
  • Biblioteca del programador : un montón de libros sobre cualquier tema de TI.

¿Por qué me estoy centrando en los libros? En primer lugar, son profesionales y, en segundo lugar, se pueden tener a mano convenientemente, tomar notas y pegar calcomanías, volver rápidamente a la información que necesita. Este es un formato conveniente y accesible para la presentación de información para el cerebro. Si no te has probado, asegúrate de probarlo, ¡diviértete!

El futuro del back-end


El futuro del back-end se dibuja de manera bastante clara y prometedora.

  • : junior , middle , senior , , , team lead .. , , , , .
  • : - Java, /++ « », , , , .. , .
  • -: .
  • DevOps, DevSecOps, — - , .
  • , . 
  • — . - ( -).

Te diré más: si en 2020-2022 aprendes SQL y cualquier lenguaje de programación "back-end", será bueno para ti en 2032. Y el punto aquí no está en el soporte heredado, sino en el hecho de que todavía no hay una alternativa decente a la web, y si es y parecerá que el back-end tiene muchas más posibilidades de que su pila caiga en su lugar.

Lo principal que no funciona para ti es ser un desarrollador pobre y al mismo tiempo contar con algo interesante. El hecho es que cada compañía espera responsabilidad del back-end (imagine errores en el código de una aplicación bancaria, algún SIG crítico o un sistema de monitoreo en línea; puede volverse gris inmediatamente) y un enfoque sólido para trabajar. Es poco probable que sea posible filtrar o decir "está destinado", con toda la invisibilidad externa del back-end, la falla en él es más notable.

Mitos de la profesion


▍Backend es muy difícil


Un punto discutible. Algunos desarrolladores afirman que es más fácil gracias a las herramientas de desarrollo, innumerables bibliotecas y un bajo nivel de dinamismo, mientras que otros tienen miedo de abordar el backend en principio. Sin embargo, como siempre, en el medio: más bien, la pila de desarrolladores de back-end es diversa y tiene componentes heterogéneos, pero, en primer lugar, no todo lo que se necesita en el proyecto, en segundo lugar, vale la pena entender una cosa, y ahora todas las relaciones son obvias, el conocimiento ensartado en una sola varilla. En cualquier caso, debe probarse en el backend; incluso si se da vuelta y elige un tipo diferente de desarrollo, el conocimiento adquirido lo ayudará en su trabajo.


▍ El desarrollador de backend obtiene millones


Este es generalmente un mito común sobre la programación. El salario real más grande del desarrollador ruso, que tuve que ver con mis propios ojos, es de 540 mil rublos. por mes (C / C ++, proyecto extranjero, sistemas de visión por computadora, doctorado, control remoto), el segundo: 400 mil rublos. (Delphi, udalenka, empresa extranjera, alemán como nativo). El resto son muy similares a los números que tomé de "Habr Careers" para mis platos. Recibirá millones solo si converge: conocimiento brillante del idioma + talento + experiencia y habilidades únicas en una esfera estrecha + proyecto que está listo para pagar tanto. Solo hay unos pocos de estos tipos, y no diré que su destino es hermoso: el 99% de sus vidas son trabajo, el 1% es un sueño. Por lo tanto, es importante realizar otra tesis: los desarrolladores de backend tienen demanda y ganan mucho dinero, mejor que muchos especialistas. Mediovale la pena intentarlo.

▍PHP - r @ vno, PHP está muerto, PHP debe morir


¡Amo este holivar! Pero al mismo tiempo, sé cómo los principiantes le tienen miedo y tratan de sortear este lenguaje poderoso y de muchas maneras conveniente y sus marcos. El hecho es que a principios de los años 2000 y 2010, PHP era un lenguaje de programación extremadamente popular para los trabajadores independientes y otros señores de la suerte de TI. Dice un mar de malos sitios web y aplicaciones de aficionados, pero no porque el lenguaje sea malo, sino porque estos tipos no pudieron usarlo con gracia y competencia. A partir de ahí, estos mitos sobre "malo" fueron.

Por supuesto, PHP es fácil de aprender, más animado que todos los vivos, cientos de miles de proyectos, proyectos de diseño e ingenieros de proyectos están escritos y respaldados en él, y vivirá por un tiempo bastante largo. Según Stackoverflow, PHP es elegido por el 25.8% de los desarrolladores profesionales. Sí, y el lenguaje Octoverse GitHub es bastante estable en la cantidad de proyectos:


Por cierto, los programadores PHP realmente buenos son muy apreciados en todos los sentidos de la palabra.

Consejo principal


No hay mejor lenguaje para el backend, además te diré que no hay mejor lenguaje de programación para nada. Aprenda el idioma que usted o su futuro empleador futuro necesita (puede aprender esto de antemano), luego puede resolver de manera rápida y elegante las tareas que se le asignan. No debe aprender algo de tecnología del principio "todos corrieron y yo corrí". Entonces puede convertirse en un especialista verdaderamente único, pensante y que gana. Lo que dictará sus condiciones, por supuesto, lo mejor. 

Bueno, ¿hay backends experimentados entre los lectores? ¿Cómo es? ¿Por qué elegiste este lado particular del desarrollo? Ah sí: Profesión: desarrollador front-endProfesión: administrador del sistema







All Articles