¿Cómo elijo las tecnologías adecuadas para mi proyecto?

Si tratas a tu MVP como algo más que un experimento, es importante que dediques el tiempo necesario a elegir las tecnologías que vas a utilizar. Después de todo, el stack tecnológico que elijas determinará por cuánto tiempo puedes continuar el desarrollo antes de cambiar de tecnologías, arquitectura o framework.

Es fácil dejarse llevar por el “hype” del momento y elegir cualquier tecnología novedosa; sin embargo es importante considerar la tecnología adecuada para nuestro proyecto. La decisión depende desde factores técnicos cómo qué tan escalable necesitamos que sea nuestro proyecto, a algo tan trivial como limitantes en el presupuesto.

Una breve introducción al stack tecnológico

Un “stack” tecnológico es un conjunto de: herramientas, lenguajes, frameworks y otros componentes que conforman el ambiente de una aplicación. Este impactará directamente la experiencia del usuario, el rendimiento y arquitectura de nuestra app. Por eso es importante conocer los pros y contras de las opciones disponibles. Solamente entonces puedes elegir las tecnologías que mejor se ajusten a tus requerimientos.

¿De qué se compone mi stack?

El stack tecnológico es la combinación de tecnologías de cliente y servidor. Las tecnologías de servidor son donde los datos se procesan y se compone de el lenguaje de backend, framework, servidor web, base de datos y sistema operativo.

Por otro lado, las tecnologías del cliente son las que interactúan del lado del usuario. Tomemos Netflix por ejemplo. Netflix funciona en base a poderosas tecnologías del lado del servidor que se encargan - entre otras cosas - de procesar miles de películas y dar recomendaciones. Pero también tenemos las tecnologías del lado de cliente como su app móvil, su app web, las apps de AppleTV y SmartTV, etc.

¿Por qué debería importarme mi stack?

Cuando creamos un MVP, queremos asegurarnos de que el producto llegue al mercado lo antes posible. Después de recibir retroalimentación de nuestros usuarios, vamos a querer hacer correcciones y añadir nuevas funcionalidades a un ritmo acelerado. La tecnología adecuada nos permitirá lograr estos objetivos. Además de esto, cuando llegue el momento permitirá invitar nuevos miembros al equipo que dominen dicho stack.

El otro lado de la moneda también existe. Una elección apresurada y/o equivocada del stack puede costar tiempo debido a la falta de herramientas de automatización para soportarlo. Si tu framework es demasiado reciente o antiguo es posible que no existan herramientas aún que permitan automatizar tareas como pruebas y despliegues, obligando a los desarrolladores a hacer estas tareas manualmente. Incluso podrías enfrentarte a cambios importantes al framework que acaben impactando un módulo o arquitectura completa. Por dar un ejemplo, la migración de Angular 2 a 3 costó a algunos bancos millones ya que sus apps debieron ser reconstruidas completamente.

EBD Emotion Driven Development (Desarrollo basado en la emoción)

Hay muchas decisiones técnicas que debes tomar como fundador. Es posible que tu primera intuición sea preguntar a amigos programadores sus recomendaciones. Probablemente ellos te responderán con los frameworks de JavaScript más recientes o algunos lenguajes de nicho como: Go, Rust o elixir. Es natural -- a los desarrolladores les encanta probar las tecnologías de moda, pero esto no quiere decir que debas hacerlo así con tu MVP.

Cuando elijas el stack para tu proyecto, debes ver más allá y poner atención a si las tecnologías elegidas están bien establecidas; mucho más allá de una tendencia. Elegir un framework inestable puede ser un riesgo para tu proyecto, especialmente al querer expandir el equipo.

¿Qué es un MVP?

El término MVP fue creado en el 2001 for Frank Robinson como un producto lo suficientemente grande para tener adopción y buen recibimiento, incluso ventas, pero no lo suficientemente grande para ser riesgoso.

¿Qué tienen de especial los MVP?

En nuestra experiencia constantemente se confunde lo que es un MVP. Especialmente en el mínimo no solamente se refiere al alcance -- que siempre debe ser priorizado y acotado más de lo que esperas -- pero también al tiempo de desarrollo y el costo. Esto es lo que hace que un MVP sea diferente de un desarrollo de software tradicional. Un tiempo limitado requiere de decisiones inteligentes y decisiones temporales.

Existen stacks tecnológicos dependiendo a las necesidades de cada proyecto.

  • Plataformas. A diferencia de un proyecto multiplataforma, un MVP siempre inicia como una app web o móvil, ya sea en iOS o Android. Si estás buscando desarrollar una app móvil es probable que elijas entre Swift, Flutter o React Native. La decisión final dependerá de si la tecnología elegida tiene el potencial de lograr lo que buscas para que sea de valor para tu usuarios.
  • Diseño Customizado. Las animaciones, ilustraciones e interfaces customizadas no son necesarias en un MVP. A menos que sean una parte indispensable de tu producto, usa un tema genérico como Material Design y enfócate en la esencia de tu producto.

