El equipo de Apiqa se dedica al desarrollo de productos para un sector de vivienda específico. Encontrar desarrolladores experimentados en Ekaterimburgo no es fácil: las grandes empresas de TI los están buscando, muchos candidatos se van a la capital o abandonan el país, y la cooperación remota en la etapa actual no nos conviene. Hacemos crecer a los empleados dentro de la empresa, nos reunimos con ellos y tratamos de proporcionar condiciones de trabajo cómodas. Entonces, uno de nuestros desarrolladores web el año pasado decidió probar suerte en la programación para iOS. Lo ayudamos a hacer esta transición sin problemas, ahora se dedica simultáneamente al desarrollo web y móvil. Y ahora está listo para compartir su historia en primera persona. Bienvenido a cat.
Quien soy yo
Hola Habr! Soy Sasha Kalinin, desarrolladora de Apiqa. Siempre me gustó escribir sitios web, armar computadoras y comprender cosas técnicas complicadas, pero ante la insistencia de mis padres, obtuve una educación económica y me puse a trabajar en el sector bancario.

En 2015, comenzó a estudiar programación y obtuvo una pasantía en UrZPI (Planta de productos de software Ural), que luego se unió a la agencia interactiva Everything Is Clear, y apareció Apiqa. Así que me sumergí en el mundo del desarrollo web. El año pasado, quería probarme a mí mismo en la inmensidad de iOS, y la compañía fue a conocerme.
Inicio: programación web
UrZPI participó en el desarrollo de sitios: "Golden Apple", "League of Housing and Public Utilities", una marca de joyería, salones de belleza y otros. Realizamos un proyecto a gran escala de Patología digital, una plataforma para el estudio del cáncer. Paralelamente a mi trabajo principal, fui mentor en dos escuelas en línea: Loftschool y HTML Academy.
En 2018, PIK Comfort, la empresa de gestión más grande de Rusia, se convirtió en el cliente principal de Apiqa, como resultado de lo cual se determinó la especialización, y comenzamos a participar en el desarrollo de productos en el sector de la vivienda y los servicios comunales.

En mayo del año pasado, tuvimos una demanda de aplicaciones móviles, y los desarrolladores nativos vinieron a la compañía. Para entonces, estaba cansado de la web y quería probarme en un teléfono móvil. Como soy un gran fanático de Apple, decidí escribir para iOS.
Inmersión en el mundo móvil.
El primer día, le pedí a nuestro desarrollador de iOS que me aconsejara dónde comenzar. Resultó ser receptivo y desempeñó el papel de mi mentor, ayudando en diferentes etapas de entrenamiento. Hacia el otoño, comencé a leer libros: “Swift. Conceptos básicos del desarrollo de aplicaciones para iOS y macOS "(4ª edición) de Vasily Usov y" Swift 3. Desarrollo de aplicaciones en el entorno Xcode para iPhone y iPad utilizando el SDK de iOS "(3ª edición) Molly Mascri. Seis meses que leí, completé tareas, escribí algo al mismo tiempo, recibí ideas de aplicación de un mentor para desarrollar habilidades.

Me gustó Swift: resultó ser bastante simple y similar a TypeScript en la sintaxis en la que escribo la web. Las herramientas de desarrollo para las plataformas de Apple son más complicadas: existe mucho legado de la época de Objective-C, una API del sistema antigua e inconveniente. Leí el segundo libro con un crujido.
La primera solicitud de extracción falló y, por primera vez, quise eliminar todo, pero no lo hice. Y el proceso se alineó en unos seis meses: ahora escribo para la web y para iOS.
Distribuimos las tareas actuales. Me gusta hacer algo inusual, inaccesible para un desarrollador web, por ejemplo, 3D Touch, pero las animaciones aún no son aceptables, no tengo una sensación de diseño. Animar una interfaz en la web es, por supuesto, más fácil: allí el código es más comprensible, no hay problemas complicados.
Desarrollo móvil y la web: cuál es la diferencia
En la web, todo el visual se crea usando código. Puedes leerlo e imaginar el producto final. En Xcode, este es un IDE para desarrolladores de iOS, hay Interface Builder, una herramienta que le permite escribir con la interfaz gráfica arrastrando el cursor con el cursor, es decir, no necesita escribir código para la parte visual.

