Tuesday, 22 November 2022

laptop

A career in the mobile development industry


From the web and banks to iOS development: a programmer’s personal experience

The Apiqa team is engaged in product development for a specific area of housing and communal services. It is not easy to find experienced developers in Yekaterinburg – large IT companies are hunting for them here, many candidates leave for the capitals or leave the country, and remote cooperation is not suitable for us at the current stage. We grow employees within the company, meet them halfway and try to provide comfortable working conditions. So, last year one of our web developers decided to try his hand at programming for iOS. We helped him make this transition smoothly, and now he’s doing both web and mobile development at the same time. And now he is ready to share his story in the first person. Welcome under cat.

  I always liked writing websites, assembling computers, understanding 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, he began to study programming and got an internship at UrZPI (“Ural Software Products Plant”), which later merged with the Vsyo Yasno interactive agency, 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.

Getting Started: Web Programming

UrZPI was engaged in the development of sites: “Golden Apple”, “League of Housing and Public Utilities”, a jewelry brand, beauty salons and others. We have created a large-scale project called Digital Pathology, a platform for cancer research. In parallel with my main job, I was a mentor at two online schools: Loftschool and HTML Academy.

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

Working day at Apiqa

In May last year, we had a demand for mobile applications, and native developers came to the company. By that time, I was tired of the web and wanted to try my hand at mobile. Since I’m a big fan of Apple, I decided to write for iOS.

Dive into the mobile world

On the first day, I asked our iOS developer for advice on where to start. He was responsive and played the role of my mentor, helping at different stages of training. Closer to autumn, I began to read books: “Swift. Fundamentals of iOS and macOS App Development (4th Edition) by Vasily Usov and Swift 3. Developing Apps in Xcode for iPhone and iPad Using the iOS SDK (3rd Edition) by Molly Mascri. I read for six months, completed assignments, wrote something at the same time, received application ideas from a mentor to improve my skills.

I liked Swift – it turned out to be quite simple and similar to TypeScript in syntax, in which I write the web. With development tools for Apple platforms, it is more difficult – there is a lot of legacy from the times of Objective-C, an old and inconvenient system API. Finished the second book with a creak.

The first pull request failed, and for the first time I wanted to quit, but I didn’t. And the process lined up in about six months: now I write 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 animations still don’t lend themselves, I don’t have a design sense. On the web, animating the interface is, of course, easier – the code is clearer there, there are no complicated problems.

Mobile development and web: what is 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 an Interface Builder – a tool that allows you to layout using a graphical interface by dragging elements with the cursor – that is, you do not need to write code for the visual part.

It sounds cool, but it works very unstable – sometimes buggy, then freezes, then breaks. Sometimes there are conflicts between your own code and Interface Builder – a lot of errors fall into the console, the application itself may fall, everything can go to hell.

What to choose: web or mobile?

The decision is yours. You need to understand that they have a fundamentally different market situation. The web is a free platform, and the companies that own iOS and Android act as legislators in mobile — they decide where to develop, what tools developers use. 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 for all developers, but if not, then no. Apple’s limitations provide order when writing code, but on the web, this order has to be established independently.

The advantage of the web is also a large number of open source solutions that are not available for iOS. When I started writing mobile applications, I was looking for tools similar to the web that would automate something, but here you have to write by hand.

In turn, plus development for iOS in native, Apple gives the developer more freedom in terms of implementing functionality – Face ID, iCloud, storage, and much more. You have a lot of access to custom hardware. And in the browser you are limited by what this browser allows you to do.

Way forward

My potential development on the web is the study of things that are not in great demand in everyday work. In iOS, I still have a lot of questions, there is room to develop, grow and learn. I am attracted by the possibility of practical application of skills within the framework of everyday life and work: if you need to write something for the phone, I will write it; I already wanted to write toys, but then I realized that this is a separate complex direction, immersion in which will take too much time. I’m not ready for this yet.

Now I am more engaged in development for iOS, but at any time I can return back. I keep track of frequent web updates, get release notes, and understand where things are headed. On mobile platforms, the update actually happens once a year.