Qué factores hay que tomar en cuenta al elegir el stack para mi MVP

El objetivo de la app y el alcance

Si tu objetivo es mostrar un UI/UX impecable a los inversionistas, enfócate en el diseño, consigue una tecnología que permita a los desarrolladores avanzar extremadamente rápido.

Una vez que hayas conseguido un muy buen financiamiento, tira tu MVP a la basura y construye sobre un stack en el que puedas añadir todos los lujos de tu app fácilmente. Es probable que veas un cambio importante en las tecnologías utilizadas para cada fin.

Tiempo y costo

Aunque muchos de nuestros clientes saben que para desarrollar un MVP tendrán que adaptar su alcance, transmitir su visión a un alcance más limitado puede ser estresante al inicio. Si resulta que el tiempo estimado y presupuesto exceden tus expectativas iniciales, no te preocupes. Un analista puede ayudarte a evaluar qué funcionalidades serán benéficas para ti y tus usuarios. Aquellas funcionalidades indispensables con las que te quedes al final definirán las que conformen tu producto mínimo viable.

Bolsa de Talento y Soporte de la comunidad

Los desarrolladores tienen sus preferencias en cuanto a lenguajes. Si ya tienes un buen equipo armado, probablemente elijas las tecnologías que ellos recomiendan y esto funciona siempre y cuando tengas un equipo estable; sin embargo, como diseño de producto, deberás hacer la elección de tecnologías desde diferentes perspectivas, incluyendo una n-técnica. Los frameworks van y vienen, dejando muchas apps imposibles de mantener y todo un reto de desarrollar.

Las tecnologías estables te dan acceso a una mayor cantidad de talento y harán más fácil el llenar puestos en tu equipo más adelante. De acuerdo a StackOverflow contratar  un nuevo miembro de tu equipo será más fácil si buscas un desarrollador Python o Java, comparado contra uno que sepa Scala o Go. Entre más estable el lenguaje, mejor será la comunidad alrededor de él. Esto quiere decir que muchos casos de uso ya están documentados y tu equipo de desarrollo tendrá menos problemas para encontrar soluciones a los retos que les presentes.

Mantenimiento y Escalabilidad

Al inicio, es difícil decir en cuánto tiempo será necesario escalar el proyecto, si en una investigación preliminar detectas que tendrás picos de la carga de tu aplicación, deberás preparar tu MVP para escalar más rápidamente que otros.

En estos casos, utilizar balanceo de cargas y cómputo en la nube o microservicios puede ser una opción para sistemas grandes y complejos, aunque no necesariamente la mejor opción para un MVP. Un proveedor de software confiable puede ayudarte a tomar la mejor decisión de acuerdo al espectro completo de tus requerimientos y un cálculo de los costos de tu arquitectura.

¿Qué hay del mantenimiento? Aceptémoslo. Muchas startups desean seguir desarrollando su MVP debido a que ya invirtieron mucho tiempo y recursos en él. Por lo que crear un branding nuevo, con una arquitectura completamente nueva, está fuera del alcance. En estos casos es indispensable utilizar tecnologías estables que sean fáciles de entender para un desarrollador tradicional. De otra forma agregar nuevas funciones tomará demasiado tiempo.

Seguridad

Hay un dicho que dice que el mejor momento para asegurar tu app es ayer, y el segundo mejor es hoy. Si tu MVP recopila datos personales y/o sensibles, es muy importante que diseñes la arquitectura de tu aplicación tomando la seguridad como una prioridad. Frameworks robustos, bases de datos seguras, roles de usuario correctamente asignados y los algoritmos y llaves de encriptación, son algunos de los aspectos que debes asegurarte que brinden un alto nivel de protección. Los lenguajes que mayor seguridad brindan son: PHP, Java y Go.

Un stack tecnológico para tu MVP

Con tantas opciones y tecnologías disponibles, seleccionar un stack tecnológico no es una tarea sencilla. Pero si se hace bien, aseguras que tu aplicación tendrá un alto rendimiento, escalabilidad y experiencia de usuario. Si no se elige con cuidado, este decisión puede generar perdidas importantes y quizás requieras un rediseño completo de tu arquitectura.

Ahora ya sabes que aspectos tomar en cuanta a a la hora de elegir las tecnologías correctas para tu producto y no solamente preguntar a tu equipo de desarrollo con que tecnologías les gusta trabajar. Hay más aspectos a considerar, especialmente si tu MVP evolucionará en un desarrollo futuro.

Síguenos en LinkedIn | Lee que opinan de nosotros en Clutch | Visitanos en alluxi.com