¿Por qué a tantos desarrolladores no les gusta el desarrollo web y lo tratan como un ciudadano de programación de segunda clase?

Divulgación, estoy en desarrollo web Frontend.

Para ser sincero, creo que esto se debe a las diferencias en los problemas que se abordan en las dos corrientes de desarrollo (web) y cómo el tipo de personas con las que está rodeado ve los espacios problemáticos.

Básicamente, los problemas en la programación front end no son realmente de naturaleza intelectual. En cambio, lo que requieren es un conocimiento intensivo del dominio. Por ejemplo: cuando se le pide que implemente un gran cambio en la interfaz de usuario, un gran desarrollador de FE podrá aplicar su conocimiento experto sobre los marcos y las herramientas que pueden acelerar el desarrollo, cómo aplicarlos y si son compatibles o no (con los navegadores), o pueden sé cómo apoyarlos si es necesario.

En resumen: estos problemas son difíciles solo porque le faltan piezas de información de dominio. Suponiendo un conocimiento (casi) perfecto del dominio (navegadores, marcos, etc.), las soluciones son triviales. Si tiene una capacidad de programación intermedia y sabe css, bootstrap, jquery, gulp / grunt, babel y cómo usar Selenium y Mocha, puede crear un buen producto front-end. Si una persona que conoce estas cosas le enseña estas cosas y tiene un buen manejo de la enseñanza, aprenderá todo esto en unas pocas semanas . Esto incluye (sass / less, es5 / 6, polyfills yada yada). No hay nada innatamente difícil en entenderlos. Una vez que se pasan las palabras de moda, no hay profundidad en la complejidad de lo que hacen estos marcos / herramientas.

Lo que esto también significa es que con la capacidad de programación básica y unos pocos meses de bootcamping para obtener conocimiento del dominio, puede convertirse en un exitoso desarrollador Frontend. La única razón por la cual los desarrolladores de FE aún tienen salarios respetables en el nivel de entrada / nivel medio ($ 75,000 +), en lugar de tal vez ($ 40,000–50,000), que es lo que podría merecer este nivel de rigor intelectual, es la demanda (que diría es temporal hasta dot com 2.0)

Ergo en FE: saber más -> mejores soluciones

El desarrollo de back-end (BE) es donde enfrenta problemas que son esencialmente rompecabezas. Incluso si tiene información perfecta sobre el dominio (algoritmos + marcos), por sí solo ese conocimiento no se ocupará directamente de sus problemas.

No podrá recoger estructuras de datos y algoritmos y comenzar a aplicarlos en unos meses en cualquier proyecto que necesite escalar. Y ciertamente no obtendría resultados óptimos en términos de carga y tiempo de respuesta. Incluso los problemas de backend más triviales comienzan a volverse complejos una vez que agrega “para 4 millones de clientes activos en 4 continentes” . En general, la escalabilidad no es un requisito en FE, ya que 4 millones de clientes = 4 millones de navegadores en los que se ejecutará su FE)

Es por eso que tendrá más dificultades (no imposible) para entrar en el desarrollo de backend sin créditos universitarios en empresas exigentes (donde el backend es más que CRUD básico). La programación básica y el bootcamping no serán suficientes para resolver los problemas de backend: realmente necesitas habilidades teóricas para hacer un buen trabajo.

En BE: ser más inteligente -> mejores soluciones

Pero, por otro lado, dado que el backend normalmente no tiene la misma velocidad de desarrollo que el frontend, no necesitará 1 FE: 1BE. Como resultado, una menor demanda compensa el hecho de que menos personas están a la altura de esta tarea: los salarios de FE y BE son básicamente los mismos en este momento.

Sin embargo, creo que hay un debate sobre cuál de estos dos flujos es la base para una posición más segura post dot com 2.0. En mi opinión, FE es un lugar donde las personas de inteligencia promedio como yo pueden nivelar el campo de juego trabajando más duro. Sin embargo, también es prescindible, lo que significa que ser notado y salir de los niveles junior es de vital importancia para garantizar su futuro en el campo / lugar de trabajo.

Yo solía ser una de esas personas. De vuelta en la universidad, me llamaban “el chico de los algoritmos”. Brillaría y me sentiría totalmente en casa, ya sea implementando / adaptando algoritmos de libros de texto o explicando (como en la enseñanza) algoritmos a algunos de mis colegas (

)
Ese soy yo en el video de arriba, explicando la resolución de un examen, en portugués, en 2014, en mi universidad.

Ahora, enero de 2017, estoy llegando a tener 11 meses de experiencia profesional (en 2 compañías diferentes) como desarrollador web. Es bastante diferente, sí, pero también es mucho más desafiante e interesante de lo que uno podría pensar … En primer lugar, porque, desde mi experiencia en la búsqueda de empleo, usted solicita ofertas muy especializadas relacionadas con la ciencia, como trabajar en un laboratorio de Física como programador, o microcontroladores de programación en C ++, o es probable que usted sea un desarrollador web utilizando cualquiera de las tecnologías disponibles hoy en día para los programadores web.

Y lo importante a entender es que la esencia del trabajo de un programador no ha cambiado ni un poco. Los sistemas seguirán siendo complejos. Los requisitos seguirán cambiando. Su código aún puede afectar DIRECTAMENTE la vida de las personas. Solo cambió la plataforma de destino (web en lugar de escritorio). Pero la complejidad solo ha aumentado recientemente, y podría seguir haciéndolo en el futuro …

