Si Swift es solo el 5% del desarrollo de iOS, ¿cuál es el otro 95% y qué tan difícil es aprender?

Escribir una aplicación dentro de X horas / días es una moda relativamente nueva si considera el historial de programación, desde la resurrección de punto com y el nacimiento de la era de inicio post-google. Esta moda nace y se propaga por el hijo más joven y notorio de la industria del software: Programming Education . Esta industria es viral y se propaga rápidamente como una telaraña, como una curva exponencial.

Desafortunadamente, las casas de software que producen las herramientas para la industria, utilizando tuercas y tornillos, extrayendo minerales, cavando el suelo, se ven obligados a usar, adoptar y ser parte de esta moda.

Cualquier nuevo sistema operativo, idioma o producto debe ser adoptable / utilizable / rentable dentro de X horas / días para justificar su adopción anticipada.

Sin esta promesa, la inversión realizada no puede justificarse. Es muy difícil superar los obstáculos iniciales de la validación de ideas, ya sea una pequeña startup o mamuts establecidos como Apple.

El software, por definición, está diseñado para reducir los esfuerzos humanos, especialmente cuando contiene repetición y cálculo. El nacimiento de Internet agregó una capacidad adicional al eliminar la conmutación y mejorar la comunicación.

Pero lo que nadie entiende es que construir un sistema que sigue, bifurca y pasa por alto las reglas humanas en los puntos adecuados lleva mucho tiempo construirlo . Hable acerca de la comprensión del dominio empresarial, el diseño del producto primero. El lenguaje de programación es el paso que sigue, y su éxito depende de cómo le fue a sus precedentes.

Suponiendo que las partes interesadas entiendan las primeras etapas al 100%, la cantidad de competencia de programación tiene un impacto directo en el tiempo de desarrollo. Para expresarlo en lenguaje de programación, tiempo de desarrollo:

T = k log X + C

donde X es competencia de programadores ideales, k y C son constantes necesarias.

Y soy bastante malo con las expresiones matemáticas, ¡así que existirán mejores iteraciones!

Swift no es una excepción. Es como otro idioma, además tiene tiempo para madurar con la adopción del desarrollador. Cada lenguaje pasa por este ciclo, y su evolución depende de la generación de programadores que haya obtenido.

Curiosamente, lo contrario es igualmente cierto. Es decir, los programadores nacidos con Swift serán radicalmente diferentes de los que no tenían nada más que ensamblaje o C. Serán menos pacientes, comprobarán la corrección del código con poca frecuencia y es probable que dependan de las herramientas que los alimentan con informes. , en lugar de cómo se puede escribir mejor un programa en una hoja de papel, simplemente mirando la hoja durante horas.

¿Qué laboratorio crees que tenía Einstein? ¿Alan Turing no pertenecía a la misma generación?

Si bien no puedo fijar un punto porcentual exacto a esto, ¡estoy absolutamente de acuerdo! El aprendizaje de Swift no me llevó a ninguna parte cuando se trataba de crear aplicaciones; Swift fue fácil en comparación con el desarrollo de iOS.

A lo largo de este año, he enseñado y visto a muchas personas aprender rápidamente. Estas son algunas de las cosas con las que constantemente veo que las personas luchan:

  • Usando Xcode. Una simple búsqueda en Google revela algunos memes realmente precisos y las herramientas de depuración tampoco son las más fáciles de trabajar. ¿Falló la compilación o desapareció el resaltado de sintaxis? Intente compilar nuevamente o eliminar datos derivados. Xcode se estrelló? Típico.
  • El proceso de compilación e implementación (firma de código, proceso de envío de la App Store, etc.) puede ser bastante complicado, como lo mencionó un usuario anterior. Además, nunca sabes por qué o cuándo serás rechazado de la tienda de aplicaciones. ¡Después de un largo proceso de envío una vez, fuimos rechazados una semana después porque los usuarios no pudieron bloquear a otros usuarios!
  • Trabajar con json y coredata es inherentemente difícil. Cada compañía tiene su forma de lidiar con esto y el reino fue creado para resolver este punto doloroso para nosotros (entre otros problemas).
  • Opcionales! No es sorprendente que el 100% de nosotros esté inicialmente confundido por las opciones al principio. Consulte trabajar con JSON en Swift Tutorial.
  • Aprender a trabajar con el generador de interfaces de Xcode. Mucho de esto NO es intuitivo. Por ejemplo, la creación de una nueva salida de referencia requiere que un usuario haga clic y arrastre el elemento a su código de controlador de vista (¿qué tan extraño es eso?), Y hay muchos trucos para hacer que el diseño automático se comporte de la manera deseada.
  • Pantalla azul de muerte. Tendrás la pantalla azul de la muerte de vez en cuando y no estoy completamente seguro de por qué. Lo siento. : /

