Día con día, las tecnologías avanzan más y más rápido, cada vez existen más herramientas para hacer lo mismo, la competencia entre ellas se vuelve más feroz y la lucha por la supervivencia recae nuevamente en las leyes de la vida (sobrevive el que mejor se adapta al cambio). Pero en toda esta lucha hay alguien que está en medio y ¿sabes quién es? ¡TÚ!
Con el avance de las tecnologías cada vez hay más cosas que un programador debe de cubrir para poder desempeñar con efectividad su trabajo, cada vez es necesario saber más frameworks, API´s, lenguajes, etc. Es común recordar los viejos tiempos cuando solo era necesario crear un formulario en Visual Basic, un Applet de Java o una simple pantalla en C/C++, te conectabas a una base de datos (o archivos de texto L) y listo, tenías una aplicación completa funcionando. La instalabas en los equipos del cliente y todos felices.
Triste o afortunadamente (depende como lo veas) crear una aplicación WEB hoy en día, requiere al menos de saber HTML, CSS, JavaScript, Base de datos, REST/WS mas el lenguaje de programación de preferencia y sin contar que requerimos de un servidor de aplicación o donde montar la página, frameworks de persistencia ORM, MVC, AJAX, WebSocket o todas aquellas monerías que le quieras poner para que sea lo más atractivo posible. Y claro que estamos dejando por fuera el Arte (diseño gráfico) que hoy en día es casi obligado.
Pues bien, debido a toda esta gran cantidad de tecnologías es muy difícil que un programador las abarque con un nivel aceptable, lo que obliga a los programadores a centrarse en una parte del desarrollo y es aquí donde entra en juego de los Roles de los BackEnd y FrontEnd Developers.
FrontEnd Developers:
Se le conoce como FrontEnd developers a aquellas personas que se encargan del desarrollo de la presentación, es decir, lo que ve el usuario. Son los encargados de crear las páginas, hacerlas atractivas, dinámicas y fáciles de utilizar. Tiene bastante experiencia en tecnologías de la WEB como HTML, CSS, JavaScript, pero también dominan tecnologías como Angular, JSF, React, Spring MVC y un largo etcétera.
Es común crear el estereotipo del FrontEnd developer como aquellas personas muy alineada, de aspecto agradable y siempre acompañado de su Mac book viendo imágenes y dibujando en su libreta. Pero como les comento, esto es solo un <<Estereotipo>>
BackEnd Developers:
Por otro lado, tenemos los BackEnd developer, son aquellas personas que tiene mucha experiencia en desarrollo de componentes de software, crean los componentes que encapsulan la lógica de negocio y gestionan las transacciones para actualizar los diversos sistemas, además son los que crean los servicios para ser consumidos desde el FrontEnd. En pocas palabras, el BackEnd hace todo lo que no se ve. Los BackEnd developer dominan tecnologías como Bases de datos, algoritmos, WebServices/REST y diversos frameworks de desarrollo.
Al BackEnd developer lo suelen estereotipar como aquellas personas desalineadas, rodeado de computadores y comiendo una pizza. nuevamente es solo un <<Estereotipo>>
Rivalidad
Por lo largo de la historia ha existido una curiosa rivalidad absurda, donde el BackEnd se cree superior al FrontEnd y viceversa, en realidad algo que no logro comprender, pues en realidad las dos caras de la moneda son igualmente importantes. Te imaginas la aplicación más bonita del mundo, con la mejor usabilidad, totalmente intuitiva, pero que a la hora de guardar truene por el BackEnd. O por otra parte, la aplicación más segura, con los mejores algoritmos y una super velocidad de respuesta pero más fea que el payaso eso.
La verdad es que por mucho tiempo los BackEnd developer eran mucho mejor pagados, la brecha salarial que existía era muy considerable, lo que provocaba que los BackEnd se sintieran superiores a los FrontEnd. Sin embargo, hoy en día las empresas se preocupan más de cómo se ven las aplicaciones que ha hecho que los FrontEnd sean más cotizados que hace unos años atrás, de tal forma que me atrevo a decir que hoy por hoy, los sueldos son prácticamente equivalentes.
FullStack developer
Finalmente tenemos los FullStack developers, los cuales son personas que cumplen con los dos perfiles anteriores, BackEnd y FrontEnd. Estas personas son mucho más cotizadas en el mercado laboral, debido a que pueden desempeñar ambos roles y por lo general son personas con mucha más experiencia.
Para llegar a ser un FullStack developer no es necesario ser un erudito en todas las tecnologías que hay en el mercado, sino más bien dominar a la perfección un Stack tecnológico. Se conoce como Stack a un conjunto de tecnologías empleadas para el desarrollo. Los stack más famosos son LAMP (Linux, Apache, MySQL y PHP) y MEAN (Mongo, Expres.js, Angular y NodeJs), MERN (Mongo, Express, React y NodeJS) así, cada empresa puede implementar su propio Stack, por lo tanto, para convertir en un FullStack developer es recomendable conocer al menos un Stack y poderte desempeñar bien en él.
Mobile developer
Si ya sabes que es el FrontEnd y BackEnd developer, la pregunta es… donde quedan los desarrolladores de Móviles, mucha gente, los clasifica como FrontEnd, ya que se encargan de desarrollar la parte la app que al final del día se conecta con una serie de servicios expuestos desde el BackEnd. Sin embargo, yo me atrevería a crear una Role especial para ellos, ya que las tecnologías y las problemáticas que hay que resolver en una app web son muy diferentes a las de móviles, ya que en los móviles interactuamos con el hardware, notificaciones, nos preocupamos por el uso de datos y ancho de banda, seguridad, etc.
En esta disciplina yo incluiría el desarrollo para IOS, Android y aplicaciones hibridas con todo lo que conlleva.
Conclusiones:
Dado este análisis, podrías pensar que ser un FullStack developer es lo mejor, pues el sueldo promedio es más alto, conocen una gama más grande de tecnologías y se pueden adecuar a cualquier rol. Sin embargo, esto no es siempre cierto, ya que lo más importante es lo que te gusta hacer. Ya que, si eres espectacularmente bueno en algo, vas a superar al que sea solamente bueno en todo. Es por eso que yo pienso que deberás pensar que te gusta hacer y sobre actuar, no solo dejarse llevar qué rol es mejor visto o mejor pagado.
Buenas Oscar. Y los que llevamos años siendo Full Stack Developer pero estamos centrados en Windows Forms + SQL Server, no tenemos acrónimos como LAMP o MEAN? Quiero decir, LAMP o MEAN son para compañeros centrados en tema Web, pero los que aún estamos desarrollando aplicaciones de escritorio yo jamás he visto siglas o algo que nos encapsule.
Te suena alguno?
Acabo de descubrir tu blog y llevo unas cuantas entradas leídas. Redactas fenomenal, sigue así.
Saludos!
Hola Ferran, primero que nada, quiero agradecerte por seguirme en el blog, verás que no te arrepentirás.
Ahora bien, con respecto a los acrónimos, la verdad es que solo se dan a conocer los más famosos, como los que acabas de mencionar, si en embargo también es válido que tu inventes el tuyo, por ejemplo, JSM se Java + Spring + Mongo. Los acrónimos son una forma de resumir el Stack utilizado y empiezan a tener sentido cuando se estandarizan, ya que cualquier persona puede saber que tecnologías son con tan solo nombrar el acrónimo. Con respecto a los acrónimos para el desarrollo de escritorio, la verdad hora que me pongo a pensar, la verdad es que no se me viene ninguno a la mente.
Finalmente, con respecto a que trabajas con Windows Form y SQL Server, la verdad es que deberías empezar a abrir tus horizontes, pues Windows Form la verdad es que ya está algo anticuado, al menos desde mi punto de vista, podrías empezar a migrar a tecnologías más vanguardista. te dejo este link donde hablo de las 10 tecnologías que deberías de aprender este año
Si, es el problema de Windows Forms, que como tecnología está ya bastante anticuada, pero es la tecnología con la que está desarrollado el ERP de la empresa donde trabajo y bueno, está instalado a un montón de clientes.
Con el tiempo se ha convertido en un proyecto monstruoso, y migrar tal cantidad de código, proyectos y demás se les antoja imposible, así que no queda más remedio que continuar manteniendolo desarrollando mejoras y resolviendo incidencias.
Tienen versión web desarrollada con ASP .NET MVC + Javascript/jQuery, pero no es mi area ya que no domino web 🙁
Por mi parte me gustaría aprender Xamarin Forms (tengo algo de experiencia en XAML gracias a tocar WPF hace años); quizá sería la excusa perfecta para plantearles migrar el producto y, además, hacerlo multiplataforma. En fin, todo es empezar.
Me leeré tu enlace con interés.
Saludos!
Si, te recomiendo que veas React o Angular, se que va se difícil entrarle a la parte WEB, pero pues hoy en día ya es el estándar.
busco un front end
favor de comunicarse al sigueinte correo
fenriquezc@gmail.com
Suerte con la búsqueda
Acabo de descubrir tu blog y debo decir que me encantó! Seguí así, te felicito!!
Gracias Juan, me da gusto que el material te sea de utilidad 🙂