Conceptos básicos
Una de las principales diferencias entre un desarrollador que es nuevo en el desarrollo de iOS y Cocoa y un profesional con experiencia, es el conocimiento de la "manera de Apple" de hacer las cosas. Un desarrollador que viene de Java o cualquier otro lenguaje o entorno de desarrollo, puede ser adverso a hacer las cosas a la manera de Apple y puede querer trabajar con herramientas con las que se siente cómodo. Un desarrollador de Cocoa está familiarizado con todas las tecnologías importantes de Apple (Core Data, GCD, Xcode Workspaces, Frameworks). Un desarrollador principiante sustituirá sus tecnologías favoritas por las tecnologías diseñadas para el desarrollo de iOS.
Un desarrollador profesional sabrá qué usar y cuándo. Un desarrollador Cocoa experimentado conoce los problemas de la tecnología de Apple y sabe qué enfoque utilizar cuando. El desarrollador sabrá cuándo usar el "camino de Apple" y cuándo encontrar un nuevo enfoque.
Un desarrollador profesional de iOS tendrá experiencia con las técnicas de gestión de proyectos que son específicas de Apple. Conocerán los secretos de Xcode ( lo que significa cada ajuste de compilación, capaces de identificar errores rápidamente, etc.). Sabrá cómo publicar en la App Store (perfiles de aprovisionamiento, certificados de desarrollador, presentación de aplicaciones). Conocerán el despliegue continuo de código con servicios como TestFlight o HockeyApp o una solución personalizada. Un profesional tendrá algunos conocimientos de desarrollo ágil y TDD (Test Driven Development) o BDD (Behavior Driven Development) con iOS.
Actitud
Un gran desarrollador de iOS tiene paciencia con Apple. La forma de hacer las cosas de Apple es "a su manera o en la carretera" y los desarrolladores tienen que lidiar con eso. Un desarrollador necesita disfrutar aprendiendo sobre cada cosa nueva que Apple revela y debe persistir a pesar de los problemas con la tecnología de Apple.
Un desarrollador de iOS necesita pasión. Es fácil sentir que hay un millón de aplicaciones en la tienda de aplicaciones y que una más no marcará la diferencia. Se necesita una creencia apasionada en el poder de la tecnología móvil.
Principios generales
La principal diferencia entre un desarrollador iOS profesional y alguien totalmente nuevo en el desarrollo iOS la veo en la voluntad de trabajar en diferentes áreas. Un desarrollador gurú tomará la iniciativa para asegurarse de que las cosas se hagan. Está dispuesto a crear una animación personalizada o un sistema de inicio de sesión seguro. Molestarán al equipo de diseño para asegurarse de que los activos gráficos están listos. Hablarán con los chicos del servidor para asegurarse de que las APIs servirán efectivamente a la aplicación móvil, y siempre estarán en contacto con otros desarrolladores del proyecto. Un desarrollador profesional de iOS es en parte gestor, arquitecto de sistemas, investigador, ingeniero de construcción y mucho más.
Descripción de las tres etapas
- Desarrollador junior - Un desarrollador junior está empezando y no está familiarizado con la tecnología de Apple. Son torpes con Xcode y tienen problemas para conseguir que su software se ejecute en el dispositivo. No tienen ni idea cuando les pides que escriban pruebas para su software o que desplieguen su aplicación a través de un servidor de compilación como Jenkins.
- Dev. de nivel medio - Un desarrollador de nivel medio se siente cómodo con Apple y las herramientas involucradas en el desarrollo de iOS. Tienen suficiente confianza y experiencia para manejar la mayoría de los problemas y han tratado con la mayoría de las áreas del SDK de iOS.
- Dev. Senior - Todo lo anterior, además de conocimientos fuera de iOS. Saben cómo escribir código y arquitecturar sistemas para que sean fácilmente portables a Android u otras plataformas. Saben optimizar el proceso de desarrollo con técnicas de desarrollo ágil y despliegue continuo. Tienen la confianza necesaria para dirigir a otros desarrolladores y pueden enseñarles exactamente cómo utilizar las herramientas de Apple. Rara vez se quedan perplejos ante los problemas, pero tienen la humildad de respetar la experiencia de los demás.
Los buenos desarrolladores de iOS conocen las herramientas de Apple muy, muy bien.