Realicé un plan de estudios CS en la escuela de posgrado y he programado juegos 3D OpenGL, aplicaciones iOS, aplicaciones Flash, aplicaciones C ++, * muchos * scripts de Python en mi trabajo, y he creado un prototipo de juego HTML5 multijugador en tiempo real (Node.js, Socket .IO, Phaser.io), así como una aplicación web de pila completa (GoLang, AngularJS), así que he visto ambos lados de la ecuación.
¡El desarrollo web es genial! Es muy divertido y muy gratificante. De hecho, lo prefiero sobre el software compilado. Las ventajas clave en comparación con el desarrollo de software “convencional” (especialmente en el front-end) como he experimentado es esta:
- Tiempos de iteración más rápidos. Dado que el navegador ejecuta dinámicamente HTML, CSS y Javascript en la carga de la página, nunca necesita compilar su código. Por otro lado, no tiene un compilador para detectar errores, y dado que Javascript está tipeado libremente, puede encontrar más errores de tiempo de ejecución si no es meticuloso. Pero una vez que escribe algo, ¡puede verlo de inmediato!
- Muchos recursos para elegir. La parte más difícil de conseguir una biblioteca o marco para hacer lo que quieres no es encontrar una, a menudo es elegir entre la sobrecarga de opciones. Dado que JavaScript es el lenguaje de facto de la web, los recursos compartidos son enormes. La mayoría de las veces, acceder a una biblioteca es tan simple como agregar un solo enlace a su HTML.
- Abundante documentación. Puede encontrar la respuesta a cualquier pregunta JS / CSS / HTML en Stack Overflow, así como las relacionadas con marcos populares como Backbone, Angular, React, Rails, NodeJS, etc. En comparación con el software convencional, donde puede usar software de terceros muy especializado con documentación inadecuada, encontrar respuestas es mucho menos una pesadilla potencial.
- Una interfaz gráfica de usuario única, fácil y divertida. Todo lo que muestra al usuario es HTML / CSS. Para cualquier funcionalidad relacionada con el dibujo, solo necesita conocer una sintaxis muy, muy bien. Incluso hay bibliotecas que lo hacen más fácil, Bootstrap es la más notable. Comparativamente, las pantallas en Android, iOS, Windows y Mac tienen diferentes API de ventana y llamadas de extracción que pueden ser difíciles de responder de un proyecto a otro.
- Un depurador incorporado. Los navegadores web modernos resaltan los elementos de la jerarquía DOM (¡tremendamente útil!) Y el perfil deportivo y un depurador / consola fácil de usar.
- Fácil distribución Simplemente inserte su código en su servidor de producción y sus usuarios lo tendrán de inmediato.
Pero también hay un par de desventajas clave:
- ¿Puede Hack Reactor servir como sustituto para obtener un título universitario en CS?
- ¿Pasar 36 horas de crédito en el código de aprendizaje de mi colegio comunitario local es suficiente para un puesto de nivel de entrada?
- Cómo convertirte en un increíble codificador de Java
- ¿Qué saben los mejores desarrolladores del 10% que el resto no?
- Mi jefe siempre me pregunta cuál es mi objetivo para el próximo año o dónde estaré después de 5 años. ¿Cómo puedo tener una respuesta?
- Muy rápido ritmo de desaprobación de código / cambio de paisaje. Creo que AngularJS anunció la versión 2.0, una reescritura completa, poco después de que 1.0 adquiriera una adopción generalizada. Rails era enorme hace solo 5 años, pero ha perdido mucho de su entusiasmo por nuevos marcos como Node. HTML5 aún no es un estándar web completamente maduro. Las cosas se mueven mucho más rápido en el mundo web y debes prestar atención constantemente para mantenerte relevante. La otra cara es que esto puede ser muy emocionante ya que siempre estás jugando con conceptos novedosos.
- Demasiadas maneras de hacer las cosas. Existen paquetes que administran cómo instalar paquetes (npm, bower, etc.), hay toneladas de marcos diferentes con diferentes ideologías, hay toneladas de paquetes de GUI, etc. Me gusta construir manualmente mi jerarquía de archivos, y cuando trabajar en proyectos que usan Grunt o Bower o npm o ??? para administrar recursos, puede ser demasiado para manejar. A menudo, un proyecto termina teniendo cientos de archivos de cruft que no tengo idea de lo que hacen.
- Javascript es peculiar. Funciones anónimas, promesas, devoluciones de llamada, problemas de alcance, herencia de prototipos, == vs. ===, indefinido vs nulo. Como lenguaje, personalmente sentí que tenía que descubrir muchas más peculiaridades en JS que en un lenguaje compilado convencional, de tipo estático.
- Explorador de Internet.
En última instancia, cuando ha realizado un gran desarrollo de software, tiene la sensación de que el idioma, la plataforma o la biblioteca en la que programa no es muy importante. Un buen ingeniero de software podría hacer una transición bastante fluida hacia el desarrollo web (aunque lo contrario podría no ser cierto). Dicho esto, debido a las ventajas únicas en el desarrollo web que mencioné, creo que el desarrollo web es un área divertida, dinámica y entretenida para ingresar.
No me preocuparía por el pago o las perspectivas futuras. La web está aquí para quedarse y hay una escasez de buenos desarrolladores web en el front-end y back-end, y el pago es comparable o más alto (a veces debido a valoraciones locas y capital de inversión) en las compañías web que en las compañías de software más maduras y estables. .