11 pasos a tener en cuenta durante la producción de una app

De vez en cuando recibimos una petición que comienza con la frase: “Queremos una app muy sencilla…”. Esta pequeña frase esconde una gran trampa en ella: la simplificación de algo que nunca suele ser tan sencillo como uno cree. Simplificar es un error que cometemos todos en mayor o menor medida y por eso hemos planteado escribir un post sobre todos los pasos necesarios que se deben llevar a cabo para producir una app (desde las más sencillas a las más complejas) y de todas las áreas que se deben ver implicadas.

A. Fase de PRE – PRODUCCIÓN

1. Definición del producto

Áreas implicadas: desarrollo de negocio, UX, arquitectura IT, marketing

Una fase indispensable antes de iniciar cualquier proyecto (las apps también entran dentro de esta categoría) es definir correctamente el producto. Cuando hablamos de producto hablamos de cosas tan importantes como:

  • ¿Qué objetivos quiero conseguir con esta app? (Leer post: Qué tipo de app necesita mi empresa).
  • ¿Qué tipo de app necesito? (Leer post relacionado).
  • ¿Qué presupuesto tengo para el desarrollo? ¿Y para el mantenimiento? ( Leer post: ¿Cuánto vale una app? ).
    Es importante plantearse esta parte para poder definir un producto lo más adecuado posible a la inversión que se desee realizar y poder planear el retorno de la inversión correctamente.
  • ¿Existen algunas restricciones a tener en cuenta?
    Se deben definir en este punto las tecnologías con las que se van a trabajar, el tiempo que se dispone, las especificaciones gráficas y dispositivos, resoluciones, versiones de SO, etc…
  • Realizar un benchmarking completo y obtener conclusiones.
  • Acordar cuál va a ser el proceso de trabajo a lo largo de cada paso durante la producción.
    En productos digitales sobre todo hay diversas formas recomendables de plantear el proceso de desarrollo de un producto siguiendo algunas de las metodologías que hemos comentado en otros posts:

Aquellos cambios imprevistos que rompan la metodología inicial acordada para modificar la definición del producto implicarán un incremento del trabajo a realizar por parte de todo el equipo (con su consiguiente incremento en costes).

Una vez se haya podido generar este documento de especificaciones será cuando se pueda realizar un presupuesto con un timing más acotado a las necesidades del proyecto.

Es importante tener en cuenta que este proceso es muy importante para sentar las bases de cualquier proyecto y va a requerir dedicar bastantes horas de reuniones, análisis, investigación y generación de documentación por parte de muchos miembros del equipo (incluido el propio cliente e incluso algunos de sus proveedores estratégicos).

2. Wireframes

Áreas implicadas: desarrollo de negocio, UX, desarrollo de software

Los wireframes son unas vistas esquematizadas de cada una de las pantallas que tendrá la app a desarrollar con anotaciones específicas que documentan los comportamientos y requerimientos de cada pantalla (pantallas o datos de entrada y salida, funcionalidades, animaciones, etc…). Gracias a los wireframes tendremos una visión general de todo el trabajo a realizar (específico para el formato del proyecto, app nativa, webapp, etc…) tanto para el cliente como para el resto de los miembros del equipo involucrado.

Crear los wireframes es un paso muy importante en el proceso de creación de una app porque ayudan a definir:

  • La experiencia de usuario: obligando a pensar en los funnels de conversión que queremos para nuestra app y los pasos o pantallas que el usuario deberá seguir para alcanzar los objetivos marcados.
  • La estructura de navegación (flow): de dónde viene el usuario en cada pantalla, a dónde va el usuario después de interactuar en una pantalla en concreto, con qué otras pantallas se enlaza cada una de las pantallas que forman la app, etc…
  • Las funcionalidades de cada pantalla: qué se puede hacer y cuál es el objetivo de cada una de las pantallas de una app. A veces, por ejemplo, el objetivo será avanzar en la navegación entrando en alguna sección, otras será enviar un formulario y otras será la compra.

Es muy importante crear y validar conjuntamente entre el cliente y todo el equipo que va a participar en el desarrollo de la app todos los wireframes antes de empezar a desarrollar.  Los wireframes se usarán como referencia tanto por diseñadores como por el equipo de programadores para hacer su trabajo más eficazmente.

B. Fase de DESARROLLO

3. Diseño

Áreas implicadas: diseño visual,  UX, marketing

El diseñador deberá definir el aspecto visual que deberá tener cada una de las pantallas más importantes definidas en los wireframes teniendo en cuenta las necesidades del proyecto (por ejemplo si la app tiene un diseño específico para iOS y para Android, si existe una versión tablet o el comportamiento de cada uno de los elementos gráficos en los diferentes tamaños de pantalla en los que se verá la app).