Definitivamente, hay muchas otras peculiaridades que no he mencionado en lo que respecta a la construcción de una aplicación sobre Swift. Esta es solo la punta del iceberg y esperamos que al menos proporcione información útil. Además, descubrí que el curso Stanford Swift es infinitamente útil y la gente confía en los cursos de Big Nerd Range. ¡Buena suerte y sigue adelante!

Por lo tanto, siempre hay mucho que aprender con cualquier plataforma. Y algunos programadores aquí y en otros lugares, que son muy inteligentes, hacen que parezca que estas plataformas pueden ser muy difíciles de aprender (¡solo porque son tan inteligentes!)

Pero la BUENA noticia es que puedes hacer algunas cosas increíbles, incluso si solo sabes algunas cosas.

Una de mis primeras aplicaciones recibió más de 300,000 descargas. Y todo lo que contenía eran UIScrollViews, Tap & Drag Gestures, UIImageViews y NSUserDefaults. Aquí está la aplicación (¡bastante vieja ahora!)

Así que haz algo bien con cada conocimiento que obtengas.

Algunos recursos son un poco difíciles de seguir y pueden parecer desalentadores. Conozca las nuevas características del SDK de una pieza a la vez.

Muchos recursos en Internet hablan de características SDK oscuras, ingeniosas o sin importancia, por lo que definitivamente hay una sobrecarga de información.

Entonces, la respuesta es que puede ser increíblemente simple o increíblemente difícil de aprender, dependiendo de cómo lo abordes 😉

Enseño a los estudiantes todos los días y veo muchas dificultades a medida que nuevas personas se sumergen en iOS (u otras plataformas). Un buen mentor y un camino de aprendizaje pueden ayudar a veces.

Siéntase libre de ver mi curso iOS bien diseñado:
iOS 9 y Swift: de principiante a profesional pagado

Hmm … Parece que a la pregunta le falta algún punto.

Primero. ¿Por qué crees que Swift es solo del 5%? No es seguro.

Okay. Vamos a dividir la pregunta y reorganizarla.

Si pregunta si el lenguaje en sí es solo una pequeña porción de las habilidades necesarias para desarrollar aplicaciones, es cierto. No estoy seguro si exactamente el 5%, pero el porcentaje real es pequeño.

El desarrollo de aplicaciones implica un conjunto diferente de habilidades o conocimientos. Principalmente se trata de otro código en el sistema. Conocer el lenguaje le permite escribir su propio código, a partir de algoritmos. Pero su aplicación se ejecutará dentro de un sistema operativo moderno como iOS, por lo que usará miriad de diferentes porciones de código del sistema operativo; en iOS lo llaman marcos. También puede usar otras partes del código de otras fuentes, como bibliotecas y componentes de análisis en 3D de GitHub o cualquier otro sitio con código fuente. Incluso puede usar el administrador de CocoaPods para administrar el código de fiesta en 3-d en su aplicación.

Por lo tanto, debe conocer el sistema en el que se ejecuta su aplicación; en el caso de iOS, es Cocoa Touch y algunos marcos de bajo nivel (como Core Graphics o cosas similares).

A continuación, debe conocer los conceptos básicos de las redes para comunicarse con los servicios de Internet (Parse, cualquier API basada en REST, etc.).

A continuación, debe saber algo sobre el diseño y las herramientas gráficas para diseñar la interfaz de usuario para su aplicación, utilizando Sketch o Photoshop para producir recursos (iconos, fondos) para su aplicación.

Por lo tanto, solo consulte algunos cursos en línea sobre programación iOS para explorar el contenido de esos cursos y obtener una idea de las áreas de conocimiento requeridas.

