¿Cuánto tiempo podría tardar en aprender el desarrollo de iOS? ¿Qué tecnologías y lenguajes debo aprender antes de practicar con un prototipo? Cuánto tiempo se tarda en crear una app para iOS desde la idea hasta el producto probado después de aprender?

Empecé a aprender en noviembre de 2011, y tuve mi primera app básica en enero de 2012. Ahora soy un desarrollador independiente a tiempo completo y me gano la vida con mis aplicaciones para iOS. Mi experiencia previa en programación era sólo HTML/CSS, y unas pocas semanas de PHP, por lo que no sabía nada acerca de la programación orientada a objetos.

Aquí es cómo lo hice. No sé si este es el mejor camino para todos, pero es lo que yo hice. No trabajaba durante esta fase, y tenía día y noche para estudiar. Lo traté como si fuera la escuela, tomé notas en papel y anoté todo. Así que esto es lo que tienes que saber:

1. El desarrollo de iOS se hace principalmente en Objective-C. Obviamente piensas que'es lo primero que intentarías aprender, pero después de un tiempo encontré Obj-C difícil de entender y con pocos recursos de aprendizaje online. Otras personas y sitios web recomendaban aprender primero C, así que pensé en ponerme manos a la obra y comprometerme con ello. Seguí "Learn C The Hard Way" (http://c.learncodethehardway.org/book/), que es gratuito. Es cierto que me salté algunas partes y ejercicios por pereza o frustración. Pero me dio una base suficiente para empezar a entender Objective-C. Después de unas 3-4 semanas de estudio diario, sentí que podía empezar a aprender más sobre Objective-C.

Después me "inscribí" en un curso de vídeo gratuito ofrecido por Stanford para el desarrollo del iPhone en iTunes. Lo recomiendo encarecidamente, ya que el profesor es fantástico, y repasa tanto Objective-C como las metodologías de iOS. Sus videotutoriales te enseñan incluso a utilizar Xcode e Interface Builder. También puedes seguir los deberes y las respuestas para empezar a practicar tu codificación. Seguí todo lo que pude antes de que se volviera demasiado avanzado, donde luego me detuve, y comencé a buscar para empezar a hacer mis propios proyectos.

Me gusta mucho seguir tutoriales como una forma de aprender y encontré una tonelada en http://www.raywenderlich.com/. Simplemente seguí los tutoriales y reescribí todo línea por línea para poder construir "memoria muscular" por así decirlo, arraigando el código común y familiar en mi entendimiento. Una vez que supe cómo hacer algunas cosas, como arrastrar una imagen por la pantalla, empecé a preguntarme qué podía hacer utilizando el código que ya conocía. Mi objetivo era entonces lanzar una aplicación sencilla y pulida para aprender cómo funciona la tienda de aplicaciones. Después de eso, ganas mucha confianza en tus habilidades. En el siguiente proyecto, obviamente, te enfrentas a cosas más desafiantes, hasta que adquieres más y más experiencia y conocimientos en tu haber y puedes producir cualquier cosa que se te ocurra.

Mi consejo para la gente que está aprendiendo a programar:
- Si realmente quieres aprender, comprométete con ello. No te rindas, deja que te lleve el tiempo que te lleve, ya sean meses o años, y al final tendrás las habilidades que deseas. En algún momento querrás rendirte y abandonar. Depende de ti seguir adelante.
- Aprende los detalles antes. Si te saltas los conceptos sin entenderlos completamente, entonces estarás perdido una vez que aprendas cosas más avanzadas. Aprende exactamente cómo funciona, o vuelve a aprender si es necesario.
- Cuando te atasques en un tema, comprométete a resolver el problema por tu cuenta durante todo el tiempo que puedas. Yo he pasado horas y horas en los bugs más tontos, pero cada vez me llevó a entender la programación más profundamente. Si sigues atascado, pregunta a un amigo o publica en un foro o en StackOverflow para resolver tu problema. Cada error que resuelvas por tu cuenta es una victoria, así que celébralo como tal.

Mucha suerte.