Cómo convertirse en desarrollador de iOS en 2021: una guía definitiva

En este artículo, repasaré lo que creo que se necesita para convertirse en desarrollador de iOS en 2021. 

Apunto esto directamente a dos grupos de personas, principiantes absolutos de Swift, personas que nunca antes han creado nada para iOS, y los llamados falsos principiantes, personas que han intentado aprender Swift antes pero que nunca lograron realmente su objetivo de obtener un trabajo de tiempo completo.

Considerarless de su nivel actual, el objetivo aquí es el mismo. Ponerlo en condiciones de solicitar un puesto de desarrollador de iOS junior en una empresa.

Analizaremos las habilidades que debería aprender, los cursos que puede tomar, cómo conectarse con la comunidad, los errores comunes que comete la gente y más. 

Lo mejor de todo es que todo lo que comentaré será completamente gratuito, por lo que no tendrá que pagar un centavo para seguirlo.

En serio, demasiadas personas creen que gastar mucho dinero los pondrá en la vía rápida hacia el trabajo de sus sueños, cuando los factores más importantes son la determinación y la fuerza de voluntad. 

Aquí hay una pista: si ya estás pensando en adelantarte en este artículo, ¡probablemente deberías trabajar con tu fuerza de voluntad!

Este artículo se divide en siete secciones:

  1. Habilidades básicas que debe tener para conseguir un trabajo.
  2. Habilidades de extensión que es bueno tener: las que lo diferenciarán de la multitud si se esfuerza por aprenderlas.
  3. Las personas cometen errores comunes cuando intentan aprender.
  4. Los muchos recursos gratuitos disponibles para ayudarlo a aprender Swift.
  5. Cómo ponerse en contacto con la comunidad de desarrollo de iOS.
  6. Una estimación de cuánto tardará en alcanzar su objetivo.
  7. Te estás preparando para postularte para tu primer trabajo.

Las habilidades fundamentales necesarias para convertirse en desarrollador de iOS

Las habilidades fundamentales necesarias para convertirse en desarrollador de iOS

¿Cuál es el mínimo absoluto de habilidades necesarias para conseguir un trabajo en el desarrollo de iOS? 

Creo que hay cinco en total:

  1. rápido 
  2. SwiftUI 
  3. Networking
  4. Trabajando con datos
  5. Gestión de versiones

Esa lista se mantiene corta intencionalmente por una variedad de razones:

Cuanto más aprendes, más te das cuenta de que hay que aprender, por lo que es fácil pasar tanto tiempo estudiando y practicando que pierdes de vista el objetivo principal.

¡Quieres trabajar como desarrollador de iOS, no solo sentarte y aprender cosas nuevas!

Es casi seguro que te unirás a un equipo que ya tiene una aplicación que quieren que ayudes a desarrollar, así que noless tienes mucha suerte, tendrán que enseñarte un montón de cosas con respecto aless.

Si intentas incluir un montón de temas adicionales de antemano, probablemente estés perdiendo el tiempo.

Dos de esas cinco cosas son enormes y complicadas, y podrías pasar meses tratando de entenderlas sin aventurarte a ningún otro lado.

Lo más importante es que si hace bien esas cinco cosas, puede crear una amplia variedad de aplicaciones. Claro, su código no será perfecto, pero está bien porque la única forma de escribir un buen código es primero escribir mucho código incorrecto.

Permítanme dividir los cinco elementos en trozos más pequeños.

Aprendiendo rápido

Swift es el primero en la lista. Este es Applees el lenguaje de programación central. No tiene el concepto de mostrar información en la pantalla de un iPhone o descargar datos de Internet. 

Es simplemente un lenguaje similar a JavaScript o Python. Es solo código puro que usa para crear variables, escribir funciones, etc.

Swift tiene solo unos pocos años, por lo que hace uso de casi todas las funciones de lenguaje de vanguardia disponibles. 

Por un lado, esto significa que puede evitar todos los viejos comportamientos crujientes que son comunes en lenguajes antiguos como C ++ y Java. También significa que tiene una gran cantidad de funciones más avanzadas que pueden volar tu mente al principio.

Y eso está bien. Muchas partes de Swift son relativamente simples, mientras que otras te llevarán más tiempo comprenderlas por completo, así que tómate tu tiempo y persevera, ¡lo lograrás!

SwiftUI

La segunda habilidad principal que mencioné es SwiftUI, que es una Apple framework que nos permite usar Swift para crear aplicaciones para iOS, macOS, tvOS e incluso watchOS. 

Entonces, mientras Swift es el lenguaje de programación, SwiftUI proporciona las herramientas para desarrolladores para crear aplicaciones, como cómo mostrar imágenes, texto, botones, cuadros de texto, tablas de datos y más. 

Para ser claros, SwiftUI no es un reemplazo de Swift, es un marco construido sobre Swift que nos permite crear aplicaciones. Necesitará conocer tanto a Swift como a SwiftUI para tener éxito.

Si pensaba que Swift era nuevo, ¡todavía no ha visto nada! 

Por lo que puedo decir, ¡SwiftUI solo tiene dos años! A pesar de su juventud, la comunidad de iOS lo ha adoptado de todo corazón porque es muy fácil de usar.

Apple también tiene un marco más antiguo para crear aplicaciones de iOS llamado UIKit, y si le preguntas a un grupo de personas si primero debes aprender SwiftUI o UIKit, obtendrás una variedad de respuestas. 

Creo que deberías aprender SwiftUI.

Entonces, en caso de que se lo pregunte, aquí está la razón por la que creo que debería priorizar SwiftUI como una habilidad principal.

Es significativamente más fácil que UIKit, y quiero decir significativamente: se necesita quizás una cuarta parte del código para lograr los mismos resultados que UIKit, y hay menos cosas que aprender en el camino. 

Esto significa que gana mucho impulso porque puede construir cosas más rápido, ver resultados más rápido e iterar en esos resultados más rápido, lo que es extremadamente motivador mientras aprende.

Creado para Swift

Creado para Swift

SwiftUI fue creado para Swift, utilizando funciones de lenguaje para ayudarlo a evitar problemas y lograr el máximo rendimiento. 

