¿Qué querés?
Empecé por el resultado que quiero: pantallas accesibles desde cualquier lado sin instalar nada, o sea web y móvil.
También quiero
- poder consultar fácil los datos
- mínima necesidad de mantenimiento, instalación y pagar servidores
- que sea muy fácil armar un ambiente de desarrollo y pruebas con tus datos, etc.
En general quiero eso para casi todos los proyectos, porque si no podés probar todo en tu compu dejás de probar, se acumulan defectos y malas decisiones y después es muy costoso o imposible no sólo de arreglar sino de hacer crecer para atender más usuarios.
¿Qué se usa?
Miro "que se usa" primero que nada para ver "que se la banca" y que no ...
También para saber cuanta gente lo mantiene, escribe documentación y está disponible para preguntarle. Cuántos tutoriales y personas que me puedan ayudar voy a conseguir, etc.
De esa gente, me fijo que les interesa: si hacerse famosos, inventar un lenguaje de programación nuevo, o hacer pantallas lindas y mantenibles ... Suelen ser gente distinta, y si elegís una herramienta que atrae gente que quiere hacer otra cosa que la que necesitas, tu proyecto se descarrila todo el tiempo.
¿Cuánto nos va a costar?
Elegí Vue porque se puede usar directamente ej. editando en github y sin instalar nada. También porque viene con vue-bootstrap que me da pantallas estéticamente aceptables sin tener que aprender css y html, y en su sitio hay ejemplos de cómo se ve y el código para copiar y editar. Funcionó, por ej. Sergio enseguida se armó una tienda que se ve bastante profesional, le agregamos autenticarse con Facebook/Gmail en una tarde, en otra consumir datos de APIs REST ...
Elegí en especial "todo javascript" porque minimiza lo que necesitamos instalar y aprender: usamos javascript en la aplicación web interactiva, y también en el servidor con express (o restify) + finale (o epilogue) + sequelizejs para proveer APIs REST para los datos que vamos a guardar en la DB.
Me fije que funciona en mi hosting baratito (USD9/mes), gratis en Heroku, en mi telefonito Android con Termux :O, etc.
Elegí en especial "todo javascript" porque minimiza lo que necesitamos instalar y aprender: usamos javascript en la aplicación web interactiva, y también en el servidor con express (o restify) + finale (o epilogue) + sequelizejs para proveer APIs REST para los datos que vamos a guardar en la DB.
Me fije que funciona en mi hosting baratito (USD9/mes), gratis en Heroku, en mi telefonito Android con Termux :O, etc.
También me fijé que el código que vamos a escribir (o generar) no queda "atrapado" en los frameworks que usamos. No se nos va el tiempo en cosas que no nos podamos llevar a otras herramientas.
¿Qué pasa si ...?
En esa misma línea me fijé especialmente que pasa si alguna de esas herramientas NO SIRVE, es vulnerable, se cae, cambia de licencia o lo que sea durante el tiempo que vamos a querer recuperar nuestra inversión, mínimo mientras dure lo que vamos a construir. Por ejemplo: hay otros servidores web muy parecidos a expressjs y podemos darnos maña para que lo que escribamos ande en cualquiera sin cambios; si usamos sólo lo que nos interesa de sequelize y hay que tirarlo nos podemos hasta hacer el nuestro, etc. Incluso si tuviéramos que abandonar nodejs podemos ejecutar nuestro javascript en otros ambientes, ej. sobre la Java Virtual Machine, hay otros interpretes, etc.
¿Probaste?
De cada parte del proyecto que me dio dudas hice pruebas por separado, por ej. de "login con Google" y "login con Facebook", etc. A esas pruebas les digo estudios: me copié de los pintores que antes de pintar ej. un pie o una mano hacían muchos dibujos vistos de distintos ángulos, posiciones, etc. para desarrollar una idea clara en su mente. Los estudios se guardan, porque así cualquiera sabe como se usa la herramienta que elegiste, que hace, que no hace y que entendiste vos cuando escribiste el software.
Además de probar "los ingredientes" probé la arquitectura, que es la decisión más complicada y donde es más fácil y más grave pifiarla! Armé un estudio que tiene todas las partes y conexiones y me fijé que se comporte como necesitamos. Es de las primeras pruebas que hago ANTES de empezar a desarrollar cualquier cosa.
¿Cómo se aprende?
Mirando lo que hacen otras personas: cuántos usuarios simultáneos soporta, cuánto les cuesta hacerlo andar, cuánto tardan en actualizarlo, cuántos son y cuánto tuvieron que aprender, etc.
Recomiendo mucho el libro sobre arquitectura de aplicaciones de código abierto (el tipo vende otros libros en el sitio, pero abajo están los capitulos) http://aosabook.org/ Son "reportajes" a los autores de software que duró años y usaron miles o millones de proyectos, ahí se ve ej. cómo les fue con sus decisiones de arquitectura cuando tuvieron que cambiar cosas importantes.
Espero seguir agregando a este artículo a medida que hagamos otras cosas.
Recomiendo mucho el libro sobre arquitectura de aplicaciones de código abierto (el tipo vende otros libros en el sitio, pero abajo están los capitulos) http://aosabook.org/ Son "reportajes" a los autores de software que duró años y usaron miles o millones de proyectos, ahí se ve ej. cómo les fue con sus decisiones de arquitectura cuando tuvieron que cambiar cosas importantes.
Espero seguir agregando a este artículo a medida que hagamos otras cosas.
0 comentarios :
Publicar un comentario