hello. Desarrollando una app para iOS. (III)

Hablemos de código.

(Gritos, vítores, suspiros y aplausos)

El código de una aplicación es lo que define su funcionamiento. Puedo hacer iconos preciosos y calcular fórmulas perfectas pero todo eso hay que integrarlo.

No se como es desarrollar algo en otra plataforma pero os aseguro que hacerlo en Xcode a veces es mágico. Pero esto lo trataremos más adelante.

Mi primer contacto con Xcode fue un desastre. Conseguí hacer un menú desplegable lateral con las primitivas funciones iniciales de una aplicación llamada "prueba1". Tardé 20 minutos y la pude ejecutar en mi móvil.

Algunos estaréis pensando que esto fue un tremendo éxito.

No, porque no supe hacer mucho más. Así que seguí trabajando en la base de datos mientras pensaba cómo gestionar el tema del código.

Más o menos al mes volví a retomar el tema y empecé un curso muy famoso de udemy para programar en Swift.


El curso estaba genial, no tengo nada malo que decir de él. Era paso a paso y pude hacer más o menos un 40% del curso. Esta experiencia, junto con mi primer acercamiento a Xcode fueron vitales. Recibí un mensaje muy claro de la vida:

Esto no es lo tuyo, necesitas ayuda.

Y eso hice.

Un día hablando con mi amigo Antonio Linares, le comenté la idea. Al principio no le entusiasmó demasiado pero al cabo del tiempo, viendo que yo seguía trabajando con la base de datos me dijo " cuenta conmigo".

Y tanto. A él le debemos el código de la app. Pero eso no quiere decir que mi 40% del curso de Swift fuera en vano. El curso fue suficiente para poder aportar mis granitos de arena al código.  Un código que, a pesar de que en Swift es bastante intuitivo, como te coja despistado no te enteras de ná.


Cuando leo el código se lo que está pasando ahí y eso ha sido muy bueno para depurar algunas cosas y quitarle trabajo al programador principal.

Pero hablemos de lo importante. ¿cuáles son las mayores dificultades que hemos tenido con Xcode?


La más importante.

Todo programador podría decir la más tediosa a la vez que yo. Venga. 1...2...3...

Constraints.

Llevamos 3 meses de desarrollo y siguen siendo nuestra mayor pesadilla.

Las constraints son la forma en la que Xcode define las distancias de los objetos de forma que son un valor constante. Esto en teoría es muy útil porque hace que los elementos permanezcan entre sí invariables cuando cambias de tamaño de pantalla.

La realidad es que es un auténtico castigo porque, para el que no tiene experiencia, definir unas distancias constantes en un iPhone 8 Plus hace que los elementos no quepan en la pantalla de un SE. Es importante ir probando en todos los modelos para ver como va quedando la cosa antes de seguir avanzando.



Parece que al describirlo no es muy difícil pero os aseguro que no lo es. SI los elementos son muy pequeños en las pantallas grandes todo se verá diminuto. Si los elementos son grandes, en las pantallas pequeñas no caben. La solución es tener paciencia.

Las interpretaciones aleatorias del código

Por otro lado, el desarrollo de las funciones tampoco ha sido siempre tarea fácil.

Por la forma en la que funciona Xcode, un espacio, un punto, una coma, o alguna comilla mal puesta puede hacer que todo se vaya al garete. Y Xcode no siempre te avisa de donde está el error, porque entiende el elemento que le has puesto, solo que no es lo que querías poner.

Esto nos ha llevado a la mayoría de los errores de lectura de la base de datos, elementos duplicados, bugs y crasheos en general.

Los cuarto milenio

Sí. A veces el código te la juega y a pesar de pensar que está todo bien te encuentras con situaciones aleatorias en las que no sabes ni por donde coger lo que está pasando.

Por ejemplo esto:




A Xcode le ha parecido oportuno permitir el scrolling en páginas estáticas. En el momento en el que escribo esto, estamos intentando resolverlo. Es algo desesperante.

Y por supuesto, el clásico. ¿y ya está?

Cuando eres nuevo en esto, como es nuestro caso, muchos errores que cualquier experto vería al momento ( o directamente no los cometería) pasan por el tipo "cuarto milenio", hasta que pruebas una sencilla cosa y se soluciona.

Por ejemplo, el icono de ayuda desde que lo pusimos se veía pixelado. Pensábamos que estaba relacionado con el hecho de que ese icono se mete por código y en el código se definen sus características ( tamaño, color, etc). Resulta que la imagen estaba siendo interpretada como una imagen para pantallas no retina. En cuanto añadimos la imagen correctamente se solucionó. 

Todo un misterio, que era una tontería. Un clic.



El resultado

No hay mayor satisfacción en esto que darle a "compilar" y ver que lo que antes era solo letras es algo que funciona, algo vivo, algo que has creado tú.

Si no sabes picar código, no pienses que conseguirás una aplicación decente en menos de... un año. Y si lo consigues, no esperaré gran cosa de ella. La cultura popular es muy sabia ahí: Manolete, Manolete, si no sabes torear...¿Para qué te metes?

Aprender con los errores y, sobretodo, tener a alguien que domina el tema es muy constructivo porque ves cómo el proyecto avanza poco a poco.

Después de 4 meses de trabajo sigo siendo torpe programando, pero este tiempo me ha servido para aprender a valorar infinitamente más el trabajo de un programador.

Sin duda esta ha sido una experiencia muy enriquecedora. Una experiencia que nos ha traído muchas satisfacciones, muchas frustraciones y, sobre todo, mucha diversión.

hello está a punto de enviarse a Apple para su aprobación y estamos muy entusiasmados. Esperemos que todo vaya bien.

En el próximo capítulo me despediré de esto hablando de nuestros entrañables usuarios "Target":

Los "Muggles".

¡Hasta la próxima!

J.Growl

Biólogo de profesión, jugón y tecnófilo sin remedio. No hablo de temas serios si no hay buena cerveza de por medio.

2 comentarios:

  1. Vaya pedazo de trabajo, estoy deseando probar la aplicación, creo que has tenido una muy buena idea, mucho animo!

    ResponderEliminar
    Respuestas
    1. ¡Muchas gracias!

      La aplicación ha sido aprobada esta semana.

      https://itunes.apple.com/us/app/hello/id1333693249?l=es&ls=1&mt=8

      Eliminar

ANTES DE COMENTAR LEE:

Por favor se educado y respetuoso. Si tienes problemas o dudas específicas utiliza el formulario de contacto. Gracias por colaborar!