En primer lugar, la pregunta es si debe ser una cosa u otra que tenga definiciones superpuestas. Es como preguntar si es mejor ser piloto de carreras o piloto de autos. Dado que un auto de stock se usa generalmente para competir, esto suele ser lo mismo que un piloto de autos de carrera, y sin embargo no especifica si eres el tipo que conduce el auto de stock al depósito de chatarra cuando ya no funciona .
He estado trabajando como desarrollador de software desde finales de los 90 y gran parte de ese desarrollo ha sido el desarrollo de aplicaciones basadas en la web, por lo que puedo proporcionar un poco de historia sobre el crecimiento del desarrollo web que podría ayudar a poner los términos en un poco de perspectiva. eso podría ayudarlo a comprender por qué hay tanta confusión y ayudarlo a decidir qué “camino” es para usted.
A finales de los 90, Internet finalmente despegaba. La gente lo usaba como una especie de páginas amarillas súper potentes para anunciar su empresa y sus productos, y algunas personas emprendedoras lo usaban para ayudar a educar a las personas, a menudo a un alto costo personal. La mayoría de los sitios eran “estáticos”, lo que significa que todas las páginas se veían iguales y además de parpadear el texto, no había mucho que pudiera cambiar en la pantalla. En este punto, ya había algunos sitios “dinámicos” en los que realmente podía publicar datos y obtener algunos comentarios. La mayoría de estos se realizaron con una tecnología llamada cgi que utilizaba algún tipo de script perl en el backend. Digo algún tipo porque esto es un poco anterior a mi propio desarrollo de software y no sé mucho al respecto. El punto es que, para la mayoría de las personas, un sitio web era solo eso, un sitio lleno de páginas web que generalmente se creaban en algún tipo de diseñador como Front Page o algo así, y generalmente por un vendedor creativo y no por un desarrollador.
Una de las primeras aplicaciones basadas en web en las que trabajé fue usar una tecnología llamada Active Server Pages, e incluía el desafío de explicar constantemente a los equipos de administración y seguridad que una aplicación basada en web era diferente a un sitio web. Las reglas eran tales que teníamos que obtener la aprobación cada vez que cambiaba una página web, y dado que nuestra página web cambiaba cada vez que un usuario enviaba información, esta discusión comenzó a ser tediosa de explicar.
Otro tema difícil fue la contratación. La mayoría de las personas que afirmaban ser desarrolladores web expertos eran realmente solo diseñadores. Aprendimos, rápidamente, a preguntar qué tecnologías habían usado para el desarrollo web y si lo único en la lista era la primera página, sabíamos que no sabían que no eran “desarrolladores web”, solo “diseñadores web”.
Entonces, como puede ver, un poco de confusión ha envuelto el papel del desarrollo web desde hace algún tiempo.
La realidad es que el verdadero desarrollo web es realmente otra palabra para el desarrollo de software cliente / servidor.
Ahora permítanme señalar otra distinción que ha aparecido a lo largo de los años y que probablemente continuará cambiando mientras las personas todavía están confundidas por el nombre. Desarrollo de software VS ingeniería de software.
He trabajado con muchos desarrolladores y, a medida que lo hace, descubrirá que muchos de ellos caen de manera bastante clara en uno de dos tipos diferentes, ninguno de los cuales es necesariamente mejor o peor que el otro, pero uno de los cuales es típicamente necesario para un desarrollo más complejo.
Un tipo, a veces denominado código mono, pero por lo general se les llama desarrollador, es el tipo de desarrollador que sabe cómo escribir código. Este tipo de desarrollador suele ser muy rápido en la codificación y conoce muy bien el lenguaje de software que utilizan. Sin embargo, estos desarrolladores a menudo carecen de las habilidades necesarias para resolver problemas difíciles. Si no les dices explícitamente lo que quieres hacer, te preguntarán constantemente cómo o te darán algo que no funciona.
El segundo tipo de desarrollador a menudo se paga más y en la situación correcta vale más, y esto se conoce comúnmente como ingeniero de software. Este es el tipo de desarrollador que puede ver las piezas de código existentes para descubrir qué está sucediendo y encontrar una manera de hacerlo funcionar mejor. Los ingenieros de software generalmente son más conscientes de lo que realmente sucede debajo de las cubiertas en el desarrollo. Por ejemplo, son más conscientes de si un proceso está buscando datos utilizando un índice o un escaneo, y cuál es más rápido y por qué. Estos son los tipos de desarrolladores que con frecuencia se preocupan menos por el lenguaje utilizado y están más interesados en cómo resolver un problema. Harán nuevas fórmulas si aún no existe una para obtener lo que quieren o necesitan. Estos son los desarrolladores que suelen diseñar las mejores prácticas, como la codificación SOLID. Tenga en cuenta que estos desarrolladores no siempre son los más rápidos. A menudo se quedan atrapados en la parálisis del análisis, donde conocen tantas formas de resolver un problema y no siempre pueden decidir cuál usar. Con frecuencia también se desvían de ciertos problemas difíciles. Los buenos entornos de desarrollo de software contratarán a ambos tipos de desarrolladores.
Sin embargo, ser este tipo de “ingeniero de software” tiende a ser más sobre la personalidad. Si no es quien es usted, no seguiría este camino, a pesar de la posible diferencia salarial. No será feliz tratando de cumplir con las expectativas si no es de este tipo y puede ser difícil cumplirlo incluso si lo es. Por otro lado, si este es el tipo de persona que eres, te resultará difícil ser otra cosa.
Un último consejo. Una vez que su título tenga 3 años o más, solo importa que tenga uno, no en qué se encuentre, ya que es probable que esté obsoleto para entonces. En ese punto, lo único que hace el título es pasar al secretario que está ordenando los currículums. Su experiencia contará para más en la entrevista.
Por cierto, Internet no es una moda que va a desaparecer. En todo caso, está reemplazando el viejo paradigma del desarrollo cliente / servidor.