martes, 25 de marzo de 2014

Los desarrolladores responden: entrevista a Julio Rivas


Xataka Móvil me ha entrevistado para su reportaje “Desarrollo de aplicaciones móviles (II): ¿Para qué plataformas móviles desarrollar y para cuál primero?”, aquí podéis consultar la entrevista completa. 

¿Podrías presentarte y decirnos qué haces y qué hace la empresa para la que trabajas?
Soy Julio Rivas y actualmente trabajo como Lead iOS Developer en TAPTAP Networks. En TAPTAP tenemos principalmente dos líneas de trabajo, por un lado distintos SDKs publicitarios (SonataAds, NativeAds...) y por otro, desarrollamos nuevas aplicaciones para nuestros clientes.

Plataforma/s elegida/s


¿En qué plataforma desarrolláis aplicaciones/juegos para dispositivos móviles?
Cuando abordamos cada proyecto siempre lo desarrollamos al menos en iOS y Android, y alguna vez se han realizado webs móvil.

¿Cuáles son las razones de esa elección? ¿Hay razones técnicas que hagan más sencillo o interesante el desarrollo en una u otra?
La principal razón es intentar abarcar el mayor número de usuarios posible. Además tenemos un gran equipo con mucha experiencia en desarrollos nativos lo cual ayuda.

¿En qué lenguajes se programan principalmente las aplicaciones móviles que desarrolláis?
Las aplicaciones iOS se desarrollan de manera nativa en Objective-C usando todas las herramientas propias que proporciona Apple (Xcode, Cocoa, Interface Builder...) junto con terminales reales para pruebas,  además usamos una serie de frameworks de terceros para diferentes funcionalidades como estadísticas, notificaciones push, control de errores… Mis compañeros de Android desarrollan en Java junto con el nuevo IDE de Google: Android Studio.

¿Cómo se planifica el desarrollo, qué factores se toman en cuenta a la hora de abordar un nuevo proyecto? ¿Se plantean cuestiones como diferentes tamaños de pantalla y resoluciones, diferentes formatos (aplicaciones específicas de tablet, quizás), seguridad, privacidad o incluso eficiencia energética?
Siempre intentamos trabajar con metodologías ágiles y en nuestros proyectos internos intentamos usar Kanban o scrum, realizar springs semanales junto con entregas parciales. La dificultad surge cuando se trabaja en proyectos para clientes ya que a veces aplicar estas metodologías es complicado dependiendo del grado de implicación del mismo y de los plazos de tiempo que se manejen. En cuanto a detalles más técnicos, al final depende de las especificaciones técnicas del proyecto en cuestión. Ahora mismo en la parte de iOS consideramos que no merece la pena hacer proyectos nuevos  para una versión de iOS inferior a la 7.0 ya que con esto alcanzamos más de un 80% del mercado. En el caso de las librerías publicitarias es algo distinto ya que abarcamos desde iOS 5.0 para tener casi el 100% del mercado soportado.

¿Cómo se gestiona algo tan relevante como la interfaz de usuario y la usabilidad en aplicaciones móviles? ¿Qué parte del éxito de una aplicación o juego se debe a ese apartado (quizás un porcentaje, tipo "el 60%")?
Evidentemente la interfaz de usuario es casi la parte más importante de una aplicación ya que como solemos decir, el producto tiene que entrar por los ojos. Aquí es donde nuestros compañeros de UI/UX, son ellos los que más capacitados están para ello, aunque siempre los desarrolladores intentamos aportar nuestro granito de arena estando al día de las últimas tendencias y de las apps del momento.

Hablando de tablets, en iOS hay un catálogo claro definido para los iPad, pero en Android esa opción está mucho más diluida. ¿Por qué?
Como bien dices, en esto los desarrolladores iOS somos afortunados ya que prácticamente sólo tenemos que tratar con un terminal, aunque si que en algunos casos tenemos en cuenta las distintas versiones de sistema operativo. En cuanto a Android, desde mi punto de vista, es un gran problema, pero de esto sabrán más mis compañeros “androides”.

En caso de trabajar con varias plataformas móviles, ¿podríais describirnos sus principales ventajas y desventajas?
Yo estoy muy especializado en iOS, llevo trabajando en esta tecnología casi desde que salió, pero también he hecho algún curso de Android, y puedo decir que la gran dificultad que presenta Android respecto a iOS es la fragmentación dada la gran cantidad de versiones de sistema operativo y de tamaños de pantalla. Creo que eso es un lastre para la tecnología.

¿Hay alguna plataforma especialmente prometedora para desarrolladores por su filosofía/herramientas/comunidad?
Yo de momento sigo apostando por iOS y Android, cierto es que Windows Phone está ganando terreno pero todavía está en pañales y creo que llegan demasiado tarde. En cuanto a las tecnologías web tipo Phonegap o Firefox OS tienen gran proyección pero ahora mismo están muy verdes y de momento se nota un gran salto cualitativo entre un desarrollo nativo y un desarrollo web.

De nuevo, en caso de trabajar con varias plataformas móviles, ¿es factible trasladar (portar) un desarrollo de una a otra de forma sencilla? En caso afirmativo, ¿qué plataforma base se suele elegir?
En el caso de las apps híbridas desarrolladas en HTML5 es realmente rápido usando plataformas como PhoneGap, pero en el caso de aplicaciones nativas es algo complicado, ya que las tecnologías son completamente distintas aunque la filosofía sí que es la misma.

Comunidad de desarrolladores


¿Hay mucho movimiento entre la comunidad de desarrolladores? ¿Se comparte conocimiento?
La verdad es que sí, las redes sociales y las distintas comunidades de desarrollo son una fuente de  conocimiento interminable y gracias a ellas puedes estar al día de las últimas tendencias. Además en este mundo estás en un proceso de aprendizaje continuo donde si no estás a la última estás muerto.

