¿Estás pensando en aprender a programar para iOS? A lo mejor llevas un tiempo dándole vueltas a la posibilidad de meterte en el desarrollo móvil porque te lo pide tu jefe, o ese cliente tan bueno de tu empresa quiere que sus comerciales trabajen armados con iPhones y iPads y necesita crear una app propia para tomar pedidos.
O quizá ya has desarrollado apps para Android o Windows Phone y quieres adaptar tus aplicaciones para iOS porque has oído que son los usuarios que se gastan más dinerito en apps.
¡Qué demonios!, o por el simple placer geek de aprender a desarrollar en una nueva plataforma.
Sean cuales sean tus motivos, probablemente tendrás tus dudillas : ¿Qué necesito para programar para iOS? ¿Por dónde empiezo a dar los primeros pasos? ¿Hay trabajo como desarrollador iOS? ¿Qué curso de iOS puedo hacer?
Eduard Tomás nos da algunas pistas
Para resolver estas dudas, nada mejor que preguntarle a un crack como Eduard Tomás ( @eiximenis en Twitter).
Eduard no solo es un excelente desarrollador (con una cabeza que para mi la quisiera yo) sino que es el autor y tutor de nuestro flamante curso online de desarrollo para iOS (con Swift y Objective-C, nada menos). Además es un tipo majísimo que se ha prestado a darnos valiosos consejos que cualquier novato que quiera introducirse en iOS probablemente agradecerá.
¡Vamos allá!
Bueno Eduard. Cuéntanos un poquito sobre ti: ¿Cuándo empezaste a programar? ¿Y a programar para móviles? ¿Y para iOS?
Buf... ni lo recuerdo... todo empezó con un Spectrum 48K que me compró mi padre, con el que empecé a jugar... luego esto evolucionó a ver cómo conseguir vidas infinitas en los juegos (los famosos pokes, seguir con el cargador universal de la microhobby y de aquí a querer hacer uno sus propios juegos. Y eso me llevó primero al BASIC y después a tontear con el ensamblador del Z80 (aunque no llegué a hacer mucho). Luego ya mi padre se compró 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 empecé, 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 pues desde hace algún tiempecillo, unos no sé... tres años y pico, cuando pude hacerme con un Mac.
¿Has llegado a programar algún minijuego Java de aquellos de principios de siglo XXI?
Pues no... nunca me llamaron la atención honestamente... Desconozco cuál era la realidad de los entornos para desarrollar este tipo de juegos, porque realmente nunca les presté atención...
Desde fuera igual no se aprecia, pero elaborar un curso online no es una tarea sencilla. ¿Contento por haber dado a luz por fin "el niño" (a.k.a. el curso)? ¿Te supuso mucho trabajo?
Contento no... contentísimo! La verdad es que si que dio bastante trabajo... Pero bueno... creo que el resultado final vale mucho la pena :)
Bueno, vamos con iOS. ¿Qué herramientas físicas y etéreas (o sea, hardware y software) hacen falta para programar para iOS?
Básicamente con un Mac es suficiente... bueno obligatorio diría yo. Luego a nivel de software está XCode, que es gratuito, y viene con todo lo necesario. Eso sí, para desplegar aplicaciones, aunque sea para probarlas en tu propio iPhone para depurarlas, te va a tocar pagar la cuota de desarrollador de Apple... Luego ya más etéreo, dosis de paciencia y querer aprender!
Nota: Si no tienes un Mac, existen alternativas legales y económicas para desarrollar para iOS como el “alquiler” de un Mac en remoto. En la ficha del curso encontrarás más información al respecto en el apartado “Requisitos técnicos”.
¿Qué conocimientos previos hacen falta? ¿Está al alcance de un muggle que no sabe programar?
Básicamente conocimientos de desarrollo. Si vienes de C todo es más fácil por la semejanza de Objective-C a este lenguaje. Si vienes de C++/C#/Java o algún otro lenguaje similar (orientado a objetos y basado en clases) también perfecto porque todos esos conceptos los reaprovechas.
Si no sabes programar, tocará aprender esos conceptos previos. En este caso es mucho mejor empezar con Swift, que es un lenguaje mucho más moderno y amigable que Objective-C que bueno... se le nota la edad. De hecho, sinceramente, es mejor empezar con Swift sea cual sea tu nivel previo... pero deberías conocer y familiarizarte un poco con Objective-C. Quizá esté condenado a morir, pero no tengo claro que sea una muerte rápida.
A nivel de dificultad, programar para iOS no es ni más fácil ni más difícil que hacerlo para Android o Windows Phone o incluso para Windows de escritorio o MacOSX... cada plataforma tiene sus peculiaridades pero los conceptos básicos son los mismos.
¿Qué perfil de programador podría dar el salto a iOS con mayor seguridad?¿Desarrollador Web, Desktop o Mobile de la vieja escuela (Blackberry, Symbian…)?
Un desarrollador desktop seguro... porque básicamente las aplicaciones iOS son aplicaciones desktop... salvo que corren en teléfonos o tablets, pero los conceptos son los mismos. Evidentemente si sabes programar para MacOSX tienes mucho trecho recorrido, ya que ya conocerás 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 web (CSS, HTML y JavaScript) son bastante distintos a los de iOS, así como el modelo de desarrollo... quizá 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 necesarios para desarrollar para iOS, pero no sería lo normal. Un desarrollador de backend puede que si, dependiendo de en qué plataforma desarrolle. Y un desarrollador mobile "de la vieja escuela" no tengo ni idea porque nunca he hecho nada para Blacberry o Symbian. Si sirve Windows Mobile, pues bueno, hay diferencias bastante grandes, pero también partirían en buena posición para dar el salto.
Y por supuesto los desarrolladores móviles "modernos", sea de Windows Phone o Android estarían en una posición destacada ya que muchos conceptos son los mismos.
Eso sí, en cualquier caso va a tocar aprender XCode, Swift y como iOS usa el modelo MVC... amén de una API nueva, claro.
He oído por ahí que la sintaxis de Swift está pensada para atraer a los desarrolladores web al lado oscuro de la Apps móviles. ¿Tienes la sensación de que esto puede ser cierto? ¿No seríamos todos más felices creando aplicaciones web multidispositivo?
¡Pues no lo había oído nunca! No sé que decir al respecto... la sintaxis de Swift es la de lenguaje moderno (se parece en algunos puntos a Go por poner un ejemplo) y la propia filosofía del lenguaje también es moderna: mezcla programación funcional con orientación a objetos y tiene características de lenguaje dinámico. Pero 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... pues puede, supongo que irá a gustos de cada uno. Pero lo cierto es que hoy en día, las aplicaciones web mutildispositivo, en algunos aspectos están lejos de las nativas. Pueden ser una muy buena opción o la mejor, en algunos casos... pero en otros no. Todo son opciones y creo que nuestra responsabilidad como desarrolladores es conocer todo (o, bueno, lo máximo que podamos) lo que hay, para poder elegir siempre la mejor opción disponible.
Sobre Swift, ¿ha venido a solucionarnos la vida, a complicarla o solamente son fuegos artificiales "bonicos" de Apple? ¿Qué es lo que más te gusta de Swift?
Ha venido a solucionarnos la vida sin duda... Swift no añade nada nuevo al desarrollo de iOS, salvo un nuevo lenguaje con una sintaxis moderna y mucho más sencilla... ¡lo que no es poco!
¿Lo que más me gusta de Swift? Es complicado decir, pero los genéricos (aún con sus limitaciones) y las funciones lambda son novedades muy refrescantes para el desarrollo iOS. Sí... ya estaban en otros lenguajes y entornos pero es que eso es básicamente lo que hace Swift: traer características ya existentes en otros lenguajes al desarrollo para iOS, donde Objective-C estaba un poco anquilosado, la verdad.
Entonces, ¿enterramos ya a Objective-C o es mejor no confiarse?
El futuro del desarrollo para iOS es Swift. Pero Objective-C seguirá aquí durante bastante tiempo diría yo... No creo que vuelva, creo que los desarrolladores iOS abrazarán Swift, pero Objective-C dará bastante guerra todavía... Pienso que es importante conocer Objective-C, quizá no para desarrollar con él, pero sí porque conocer Objective-C ayuda a entender Swift (Cocoa Touch, la API de iOS está desarrollada en Objective-C) y por supuesto te permitirá entender la gran cantidad de código existente escrito en él.
¿Cuál es el punto en el que se atasca más la gente a la hora de aprender a desarrollar para iOS?
Pues bueno... un poco todo. Para empezar interface builder tiene sus peculiaridades. A mi lo que más me costó fue lo de las layout constraints, pero bueno yo nunca he tenido alma de diseñador :P
Por el resto, personalmente, encuentro que el modelo de controladores y delegados es muy sencillo y directo, pero eso puede ser por mi experiencia previa como desarrollador. Con eso quiero decir, que lo más importante no es donde te encalles, si no estar dispuesto a aprender. ¡Porque todos nos encallamos en algún punto u otro!
Imagínate que soy un "entrepreneur" cool de esos que levantan eones de € y los quiero invertir en desarrollar una App molona. Si quiero contratar un buen desarrollador iOS, ¿en qué debería fijarme para separar el grano de la paja?
Pues para levantar pasta creo que es más fácil vender un poco de humo... pero bueno, si lo que quieres es encontrar un buen desarrollador de iOS, que te muestre proyectos en los que haya participado. No es necesario que sean open source, ni que los tenga públicos en GitHub, pero sí que pueda hablarte de ellos, contarte su experiencia y si es posible enseñártelos. Lo ideal sería que quien contratase un desarrollador de iOS fuese... ¡otro desarrollador de iOS!
Y ya para terminar, ¿hay trabajo real de desarrollador iOS más allá del puro buzz tecnológico? ¿En qué tipo de apps o empresas?
Sí que lo hay, sin duda. Muchas empresas quieren estar en iOS, y hay muchas aplicaciones empresariales para iOS, ya sean en la Store oficial o aplicaciones internas (desplegadas en stores privadas). Saber desarrollar para iOS pienso que es una muy buena inversión para la carrera profesional de uno, aunque personalmente me olvidaría de lo de publicar una app y hacerme millonario... sí, cada semana le toca la primitiva a alguien, pero eso no suele significar que te toque a ti.
Bueno, hasta aquí esta pequeña entrevista con Eduard al que agradecemos profundamente el tiempo que nos ha dedicado.
Como has visto, no solo controla un montón, sino que es un tipo encantador. No sé tú, pero a mi, personalmente, me encantaría tenerlo como tutor . ;-)
Espero que con las respuestas de Eduard se te hayan despejado un poco las dudas a la hora de acercarte al desarrollo para iOS, pero si tienes alguna otra duda que a mí no se me haya ocurrido o, simplemente quieres expresar tu opinión, tienes los comentarios abiertos de par en par.
Más artículos para iniciarte con iOS
Puedes encontrar más artículos sobre el tema en la categoría de desarrollo móvil. No obstante, aquí te dejo algunos posts escritos por el propio Eduard que te pueden resultar muy útiles:
¡Nos vemos!