📜 ⬆️ ⬇️

From the web and banks to iOS development: the personal experience of the Apiqa programmer

The Apiqa team is engaged in product development for a specific area of ​​utilities. Finding experienced developers in Yekaterinburg is not easy - here large IT companies hunt them, many candidates leave for the capitals or leave the country, and remote cooperation at the current stage does not suit us. We grow employees within the company, go to meet them and try to provide comfortable working conditions. So, one of our web developers last year decided to try programming in iOS. We helped him make this transition smoothly, now he is simultaneously engaged in web and mobile development. And now he is ready to share his story in the first person. Welcome under cat.


Who am I


Hi, Habr! I am Sasha Kalinin, a developer at Apiqa. I always liked to write websites, assemble computers, understand complex technical things, but at the insistence of my parents I received an economic education and went to work in the banking sector.



In 2015, I began studying programming and got an internship at UrZPI (“Ural Software Software Plant”), which later teamed up with the interactive agency “Everything is Clear”, and Apiqa appeared. So I plunged into the world of web development. Last year, I wanted to try myself in the open spaces of iOS, and the company went to meet me.


Start: Web Programming


UrZPI was engaged in the development of sites: “Golden Apple”, “Utilities League”, jewelry brand, beauty salons and others. We made a large-scale project Digital Pathology - a platform for the study of oncological diseases. In parallel with the main work, I was a mentor in two online schools: Loftschool and HTML Academy.


In 2018, PIK-Comfort became the anchor client of Apiqa - the largest management company in Russia - as a result, specialization was determined, and we began to engage in product development in the housing and utilities sector.



Last May, we had a demand for mobile applications, and native developers came to the company. By that moment I was tired of the web and wanted to try myself in a mobile phone. Since I am a big fan of Apple, I decided to write for iOS.


Immersion in the mobile world


On the first day, I asked our iOS developer to advise me where to start. He was responsive and played the role of my mentor, helping at different stages of training. Toward the fall, I began to read books: “Swift. Basics of developing applications for iOS and macOS (4th edition) by Vasily Usov and "Swift 3. Developing applications in Xcode for the iPhone and iPad using the iOS SDK" (3rd edition) by Molly Mascree. I read, completed the tasks for half a year, wrote something at the same time, got application ideas from a mentor in order to improve skills.



I liked Swift - it was quite simple and similar to TypeScript with the syntax in which I write the web. The tools for developing for Apple platforms are more complicated - there is a lot of heritage from the times of Objective-C, the old and inconvenient system API. I read the second book with a creak.


The first pull request failed, and for the first time I wanted to quit, but I did not. And the process lined up in about half a year: now I am writing both for the web and for iOS.


We distribute current tasks. I like to do something unusual, inaccessible to a web developer - for example, 3D Touch, but the animations are not amenable yet, I have no design sense. On the web, it is easier to animate the interface, of course - the code is clearer, there are no complicated problems.


Mobile development and web: what's the difference


On the web, the entire visual is created using code. You can read it and imagine the final product. In Xcode, this is an IDE for iOS developers, there is Interface Builder - a tool that allows you to typeset using a graphical interface by dragging and dropping items - that is, you don’t need to write code for the visual part.



It sounds cool, but it works very unstable - it is buggy, it hangs, it breaks. Sometimes there are conflicts between native code and Interface Builder - many errors fall into the console, the application itself may fall, everything may go to hell.


What to choose: web or mobile phone?


The decision is yours. It should be understood that they have a fundamentally different market situation. The web is a free platform, and the lawmakers in the mobile phone are companies that own iOS and Android - they decide where to develop, what tools to use developers. When programming for the web, you can use different frameworks, write in different languages, use different IDEs, while for iOS there is only Swift, Cocoa and Xcode. If some new feature comes out for Xcode, then it appears to all developers, but if not, then not. This limitation Apple provides order when writing code, but on the Web, this order must be set independently.


I can also name a plus a large number of open source solutions that are not available for iOS. When I started writing mobile applications, I looked for tools similar to the web that would automate something, but here I have to write with my hands.


In turn, plus development for iOS in the native, Apple gives the developer more freedom in terms of the implementation of functionality - Face ID, iCloud, storage, and more. You have great access to user hardware. And in the browser you are limited to what this browser allows you.


Further way


My potential development on the web is the study of things that are not much in demand in everyday work. In iOS, I still have a lot of questions, there is much to develop, grow and learn. I am attracted by the possibility of practical application of skills in everyday life and work: I need to write something for the phone - I will write it, I need it for the Mac - I will suffer, I will understand and write, for the watch and Apple TV too. I already wanted to write toys, but then I realized that this was a separate difficult area, the immersion in which would take too much time. I'm not ready for this yet.


Now I am developing more for iOS, but at any moment I can go back. I follow frequent web updates, get release notes and understand where things are going. On mobile platforms, the update actually happens once a year.


Immediately after the announcement of SwiftUI and new versions of operating systems, I wanted to touch them. I set myself a beta ... and killed the clock - they turned into a brick. To make them work again, I had to update the phone to the raw, buggy beta of iOS.


In general, I liked the SwiftUI approach much more than the one we are working with now - Auto Layout. SwiftUI is simple and clear, you write the code and immediately see what you get. In fact, this is similar to the web: you write code, and everything appears in the browser at once, it does not require any long compilation and constant assembly of the application.



What is the result?


I do not regret going this way. If you want to repeat my experience, evaluate your skills and capabilities of your company. My colleagues at Apiqa have met me halfway, but it’s not a fact that you will have the same, therefore, before starting a similar transition, discuss it with the management.


It is important to devote enough time to mobile development and apply new knowledge in a combat environment - creating one simple application will not give a complete picture, valuable experience comes only when there is a task that cannot be rejected.


If you are not familiar with programming at all, keep in mind that on the web the entry bar is lower, there are many more educational resources available in Russian. iOS is harder to learn and in terms of writing code - here you need to think, as a programmer, to have enough basic knowledge.


Anyone who has set himself such a task can become a web or Android developer — you just need to look for information, study it, and gain experience. But in order to devote himself to iOS, at least have to get a Mac.


')

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


All Articles