Por ejemplo, si cambia algunos datos en una pantalla de una aplicación, SwiftUI se asegurará automáticamente de que los nuevos datos se actualicen en cualquier otro lugar de su aplicación que los use; no tiene que escribir código para mantenerlo todo sincronizado usted mismo. que es sorprendentemente complejo. 

UIKit, por otro lado, fue escrito para Applees un lenguaje más antiguo, Objective-C, y como resultado tiene todo tipo de peculiaridades que resultaron de su antigüedad.

SwiftUI es compatible con todos Appleplataformas, para que pueda usar lo que aprendió en iOS para crear una aplicación macOS o watchOS con un código casi idéntico. 

Claro, algunas funciones, como Digital Crown, son exclusivas de un solo dispositivo, pero la gran mayoría de lo que aprenda funcionará en cualquier dispositivo.

Pero, lo más importante, SwiftUI es la dirección en la que se dirigen las cosas. 

Si estuviera solicitando un trabajo en este momento, probablemente necesitaría saber UIKit, pero el hecho de que esté leyendo esto significa que está mucho más avanzado en el proceso. 

Sí, UIKit es más popular ahora, pero SwiftUI será el marco de interfaz de usuario dominante cuando termine de aprenderlo en 6, 9 o incluso 12 meses.

En serio, las empresas más grandes del mundo, incluidas Apple, están eligiendo SwiftUI.

Cuando te Apple recientemente lanzados widgets en iOS 14, establecieron como requisito el uso de SwiftUI.

Red y manipulación de datos

La tercera y cuarta habilidades que mencioné fueron la creación de redes y la manipulación de datos. En comparación con Swift y SwiftUI, estos son pan comido, o al menos en el nivel requerido para obtener un trabajo de desarrollador de iOS junior.

La creación de redes es la práctica de recuperar datos de Internet o enviar datos desde un dispositivo local a un servidor remoto. 

Existen numerosos métodos para lograr esto, pero lo más importante que debe comprender es cómo recuperar JSON de un servidor.

Y aquí es donde entra en juego la otra habilidad esencial, trabajar con datos. 

Nuevamente, existen numerosas formas de cargar y guardar datos, pero lo mínimo absoluto que debe poder hacer es convertir los datos que recibió de un servidor usando su código de red en información que su aplicación puede mostrar.

Por lo tanto, las habilidades básicas tercera y cuarta están inextricablemente vinculadas. Obtenga algunos datos de un servidor, luego conviértalos en información que se puede mostrar en su aplicación. Algunos desarrolladores bromean diciendo que escribir este tipo de código es la mitad del trabajo de un desarrollador de iOS, y es cierto que confiamos mucho en él.

Version control

La habilidad final no es codificar en absoluto, es version control, como Git. Nuevamente, no necesitas mucho aquí, pero es importante que puedas publicar tu código en algún lugar público, como GitHub, para que los reclutadores puedan ver tu trabajo.

Nadie en el mundo comprende realmente cómo funciona Git, pero está bien: solo necesita saber lo suficiente sobre los conceptos básicos para almacenar sus datos de forma segura y colaborar con otros.

Entonces, cuando esos cinco se suman, hay dos masivos, Swift y SwiftUI, así como tres menores pero importantes. 

Si puede concentrarse en esas cinco cosas sin distraerse, estará bien encaminado hacia su primer trabajo de desarrollador de iOS.

Eso es todo: esas son las cinco habilidades esenciales que creo que necesitas para ser un desarrollador de iOS. 

Hay miles de personas que solo tienen esas habilidades y pueden crear y enviar aplicaciones fantásticas en la App Store.

¿Qué viene después de los fundamentos?

¿Qué viene después de los fundamentos?

Una vez que haya dominado las cinco habilidades básicas, podrá enviar sus propias aplicaciones y trabajar como desarrollador independiente, así como postularse para puestos de desarrollo de iOS junior y trabajar para una empresa si eso es lo que quiere hacer. 

No se requieren otras calificaciones especiales, solo perfeccione esas habilidades básicas y estará bien.

Sin embargo, si ha dominado esas habilidades y quiere avanzar, hay cinco habilidades más que le recomiendo que aprenda. Estas son las habilidades que lo impulsarán de una posición buena a una posición fantástica: se volverá aún más empleable y la gama de aplicaciones que podrá crear se expandirá aún más.

Las habilidades son las siguientes:

  • UIKit 
  • Datos principales 
  • Validación
  • Pruebas
  • Arquitectura de software
  • multihilo

Como antes, me gustaría repasar cada uno de estos en mayor detalle para que entiendas por qué creo que son importantes y por qué los considero habilidades de extensión en lugar de habilidades básicas.

UIKit

Primero, está UIKit. Este es AppleEl marco de interfaz de usuario más antiguo, que se ha utilizado para el desarrollo de aplicaciones desde 2008; tiene 13 años mientras escribo esto, que es antiguo en términos de software. Pero eso no significa que UIKit sea malo. De hecho, a medida que se acostumbre a su funcionamiento, se sorprenderá de lo elegante que puede llegar a ser.

Existen numerosas razones por las que vale la pena aprender UIKit, que incluyen:

Ya se han escrito cientos de miles de aplicaciones en UIKit, por lo que si se une a una empresa que tiene una aplicación grande y bien establecida, es casi seguro que se le pedirá que escriba código UIKit para mantener esa aplicación.

UIKit es mucho más poderoso que SwiftUI: hay muchas cosas que puede hacer en UIKit que actualmente no son posibles en SwiftUI.

Con la tecnología Auto Layout, puede crear diseños extremadamente precisos.

Si tiene problemas con su código, UIKit tiene más soluciones que SwiftUI simplemente porque ha existido durante mucho más tiempo.

Todo esto hace que UIKit suene fantástico, entonces, ¿por qué lo convertí en una habilidad de extensión en lugar de una habilidad central? 

Porque UIKit también tiene problemas:

Casi todo es más difícil de hacer en UIKit que en SwiftUI, y algunas tareas requieren cien veces, si no más, código. 

SwiftUI fue diseñado específicamente para el desarrollo moderno de iOS, por lo que hace gran parte del trabajo pesado por usted.