¿Hay sensación de que Apple, Google, Microsoft... traten mejor a la comunidad de desarrolladores unas que otras?
Los defensores de cada tecnología te dirán que su comunidad es la mejor, pero lo cierto es que hay información de sobra para todos, aunque cierto es que en Apple se echa de menos un canal de información único como hace la comunidad Android con Google+.

¿Por qué razones?
Supongo que como todo, todas las tecnologías intentan mantener a sus desarrolladores lo más contento posibles pero no siempre tienen éxito. Yo soy muy fan de foros, blogs y sobre todo stackoverflow, donde puedes encontrar información de todo.

HTML5


Mozilla y Firefox OS --entre otras-- abogan por un mercado en el que las aplicaciones HTML5 sean el pilar fundamental de sus mercados. ¿Es HTML5 el futuro?
Evidentemente tienen unas buenas bases para tener éxito en el futuro dadas las capacidades de HTML5 y el gran número de desarrolladores expertos en tecnologías web, pero yo creo que todavía están muy lejos de los desarrollos nativos y que, al menos de momento, hay mucha diferencia en la calidad de las apps desarrolladas en HTML5 y de manera nativa (iOS/Andorid).

No parece que iOS vaya a apostar demasiado a priori por este tipo de soluciones, pero Google sí tiene a Chrome OS en el escritorio como alternativa en la que HTML5 es clave. ¿Veis a iOS y Android adoptando este tipo de soluciones a gran escala?
Sinceramente no lo creo, pero al final las cifras son las que mandan y si HTML5 gana cuota de mercado iOS y Android tendrán que reaccionar.

A día de hoy, con todo lo que proporciona HTML5, ¿es posible desarrollar aplicaciones y juegos móviles con las mismas capacidades que las desarrolladas con SDKs nativos?
Yo creo que no, pero seguro que si preguntas a los desarrolladores de HTML5 te dirán lo contrario, aunque a experiencia de usuario no es la misma y al final eso es lo que marca el éxito de un producto. Se me ocurren un par de ejemplos como Facebook o Linkedin, que realizaron sus apps en HTML5 y al final las tuvieron que rehacer nativas. Es más, creo que Mark Zuckerberg comentó en una entrevista que la decisión de hacer la app de Facebook en HTML5 fue una de sus peores decisiones.

De no serlo, ¿qué le hace falta a HTML5?
Aquí te podrán ayudar mejor los expertos en HTML5, pero desde mi punto de vista la sensación de fluidez no es comparable a los desarrollos nativos.

Monetización



¿Cómo monetizáis las aplicaciones, qué modelos consideráis y cuáles son a vuestro juicio los más rentables?
En TAPTAP Networks nos dedicamos a la publicidad así que podrás imaginar que nuestra forma de monetizar todos nuestros desarrollos es mediante este medio. Tenemos distintos productos publicitarios junto con una red premium de anunciantes muy grande que hace que todo esto sea posible.Desde mi punto de vista el mejor modelo para monetizar apps es distribuirlas de manera gratuita incluyendo publicidad y dependiendo del tipo de desarrollo incluir pagos In-App.

Parece que las compras in-app están siendo actualmente las que más éxito están dando a los desarrolladores. ¿Creéis que este modelo se mantendrá en el futuro?
Creo que sí, es un muy buen modelo donde el usuario puede comprar más contenido en función de sus preferencias. La única pega que encuentro son los porcentajes que se quedan tanto Apple como Google al utilizar sus sistemas nativos.

¿Qué otras opciones de futuro creéis que hay en este campo?
Creo que hay una buena opción que no ha acabado de explotar, el NFC. Me parece un sistema de pago super cómodo que en países como Japón ya es una realidad y la gente lo utiliza de manera continua. Pero como pasa en muchos casos hasta que un pez gordo como Apple no apueste por ello no llegará a tener éxito a nivel mundial.

La enorme cantidad de alternativas distintas hace complicado monetizar la aplicación o juego y conseguir rentabilidad económica. ¿Qué creéis que puede determinar el éxito de un proyecto y que éste sea rentable?
Creo que el éxito de un proyecto, más allá de su contenido, su interfaz o incluso su fiabilidad, es una buena campaña de marketing. Muchos desarrolladores no tienen en cuenta este aspecto, pero es casi tan importante como el propio producto.Sin una buena campaña de marketing, anunciando el producto en distintos medios será imposible llegar a un número amplio de usuarios potenciales y que al final que tengamos éxito.

Consejos para quienes se lanzan al desarrollo móvil



¿Un consejo para jóvenes desarrolladores a nivel técnico?
Constancia y pasión son las claves, y para mí no sólo a nivel profesional. Recomiendo a los jóvenes desarrolladores que si esto es algo que les gusta no tengan miedo y se metan de lleno, pero eso sí, no se puede empezar a construir la casa por el tejado así que es bueno primero estudiar las bases y la arquitectura de una tecnología antes de ponerse a desarrollar.Una vez que ya conozcan las bases, recomiendo que empiecen a desarrollar y se metan en las distintas comunidades y foros de desarrollo.


¿Y a nivel práctico?
A nivel práctico, no hay ninguna fuente de inspiración mejor que el propio mercado así que recomiendo que intentéis estar atentos a las nuevas apps para estar al día de las últimas tendencias. También es muy importante el contacto personal así que recomiendo asistir a conferencias y eventos, ya que conoceréis a mucha gente y podréis aprender mucho.

Post original disponible aquí: http://www.taptapnetworks.com/blog/los-desarrolladores-responden-entrevista-julio-rivas