Hoy lancé mi primera aplicación móvil. Esto es lo que aprendí

Recientemente he estado escribiendo bastante en Medium, compartiendo valiosos conocimientos de diseño y desarrollo que obtuve al trabajar en mi primera aplicación, Crypto Price Tracker, que acabo de lanzar hoy, el 28 de enero.

Quería compartir mi historia de trabajo en esta aplicación desde el día que comencé hasta hoy. Espero que esta publicación ayude e inspire a otros programadores jóvenes (¡o realmente a cualquiera que esté interesado en fabricar productos tecnológicos!) A adquirir habilidades técnicas valiosas, identificar las necesidades del mercado y crear excelentes productos con sus habilidades que resuelvan esas necesidades del mercado.

Un poco de antecedentes sobre mí: soy un educador en casa de 16 años. He estado aprendiendo diseño y programación digital desde que tenía 13 años. Fui la pasante más joven en Salesforce en Bangalore en el invierno de 2016.

Asistí al programa de verano MIT Launch en el verano de 2017, donde mi equipo y yo lanzamos Universeaty. Esa fue la primera vez que probé las aplicaciones de iOS y me encantó lo rápido que era crear productos tangibles y ver los resultados de mi trabajo al crear aplicaciones móviles. ¡Llevar mis ideas al software fue mucho más fácil y divertido!

Comencé a aprender sobre el desarrollo de aplicaciones para iOS y Swift a través de cursos en línea en Treehouse, Udemy, vi videos en YouTube y practiqué la creación de aplicaciones básicas. Eso estableció mis bases de programación. Comencé a crear aplicaciones más serias y complejas después de algunas semanas de aprendizaje y práctica.

Alrededor del 20 de noviembre de 2017, decidí que quería trabajar en una aplicación de seguimiento de precios de criptomonedas, alertas y gestión de carteras. He compartido un poco de la historia sobre mi motivación aquí. ¡Recientemente me di cuenta de que compartir mi historia y algunas de las lecciones que aprendí a lo largo de mi viaje es realmente útil para otros!

Empezando

Fue difícil comenzar: incertidumbre, incógnitas desconocidas, cosas en las que pensar y decisiones que tomar. No tengo ni idea de con qué empezar y dónde. Pero sabía que mi primer paso era realizar una investigación de mercado para saber exactamente lo que quería mi público objetivo: las características, el diseño y casi todo lo que crearía en la aplicación.

Publiqué en Reddit, grupos de Facebook, Quora y les pregunté a algunos amigos que estaban interesados ​​e interesados ​​en las criptomonedas. Recibí comentarios sólidos sobre la idea y estaba mucho más informado sobre las necesidades de mis usuarios objetivo.

El siguiente paso fue diseñar la aplicación. Comencé dibujando los diagramas de flujo de usuario y los wireframes. Luego pasé a usar software de diseño para crear maquetas y un prototipo. Escribí una historia diferente sobre el diseño de aplicaciones móviles desde cero y compartí imágenes de cada etapa de diseño de la aplicación Crypto Price Tracker.

Y el resultado final de este proceso fue este:

Desarrollo de rastreador de precios de criptomonedas

Tenía bastante miedo de llegar a esta etapa, porque era (y todavía soy) un principiante en programación. No sabía mucho de Swift y no tenía ni idea de cómo había configurado el servidor para notificaciones, entre muchos otros obstáculos técnicos. Tenía tantas cosas que hacer para la aplicación con pocas habilidades técnicas. Pero estaba seguro de que podría descubrir cosas y aprender a lo largo del camino a medida que construía cada función. Y, en retrospectiva, puedo decir que sí :)

Comencé importando todos los diseños en Xcode y estableciendo una compilación en bruto para cada pantalla. Dividí mi trabajo de codificación según las funciones que necesitaría en la aplicación. Varias veces, tuve que eliminar cosas de mi especificación (y editar diseños) porque parecía llevar mucho tiempo desarrollarlas (especialmente si parecía que ofrecerían poca funcionalidad).

Escribí el código de red para mostrar datos de las API que estaba usando y construí la interfaz principal de mi aplicación. Luego pasé a la función "Lista de deseos" de la aplicación. Ahora, para guardar datos localmente en el teléfono de un usuario, necesita crear modelos de datos básicos, algo con lo que nunca había trabajado antes. Y surgieron más lagunas y desafíos técnicos.