Suena genial, pero funciona muy inestable: puede tener errores, luego se congela y luego se rompe. A veces surgen conflictos entre el código nativo y el generador de interfaces: muchos errores caen en la consola, la aplicación en sí misma puede fallar, todo puede irse al infierno.
¿Qué elegir: web o móvil?
La decisión es tuya. Debe comprender que tienen una situación de mercado fundamentalmente diferente. La web es una plataforma gratuita, y los legisladores en el teléfono móvil son compañías que poseen iOS y Android: deciden dónde desarrollar, qué herramientas deben usar los desarrolladores. Al programar para la web, puede usar diferentes marcos, escribir en diferentes idiomas, usar diferentes IDEs, mientras que para iOS solo hay Swift, Cocoa y Xcode. Si sale una nueva característica para Xcode, entonces aparece para todos los desarrolladores, pero si no, entonces no. Dicha limitación de Apple proporciona el orden al escribir el código, pero en la web debe configurarlo usted mismo.
También puedo nombrar un plus de la web de una gran cantidad de soluciones de código abierto que no son para iOS. Cuando comencé a escribir aplicaciones móviles, buscaba herramientas similares a la web que automatizaran algo, pero aquí tengo que escribir con mis manos.
A su vez, más el desarrollo para iOS en forma nativa, Apple le da al desarrollador más libertad en términos de implementación de funcionalidad: Face ID, iCloud, almacenamiento y mucho más. Tiene un excelente acceso a hardware personalizado. Y en el navegador está limitado por lo que este navegador le permite.
Camino adicional
Mi potencial desarrollo en la web es el estudio de cosas que no son muy demandadas en el trabajo diario. En iOS, todavía tengo muchas preguntas, hay dónde desarrollarse, crecer y aprender. Me atrae la posibilidad de la aplicación práctica de habilidades en el marco de la vida cotidiana y el trabajo: necesitas escribir algo para el teléfono, lo escribiré, lo necesito para Mac, me atormentaré, lo resolveré y escribiré, también para el reloj y Apple TV. Ya quería escribir juguetes, pero luego me di cuenta de que esta es una dirección compleja separada, inmersión en la que tomará demasiado tiempo. Todavía no estoy listo para esto.
Ahora estoy más involucrado en el desarrollo para iOS, pero en cualquier momento puedo volver. Sigo actualizaciones web frecuentes, obtengo notas de lanzamiento y entiendo hacia dónde se dirige todo. En las plataformas móviles, las actualizaciones ocurren prácticamente una vez al año.
Inmediatamente después del anuncio de SwiftUI y nuevas versiones de sistemas operativos, quería tocarlos. Instalé una versión beta ... y apagué el reloj, se convirtió en un ladrillo. Para que volvieran a funcionar, también tuve que actualizar el teléfono a la versión beta con errores de iOS.
En general, me gustó mucho más el enfoque con SwiftUI que con el que estamos trabajando ahora: diseño automático. SwiftUI es simple y directo, usted escribe el código e inmediatamente ve lo que obtiene. De hecho, es similar a la web: si escribe el código, y todo aparece en el navegador de inmediato, no requiere una compilación larga y un ensamblaje constante de la aplicación.

Cual es el resultado?
No me arrepiento de haber venido por aquí. Si desea repetir mi experiencia, evalúe sus habilidades y capacidades de su empresa. Los colegas de Apiqa vinieron a conocerme, pero no por el hecho de que tendrá lo mismo, así que antes de comenzar tal transición, discútalo con la gerencia.
Es importante dedicar suficiente tiempo al desarrollo móvil y aplicar nuevos conocimientos en un entorno de combate: la creación de una aplicación simple no dará una imagen completa, la experiencia valiosa se produce solo cuando hay una tarea que no se puede abandonar.
Si no está familiarizado con la programación, tenga en cuenta que en la web la barra de entrada es más baja, hay muchos más recursos educativos en ruso disponibles. iOS es más difícil de dominar en términos de escritura de código: aquí debe pensar, como programador, tener suficientes conocimientos básicos.
Cualquier persona que se haya propuesto una tarea de este tipo puede convertirse en un desarrollador web o de Android; solo necesita buscar información, estudiarla y adquirir experiencia. Pero para dedicarse a iOS, al menos tienes que tener una Mac.