Debido a que UIKit no se escribió en Swift, tiene muchas características que SwiftUI no tiene: muchos opcionales implícitamente desenvueltos, código de marcado con un atributo especial @objc para que esté disponible para la parte más vulnerable de Objective-C de UIKit, y la necesidad de usar protocolos y delegados. para mostrar datos simples.

Nada en el diseño automático es "automático"; de hecho, si alguna vez intenta crear un diseño complejo, es posible que tenga pesadillas con el diseño automático. Es extremadamente inteligente, pero también extremadamente difícil en algunos lugares.

Y esta es la razón por la que considero que UIKit es una habilidad de extensión: se necesita mucho más tiempo y esfuerzo para aprender que SwiftUI, lo que significa que requiere mucha más determinación; realmente tienes que querer aprenderlo, o de lo contrario te confundirás. , aburrido, enojado o potencialmente los tres. 

Claro, SwiftUI no tiene todas las características de UIKit, pero le permite avanzar rápidamente y ganar impulso antes de pasar a UIKit.

Gestión de datos básicos

Gestión de datos básicos

Datos básicos, AppleEl marco de trabajo para trabajar con datos de aplicaciones, es la segunda habilidad de extensión que mencioné. 

Mencioné la creación de redes y el trabajo con datos en la sección de habilidades básicas, y es cierto. Con esas habilidades en su lugar, puede obtener lo que desee de un servidor y mostrarlo en su aplicación. 

Core Data va un paso más allá al permitirle manipular esos datos una vez que los haya obtenido, como buscar valores específicos, ordenar los resultados y más, todo de manera muy eficiente. 

También puede conectarse fácilmente a iCloud, lo que garantiza que los datos de sus usuarios estén sincronizados en todos sus dispositivos.

Core Data tiene una serie de inconvenientes, el más grave de los cuales es que no siempre es agradable trabajar con ellos. Core Data es casi tan antiguo como UIKit, y aunque funcionó bien en Objective-C, no se siente tan natural en Swift. 

Se integra bien con SwiftUI, lo que lo hace sentir less extraño, pero sigue siendo un tema sorprendentemente complejo.

Entonces, ¿por qué lo incluí como una habilidad de extensión? Porque, al igual que UIKit, Core Data es extremadamente popular: se han creado cientos de miles de aplicaciones con él y se utilizan en muchas empresas grandes y pequeñas. 

Core Data, como UIKit, es extremadamente poderoso y, si bien podría recrear las partes más importantes en su propio código, ¿por qué lo haría?

Probando tu código

La tercera habilidad en mi lista de extensiones está probando. Escribir código especial para asegurarse de que el código principal de su aplicación funcione como se espera. 

Las pruebas nos permiten asegurarnos de que nuestro código funciona correctamente y, lo que es más importante, que sigue funcionando correctamente incluso después de haber realizado cambios importantes en él.

Por ejemplo, si cambia 500 líneas de código para implementar una nueva función y todas sus pruebas pasan, está listo para comenzar.

Como resultado, las pruebas son críticas y lo ayudarán a escribir software de mayor calidad. 

Entonces, ¿por qué se considera una habilidad de extensión en lugar de una habilidad básica? 

Hay tres razones para esto:

La comunidad de iOS en su conjunto es terrible en las pruebas, por las razones históricas que sean. Quiero decir, realmente mal: muchas aplicaciones grandes no tienen ninguna prueba, y he perdido la cuenta de la cantidad de desarrolladores de iOS de alto nivel que he conocido que están casi orgullosos de nunca escribir pruebas. 

Cuando consideras todas las cosas increíbles que puedes crear con AppleEn comparación con las herramientas y los marcos de trabajo de escribir pruebas, no parece muy divertido. 

Personalmente, disfruto escribiendo exámenes de la misma manera que disfruto de usar hilo dental, pero sé que muchas personas no, especialmente cuando trabajan en proyectos personales.

Al solicitar un trabajo, conocer Swift y AppleLos principales frameworks siempre serán más útiles que saber escribir pruebas. 

Las empresas preferirían que sepas cómo usar SwiftUI, UIKit o uno de los otros grandes éxitos, porque las pruebas son un tema mucho más pequeño: no hay tantas cosas que aprender.

Por lo tanto, las pruebas son importantes, las pruebas son importantes y me encantaría enseñarte cómo redactar excelentes pruebas. Pero solo después de que haya dominado los fundamentos del desarrollo de aplicaciones, después de que haya tenido cierto éxito, haya sentido la emoción de tener su aplicación en vivo en la App Store y dominado las pruebas.

Arquitectura de software

Arquitectura de software

La cuarta habilidad de extensión que me gustaría discutir es la arquitectura del software, que en realidad se trata de cómo escribimos el código. 

Vas a escribir un código terrible cuando comiences por primera vez, un código tan malo que probablemente viola la convención de Ginebra. 

Eso está bien porque así es como aprendes. No comienzas bien, te vuelves bueno siendo malo durante mucho tiempo, al igual que LeBron James no nació como un campeón de baloncesto.

El punto es que te quedes con tu código incorrecto hasta que descubras cómo hacerlo mejor. Ahí es donde entra en juego la arquitectura de software. Examinar técnicas probadas y verdaderas para estructurar su código para que sea más fácil de leer, usar, modificar y mantener a largo plazo. 

Estas técnicas a veces se basan en la forma en que funciona Swift: características del lenguaje que se pueden usar para escribir mejor código. 

Sin embargo, existen muchas otras técnicas que funcionan en cualquier lenguaje de programación y se las conoce comúnmente como patrones de diseño.

Un aspecto importante de esta habilidad que debe comenzar a aprender es cómo dividir su código. 

Por ejemplo, si está creando una sola pantalla en su aplicación, podría incluir un botón de inicio de sesión, una galería de imágenes y una lista de amigos. 

Sin embargo, idealmente debería separar cada una de esas partes (un componente de botón de inicio de sesión, un componente de galería de imágenes y un componente de lista de amigos) para poder reutilizar cualquiera de esos componentes en otras partes de su aplicación.

La arquitectura de software es mucho más subjetiva que las otras habilidades que he discutido hasta ahora. Para los demás, como SwiftUI, puede razonar: "Bueno, sé cómo hacer X, Y y Z, así que estoy seguro de que soy un buen desarrollador de SwiftUI".

 La arquitectura de software es un tema muy amplio y, a menudo, no existe una forma "correcta" obvia de resolver un problema, por lo que creo que el mejor punto de referencia para ello es este: mira hacia atrás en su código de hace seis meses, hace un año y pronto.