Eso suena como algo que diría.

El lenguaje Swift le permite expresar problemas como código.
Pero si desea crear aplicaciones, hay más cosas que aprender. En mi experiencia, puedes aprender Swift en aproximadamente una semana. Pero escribir aplicaciones a nivel experto lleva un tiempo más largo. Quizás más de un año.

Las aplicaciones IOS generalmente se crean con Xcode. Y hay mucho que aprender sobre cómo especificar un objetivo, diseñar una interfaz en el generador de interfaces. Y cómo esa interfaz se convierte en objetos estándar en su aplicación. Por lo tanto, necesita saber dónde colocar su código para que se ejecute.

Por lo general, las aplicaciones siguen patrones de diseño regulares. Hay una plantilla para construir sus propios controladores de vista, que a su vez controlan los objetos de vista individuales. La información pasa como acciones, llamadas a métodos, notificaciones. Vea los controladores entregados entre sí con segues. Y se mantienen unidos por los controladores de navegación.

Los tipos de datos para iOS tienen que ser dominados.

Hay una gran jerarquía de clases de los elementos de la interfaz de usuario. Que incluye controladores de vista, vistas, tableViews, botones, etiquetas, colecciones, y estos están pegados en la pantalla con restricciones.

Luego está el resto de las API de Cocoa que proporcionan soluciones listas para cosas como hablar con redes, obtener archivos, manejar medios, hacer gráficos en 3D.

Aprender a codificar para iOS no se trata solo de aprender la sintaxis de un lenguaje de programación. También se trata de:

  • aprender a usar Xcode, el entorno de desarrollo de Apple
  • aprender las enormes colecciones de “Frameworks” (es decir, bibliotecas) que componen la “API” de iOS
  • aprender a diseñar la interfaz de usuario con Interface Builder
  • aprender a hacer conexiones entre la interfaz de usuario y el código
  • Comprender el proceso de creación e implementación: firma de código, derechos, el proceso de envío de la App Store, etc.

Para mí, Swift fue la “puerta de entrada” al mundo del desarrollo de iOS. Como desarrollador principal de Python y .NET C #, Swift me puso rápidamente en un territorio familiar. A través de Swift, comencé a aprender a diseñar interfaces, usar las API de iOS, etc.

Sin embargo, después de haber aprendido todo esto, decidí probar suerte en Objective-C. Literalmente, me llevó solo una hora “portar” todo el código que había escrito en mi aplicación de prueba a Obj-C y hacer que se compilara y ejecutara. De hecho, probablemente seguiré con Obj-C en el futuro, ya que Swift, por lo que vale, me está demostrando que es un lenguaje engorroso con extrañas peculiaridades.

El resultado de esto es que definitivamente el caso es que el trabajo REAL en el aprendizaje de iOS no se trata de aprender el lenguaje de codificación en sí, sino más bien de aprender las API de la plataforma. Ambos idiomas acceden a las mismas llamadas API subyacentes, por lo que una vez que aprende cómo se hace algo en Swift, hacer lo mismo en Obj-C suele ser bastante sencillo. Apple le ha dado a los desarrolladores una opción esencialmente sobre qué sintaxis usar para el código escrito, pero en cualquier caso, aún debe aprender las API, que es donde pasará la mayor parte de su tiempo cuando aprenda a desarrollar para iOS.

Permítanme comenzar con un ejemplo. Un día, los usuarios de su aplicación genial escrita en 100% Swift para vender libros se acercan a usted y le dicen que la lista de libros pedidos se complica cuando la conectividad es muy baja. ¿Cómo vas a abordar esto si solo conoces a Swift y nada más?

De lo contrario, debe aprender cómo funcionan las UITableViews y cómo pueblan la lista de objetos y mostrarlos, después de pasar por eso, descubre que no hay nada de malo en su implementación UITableView.

Ahora qué, su baja conectividad ¿verdad? Revise NSURLConnection o CFNetwork y cómo funcionan los marcos de red en iOS. Entonces, ves que la información de respuesta que obtienes está bien incluso cuando la conexión es lenta, pero la respuesta viene en partes y ahora obtienes una pista …

