Si, hay mil maneras de hacer bien las cosas, pero también hay mil maneras de cagarla, sobre todo cuando vienes iniciando y te toca elegir la tecnología de un proyecto, te recomiendo que leas algo sobre la deuda técnica, antes de tomar decisiones sobre qué tecnologías usar.

El objetivo de un proyecto de software, es que funcione y aún más importante, que durante el paso del tiempo pueda “escalar”. Yo no conozco ningún sistema productivo altamente exigido, que durante su ciclo de vida, no se le pida más, el objetivo es siempre crecer.

Así que si quieres tener un orden al iniciar tu proyecto te puedo recomendar lo siguiente:

Ordenar tus directorios/carpetas

Por ejemplo si es una aplicación monolítica, es decir un todo en un repositorio de código, podrías optar por separar algunas cosas (Si no utilizas algún framework).

Por ejemplo:

  • src
  • assets
  • templates

Siempre es de consideración personal, si es el caso utilizar algún modelo MVC (Modelo-vista-controlador). Sea cual sea el orden de tus directorios, lo más importante lleva un ORDEN y …

DOCUMENTAR

Documentación siempre, si elegiste un orden, esta bien, respétalo y documenta todo desde su inicio hasta cualquier cambio posterior, no importa si es un proyecto de una sola persona codificando, no pierdas este objetivo.

Utiliza alguna convención de nombres como camelCase o snake_case

Define siempre una convención para nombrar a tus archivos y directorios puedes ver más aquí.

Elige las dependencias sabiamente

"No reinventamos la rueda, simplemente elegimos utilizar una ya inventada"

A la hora de cumplir ciertos requerimientos se puede elegir ciertas dependencias de terceros, recomiendo siempre tomarse un tiempo para analizar si es es la mejor opción, muchas veces puede quedar a deber cierta tecnología y reconstruir ciertas cosas es costoso, otras veces si es la mejor opción.

Siempre intento predicar, que “menos es más” y hay casos donde no todo lo resolvemos con librerías externas.

Versiona tus paquetes externos, siempre en la medida de lo posible actualiza

Si es el caso que elegiste una librería externa, debiste instalar cierta versión en tu proyecto. Esa versión se podría congelar durante el desarrollo del proyecto y cada cierto tiempo ir actualizando (Si es que el externo ofrece actualizaciones constantes), esto lo recomiendo hacer por iteraciones cortas, dependiendo la duración del proyecto.

Es excelente práctica que solo una persona se encargue de actualizar y no el equipo entero, por que en cada iteración se pueden enfocar en su codificación y no dañar el ciclo de pruebas de cada desarrollador.

De igual manera ir actualizando permitirá a proyectos largos no quedar desactualizados, me ha pasado con proyectos que duran más de 2 años, actualizarlos es un problema grande si muchas cosas no son compatibles después de mucho tiempo.

Define tu ambiente local y si se puede el productivo

Definir un ambiente productivo (aunque sea muy básico), podrá irnos dando una dimensión de cómo será en producción nuestro proyecto.

También toca definir un ambiente local con todo lo necesario para empezar a programar. Así que procura documentar claramente que necesitas para tener estos ambientes listos.

Si utilizas algo como docker para definir una infraestructura en código siempre versiona cada cambio.

Con todo esto claro podrías empezar a programar, respetando siempre algunos principios de programación como KISS y DRY.