Pero seguí aprendiendo. Cuando necesitaba algo, lo buscaba en Google. Por lo general, había respuestas útiles, fragmentos de código o tutoriales en video para casi todo. Siempre que me quedaba atascado, pedía ayuda en StackOverflow o enviaba correos electrónicos a mis mentores. Poco a poco, comencé a sentirme mucho más cómodo saltando a cosas desconocidas.

Al final de las tres semanas que pasé codificando la aplicación, mejoré mucho como programador. Aprendí conceptos y pude practicar realmente construyendo una aplicación real. Me puse a trabajar con una serie de tecnologías, bibliotecas y marcos interesantes de iOS.

Todavía necesito mejorar mucho como desarrollador. Mi aplicación a veces se carga lenta. No es la aplicación más optimizada ni la más rápida que existe. Pero todavía estoy bastante contento de haber podido construir algo útil y valioso.

El siguiente paso que había planeado era localizar mi aplicación en 10 idiomas. Pensé que era fácil ya que mi aplicación no tiene mucho texto. ¡Chico, estaba equivocado! La localización es un proceso que requiere mucho tiempo para las aplicaciones. Estoy escribiendo una historia aparte para explicar cómo localizar técnicamente.

Al final de las 8 semanas (desde el día que comencé la investigación de mercado), había diseñado y desarrollado por completo una aplicación que mostraba precios en tiempo real de más de 1000 criptomonedas de 18 intercambios en 32 monedas fiduciarias. Había gráficos de precios (que muestran precios históricos de 1 día, 1 semana, 1 mes, 3 meses y 1 año), gestión de cartera, alertas basadas en el tiempo y en el umbral. Fue localizado en 10 idiomas. También optimicé mi aplicación para iPhone X.

Una vez que mi compilación estuvo lista, el siguiente paso fue invitar a los usuarios a probar y dar sus comentarios sobre la aplicación.

Prueba y envío de la aplicación

¡Estaba bastante orgulloso de mi aplicación y estaba muy emocionado de ponerla en TestFlight e invitar a todos mis amigos y usuarios a probarla! Después de una larga espera de dos días, finalmente se aprobó la revisión de la aplicación beta. Invité a mis amigos a probarla y les encantó la aplicación. Todos compartieron comentarios, ideas sobre funciones para futuras actualizaciones y mucho más. ¡La aplicación no se bloqueó!

La compilación v1.0 estaba lista para su presentación. Mis 100 capturas de pantalla (5 capturas de pantalla para iPhone de 5,5 pulgadas y 5 para iPhone de 5,8 pulgadas para cada idioma) estaban listas, mis metadatos también se localizaron y se realizó la vista previa de mi video.

Hubo algunos desafíos inesperados al cargar la vista previa del video porque los fps (cuadros por segundo) eran demasiado altos. En este punto, había llegado a aceptar desafíos inesperados y podía manejarlos de manera efectiva. Pude terminar todo y enviar la aplicación para su revisión a tiempo.

Dos días después, a las 4 a.m., recibí el correo electrónico de rechazo.

Esto me puso extremadamente ansioso. Tantos pensamientos pasaban por mi cabeza antes de leer las razones del rechazo. Apple rechazó la aplicación porque el diseño no se veía bien cuando se veía en el iPad. No tenía ni idea de que las aplicaciones solo para iPhone tenían que ser compatibles con iPads también. En las próximas horas, leí algunas guías y solucioné todas las limitaciones y problemas de diseño automático, probé la aplicación en el simulador de iPad y funcionó. Envié la compilación para su revisión nuevamente.

Un día después, ¡finalmente obtuve la aprobación! Fue un alivio y ahora podía volver a centrarme en el producto. Había recibido un montón de comentarios e informes de errores de los probadores. Hice esas pequeñas correcciones de errores y algunas ediciones de traducciones, y cargué la compilación final. ¡Fue aprobado en solo 12 horas! Mi aplicación ahora era mucho mejor y me alegro de que tanta gente la haya probado e informado de errores que de otro modo habrían aparecido en las revisiones de la aplicación por parte de clientes enojados.

En los días previos al lanzamiento, armé esta historia a partir de las notas que hice y de mi diario para poder compartir las lecciones con todos.