Sí, su analizador JSON no funciona de la manera que desea que funcione, por lo que coloca las partes incorrectas en lugares incorrectos y analiza su JSON en una estructura de objeto diferente de lo que espera que sea. Pero su analizador JSON es el propio analizador de Apple, debería funcionar correctamente, ¿entonces qué está mal?
Después de rascarte la cabeza por un tiempo, te das cuenta de que tu JSON no cumple con los estándares REST … así que la investigación continúa.

Espero que entiendas mi punto, Swift es solo el conductor, no el ingeniero que hizo el auto. Convertirse en conductor es semana es solo unas pocas semanas de trabajo 1 hora al día de práctica, pero convertirse en un buen ingeniero de automóviles … es diferente. Aprenda el 95% y conviértase en ingeniero, de todos modos será un conductor. Buena suerte.

Las bibliotecas del programa (clase) de acceso a aplicaciones del mundo real para hacer el trabajo pesado. En iOS, la biblioteca principal es “Cocoa”. Y hay muchas más clases de Cacao para aprender que palabras reservadas en Swift.

Por ejemplo, incluso para mostrar “hello world” en un dispositivo móvil, usará la clase ViewController y alguna subclase de UIView (ambas en Cocoa). Para leer o escribir archivos se requieren clases que sepan sobre almacenamiento. Para almacenar información en bases de datos se requieren bibliotecas de bases de datos. Para acceder a un servicio de internet se requiere una biblioteca TCP / UP. Para dibujar algo se requiere una biblioteca de dibujo, y si quieres animar un widget, mejor aprende la biblioteca de animación. Todas estas cosas serían muy difíciles de escribir desde cero, es por eso que están en bibliotecas.

Puede llevar a un programador experimentado una semana aprender casi todo Swift the language. Pero tener un conocimiento razonable de todas las clases de Cacao necesita construir una aplicación compleja y de la vida real, que lleva años.

No sé los porcentajes, pero no me sorprendería que el 5% tuviera razón. Sin embargo, Swift está creciendo rápidamente, especialmente entre los desarrolladores de aplicaciones iOS empresariales, o eso escuché.

Swift está creciendo extremadamente rápido y ahora está siendo de código abierto, dicho esto, algunas de las otras cosas que serían extremadamente valiosas de conocer incluyen Objective-C, que fue el único idioma en el que las aplicaciones nativas de iOS se codificaron durante mucho tiempo, por lo que No irá a ningún lado pronto. Por lo tanto, sería en el mejor interés de cualquiera que quiera aprender desarrollador iOS. también aprender Obj.C. Tiene una curva de aprendizaje empinada, así que abróchate el cinturón.

Supongo que parte de ese otro 95% probablemente se refiere a cosas como aprender el Xcode IDE, aprender a trabajar con datos JSON y cosas por el estilo.

Básicamente, en cuanto al lenguaje, aprende Swift y Objective-C.

En cuanto a otras tecnologías, obtenga más información sobre Xcode, incluido el generador de interfaces y el diseño automático.

Aprenda a usar datos JSON

Aprenda a hacer cosas comunes en iOS, como trabajar con vistas de tabla.

Eventualmente, también querrá aprender Core Data, que es cómo iOS maneja el almacenamiento persistente. Pero ese es un tema completamente diferente.

Dividiría el desarrollo de aplicaciones iOS de una manera diferente. Lo dividiría en 5 partes específicamente:

  1. La idea
  2. El diseño: interfaz, interacciones y estética
  3. Creación de prototipos: pruebas de usuarios, evaluaciones heurísticas y análisis de usuarios.
  4. Programación: Uso eficiente de Xcode y Storyboards; Programación Swift / Obj-C De la lógica que ha construido.
  5. Depuración

Pero lo más importante es que estas no son 5 partes, este es un proceso cíclico. Después de haber realizado la primera compilación de su aplicación con éxito, querrá probar esto en el mundo, obtener comentarios y volver a la parte 1 a la 5 para ver cualquier característica nueva que desee agregar. Eso también es parte del desarrollo de aplicaciones.

Entonces, si sigues esto, dividiría el proceso en Doce partes iguales como se enumeró anteriormente. Swift es entonces 8.3%; el 91.7% restante se enumera arriba.