Es posible que no sea necesario diseñar gráficamente todas las pantallas puesto que muchas serán iguales al utilizar una misma plantilla o conjunto de componentes (por ejemplo las ventanas de aviso, listados de productos, etc…). Esto supondrá una reducción de costes de diseño.

El diseñador deberá preparar y exportar todo el material gráfico (incluidas todas las imágenes en las diferentes resoluciones de pantallas de móvil y de tablet) para que el programador front end pueda integrar las pantallas debidamente.

Llegado el momento también deberá plantear el diseño del icono de la app, del vídeo (en caso de requerirse) y de las imágenes complementarias de carácter obligatorio que se deberán poner en las Stores a ser posible siguiendo una planificación específica de ASO dentro del plan de marketing del proyecto para lograr un mayor posicionamiento orgánico y favorecer el volumen de instalaciones de la app.

4. Programar el Front-end

Áreas implicadas:  Programación Front-End

El programador dedicado a la parte de cliente (front end) se encargará de maquetar y programar todas las pantallas y componentes visuales de la app siguiendo las pautas marcadas en los wireframes y el diseño.

Evidentemente la programación del Front-end podrá ser más ágil o más lenta en función de si la app que vamos a crear será nativa, híbrida o webapp. En base a este tema, la estrategia de programación para el front-end podrá variar dado que quizás pueda ser necesario programar en 2 o tres lenguajes de programación diferentes o bien en uno solo.

Al contrario de lo que muchos creen, un único lenguaje de programación para desarrollar una única app multiplataforma no siempre puede ser la mejor opción, es una decisión importante que debe tomarse muy en serio en la fase de definición de producto puesto que va a tener repercusión a lo largo de la producción y su mantenimiento de futuro. Más adelante realizaremos un análisis sobre este tema para poder profundizar en las ventajas e inconvenientes de cada caso.

5. Diseñar la estructura de la Base de datos

Áreas implicadas: diseño y arquitectura de base de datos, desarrollo de negocio, marketing. 

En caso de que no exista una base de datos ya creada con anterioridad por el cliente ésta se debería diseñar teniendo en cuenta la definición del producto y funcionalidades acordadas en los wireframes con tal de diseñar las estructuras de datos más apropiadas.

En caso de que ya exista una base de datos se debería haber valorado (previamente en la fase de definición de producto) si es conveniente utilizar la arquitectura existente o crear una base de datos con otra arquitectura más recomendable que permita servir los datos de forma eficiente a la app con tal de mantener la mejor experiencia de usuario posible. Adicionalmente para este segundo caso puede requerirse crear o implementar una lógica de servidor específica para sincronizar las diferentes bases de datos y mantener una buena integridad y calidad de datos.

6. Arquitectura y lógica de Servidor

Áreas implicadas: desarrollo Back End, desarrollo server side

Es muy problable que no exista una arquitectura o lógica de servidor específica para resolver todas las nuevas funcionalidades definidas para nuestra app. En esta situación, lo ideal sería valorar si la arquitectura actual de servidor puede soportar e implementar toda la lógica de negocio que la app requiere, así como cuestiones de conectividad, escalabidad, seguridad, micro-servicios, etc… Al igual que en el caso de la Base de datos, se deberá tener en cuenta aquellas arquitecturas y tecnologías (preferiblemente cloud) que puedan ofrecer la mejor experiencia de usuario y que sean compatibles con la arquitectura IT de nuestro negocio.

En caso de que ya partamos de una arquitectura y lógica de servidor que funciona para una web y otras apps, suponiendo que ésta pueda resolver todas las especificaciones funcionales, se deberán programar e implementar todas las acciones y servicios necesarios para atender a las necesidades funcionales de la app.

7. Creación de una API

Áreas implicadas: desarrollo server side, desarrollo front side, 

Es probable que las nuevas funcionalidades que se hayan creado para esta nueva app se puedan emplear para futuras versiones de la misma, así como otras aplicaciones de software de nuestro propio negocio o incluso de partners terceros estratégicos. En el caso de que queramos maximizar el potencial de nuestro producto y toda la solución de negocio podemos plantearnos crear una API (Application Programming Interface).

Una API nos puede ayudar a reestructurar y organizar mejor los sistemas internos de nuestro negocio y en especial favorecer la innovación para los próximos proyectos. Nos puede ayudar a reducir los costes de mantenimiento de nuestras apps y aumentar la productividad en las fases de desarrollo. Por último puede generar sinergias tecnológicas con partners estratégicos y ayudarnos a construir soluciones de negocio más ambiciosas.

En resumen, en el momento de decidir simplemente crear una capa de servicios web para que la parte de cliente de la app pueda recibir los datos de la base de datos se puede enfocar como una oportunidad de negocio para crear una API que nos abra muchas más puertas y mejorar como negocio.

