10 habilidades y conocimientos necesarios para un desarrollador principiante de iOS

imagen

La profesión de desarrollador de iOS ahora es bastante demandada, bien pagada y posiblemente incluso de moda, y por lo tanto atrae a muchas personas.

Muchos candidatos vienen para entrevistas conmigo y colegas para vacantes abiertas en nuestro lugar, y veo claramente entre muchos recién llegados la falta de conocimiento básico o simplemente un conocimiento incierto de él. Aunque hay muchos artículos, libros y cursos (de pago y gratuitos) en Internet, de los que puede obtener los conocimientos necesarios, no siempre es fácil entender en qué temas se debe concentrar.

En este artículo compartiré información sobre qué habilidades y conocimientos considero importantes para un desarrollador principiante de iOS, trataré de explicar por qué son necesarios y daré enlaces a materiales para su estudio.

El material está dirigido principalmente a aquellos que desean comenzar la capacitación, llenar los vacíos o comprender su disposición a trabajar como desarrollador de iOS. Trataré de explicar todo en palabras simples.

Debo decir de inmediato que la mayoría de los materiales a los que proporcionaré enlaces están en inglés. Entiendo que aprender inglés puede ser más difícil y más lento al principio, pero dará sus frutos más adelante: no siempre se pueden encontrar buenos materiales relevantes en ruso.

Primeros pasos


Antes de profundizar en los siguientes temas, recomiendo preparar la base, a saber, tomar (escuchar y reproducir todas las tareas) el curso gratuito CS 193P de la Universidad de Stanford y leer la documentación de Swift en el sitio web de Apple.

Es absolutamente normal si no comprende o no recuerda todos los temas, pero tendrá una base: una comprensión básica estructurada de las aplicaciones iOS del dispositivo y las construcciones de lenguaje Swift. Dedicando tiempo a estas cosas al comienzo, será mucho más fácil para usted agregar conocimiento sobre cada tema.

1. Diseño automático, Storyboard, diseño del código


Crear una interfaz de aplicación basada en diseño es una habilidad básica para un programador de iOS. Debe conocer no solo los componentes principales desde los que se ensambla la interfaz (UIView, UILabel, UIButton, UIImageView, etc.), sino también cómo organizarlos en la pantalla para lograr la posición y el tamaño deseados en pantallas de diferentes tamaños, incluyendo al encender el dispositivo. Para simplificar, destacaría 3 formas de crear una interfaz:

  • forma visual a través de Interface Builder
  • describir completamente la interfaz del código
  • una opción combinada, cuando parte del contenido de las pantallas se ingresa a través de Interface Builder, y sus configuraciones se mueven al código.


Las habilidades de diseño de interfaz solo a través del Creador de interfaces en StoryBoard pueden no ser suficientes para usted. Además del hecho de que no puede hacer todo a través de StoryBoard, debe comprender que varios desarrolladores están trabajando en aplicaciones grandes y que se utiliza un sistema de control de versiones (con frecuencia esto es Git) para combinar los resultados de su trabajo. Cuando varias personas trabajan en una sola pieza de código, el resultado de su trabajo no siempre es posible combinar automáticamente. Si la interfaz fue diseñada por el programador a partir del código, la fusión es más fácil y rápida que cuando el generador de interfaces generó el código.

Para dominar el tema, recomiendo:


¿Cómo entender que has dominado el tema lo suficiente? Tome cualquiera de las aplicaciones que usa en su iPhone. Puede comenzar con los estándares, por ejemplo, Apple Music. Intenta reproducir completamente una o un par de pantallas que veas, así como su comportamiento al girar.

imagen

2. Ciclo de vida de ViewController


Por simplicidad, suponga que cada pantalla en una aplicación móvil es un ViewContoller, o más bien, es un descendiente de la clase UIViewContoller. Es importante que el desarrollador de iOS sepa cómo funciona el ciclo de vida de la pantalla, o más bien, qué métodos se realizarán durante la preparación, apariencia, rotación, destrucción y otras condiciones de la pantalla.

imagen

Materiales relacionados:


3. Trabajar con UITableView y UICollectionView


La mayoría de las interfaces de aplicaciones móviles están basadas en tablas. Debería poder agregar una tabla a la pantalla, preparar celdas, implementar los protocolos necesarios, asignar un delegado y una fuente de datos.
Además, es importante comprender por qué se necesitan identificadores y qué se entiende por reutilización celular.

Materiales relacionados:


4. Grand Central Dispatch


Las aplicaciones deberían poder resolver simultáneamente varios problemas. Por ejemplo, mientras un usuario hojea una fuente de noticias, los datos se descargan de la red y la interfaz no se bloquea.

Grand Central Dispatch es uno de los temas importantes y bastante difíciles que definitivamente debes saber si vas a programar para iOS.

Materiales relacionados:


5. Redes, recibir datos de JSON


¿Cuál de tus aplicaciones favoritas continúa funcionando sin una conexión a Internet? Creo que si echas atrás los juegos, verás que la mayoría de las aplicaciones funcionan con datos de la red. ¿Qué, en este caso, debería ser capaz de ser un desarrollador principiante de iOS? Creo que para crear una solicitud de red, recibir y procesar los datos. El conocimiento de URLSession debería ser suficiente para comenzar. Este es el enfoque más básico y, en primer lugar, recomiendo dominar su aplicación. Puede que no esté fuera de lugar saber sobre la existencia de una biblioteca tan popular como Alamofire , pero esto no debería ir en detrimento de la URLSession.

Muy a menudo, los datos que llegan a las aplicaciones a través de la red se transmiten en formato JSON. Debe poder recibir y procesar estos datos, por ejemplo, para obtener una lista basada en ellos. Al mismo tiempo, es aconsejable que sepa cómo hacer esto no solo con la ayuda de una de las bibliotecas populares, por ejemplo, SwiftyJSON , sino que también posee las herramientas de lenguaje estándar, esté familiarizado con Codable.

