Aprender a desarrollar aplicaciones iOS: ¿Por dónde empiezo? (Entrevista a Eduard Tomás)

¿Piensas en aprender a programar para iOS? A lo mejor llevas un tiempo dándole vueltas a la posibilidad de meterte en el desarrollo de apps móviles por el hecho de que te lo solicita tu jefe, o bien ese usuario tan bueno de tu empresa desea que sus comerciales trabajen armados con iPhones y iPads y precisa crear una aplicación propia para tomar pedidos.

O bien tal vez ya has desarrollado aplicaciones para Android o bien Windows Phone y deseas amoldar tus aplicaciones para iOS por el hecho de que has oído que son los usuarios que se gastan más dinero en aplicaciones.

¡Qué diablos!, o bien por el simple placer geek de aprender a desarrollar en una nueva plataforma.

Sean cuales sean tus motivos, seguramente vas a tener tus dudillas : ¿Qué necesito para programar para iOS? ¿Por dónde comienzo a dar los primeros pasos? ¿Hay trabajo como desarrollador iOS? ¿Qué curso de iOS puedo hacer?

Eduard Tomás nos da ciertas pistas

Para solucionar estas dudas, nada mejor que preguntarle a un crack como Eduard Tomás ( @eiximenis en Twitter).

Eduard no solo es un genial desarrollador (con una cabeza que para mi la quisiese ) sino es el creador y tutor de nuestro flamante curso on-line de desarrollo de apps iOS (con Swift y Objective-C, nada menos). Además de esto es un tipo majísimo que se ha prestado a darnos valiosos consejos que cualquier novato que desee introducirse en iOS seguramente agradecerá.

¡Vamos allí!