8. User tests, detección de errores, tests unitarios, tests de integración, multiplataforma, dispositivos móviles, SO móvil.

Áreas implicadas: diseño, UX, betatesting, programación

Una vez finalizada la programación de cada versión estable de la app, será imprescindible realizar un control de calidad y detección de errores (tanto gráficos como funcionales o de contenido).

Este paso es indispensable porque una vez subida a la Store, no se podrá realizar ninguna corrección en la parte de software compilada en cliente de la app sin volver a generar un nuevo archivo para volver a subirlo a la Store. Este proceso a diferencia de una web, puede llevar días debido a las políticas de aprobación de algunas Stores.

Una parte muy importante del proceso de test y control de calidad será detectar posibles errores debidos a la amplia variedad de tamaños de pantalla y resoluciones (móviles, phablets, tablets, etc…) en los que tiene que funcionar y visualizarse correctamente nuestra app como de sistemas operativos y versiones de éstos (android 5, 5.1, 5.2, 6, 7, iOS 10, 10.1, 10.2, etc…).

Cuantas más versiones de un mismo sistema operativo y resoluciones se quieran abarcar tendremos más complejidad en el desarrollo y en el QA.

En la medida de lo posible durante cada desarrollo se deben implementar pruebas unitarias para validar el funcionamiento correcto de los métodos de clase o bien pruebas de integración para validar el correcto funcionamiento de interacción entre dos o más elementos como clases, módulos, paquetes, etc, así como la interacción del sistema en el entorno de producción. La utilización de estas técnicas desde el comienzo del desarrollo de la app puede agilizar sustancialmente la detección de errores ayudando al equipo de programadores a encontrar más rápidamente los problemas existentes.

No cabe decir que este paso debe llevarse a cabo en la medida de los posible tanto a nivel de cliente como a nivel de servidor.

9. Desplegar nuestra app de pre-producción a producción.

Áreas implicadas: desarrollo server side, desarrollo front end

Por último se deberá desplegar todo el trabajo realizado en el entorno de producción ubicado en una plataforma cloud o servidor. En el mejor de los casos nuestra app estará en un entorno de pre-producción equivalente al de producción y las sorpresas serán las mínimas. Aún así, siempre surgen diferencias o peculiaridades que nos obligan a considerar esta fase como una fase importante en cualquier actualización, mejora o publicación de nuestra app.

Por otro lado, antes de subir el archivo final de la app a una Store se deberá testear de nuevo para estar seguros que el cambio de entorno de pre-producción al entorno de producción no ha generado ningún problema o error.

C. Fase de PUBLICACIÓN

10. Publicación Stores

Áreas implicadas: programación Front End, Marketing

Finalmente se deberá rellenar la ficha de cada una de las Stores (Google Play o AppStore) con los textos e imágenes generados para tener un buen ASO (podéis descargar aquí un documento explicativo que hemos creado de las técnicas ASO) y finalmente subir el archivo (APK en caso de una app Android o IPA en caso de una app en iOS) y enviar a revisión y publicar.

La publicación en Android es bastante rápida, es posible que en 1h ya esté pública, pero en iOS es algo más complejo puesto que pasa por un control de calidad donde es posible que la rechacen por diferentes razones. Normalmente este proceso lleva entre 1 y 7 días, dependiendo de la cantidad de apps que tengan por revisar.

D. Fase de MANTENIMIENTO

11. Mantenimiento y mejoras

Áreas implicadas: varios

Una vez hayamos publicado nuestra app en las Stores lejos de ser el final de algo (como muchos clientes puedan pensar) es el inicio de todo. En Codiwans siempre comparamos el crear una app (o se podría hacer extensible a cualquier proyecto) como tener un hijo. Una vez lo tienes, no lo abandonas a su suerte esperando que un dia se haga mayor sin haber hecho ningún esfuerzo, sino que hay que cuidarlo, alimentarlo y acompañarlo para que pueda crecer lo más rápido y sano posible.

Esto, lógicamente tiene un coste tanto de mantenimiento como de marketing e incluso de mejora del negocio en sí (ver posts relacionados: Estrategias para mejorar la retención de usuarios de una appEstrategias de adquisición de usuarios y El Growth Hacking como ayuda para mejorar la visibilidad y posicionamiento de tu producto). Por lo que si te estás planteando hacer una app deberás contar que este proceso puede ser más costoso (en tiempo, esfuerzo y presupuesto) que el propio desarrollo de la app y es algo que no se puede evitar. Las Stores están llenas de apps abandonadas que casi no tienen instalaciones y que funcionan hasta que se produce una actualización de sistema operativo (cada año se realizan varias) y de repente dejan de funcionar o acaban despublicadas automáticamente de las Stores.

2 thoughts on “11 pasos a tener en cuenta durante la producción de una app

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s