¿Alguna vez te paso que no sabes que elegir al momento de iniciar un proyecto? No? Bueno a mi si, y acá les voy a dejar un post que habla un poco sobre esto.
Cuando queremos iniciar un proyecto necesitamos si o si elegir en que tecnología lo vamos a construir, que base de datos vamos a usar e incluso donde lo vamos a alojar.
Todas estas decisiones pueden afectarnos en el futuro, a veces con unas semanas de demora, meses e incluso años.
Pero, con mi experiencia de romper cosas, tengo algunas preguntas que pueden ayudarnos a definir esto:
¿En qué plataforma va a ser?
¿Cuánto tiempo tenemos?
Mi equipo: ¿En qué tecnología es fuerte?
Soy de los que creen que si tomamos las decisiones bien desde el principio, el camino hacía lograr cumplir con nuestro proyecto va a ser divertido.
Vamos a intentar responder las preguntas una por una.
¿En qué plataforma va a ser?
Vamos a dividirla en otras más para poder guiarnos mejor:
¿Lo vamos a hacer nativo para celulares? Podemos programarlo en Kotlin (Android) ó Swift (IOS) y además tener una performance excelente en cuanto a rendimiento de hardware.
¿Va a ser una app multiplataforma? (Android, IOS, Web) Usemos React Native , Ionic o Flutter. Podemos desarrollar para todas con un solo lenguaje (ó casi)
¿Es solo web? Don’t worry hagámoslo con Angular , React, JavaScript, HTML y CSS ó incluso Flutter también.
¿Una aplicación de escritorio? Bueno, usemos .NET, ElectronJS ó Python.
Todo esto se puede combinar con lenguajes BackEnd como por ejemplo: Python (Flask), C# (.NET), Java, PHP, Golang, Rust ó JavaScript/TypeScript (Node.JS).
Y también tenemos parte Base de Datos como SQL, MongoDB, Firebase, MySQL, PostgreSQL, etc.
Siempre hablando de proyectos dentro de lo común del mercado, hoy en día también se pueden encontrar aquellos que necesitan análisis de datos y/o inteligencia artificial con R y Python por ejemplo.
El stack mas popular para web (hoy en día) podría ser MEAN (Mongo, Express, Angular y Node.JS) ó MERN (Mongo, Express, React y Node.JS) pero también se puede encontrar mucho con .NET ó Golang reemplazando a Express y Node.JS.
Obviamente todos estos lenguajes van evolucionando y mejorando con el paso del tiempo e incluso nacen nuevos que superan en popularidad y performance a estos.
Después de todo esto tenemos otra pregunta importante:
¿Dónde va a estar nuestro proyecto? Si fuese una aplicación de celular ó de escritorio no habría problema porque vive allí dentro, el tema surge cuando no lo es, por ejemplo un sitio web.
Un sitio web debe estar alojado en algún lado, allí tenemos dos opciones: Hosting (GoDaddy, Hostinger, etc) ó Nube (Azure, AWS ó GCP por ejemplo)
Esta decisión la tomamos en base a cuanto queremos escalar/configurar/gastar. Si elegimos la nube tenemos mayor escalabilidad en cuanto a usuarios pensando siempre a futuro, pero a veces puede llegar a ser costoso. En cambio un host es lo opuesto y además no tenemos tanto control de lo que pase allí.
¿Cuánto tiempo tenemos?
Esta pregunta es difícil de responder.
¿Cuánto tiempo tenemos para un MVP?
¿Cuánto tiempo tenemos para tener un producto completo?
¿Necesitamos aprender sobre alguna tecnología?
¿El análisis del proyecto esta completo?
En base a estas preguntas podemos saber que tecnología usar. Si tenemos poco tiempo nos conviene usar algo que ya hayamos usado ó con alguna tecnología en la que nos sintiésemos cómodos.
Si el análisis de los requerimientos del proyecto esta completo nos va a ayudar a elegir de manera más fácil y acertada. Por ejemplo, en base al nivel de usuarios que se esperan, procesamiento de información o requerimientos, etc.
Mi equipo (ó yo): ¿En que tecnología es fuerte?
En este punto deberíamos saber el tiempo que tenemos. En base a esto podemos optar por elegir una tecnología en la cual nosotros y nuestro equipo nos sintiésemos cómodos ó, en caso de tener tiempo, optamos por algo innovador y nos arriesgamos.
Algo que esta bueno, cuando se trabaja en equipo, es que todos den su punto de vista acerca el proyecto y la tecnología que se propone, de esta manera quizás se pueda salir algo mejor aún y que todos estén contentos con esto.
Conclusión
Estas preguntas quizás puedan ayudarlos a elegir ó por lo menos llevarlos a un buen rumbo para que puedan elegir la tecnología que tienen pensado para su proyecto. Hoy en dia mi stack favorito para muchas cosas en MEAN aunque Python y .NET siempre me tientan.
Espero que les haya gustado, nos vemos la próxima.
Recomendación de la semana
Hoy les traigo un Newsletter de un amigo dedicado a los nerds como yo:
Se los super recomiendo!