Por lo tanto, concéntrese en los problemas de ingeniería y programación en cuestión. Gestión de plazos, trabajo en equipo, control de versiones de sistemas que funcionan mal, etc., etc. Los verdaderos problemas de software modernos existirán y, independientemente de trabajar para la web o los escritorios, usted estará allí para abordarlos. Es por eso que su cargo es Ingeniero de Software y no desarrollador web. ¡Los ingenieros resuelven problemas reales en el mundo real!

Tal vez porque, si tiene una separación clara entre la interfaz y la aplicación de back-end, la mayor parte del “desarrollo web” es solo secuencias de comandos y cosas de diseño. Desde el punto de vista de la informática, los desafíos y el trabajo duro están en el backend … A menos que esté desarrollando aplicaciones web complejas, como “aplicaciones de una página”, no hay grandes desafíos en la interfaz de usuario …

Los desafíos en la interfaz de usuario tienen más que ver con el diseño y la experiencia del usuario, no con la informática y los algoritmos …

Las aplicaciones de back-end tienen muchos más desafíos, como arquitectura, escalabilidad, rendimiento, seguridad, integridad de datos, control de acceso, etc.

Quizás porque el desafío de construir una interfaz de usuario efectiva que cautive a los usuarios es mucho más abstracto, complejo, abierto y difícil de acordar, que los desarrolladores se quedan con cosas que saben que son más acogedoras y deterministas como la arquitectura de fondo “, donde el usuario no está involucrado “.

Es por eso que las personas más inteligentes producen el software más inutilizable. Se saltan la parte más difícil del problema y saltan directamente a la parte con la que se sienten más cómodos: trabajar con la máquina. Tratar con humanos también es .

Respuesta corta: porque es más difícil si intentas hacerlo bien.

Realmente no he encontrado que esto sea cierto.

Fui al MIT y tengo muchos amigos que son considerados programadores “brillantes” que hacen programación web. También conozco a varios programadores web que ni siquiera se graduaron de la universidad y todavía son vistos como brillantes, con gran reputación, en la comunidad de código abierto.

De hecho, en mi experiencia, especialmente como programadora, la gente desesperada por demostrar lo “buenos” que son al derribar a otros programadores es peor. No tienen la habilidad de dejar que su trabajo se defienda por sí mismo, por lo que tratan de parecer inteligentes al menospreciar a los demás. No caigas en la trampa. Cualquiera que sea grosero con su profesión sin proporcionar comentarios constructivos no merece su tiempo.

Los desarrolladores hacen cosas difíciles como crear aplicaciones utilizando uno o más lenguajes de programación en condiciones muy exigentes. Ahora, un diseñador web es una persona o el equipo que / que coloca en la página web corporativa y muestra la empresa en línea a través de Internet.

El diseño web solía ser un trabajo excelente, pero necesita mucho apoyo de los equipos de Cloud / Server / Network en una empresa. Ahora, como medida de reducción de costos , creo que la mayoría de los trabajos de desarrollo web se subcontratan.

¡Espero que esto responda a su pregunta!

Probablemente la misma razón por la que a Nikola Tesla no le gustaba Thomas Alva Edison .
Los desarrolladores como Nikola Tesla están a la vanguardia de la innovación en el segmento de computadoras. Durante su tiempo, nadie se dio cuenta de la importancia de los inventos de Tesla. Lo mismo es cierto para los desarrolladores. Los desarrolladores no hacen cosas para las masas, sino que mejoran lo existente solo para ser utilizado por otras personas, como los desarrolladores web que pertenecen a la categoría de Edison, es decir, atienden a las masas a pesar de que tienen menos importancia en el panorama general .

P: “¿Por qué a muchos desarrolladores no les gusta el desarrollo web y lo tratan como un ciudadano de programación de segunda clase?”

Creo que esto se aplica más al desarrollo web front-end, y creo que es porque hay mucho “precocido”. No necesita ninguna habilidad de programación real para crear una página web y algún contenido. El navegador y todos los controladores de eventos ya están allí, y Javascript parece tan fácil de usar. Realmente no se necesita mucho tiempo y habilidad para poner en marcha algo básico para el front-end.

Antes de que los desarrolladores front-end me llenen de mensajes de odio, note que dije “algo básico”. La parte realmente difícil es la codificación teniendo en cuenta el mantenimiento y los cambios futuros. Parte de la razón por la que hay tantos marcos para el front-end es que es muy difícil hacer las cosas bien, mantenerse limpio, pero aún así ser algo modificable. Además de eso, el front-end debe verse bonito. Grandes compañías como Google y Facebook han elevado el listón de lo que es “aceptable” o “normal”. Debido a que las cosas cotidianas como el correo electrónico o el intercambio de fotos tienen páginas web agradables y elegantes, esperamos que otras cosas más “importantes” tengan buenos diseños y funcionen sin problemas.

Es mucho más difícil de lo que algunos desarrolladores se dan cuenta. Aunque puede que no sea tan complicado como algunos otros aspectos del desarrollo, no es menos importante o difícil.

Creo que, en términos muy simples, tiene que ver con querer resolver problemas más complejos que construir una página web utilizando tecnologías más complejas que HTML. Sin embargo, esto es probablemente en parte histórico, ya que las tecnologías web se vuelven más capaces a medida que pasa el tiempo.

Pero, a quién le importa lo que piensen los demás si eres bueno en lo que estás haciendo y te gusta.