Una vez más, escribir código incorrecto es aceptable siempre que lo acerque a escribir un código mejor. 

Ciertamente hago muecas en algunos lugares cuando miro hacia atrás en el código que escribí hace cinco años, porque ahora sé más de lo que sabía entonces, y eso es algo bueno.

multihilo

La habilidad de extensión final que me gustaría discutir es el multihilo, que es la práctica de hacer que su código haga más de una cosa a la vez. 

El multihilo puede ser un verdadero dolor de cabeza porque es difícil de comprender para nuestro cerebro. Cuando su código hace una cosa a la vez, podemos pensarlo linealmente, pero cuando dos o tres cosas suceden al mismo tiempo, potencialmente superpuestas, realmente puede doblar su cerebro.

Por lo tanto, si bien el multiproceso es una gran habilidad para tener como habilidad de extensión, debe tener cuidado. Su objetivo debe ser comprender lo suficiente de los conceptos y el código para que funcione bien sin ir demasiado lejos. 

Para ser honesto, muchos desarrolladores creen que el subproceso múltiple hará que su código se ejecute instantáneamente tres o cuatro veces más rápido. 

Si bien esto es cierto en algunos casos, en muchos otros casos, su código realmente se ejecutará más lento y ahora tendrá que lidiar con toda la complejidad adicional del código.

Si no me cree, considere esta cita de David Smith: es miembro de AppleSwift y ha pasado años trabajando en el núcleo mismo de Applemarcos de trabajo:

“Mi recomendación específica es que evite escribir código asincrónico / concurrente tanto como sea posible. Esto puede parecer extraño en 2018, pero el costo en complejidad y rendimiento es alto.

Por lo tanto, aprenda un poco sobre cómo funciona el subproceso múltiple en Swift para demostrar que comprende los conceptos y la implementación, ¡pero no se exceda! "

Errores comunes que cometen los nuevos desarrolladores de iOS

Errores comunes que cometen los nuevos desarrolladores de iOS

En este punto, he enumerado todas las habilidades básicas y de extensión que creo que necesitará para trabajar como desarrollador de iOS a tiempo completo. 

Pero también quiero discutir algunos de los errores más comunes que cometen las personas mientras aprenden, porque los veo todo el tiempo y sé cómo hacen retroceder a las personas.

Hay siete problemas importantes a los que se enfrenta la gente y me gustaría repasarlos en orden. 

Son los siguientes:

  1. Recordando todo
  2. Síndrome del objeto brillante
  3. Aprendizaje de lobo solitario
  4. Haciendo uso de software beta
  5. Dependiendo de Applela documentación
  6. Atascarse en Objective-C
  7. Apuntando a otros idiomas

Repasemos cada uno de ellos uno por uno.

Deja de intentar recordar todo

Deja de intentar recordar todo

El primer problema, y ​​con mucho el más común, con el que se encuentran las personas es tratar de memorizar todo: leer un tutorial y creer que deben recordarlo todo de memoria. 

Por favor, por favor, no hagas eso. Es una receta para el desastre y agotará toda su fuerza de voluntad hasta el punto en que no querrá volver a programar nunca más.

Nadie recuerda todo. Nadie se acerca a recordarlo todo. Incluso si solo considera las API publicadas por Apple, que son las piezas de código que podemos usar para crear nuestras aplicaciones, debe haber más de cien mil disponibles. 

Incluso si lo limita a los componentes centrales del desarrollo de aplicaciones, todavía está viendo varios cientos, todos trabajando de una manera muy precisa que requiere mucho aprendizaje para su uso.

En cambio, aprende cómo hacer algo nuevo y luego olvida rápidamente cómo hacerlo de nuevo. 

Entonces, lo busca, lo usa de nuevo y luego lo olvida rápidamente. Entonces, lo busca por tercera vez y lo usa, y esta vez casi lo olvida: algunas partes se quedan con usted. 

Este ciclo continúa indefinidamente, y usted tiene que consultar un tutorial o alguna otra guía de referencia cada vez, hasta que los fundamentos están arraigados en su mente hasta el punto en que puede hacerlo sin consultar a nadie más.

Si aún no lo sabía, olvidar es una parte importante del aprendizaje. 

Cada vez que olvidas algo y lo vuelves a aprender, se hunde más y más profundamente en tu cerebro. Cuando vuelves a aprender algo, tu cerebro establece nuevas conexiones con otras cosas que has aprendido, lo que te ayuda a comprender más sobre el contexto de lo que estás intentando hacer. 

Y cada vez que vuelves a aprender, le estás indicando a tu cerebro que este tema en particular es lo suficientemente importante como para almacenarlo en su memoria a largo plazo.

Pero si te propones memorizar todo, vas a tener dificultades. 

En cambio, no se preocupe por olvidar cosas. Saber dónde buscarlos es mucho más importante que memorizar un código Swift específico para lograr algo. 

Cuando olvide algo y tenga que volver a aprenderlo, considérelo algo bueno: esa información se hundirá más profundamente la segunda, tercera y décima vez que la aprenda, por lo que está ayudando a su cerebro.

Evite el síndrome del objeto brillante

El segundo problema más común que veo que las personas encuentran es lo que yo llamo "síndrome del objeto brillante", en el que encuentran una serie de tutoriales que les funciona bien y comienzan a progresar, pero después de una semana o dos, notan otra serie de tutoriales que quiero seguir y saltar al barco en su lugar. 

Algunas personas me envían correos electrónicos diciendo que han probado cuatro, cinco o incluso seis series diferentes y que no están aprendiendo nada por alguna extraña razón.

El problema aquí es que muchos aspectos del aprendizaje de cualquier cosa carecen de interés. Eso no es necesariamente culpa del maestro. 

Es solo un hecho de aprender a codificar: algunas cosas le brindan excelentes resultados con poco esfuerzo, mientras que otras requieren mucho más tiempo para comprenderlas, no producen resultados sofisticados o son solo una parte de un concepto más amplio.

