Tendría que decir “el que haces primero”.
En agosto pasado comencé una aplicación, una aplicación nativa de Android llamada RidePlan Engine Sim. Es una simulación de motor para personas que construyen motores de alto rendimiento o autos de carrera. Ayuda a seleccionar piezas que funcionen juntas, escape, admisión y combustible y estimar la potencia de un motor que está construyendo.
Inicié la aplicación de Android en agosto de 2016 y la lancé unos meses después a principios de diciembre. Desde diciembre hasta mediados de febrero trabajé para mejorarlo y desde mediados de febrero hasta mayo hice una versión web de la misma aplicación. A fines de marzo falleció mi abuelo y tardé algunas semanas en conducir hasta Texas y el progreso se detuvo al 100%, así que no cuento abril.
Para la primera versión, la aplicación de Android, tuve que resolver la lógica. Tuve que decidir qué información recopilar sobre un motor y cómo usarlo. Tenía que hacer los cálculos y hacer que todo se alineara y funcionara de alguna manera lógica. Tuve que decidir sobre gráficos e íconos, hacer los gráficos e íconos, decidir sobre las características más importantes y hacer un sitio web para comercializarlo todo.
Para la segunda versión, la aplicación web, ya había planeado gran parte de ella. No tuve que decidir qué información recopilar sobre un árbol de levas o culatas que ya tenía cuando hice la aplicación de Android. No tuve que calcular las matemáticas durante días y días y días sobre cómo calcular el tamaño del escape o las fórmulas para estimar la potencia. Yo ya tenía.
Tuve que convertir de Java con un pico de Android a Javascript con sabor a Node, pero todo es lo mismo básico. Todas las fórmulas matemáticas, excepto copiar y pegar, son más fáciles de pasar de Java a JS porque las conversiones y try / catch no existen tanto en JS, pero mostrarlo es más complicado. No usé Angular ni nada, así que supongo que probablemente me dolió al final en cierta medida. Usé jQuery.
De todos modos, todo lo que aprendí al hacer la versión de Android fue directamente a la versión web. Los principales errores, qué información se necesita para la simulación, qué colores usar e incluso los íconos y gráficos transferidos de uno a otro. Esa parte hizo que las cosas funcionen sin problemas en diferentes áreas que para la aplicación de Android.
Hacer que los dos trabajen juntos probablemente tomó una buena semana más o menos, guardo detalles sobre casi todas las partes de un motor para usar en algún momento de los cálculos para la simulación. Eso significaba que necesitaba tener el flujo de datos entre los dos para que pueda enviar un automóvil a ‘la nube’ y extraer la información de la nube para que funcione sin problemas y todo. Si guardo el tamaño de la válvula de admisión de la culata en Android, también tengo que hacerlo en la aplicación web.
El lado del servidor consiste en una base de datos y una API para hacer cálculos y guardar o leer todo. El cliente de la nube de aplicaciones comparte la API con la aplicación web.
Como la mayoría de los proyectos independientes van, todo podría ser mejor y es un trabajo en progreso.
No es una tienda web para vender productos, pero la idea es similar. El que hagas primero tomará más tiempo y tendrás que hacer que funcionen juntos si haces ambas cosas.
¿Por qué no ir con una aplicación de estilo React? Probablemente podría haberlo hecho. La razón principal por la que no lo hice o no lo he hecho todavía es porque realmente estaba viendo si alguien incluso descargaría la aplicación o si le gustaba la idea, no estaba tratando de hacer algo que 1,000,000,000 de personas usarían la semana después del lanzamiento.
No ir con React se redujo a una elección simple, no lo he usado lo suficiente como para estar realmente cómodo con él y necesitaba resultados. No quería que lo primero que hiciera con él fuera algo que alguien usara. Realmente no tuve tiempo para sentarme por unas semanas y expirar para sentirme cómodo con React, así que seguí con lo que ya sé.
¿Por qué no comenzar con la aplicación web? Sinceramente, prefiero las aplicaciones nativas, usarlas y escribirlas. Quería ver si alguien lo descargaría y lo probaría. Tuve que comenzar con uno de ellos. Quería que la aplicación de Android funcionara sin conexión a Internet, eso es realmente importante para mí.