Algunas lecciones que aprendí

  1. La localización es una gran idea. Hasta ahora, lamentaba mi decisión de localizar mi aplicación en 10 idiomas. Escribí algunas respuestas de Quora sobre cómo fue lo que más tiempo hice para mi aplicación y no recomendaría a ningún desarrollador independiente sin el presupuesto que subcontratara la localización. Pero ahora mi opinión ha cambiado. Localizar su aplicación en 10 a 12 idiomas con el Traductor de Google y hacer que sus amigos la revisen es una excelente manera de llegar a un público más amplio para su aplicación. Apple también ama más las aplicaciones localizadas. No siempre se puede hacer todo bien y localizar todas las cadenas posibles. Pero puede obtener el 80% de los resultados (es decir, el texto traducido) con el 20% del trabajo.
  2. La gente está mucho más dispuesta a ayudarte de lo que crees. Estoy muy agradecido de tener varios amigos y mentores que me ayudaron mucho en este viaje. Pero simplemente me asombró cómo tantos extraños me respondieron cuando me acerqué a ellos y me ayudaron. Al principio de mi viaje, cuando acababa de tener un pequeño prototipo de la interfaz principal de mi aplicación, me acerqué a Carla White después de haber leído su increíble libro. Ella me guió y me ayudó con sus consejos para la aplicación. Mientras localizaba mi aplicación, necesitaba correctores de pruebas para cada idioma para asegurarme de que las traducciones (realizadas con Google Translate) sean buenas y específicas del contexto. Pascal comentó mi historia en Medium ofreciendo su ayuda con las traducciones al alemán. Me comuniqué con él y en muy poco tiempo, ¡realmente editó mis traducciones al alemán!Y muchos más completos desconocidos ofrecieron su ayuda.

    Una conclusión clave importante de esto sería: las personas están dispuestas a ayudarlo. Comuníquese con ellos, sea sincero y ellos lo ayudarán en todo lo que puedan. :RE

  3. Los comentarios de los usuarios desde el principio son muy críticos. No solo te motivan las amables palabras de tus fans o creyentes, sino que muchos de tus primeros usuarios te darán ideas para funciones, mejoras de diseño y comentarios mucho más valiosos. Uno de los errores que cometí fue probar muy tarde. Subí mi compilación para las pruebas de TestFlight solo ~ 1 semana antes del lanzamiento planificado cuando la aplicación estaba prácticamente lista y no pude hacer cambios importantes. Si les hubiera pedido a mis usuarios que comenzaran a probar hace semanas cuando acababa de tener la interfaz principal, habría recibido muchos comentarios y la habría mejorado. Y reiteré que para cada característica importante, mi aplicación habría sido mucho mejor. Varios probadores han mencionado cosas que podrían haberse solucionado en 2 o 3 días si hubiera enviado la compilación para probar antes. Entonces mi consejo para todos sería:¡Pon tu aplicación en manos de tus usuarios y haz que la prueben lo antes posible y obtengan comentarios!

Algunas herramientas útiles que utilicé

  1. AppLaunchPad para crear múltiples conjuntos de capturas de pantalla (para muchas localizaciones) más rápido.
  2. Cocoapods. SwiftyJSON y Alamofire para escribir un mejor código de red, gráficos para crear gráficos de precios. ¡Hay un cocoapod para casi todo!
  3. Firebase para el servidor de notificaciones push y para que el servidor de almacenamiento en caché almacene precios cada 5 minutos para actualizar los gráficos de precios.
  4. Dos API para precios: cryptowatch y CoinCap. Esta API para tipos de cambio para conversión.

Se siente muy bien poder compartir las lecciones que aprendí y mi viaje con una gran audiencia. Espero que esto sirva de inspiración para que otras personas prueben el aprendizaje de programación y la creación de aplicaciones o realmente cualquier cosa que les interese. Personalmente, comenzaré con el aprendizaje del aprendizaje automático y la ciencia de datos después de mi aplicación, así que no lo hagas. ¡Miedo de experimentar con diferentes campos! Prueba algo difícil y algo que te incomode. Las cosas más difíciles de hacer suelen ser las más interesantes y gratificantes al final. :)

Si le gustó leer esto y tiene comentarios o ideas para compartir, no dude en enviarme un correo electrónico a [email protected] Y si te gusta mi aplicación, puedes descargarla desde la App Store aquí. :)