Cuando llegas a estas curvas de aprendizaje empinadas, el síndrome del objeto brillante se activa: con tantos tutoriales gratuitos disponibles, puedes saltar a cualquiera de ellos y reiniciar, y estarás de vuelta en el extremo menos profundo de la piscina, cubriendo las partes más fáciles. ya has aprendido. 

Pero, unless el curso original eligió un tema inusual para cubrir, probablemente tendrá que aprenderlo eventualmente, y solo está posponiendo lo inevitable.

Entonces, no les estoy pidiendo que siempre se resistan al síndrome del objeto brillante porque entiendo lo difícil que es. En cambio, al menos sea consciente de ello: cuando se encuentre con un problema, intente pedir ayuda a otra persona y perseverar en lugar de cambiar.

No lo hagas solo

No lo hagas solo

Hablando de preguntarle a otra persona, el tercer problema con el que veo que la gente se encuentra es cuando se vuelven lobos solitarios con su aprendizaje: creen que son completamente capaces de aprender a crear aplicaciones de iOS usando Swift por sí mismos y no requieren la ayuda de otros. .

Este método funciona para una cantidad muy pequeña de personas, generalmente aquellas con amplia experiencia con otros lenguajes de programación o plataformas. 

Sin embargo, para la gran mayoría de las personas, aprender de esta manera es una experiencia terrible: cada error o malentendido tarda cinco veces más en resolverse, es extremadamente fácil perder la motivación y te estás perdiendo mucha inspiración al ver otros tienen éxito.

Si eres un aprendiz natural de "lobo solitario", te animo a que cambies tus costumbres. 

Comparta lo que está aprendiendo, conéctese con otros que están aprendiendo y desarrolle el hábito de hacer preguntas. 

No solo descubrirás una comunidad fantástica de estudiantes que te apoyarán y animarán, sino que también te inspirarán con su trabajo y, a su vez, los inspirarán con el tuyo. Créame, lo he visto cientos de veces y es completamente transformador.

No uses versiones beta

El cuarto problema importante que veo es cuando la gente insiste en usar versiones beta de Appleherramientas de desarrollo. 

Entiendo: todos los años, Apple lanza un nuevo iOS, un nuevo macOS y otros productos, siempre entregando cosas nuevas y emocionantes para que las probemos. Es natural que las personas quieran aprender lo último y lo mejor, especialmente si saben que Swift tiene una larga historia de cambios.

Sin embargo, cuando las personas intentan aprender con el software beta, se encuentran con una serie de problemas:

Debido a que los tutoriales no se han actualizado para la versión beta, seguir sus instrucciones no siempre será posible o fallará.

Los errores son comunes en las versiones beta, especialmente las que se publican para las principales actualizaciones de iOS.

AppleLos frameworks beta tardan en estabilizarse, lo que significa que el código que funcionaba en beta 1 puede no funcionar en beta 3.

Entonces, si bien es emocionante aprender cosas nuevas y puede creer que se está adelantando al juego con nuevas funciones, créame: no vale la pena. 

Utilice siempre las versiones públicas más recientes de Appleherramientas de desarrollador hasta que se sienta cómodo con ellas.

Depender de la documentación oficial

Depender de la documentación oficial

El quinto problema principal al que se enfrentan las personas cuando intentan aprender es confiar en Appledocumentación de. 

AppleEl equipo de publicaciones para desarrolladores trabaja arduamente para documentar tanto como sea posible a partir de la amplia gama de marcos de la empresa, pero su trabajo principal es escribir material de referencia, cosas que lee cuando intenta usar una pieza específica de sus herramientas, en lugar de creando un curso estructurado que le ayude a aprender a crear aplicaciones iOS.

He perdido la cuenta de la cantidad de veces que la gente me ha preguntado: "¿Cómo puedo aprender Swift?" sólo para que le digan: "Leer AppleGuía de referencia de Swift ". 

Este enfoque funciona para algunas personas, y lo sé porque funcionó para mí cuando se anunció Swift por primera vez: lo leí de cabo a rabo. 

Sin embargo, para la mayoría de las personas, es similar a intentar aprender un idioma humano leyendo un diccionario. Está destinado a cubrir todo en el idioma en lugar de enseñarle las partes más importantes y cómo aplicarlas.

Entonces, si tiene una amplia experiencia con otros idiomas, leer AppleLas guías de referencia pueden ser útiles, pero si recién está comenzando, es posible que desee volver a visitarlas después de unos meses.

Atascarse en Objective-C

El sexto problema principal al que se enfrentan las personas es intentar aprender Objective-C. Esto era Applees el lenguaje de desarrollo principal antes de la introducción de Swift, y aunque hay restos en algunas bases de código antiguas, la gran mayoría del código existente ahora es Swift, y casi todo el código nuevo también es Swift.

Pasé años escribiendo Objective-C antes de Swift y realmente me encantó, pero tiene una curva de aprendizaje extremadamente empinada y carece de la mayoría de las características importantes de Swift. 

recuerdo cuando Apple anunció por primera vez el iPhone SDK y me horrorizó Objective-C porque era diferente a todo lo que había visto hasta ahora.

Objective-C y Swift no tienen casi nada en común para un principiante. 

Si, comparten lo mismo Apple frameworks, pero unless planeas trabajar en Apple - la única empresa en el mundo que todavía produce grandes cantidades de Objective-C - debe dejar a Objective-C solo y concentrarse por completo en Swift.

Ignorando otros idiomas

Ignorando otros idiomas

El último gran error que veo que la gente comete cuando aprende Swift es descartar otros idiomas como inferiores a Swift. 

El objetivo más común es JavaScript, pero también verá que la gente apunta a Python, Java, Ruby, Go y otros lenguajes, ¿y para qué? No es una carrera, gente, esos idiomas no tienen que perder para que Swift gane.

De hecho, Swift y SwiftUI se inspiran con frecuencia en otros lenguajes y marcos: cada vez que se consideran nuevas características del lenguaje, la comunidad busca implementaciones similares en Rust, Python, Haskell y otros lenguajes, y SwiftUI está fuertemente influenciado por JavaScript. React marco de referencia. 

Entonces, cuando escucho a personas de nuestra comunidad afirmar que SwiftUI no tiene JavaScript o algo similar, me estremezco, nada podría estar más lejos de la verdad.

