Mi experiencia con Php y Ruby on Rails
Actualmente el desarrollo de aplicaciones web vive un proceso en el que la mayoría de los usuarios puede crear contenido y esto deja un poco a un lado a las aplicaciones de escritorio, yo considero que las aplicaciones de escritorio han sido muy importantes desde hace mucho tiempo y han servido para ayudar a muchas personas, actualmente se siguen utilizando, pero las aplicaciones web han ido ganando terreno debido a que no es necesario descargar la aplicación para poder ser utilizada, es decir, en la mayoría de los casos solo se necesita tener una conexión a internet para poder ingresar la aplicación.
Entonces, ¿Qué hace que una aplicación web sea rentable? El hecho de que una aplicación web tenga reconocimiento se debe a distintos factores, entre los que yo considero los principales están el precio y la facilidad para conseguirlo, las herramientas utilizadas y con ello la seguridad que implica utilizar la aplicación y la calidad con la que la aplicación puede trabajar con distintos usuarios, lo que nos lleva a la siguiente pregunta ¿Cuáles son las mejores herramientas web para utilizar y desarrollar una aplicación de calidad?.
La pregunta anterior puede ser un tanto ambigua ya que puede variar de acuerdo al nivel de habilidades de los desarrolladores así como factores externos, como la calidad del internet, las versiones utilizadas y la forma en la que el usuario final al que va dirigido utilice la aplicación.
Hasta el día de hoy he utilizado pocas herramientas (del total que existen) en desarrollo web, sin embargo, me he dado cuenta de la curva de aprendizaje que les tuve que empeñar y las ventajas y desventajas con base a mí opinión y experiencia, por lo que en esta ocasión voy hacer énfasis sobre dos herramientas para desarrollo backend en web, PHP y Ruby haciendo uso de un framework como Rails.
Primeramente voy a hablar de Php, ya que fue el primer lenguaje que utilicé como lenguaje de backend. Este lenguaje me fue muy útil al ser la primera vez que trabajé con una herramienta de backend, puesto a que utiliza sentencias de una forma similar como lo haría en SQL, por lo que es una gran ayuda para aprender instrucciones de SQL. Una de las ventajas que yo le vi a este lenguaje de programación fue la facilidad de instalación dentro del servidor, ya que por lo general los servidores ya tienen pre-configurado Php, aunque está abierto a configurarse manualmente para conseguir mayor seguridad.
También me di cuenta que tiene una amplia comunidad activa y por lo tanto un sinnúmero de referencias y guías en internet, cabe mencionar que Php es de código abierto lo que lo hace completamente gratis. Otra de las capacidades de Php es que fue para mí fácil insertar su código dentro de HTML, lo que permite convertir una página web estática existente a una nueva y más dinámica.
Las desventajas (problemas) que yo tuve con Php es que solo es una herramienta de backend, por lo que si el usuario quiere mejorar el Frontend de la aplicación deberá tener conocimientos de algún otro lenguaje como Javascript o Jquery, en este punto es importante mencionar que no existe una estructura MVC (Modelo-Vista-Controlador) que seguir, dicho lo anterior, si un desarrollador necesita utilizar la estructura MVC deberá implementarla por su cuenta. Otro de los problemas de los que me percaté de Php es que si no se configura correctamente, existe la posibilidad de dejar abiertas muchas brechas de seguridad.
Ahora voy a describir mi proceso de aprendizaje utilizando Ruby on Rails (RoR), para comenzar, se me hizo complicado instalar Rails tanto en mi computadora local como en el servidor para alojar la aplicación, ya que en mi caso tuve que hacer uso de la línea de comandos para actualizar las versiones de Ruby, que es base para instalar Rails, y para hacer compatible Rails y que no existiera incompatibilidad con las herramientas instaladas para su uso.
Entre las “desventajas” o problemas que tuve al utilizar RoR fue conocer el funcionamiento de este y adaptarme al uso de la arquitectura MVC que Rails tiene bien diseñada e implementada en su estructura principal, puesto a que nunca había practicado el uso de esas técnicas y fue algo completamente nuevo para mí.
El hecho de que Rails juegue el papel de framework significa que el desarrollador no tiene que preocuparse por levantar una aplicación desde cero, Rails tiene incorporado sentencias que facilita las instrucciones básicas y con ello estándares que se sugieren seguir para lograr el objetivo deseado, es importante señalar que existe una gran cantidad de gemas, librerías o módulos, que extienden la funcionalidad de Rails.
Además es importante señalar que la comunidad de RoR está creciendo día con día, una parte de eso se debe a que Rails posee un API estable en donde se puede consultar cualquier funcionalidad de Ruby y resolver las dudas que uno tenga.
A manera de conclusión, puedo decir que utilizar cualquiera de estas dos tecnologías depende del desarrollador y del alcance del proyecto, es decir, si eres un desarrollador que apenas esta empezando y el proyecto con el que trabajas es algo “pequeño” y no tan complejo yo recomendaría Php, por ejemplo si se trata de un proyecto en el cual el objetivo sea crear un portal web o parecidos, yo lo desarrollaría en Php ya que me fue más fácil aprenderlo e insertarlo en HTML. Por otro lado, si se tratase de una aplicación web en donde se requiera establecer medidas de seguridad y hacer el código más escalable, la opción más viable es Ruby on Rails, a pesar de que también esta aplicación puede ser construida usando Php, la idea de un framework es facilitar muchas de las acciones básicas, como la seguridad, consistencia dentro del código y hacer uso de la arquitectura MVC, en esta caso yo recomendaría Rails en aplicaciones como tiendas en linea o en proyectos que sean muy grandes para evitar programar todo desde cero y tener fallas en configuraciones. Estas recomendaciones las hago con base en mi opinión y la experiencia utilizando cada una de estas herramientas así como la experiencia de mis compañeros de clase con lo que he compartido puntos de vista sobre estas tecnologías.