¿Qué factores afectan la elección de marcos de backend o idiomas y bases de datos?

No hay 1 razón para elegir la pila de tecnología es “porque eso es lo único que sé”. Esta también es la razón número 1 para “por qué las cosas salieron tan mal”.

Aquí hay algunas cosas que necesita para equilibrar:

  1. Hacerlo frente a hacerlo bien. Elegir la solución más simple (y la peor posible) te llevará más lejos … en las primeras semanas tal vez. Después de eso, mejores herramientas y arquitectura comenzarán a dar sus frutos. Tendrá que decidir cuánto desorden se permitirá. Mal escrito, pero con una buena lista de productos: puede salirse con la suya. Un proceso de pago con errores: esto puede matarlo. Depende de lo que hagas. No debe permitir ningún desorden en sus funciones principales.
  2. Puedes aprender Si le digo que use tecnología con la que no está familiarizado (y demostró sus ventajas), ¿podrá aprenderla a medida que avanza? Si la respuesta es no, no tenía sentido hacer esta pregunta.
  3. La tecnología es importante, pero no lo más importante. Lo más importante, y uno de los más a menudo extrañados por los aficionados, es la arquitectura. Si tiene una visión clara de qué componentes tiene su sistema, cómo están conectados y cuál es el responsable de qué, reemplazar un bit de pila por otro más tarde será fácil. Si es un desastre gigante donde todo está conectado a todo, elegir una tecnología sobre otra no te comprará mucho. Y por componentes quiero decir más que “hay un navegador y un servidor”.
  4. Suponiendo que tiene una arquitectura adecuada, la tecnología puede hacer dos cosas por usted:
    a) Permitirle ser eficiente
    b) Salvarte de errores comunes

    La eficiencia está relacionada con la cantidad de características que necesita que proporciona algo sin poner un esfuerzo mental en usarlo.
    La seguridad puede ralentizarlo inicialmente, pero lo acelerará más tarde, cuando no tenga que luchar con las consecuencias de sus errores.
    Ahora la seguridad y la eficiencia definen un espectro: cualquier tecnología que elija estará en algún lugar entre esos dos. Por lo tanto, puede elegir la eficiencia al principio, pero pagar con seguridad por ello, o puede elegir la seguridad, al costo inicial de la eficiencia.

    Esas fueron preocupaciones que tendrá al principio. Una vez que llegue al punto en que contratará a personas, comenzará a preocuparse por elegirlas.
    Si su stack es bastante promedio (elige lo que el resto elige), lo más probable es que solo los desarrolladores promedio estén interesados ​​en trabajar en él (a menos que pueda destacarse con algo más, pero es poco probable). Obtener tecnología de punta puede sonar arriesgado, pero te dará personas más interesantes, y eso vale la pena.

    Dicho esto, podemos ir a la tecnología misma. Parece que js es lo único que sabes. Puede tener sus méritos en la interfaz, pero en cuanto al backend, es la peor opción posible. Js tiene tantos defectos que otros lenguajes utilizados en el backend no tienen, que no vale la pena usar allí. Elegir otra cosa te ahorrará una enorme cantidad de dolor. En cuanto al idioma, puede elegir uno de:

  • pitón
  • rubí
  • Java
  • ir

lo que te venga bien. Cualquiera de ellos vendrá con mejores marcos, bibliotecas más maduras, un ecosistema estable que no reinventa sus ruedas cada temporada y, en general, un mejor acceso a las mejores prácticas.

En cuanto a la base de datos: utilice la base de datos relacional a menos que tenga muy buenas razones para no hacerlo. No has mencionado ninguno.

  1. Potencia y flexibilidad: ¿puede la pila alcanzar sus objetivos de producto ahora y en 5 años?
  2. Adoptación: ¿los desarrolladores incluso quieren trabajar con esto?
  3. A prueba de tiempo: la antigüedad del marco y la probabilidad de que sea relevante en 5 años.
  4. Velocidad, eficiencia, características, bombo y seguridad.
  5. Expectativas de vida y ajuste del producto: es posible que desee crear un producto basado en la última tecnología y que dure 6 meses (como una campaña publicitaria); en este caso, 1 y 3 son irrelevantes y 2 y 4 ocupan un lugar central.

Estas son las cosas que miraría.

Si está construyendo un prototipo o experimentando con una idea, puede hacerlo sin invertir nada en una infraestructura de back-end. En este punto de su proyecto, mi opinión es que no necesita sobre-diseñar un backend (a menos que su proyecto dependa en gran medida de algunas características especiales que pueda ofrecer un back-end, por lo que deberá ser claro al respecto) .

En su lugar, considere construir su prototipo sobre Firebase, que proporciona los componentes de back-end que probablemente necesitará para que su idea despegue. Con su backend establecido, solo necesitará administrar su código de front-end. Hay un nivel gratuito generoso que puede usar indefinidamente, sin tener que renunciar a un número de tarjeta de crédito, y solo comienza a pagar si desea enviar su aplicación a producción.

El principal responsable de la toma de decisiones en la selección de plataformas para mí es si creo que yo (o mi equipo) podemos ser efectivos para entregar la solución en la cantidad de tiempo o presupuesto asignado. Si no hay restricciones explícitas para e.e presupuesto, todo se reduce a que ser más corto es mejor que más largo, pero sabiendo que la reescritura en el medio va a sacar eso peor de lo que habíamos elegido correctamente para comenzar.

Banderas rojas que busco:

  • Falta de adopción: si nadie lo está utilizando, entonces cuando tengamos problemas no habrá recursos para ayudarnos
  • Nadie en el equipo lo ha usado antes: o, lo que es más habitual, nadie lo ha usado para nada que no sea completamente trivial.
  • Tenemos dificultades para descubrir cómo hacerlo funcionar con nuestra primera opción: antes de construir algo, intente imaginar cómo lo haría; y si eso se complica demasiado, probablemente significa que debes considerar algo que dice facilitarlo, incluso si no lo has usado antes