Recursos y cursos de desarrollo de iOS

Recursos y cursos de desarrollo de iOS

Ahora, la parte que le interesa a la mayoría de la gente: ¿cuáles son los recursos reales que creo que debería utilizar para aprender Swift, SwiftUI y más, a fin de lograr su objetivo de convertirse en desarrollador de iOS?

Hay muchos por ahí, y agradezco el hecho de que la comunidad Swift tenga un grupo tan diverso de personas que comparten sus conocimientos. 

Sin embargo, en este artículo, me centraré en los recursos gratuitos, lugares donde puedes aprender a crear aplicaciones fantásticas sin gastar un centavo.

Esto se debe a dos factores:

  1. Algunas personas creen que cuanto más alto sea el precio de un curso Swift, mejor debe ser, por lo que terminan pagando precios exorbitantes sin recibir el beneficio adecuado.
  2. Muchos sitios, como Udemy, confían en vender una gran cantidad de cursos de bajo costo, confiando en que si no le gusta uno, simplemente comprará otro. También tienen un modelo de negocio similar al de Steam en el que hay ventas constantes, lo que anima a la gente a acumular una gran cantidad de cursos para estudiar "un día".

Entonces, solo estoy enumerando recursos gratuitos aquí porque no quiero que caiga en esas trampas; no gaste cien dólares o más en su primer curso, y no compre una docena de cursos baratos pensando que eso hará eres un desarrollador.

Tutoriales

Empezar, Apple tiene dos recursos principales que pueden ayudarlo. El primero es su sitio web Teaching Code, que contiene recursos para estudiantes y profesores para aprender Swift desde cero, hasta obtener certificaciones profesionales. 

Su plan de estudios es extenso, por lo que puede llevar algún tiempo encontrar el mejor punto de entrada para usted, pero una vez allí, encontrará mucho que explorar.

En segundo lugar, Apple tiene una serie de tutoriales de SwiftUI que lo guían a través del proceso de creación de aplicaciones del mundo real. Sin embargo, estos no enseñan Swift, por lo que primero debe completar su plan de estudios centrado en Swift.

Como dije anteriormente, Apple también publica una guía específicamente para el lenguaje de programación Swift, pero hay muchas posibilidades de que no funcione para usted; está pensada como una referencia en lugar de un tutorial estructurado, por lo que es una lectura bastante densa.

Lo que AppleLos tutoriales no intentan proporcionar un método estructurado de aprendizaje. 

YouTube y otros sitios

Hay algunos videos excelentes de YouTube que lo guían a través de los fundamentos de SwiftUI, como:

VlhcNR7Qrno
, en el que te guía a través del proceso de creación de un juego de tragamonedas desde cero.

51xIHDm_BDs
explica cinco conceptos de SwiftUI que todos deberían aprender cuando comienzan a programar.

AP-SQXTtWhY
que cuenta con Swift y SwiftUI mientras responde las preguntas de la audiencia.

Hay otros sitios con tutoriales de Swift y SwiftUI de alta calidad, incluidos BLCKBIRDS, Ray Wenderlich, Donny Wals, Antoine van der Lee y más. Realmente aliento a las personas a visitar una variedad de recursos y encontrar lo que les funciona.

Educación basada en aplicaciones

Si prefieres aprender a través de aplicaciones, te recomiendo dos que son completamente gratuitas. El primero es Applela aplicación Swift Playgrounds, que te permite aprender a usar Swift directamente desde tu iPad o Mac. 

Hay muchos interactivos lessorientados a los niños, pero también hay algunos más avanzados lessons que le ayudarán a mejorar sus habilidades.

La otra aplicación se llama Unwrap y fue creada por mí. Unwrap es compatible con todos los iPhones y iPads y le permite aprender, revisar y practicar los fundamentos de Swift a través de videos, pruebas y otras herramientas. Cubre todos los fundamentos de Swift y complementa perfectamente el plan de estudios de 100 días de SwiftUI.

Obteniendo soluciones

Por último, deberá aprender a encontrar respuestas en línea. Esto podría significar ir a Stack Overflow, pero espero que no, porque no es un lugar particularmente agradable.

En su lugar, haga preguntas en los foros de Hacking with Swift, su grupo favorito de Slack, las sesiones de Happy Hour para desarrolladores de iOS, Twitter y otros lugares; somos una comunidad genuinamente cálida y acogedora con muchas personas ansiosas por ayudarlo a alcanzar sus objetivos.

Involucrarse en la comunidad

Involucrarse en la comunidad

Hablando de nuestra comunidad, me gustaría discutir un tema realmente importante que lo ayudará a conocer personas en posiciones similares a las suyas, aprender de manera más efectiva y encontrar vacantes laborales; es una situación en la que todos ganan.

El tema se conecta con la comunidad de desarrollo de iOS. Esto incluye saber dónde buscar noticias e ideas interesantes, dónde ir para conocer gente y compartir consejos, y dónde ir para hacer preguntas.

¿A quién debo seguir en Twitter?

Empecemos por lo más sencillo, que es utilizar Twitter. Twitter es una forma fantástica de seguir las cosas que te interesan, y hay algunas personas que recomendaría encarecidamente en el caso del desarrollo de iOS.

Sí, estas personas twittean sobre su propio trabajo, pero creo que es genial seguirlas porque también twittean mucho sobre el trabajo de otras personas; te ayudarán a ver una variedad de perspectivas sobre un tema en particular y comparten todo tipo. de ideas interesantes y cosas para probar.

Aquí hay 9 personas que te recomiendo que sigas en Twitter:

Sean Allen pasa mucho tiempo en YouTube haciendo videos de desarrollo de Swift e iOS, pero también trabaja muy duro para correr la voz sobre el trabajo de otras personas; realmente hace un gran trabajo ayudando a todos a descubrir algo nuevo cada semana.

Antoine van der Lee ejecuta un sitio web de desarrollo de iOS en https://www.avanderlee.com, pero también comparte algunos enlaces excelentes a recursos útiles que encuentra en GitHub, boletines y más.

Novall Khan trabaja para Apple, pero eso no le impide publicar videos con regularidad sobre en qué está trabajando, qué está aprendiendo, con qué tiene problemas y más; es realmente inspiradora.