Un poco sobre trabajar con URLSession se describe en un artículo de Audrey Tam . Hay muchos materiales sobre cómo trabajar con JSON; puedes ver el artículo de Anand Nimje .

Para aprender el tema en la práctica, recomiendo hacer una aplicación con un pronóstico del tiempo, en el que haya un campo para ingresar el nombre de la ciudad, se cree una solicitud de API ( OpenWeatherMap es adecuado) y la información del clima se muestre en función del JSON recibido.

6. Conocimiento rápido


Leer la documentación ayudará mucho aquí. Aprender Swift puede llevar algo de tiempo, pero al salir, debe llevar consigo y ser libre de navegar por los siguientes temas:

  • clases
  • la estructura
  • transferencias
  • protocolos
  • colecciones
  • métodos de trabajo con colecciones (enumeración, clasificación, filtrado, mapeo, reducción, etc.)
  • trabajar con opciones y excepciones

Estos temas deben conocerse y dominarse en el volumen al que se dan en la documentación; todo esto será útil en el trabajo. Es muy bueno si para cada tema puede dar un ejemplo de un problema que pueda resolverse con su ayuda.

Analice cuidadosamente las diferencias entre las estructuras y las clases , no solo porque se le hará esta pregunta en la entrevista con una alta probabilidad, sino que será necesario en su trabajo.

Además de leer la documentación en Swift, puede ver el maratón de video en Swift por Alexei Skutarenko. Este maratón no sustituye la lectura de la documentación debido al hecho de que no todos los temas están cubiertos, y se publicó hace 4 años, y durante este tiempo hubo cambios menores en Swift. Alexey hizo un trabajo tremendo, hay muchos materiales y pensamientos útiles.

7. Enlaces fuertes y débiles, ARC, pérdidas de memoria


¿Cómo asegurarse de que la aplicación no tenga problemas con la falta de memoria?
¿Qué son los enlaces, cuáles son los tipos de enlaces? ¿Qué hace exactamente ARC, y cómo evitar el Ciclo de retención, y de qué se trata? El tema no es complicado, pero es extremadamente importante. Puede familiarizarse, por ejemplo, en SwiftBook .

8. Protocolos y delegados


Al desarrollar para iOS, a menudo encontrará delegación, o más bien transferencia de responsabilidad de un objeto a otro. Por ejemplo, la tarea clásica es una tabla con celdas, cada una de las cuales tiene un botón "agregar elemento a favoritos". Debe poder crear un protocolo para esta situación, designar un delegado e implementar el soporte de protocolo para él.

Materiales relacionados:



9. Enfoques arquitectónicos: MVC, MVVM, MVP, VIPER


Para facilitar la creación y el soporte de los productos de software durante el desarrollo, se dividen en bloques separados. Por ejemplo, un bloque solo es responsable de trabajar con datos y el otro de la apariencia. Este enfoque tiene una serie de ventajas, por ejemplo, puede cambiar la apariencia sin tocar la lógica, o si es necesario, puede cambiar la fuente de datos, nuevamente sin cambiar el resto de la aplicación. Obviamente, estos enfoques se usan no solo en iOS, diré más, vinieron aquí desde otras plataformas. Existen varios enfoques bien establecidos para compartir la responsabilidad entre diferentes bloques; para trabajar con iOS, recomiendo una buena comprensión de MVC y MVVM.

En lugar de una explicación normal de la división de responsabilidades en arquitectura, a menudo escucho en entrevistas, algo como "MVC es malo porque es un controlador de vista masiva y MVVM es mucho mejor".

Materiales relacionados:


10. Almacenamiento de datos, datos básicos


Como dijimos anteriormente, muchas aplicaciones funcionan con datos de la red. Debe poder guardar estos datos en el dispositivo, así como guardar lo que ingresó el usuario. El conjunto básico de formas de almacenar datos para un programador principiante de iOS, en mi opinión, incluye


No hay SQLite, Realm, Firebase en esta lista. Se pueden dominar si se desea, pero ciertamente no en detrimento de los métodos anteriores. Si ya tiene experiencia trabajando con SQL, le recomiendo usar SQLite en iOS con anticipación, es muy probable que encuentre este método de almacenamiento más conveniente.

Materiales relacionados:


Resumen


Creo que distribuir uniformemente los temas anteriores y dedicarlos a estudiar 20 horas a la semana, es realmente posible dominarlo todo desde cero en un período de 4 a 5 meses.
Con esta gran cantidad de conocimiento, puede comenzar a tomar pedidos de pequeñas aplicaciones o ir a entrevistas. Por ejemplo, si hubiera una vacante, llevaríamos a una persona con este conjunto de conocimientos a nuestro equipo móvil.

Escribe tu solicitud terminada


Estoy seguro de que un desarrollador de iOS debería tener su propia aplicación. Estamos hablando de una aplicación completa que resuelve algún problema o problema necesario (está bien si se resuelve solo para el autor de la aplicación). En el proceso de escribir su aplicación, encontrará tareas creativas para encontrar soluciones adecuadas, esto no solo le permitirá consolidar mejor el conocimiento teórico, sino que también le dará placer.

No seas tímido con tus aplicaciones, muéstralas en las entrevistas. Incluso si la aplicación es simple, incluso si el diseño lo hicimos nosotros mismos, y resultó no ser la aplicación más bella (si la aplicación es necesaria, la funcionalidad puede expandirse y el diseño puede hacerse nuevo).

PS


Indique en los comentarios qué temas considera importantes para el desarrollo de nuevos desarrolladores de iOS

Source: https://habr.com/ru/post/437300/


All Articles