Bueno Eduard. Cuéntanos un poco sobre ti: ¿En qué momento comenzaste a programar? ¿Y a programar para móviles? ¿Y para iOS?
Buf… ni lo recuerdo… todo comenzó con un Spectrum 48K que me adquirió mi padre, con el que comencé a jugar… entonces esto evolucionó a ver de qué forma lograr vidas infinitas en los juegos (los conocidos pokes, proseguir con el cargador universal de la microhobby y de acá a estimar hacer uno sus juegos. Y eso me llevó primero al BASIC y después a tontear con el ensamblador del Z80 (si bien no llegué a hacer mucho). Entonces ya mi padre se adquirió un XT y tras un tiempo con el GWBASIC me metí a C que para algo era el «lenguaje de los profesionales».
Para móviles comencé, no te sabría decir, con el Embedded Visual C++ para Windows Mobile, cuando lo que molaban eran las PDAs y no los móviles xD
Y para iOS puesto que desde hace algún tiempecillo, unos no sé… 3 años y pico, cuando pude hacerme con un Mac.

Cómo crear una app para ios

¿Has llegado a programar algún minijuego Java de aquellos de principios de siglo veintiuno?
Puesto que no… jamás me llamaron la atención sinceramente… Ignoro cuál era la realidad de los ambientes para desarrollar esta clase de juegos, pues verdaderamente jamás les presté atención…

Desde fuera igual no se aprecia, mas realizar un curso en línea no es una labor fácil. ¿Contento por haber dado a luz al fin «el pequeño» (a.k.a. el curso)? ¿Te supuso mucho trabajo?
Contento no… muy contento! Lo cierto es que si que dio bastante trabajo… Mas bueno… creo que el resultado final vale mucho la pena 🙂

Bueno, vamos con iOS. ¿Qué herramientas físicas y etéreas (esto es, hardware y software) hacen falta para programar para iOS?
Esencialmente con un Mac es suficiente… bueno obligatorio diría yo. Entonces a nivel de software está XCode, que es gratis, y viene con todo lo preciso. Eso sí, para desplegar aplicaciones, si bien sea para probarlas en tu iPhone para depurarlas, te tocará abonar la cuota de desarrollador de Apple… Entonces ya más etéreo, dosis de paciencia y apreciar aprender!

Nota: Si no tienes un Mac, existen opciones alternativas legales y económicas para desarrollar para iOS como el “alquiler” de un Mac en recóndito. En la ficha del curso hallarás más información a este respecto en el apartado “Requisitos técnicos”.

¿Qué conocimientos anteriores hacen falta? ¿Está al alcance de un muggle que no sabe programar?
Esencialmente conocimientos de desarrollo. Si vienes de C todo es más simple por la similitud de Objective-C a este lenguaje. Si vienes de C++/C#/Java o bien algún otro lenguaje afín (orientado a objetos y basado en clases) asimismo perfecto pues todos esos conceptos los reaprovechas.
Si no sabes programar, va a tocar aprender esos conceptos anteriores. En un caso así es mucho mejor iniciar con Swift, que es un lenguaje considerablemente más moderno y afable que Objective-C que bueno… se le nota la edad. En verdad, francamente, es mejor iniciar con Swift sea como sea tu nivel anterior… mas deberías conocer y familiarizarte un tanto con Objective-C. Tal vez esté condenado a fallecer, mas no tengo claro que sea una muerte veloz.
A nivel de complejidad, programar para iOS no es ni más simple ni más bastante difícil que hacerlo para Android o bien Windows Phone o bien aun para Windows de escritorio o bien MacOSX… cada plataforma tiene sus características particulares mas los conceptos básicos son exactamente los mismos.

¿Qué perfil de programador podría dar el salto a iOS con mayor seguridad?¿Desarrollador Web, Desktop o bien Mobile de la vieja escuela (Blackberry, Symbian…)?
Un desarrollador desktop seguro… pues esencialmente las aplicaciones iOS son aplicaciones desktop… a menos que corren en teléfonos o bien tablets, mas los conceptos son exactamente los mismos. Obviamente si sabes programar para MacOSX tienes mucho recorrido recorrido, ya que vas a conocer a Cocoa y a XCode. Si vienes de otros desarrollos no te sabría decir…Desarrollador web es algo ambiguo: no tiene nada que ver un desarrollador de frontend de uno de backend… Los conceptos de la página web (CSS, HTML y JavaScript) son bastante diferentes a los de iOS, como el modelo de desarrollo… quizás un desarrollador de frontend con bastante experiencia en JavaScript pueda tener claros los conceptos de orientación a objetos, clases y demás que son precisos para desarrollar para iOS, mas no sería lo normal. Un desarrollador de backend es posible que si, en dependencia de exactamente en qué plataforma desarrolle. Y un desarrollador mobile «de la vieja escuela» no tengo ni la más remota idea pues jamás he hecho nada para Blacberry o bien Symbian. Si sirve Windows Mobile, puesto que bueno, hay diferencias bastante grandes, mas asimismo partirían en buena situación para dar el salto.
Y como es natural los desarrolladores móviles «modernos», sea de Windows Phone o bien Android estarían en una situación señalada en tanto que muchos conceptos son exactamente los mismos.
Eso sí, en todo caso tocará aprender XCode, Swift y como iOS emplea el modelo MVC… además de una API nueva, claro.

He oído por ahí que la sintaxis de Swift está concebida para captar los desarrolladores web al lado obscuro de la Aplicaciones móviles. ¿Tienes la impresión de que esto puede ser cierto? ¿No seríamos todos más felices creando aplicaciones web multidispositivo?
¡Puesto que no lo había oído jamás! No sé que decir a este respecto… la sintaxis de Swift es la de lenguaje moderno (se semeja en ciertos puntos a Go por servirnos de un ejemplo) y la propia filosofía del lenguaje asimismo es moderna: mezcla programación funcional con orientación a objetos y tiene peculiaridades de lenguaje activo. Mas no sé si esto es razón para atraer desarrolladores web, la verdad…
Sobre si seríamos todos más felices creando aplicaciones web multidispositivo… puesto que puede, supongo que va a ir a gustos de cada uno de ellos. Mas la verdad es que en la actualidad, las aplicaciones web mutildispositivo, en ciertos aspectos están lejos de las nativas. Pueden ser una buenísima opción o bien la mejor, en ciertos casos… mas en otros no. Todo son opciones y creo que nuestra responsabilidad como desarrolladores es conocer todo (o bien, bueno, lo máximo que podamos) lo que hay, para poder seleccionar siempre y en todo momento la opción mejor libre.

Sobre Swift, ¿ha venido a solventarnos la vida, a complicarla o bien únicamente son fuegos de artificio «bonicos» de Apple? ¿Qué más te agrada de Swift?
Ha venido a solventarnos la vida indudablemente… Swift no agrega nada nuevo al desarrollo de iOS, salvo un nuevo lenguaje con una sintaxis moderna y considerablemente más fácil… ¡lo que no es poco!
¿Lo que más me agrada de Swift? Es complicado decir, mas los genéricos (todavía con sus restricciones) y las funciones lambda son novedades muy refrescantes para el desarrollo iOS. Sí… ya estaban en otros lenguajes y ambientes mas es que eso es esencialmente lo que hace Swift: traer peculiaridades ya existentes en otros lenguajes al desarrollo para iOS, donde Objective-C estaba un tanto atrofiado, la verdad.

Entonces, ¿sepultamos ya a Objective-C o bien es mejor no confiarse?
El futuro del desarrollo para iOS es Swift. Mas Objective-C proseguirá acá a lo largo de mucho tiempo diría yo… No creo que vuelva, creo que los desarrolladores iOS van a abrazar Swift, mas Objective-C va a dar bastante guerra aún… Considero que es esencial conocer Objective-C, quizás no para desarrollar con él, mas sí pues conocer Objective-C ayuda a comprender Swift (Cocoa Touch, la API de iOS está desarrollada en Objective-C) y como es lógico te dejará comprender la enorme cantidad de código existente escrito en él.

¿Cuál es el punto en el que se bloquea más la gente en el momento de aprender a desarrollar para iOS?
Puesto que bueno… un tanto todo. Para iniciar interfaz builder tiene sus particularidades. A mi lo que más me costó fue lo de las layout constraints, mas bueno jamás he tenido ánima de diseñador 😛
Por el resto, personalmente, encuentro que el modelo de controladores y encargados es sencillísimo y directo, mas eso puede ser por mi experiencia anterior como desarrollador. Con eso deseo decir, que lo más esencial no es donde te embarranques, si no estar presto a aprender. ¡Pues todos nos embarrancamos en algún punto o bien otro!

Imagínate que soy un «entrepreneur» cool de esos que levantan eones de euros y los quiero invertir en desarrollar una Aplicación molona. Si deseo contratar un buen desarrollador iOS, ¿exactamente en qué debería fijarme para separar el grano de la paja?
Puesto que para levantar pasta creo que es más simple vender un tanto de humo… mas bueno, si lo que deseas es localizar un buen desarrollador de iOS, que te muestre proyectos en los que haya participado. No es preciso que sean open source, ni que los tenga públicos en GitHub, mas sí que pueda hablarte de ellos, contarte su experiencia y de ser posible enseñártelos. Lo idóneo sería que quien contratara un desarrollador de iOS fuera… ¡otro desarrollador de iOS!

Y ya para finalizar, ¿hay trabajo real de desarrollador iOS alén del puro buzz tecnológico? ¿Exactamente en qué género de aplicaciones o bien empresas?
Sí que lo hay, indudablemente. Muchas empresas desean estar en iOS, y existen muchas aplicaciones empresariales para iOS, así sean en la Store oficial o bien aplicaciones internas (desplegadas en stores privadas). Saber desarrollar para iOS creo que es una buenísima inversión para la carrera de uno, si bien personalmente me olvidaría de lo de publicar una aplicación y hacerme millonario… sí, cada semana le toca la primitiva a alguien, mas eso no acostumbra a representar que te toque a ti.

Bueno, hasta acá esta pequeña entrevista con Eduard al que agradecemos de forma profunda el tiempo que nos ha dedicado.

Como has visto, no solo controla un montón, sino es un tipo cautivador. No sé , mas a mi, personalmente, me encantaría tenerlo como tutor . 😉

Espero que con las contestaciones de Eduard se te hayan despejado un tanto las dudas en el momento de aproximarte al desarrollo para iOS, mas si tienes alguna otra duda que a mí no se me haya ocurrido o bien, sencillamente deseas expresar tu opinión, tienes los comentarios abiertos completamente.

c1730633