Steve Troughton-Smith es bien conocido por su trabajo anterior jugando con iOS, pero realmente deberías seguirlo por la fantástica variedad de enlaces que comparte con un trabajo impresionante. Me gusta cómo comparte el progreso del desarrollo de sus propias aplicaciones, para que puedas verlas crecer de principio a fin.

Kaya Thomas es una de las desarrolladoras independientes más conocidas de nuestra comunidad y ha aparecido en Apple más veces de las que puedo contar. Twittea con frecuencia sobre su propio trabajo y presentaciones, pero también comparte enlaces a libros que está leyendo, artículos que ha leído y otros recursos.

Majid Jabrayilov no solo escribe un fantástico blog de Swift y SwiftUI, sino que también es un neumáticoless promotor de otros: si lo sigues en Twitter, obtendrás una idea tras otra enviada desde una amplia variedad de fuentes.

Donny Wals escribe un blog de Swift y, más recientemente, libros sobre Combine y Core Data, pero también anima a las personas a compartir en Twitter en qué están trabajando. Incluso solo leer ese hilo una vez a la semana te inspirará a probar cosas nuevas, por lo que definitivamente deberías seguir a Donny.

Panage de verano trabaja en Appledel equipo de accesibilidad, por lo que, si bien es algo limitada en lo que puede decir, tuitea muchos consejos de primera calidad de ella misma y de otros que todos pueden usar para crear mejores aplicaciones.

Natascha Fadeeva escribe un blog sobre Swift y el desarrollo de iOS, que incluye artículos sobre Core Data, preguntas de entrevistas y otros temas, pero también tuitea sobre cosas que encuentra en otros lugares.

Boletines y más

Boletines y más

Por supuesto, Twitter no es el único lugar para mantenerse en contacto con la comunidad; también hay boletines, grupos de Slack, reuniones de Zoom, foros, conferencias y otros lugares. No quiero aburrirte demasiado, así que solo enumeraré uno de cada uno aquí:

No puedes equivocarte con Desarrollador de iOS semanal para boletines. Mientras escribo esto, acaba de pasar 500 números, uno por semana, lo que creo que les dice todo lo que necesitan saber sobre lo importante que es.

Si desea publicar en un foro web, https://www.hackingwithswift.com/forums es bastante bueno. Hay muchas categorías para elegir, y cualquiera, tenga en cuentaless de nivel de experiencia, es bienvenido a participar. Eres más que bienvenido a publicar tus preguntas para principiantes aquí, ¡créeme!

Cada mes, el Hora feliz para desarrolladores de iOS se lleva a cabo en una llamada grupal de Zoom con más de 300 personas, pero la verdadera diversión está en las salas para grupos pequeños, donde puede charlar con grupos de 6 a 8 personas a la vez. Es muy divertido y conocerás gente nueva.

Asistir a conferencias ha sido difícil debido a la pandemia de coronavirus, pero Apple's WWDC fue un gran éxito el año pasado, y estuvo acompañado de una gran cantidad de eventos comunitarios. Un grupo de amigos y yo creamos un Repositorio GitHub para ayudar a realizar un seguimiento de todos los demás eventos, artículos y otras cosas que sucedieron, ¡eche un vistazo!

Finalmente, si prefiere chatear en Slack, donde puede obtener respuestas más rápido, puede unirse a la Hackear con Swift Slack group y únase a uno de los canales Swift, SwiftUI y otros.

¿Cuánto tiempo se tarda en aprender iOS?

Esta es una de mis preguntas frecuentes: ¿cuánto tiempo se tarda en pasar de no saber nada sobre Swift a poder obtener un puesto de desarrollador de iOS de nivel de entrada?

La respuesta obvia es "depende", pero eso sería una evasión en este caso, así que permítanme abordarlo de diferentes maneras.

La regla de oro es no apresurarse

En primer lugar, no puede realizar varios cursos al mismo tiempo. ¿Recuerda lo que dije sobre el "síndrome del objeto brillante"? Sí, muchas personas creen que pueden tomar dos cursos al mismo tiempo, luego estudiar durante cuatro, cinco o incluso más horas todos los días y aún así tener una comprensión de alta calidad de los temas que cubrieron.

Para ser claros, he visto a gente intentar esto muchas veces y siempre falla. Cada vez, nunca funciona, y escucho a la gente decir que es porque los tutoriales fueron malos, o porque Swift fue demasiado difícil, o literalmente por cualquier otra razón que no sea intentar apresurarse a través de algo complejo.

Literalmente, recibí un correo electrónico que decía: "¡Hola Paul! ¿Qué tan rápido puedo terminar Swift si estudio cuatro o cinco horas al día?" Y simplemente no es así como funciona el aprendizaje, ya sea aprendiendo Swift, aprendiendo a tocar el piano, aprendiendo a patinar sobre hielo o cualquier otra cosa.

Aprender Swift puede ser difícil a veces, y aprender a crear aplicaciones requiere mucho ensayo y error, cometer errores y tomar turnos equivocados. Y eso está bien, es mejor que bien, ¡es fantástico! 

Porque cada vez que intentas algo, cometes un error o tomas un camino equivocado, aprendes algo en el camino y cuando finalmente llegas a la solución, lo entenderás mucho mejor.

Entonces, el TL; DR aquí es no se apresure: tómese su tiempo, no tenga miedo de explorar las tangentes que surjan, no tenga miedo de experimentar con sus proyectos y no tenga miedo de volver a algo. que aprendió previamente y vuelva a aprenderlo según sea necesario.

Cual es su formación académica

¿Cual es su formación académica?

En segundo lugar, debe considerar sus antecedentes antes de ingresar a Swift. Verá, aprender a crear aplicaciones requiere una amplia gama de habilidades, y si viene a la mesa con una gran cantidad de conocimientos previos, como version control, estructuras de datos, algoritmos y más, tendrá una ventaja significativa sobre aquellos que son nuevos en la informática en general, así como Swift y otros Apple marcos.

Entonces, aquí hay algunas posibilidades de dónde podría estar ahora:

Si tiene un título en ciencias de la computación, ya estará familiarizado con muchos de los fundamentos de la informática necesarios para comenzar con Swift. Las variables, matrices, bucles, matrices, conjuntos, funciones, POO y otros conceptos serán útiles en Swift, al igual que todo su trabajo con estructuras de datos y algoritmos. Esto podría ahorrarle de 4 a 6 meses de tiempo de estudio dependiendo de las materias que haya estudiado, y también le dará una ventaja a la hora de solicitar puestos de trabajo en muchas empresas.

Si no tiene un título de CS pero ha asistido a un bootcamp de codificación, tendrá muchos de los fundamentos que necesitará para comenzar con Swift. Esto no le dará la misma ventaja al solicitar puestos de trabajo en esas empresas porque a menudo esperan un título solo para marcar una casilla en su lista de requisitos arbitrarios, pero aún así le ahorrará tres o cuatro meses.

Si no tiene un título de CS y no asistió a un campamento de entrenamiento, pero ha estado codificando en su tiempo libre, ahorrará algo de tiempo, probablemente dos meses más o menos, dependiendo del idioma o los marcos que estaba usando .

¿Qué sucede si no tiene un título de CS, no ha asistido a un bootcamp y no tiene experiencia previa en codificación? Luego, estimaría de 9 a 12 meses para pasar de la nada a un trabajo de nivel de entrada. Sí, eso podría ser un año completo de trabajo además de lo que sea su trabajo actual de tiempo completo, y eso es solo para obtener su primer trabajo como desarrollador de iOS.

¿Es siempre el mismo año? No. Si tiene experiencia previa, puede reducir ese tiempo de 1 a 6 meses, como dije anteriormente. Si toma los mejores números en ambos lados (9 meses desde cero hasta un trabajo de nivel de entrada, más 6 meses para tener un título de CS), eso significa que podría ser contratado en solo 3 meses, lo cual es increíble.

Puede creer que encontrar su primer trabajo en tres meses es imposible, pero no lo es. Diablos, conocí a alguien que estaba tomando mi curso 100 Days of Swift y consiguió un trabajo antes del día 50; ya habían aprendido lo suficiente sobre el desarrollo de aplicaciones en less más de dos meses porque se esforzaron por hacer que cada día cuente.

Por lo tanto, no necesita un título de CS o un campo de entrenamiento, pero debe estar dispuesto a trabajar duro.

Permítete un poco de libertad

El tercer punto que me gustaría hacer antes de seguir adelante es que "toma todo el tiempo que sea necesario". Me encanta una letra de John Lennon que dice: "La vida es lo que pasa cuando estás ocupado haciendo otros planes".

Es fantástico si tiene grandes planes de aprendizaje y grandes sueños para el trabajo que desea, pero a veces está cansado, a veces estresado, a veces su techo tiene goteras o su perro necesita ir al veterinario o sus hijos necesitan más. ayudar con su tarea, o lo que sea, y así es la vida. 

Por lo tanto, no sea demasiado duro consigo mismo si se atrasa con su programa de aprendizaje, o si se pierde algunos días o incluso algunas semanas, etc., siempre que sea resistente, obtendrá allí.

Eso es fantástico si trabajas muy duro y consigues un trabajo después de 50 días, ¡bien hecho! Si te lleva 500 días, también es fantástico, y deberías estar igual de orgulloso de ti mismo. Diablos, si te lleva cinco años, estoy seguro de que no es lo que querías, pero el resultado final es el mismo, y eso es todo lo que importa.

Preparándose para aplicar

Preparándose para aplicar

Por último, pero no menos importante, si está un poco más avanzado en su viaje de aprendizaje de iOS y está pensando en conseguir su primer trabajo de nivel de entrada, me gustaría señalarle una colección masiva de recursos que reuní para ayudarlo.

Yo lo recomiendo Videos de consejos de entrevistas de Swift de Sean Allen - Tiene una lista de reproducción completa para ellos donde puede trabajar a través de discusiones individuales como clases frente a estructuras, programación funcional, manejo de errores y más. Ninguno de los videos es particularmente largo, pero todos están diseñados para brindarle las habilidades que necesita para desempeñarse bien en una situación de entrevista.

¿Donde ahora?

De acuerdo, he repasado las habilidades básicas y de extensión que necesitará, los errores de aprendizaje comunes, los cursos que puede tomar, cómo conectarse con la comunidad de iOS y cómo prepararse para su entrevista de trabajo; eso es mucho para cubrir, y espero que haya sido de ayuda.

Además, espero haber demostrado cuánta información está disponible de forma gratuita. 

Sí, la tentación de gastar cien dólares o más en un curso es fuerte, pero relájese: muévase primero, encuentre algo de impulso y también encuentre a alguien que enseñe Swift de una manera que funcione para usted. Cuando esté en un buen lugar y se sienta listo, siga adelante y gaste algo de dinero si lo desea.

¡Mis mejores deseos en su viaje!

Sobre el autor
David Attard
Autor: David AttardPagina Web: https://www.linkedin.com/in/dattard/
David ha estado trabajando en o alrededor de la industria digital / en línea durante los últimos 18 años. Tiene una vasta experiencia en las industrias de software y diseño web utilizando WordPress, Joomla y los nichos que los rodean. Como consultor digital, su enfoque es ayudar a las empresas a obtener una ventaja competitiva utilizando una combinación de su sitio web y plataformas digitales disponibles en la actualidad.

Una cosa más... ¿Sabías que las personas que comparten cosas útiles como esta publicación también se ven IMPRESIONANTES? ;-)
Por favor deja un eficiente Comente con sus pensamientos, luego comparta esto en su (s) grupo (s) de Facebook que lo encontrarán útil y cosechemos los beneficios juntos. ¡Gracias por compartir y ser amable!

Divulgación: Esta página puede contener enlaces a sitios externos para productos que amamos y recomendamos de todo corazón. Si compra productos que le sugerimos, es posible que ganemos una tarifa de referencia. Tales tarifas no influyen en nuestras recomendaciones y no aceptamos pagos por reseñas positivas.

Autor (es) destacado en:  Logotipo de la revista Inc   Logotipo de Sitepoint   Logotipo de CSS Tricks    logotipo de webdesignerdepot   Logotipo de WPMU DEV   y muchos más ...