If you’ve been wondering lately if iOS developers are in demand today, the answer is yes. And you bet how! As of April 2022, there are more than four open vacancies on indeed.com per resume of one iOS developer. The App Store publishes 865 new apps daily. Today there are more than 2,000,000 programs in the store. Companies are interested in implementing “apple” applications and hiring specialists for this.
In this article, we will analyze what is required for a successful start in mobile development for iOS, what tasks you have to solve and what skills will be useful for this field. We will tell you how to prepare for the first interview, and share the story of becoming one of our iOS developers.
You can easily navigate through other articles of this series: “Android-developer”, “System analyst”.
WHO IS AN IOS-DEVELOPER
An iOS developer is a person who writes applications for the iOS operating system.
Tasks of an iOS developer. At the start of a career, novice developers are most often involved in fixing minor bugs and refactoring code. When you gain experience, your tasks will include: development of new application functionality and its support, and release of the application in the App Store. Experienced professionals are tasked with designing the application architecture and setting up CI/CD.
Required devices. You will definitely need a MacBook or iMac. It is also desirable to have a device you will develop for – iPhone or iPad, so you can check the application right off the bat. Of course, there are special programs that help you run the application from a laptop or computer, but such emulators do not have all the functionality of a mobile device.
If you want to try iOS but don’t have the right device, you can consider the following options:
- installing MacOS on a VirtualBox or VMWare virtual machine;
- services for remote work on Mac;
- Assemble a Hackintosh – a computer compatible with Apple products hardware and running on Mac OS.
But for developing commercial applications, these options are not suitable, since the necessary system SDKs work only with MacOS.
ADVANTAGES AND DISADVANTAGES OF THE PROFESSION
|Job search||iOS-developers are currently in high demand|
As of April 2022, 1.155 vacancies are open on the indeed portal, which is 27% more than last year
|At the same time, the profession holds a very high entrance threshold of knowledge. At the start, you need to know algorithms and data structures, design patterns, SOLID, Clean Architecture, Swift, basic frameworks, use Xcode confidently, and the list does not end there.|
|Equipment||The developer always knows which devices and OS he develops for. This makes it easier to test applications.||There are difficulties with purchasing of the necessary devices.|
|Education||Apple provides detailed documentation. If you encounter unusual problems, you can ask a question on the community forums, for example, Stack Overflow, MacRumors, Ray Wenderlich, Hacking with Swift.||Please note that most of these materials contain technical English.|
|Workspace||Xcode is designed specifically for iOS development. It is regularly updated, and updates are often tied to the release of a new OS, which allows you to track critical changes.|
Out of the alternative IDEs, there is AppCode, but it lacks tools important for development – interface builder, playgrounds, source code checker, view debugger and SwiftUI Preview.
|At the same time, developers often encounter bugs and performance issues in Xcode. Xcode is currently rated 2.5 out of 5 in the App Store.|
|Ecosystem||Apple is attentive to the security of devices within the ecosystem. For example, all third-party applications are “sandboxed” – this restricts access to files stored in other applications and prevents them from collecting and modifying information.||But at the same time, due to the closeness of the Apple ecosystem, the developer cannot go beyond its scope and change the behavior of standard iOS tools, including he does not have access to the file system.|
WHICH HARD AND SOFT-SKILLS DOES AN IOS-DEVELOPER NEED?
Basics. For every developer, regardless of the stack, there is a base that needs to be learned:
- Algorithms and data structures (objects, arrays/hashmaps, linked lists, stacks, queues, trees, graphs);
- OOP, SOLID design principles, KISS, DRY and other programming principles, design patterns, GRASP and Clean Architecture patterns;
- Databases and SQL query language;
- Ways of organizing interaction with the network (REST, HTTP, UDP, TCP);
- Git version control systems – allow you to make changes to working files;
You also need to be aware of:
- Architecture of computers and UNIX systems;
- Software development methodologies (Agile, Scrum, Kanban, XP, RAD and others);
- Architectural approaches in software development: MVC, MVVM, MVP, VIPER
Programming languages. An iOS developer must be fluent in Swift. If you’re just getting started, we recommend the Swift Playgrounds app which will help you understand the basics and write your first iOS app. We also recommend getting to know Objective-C. Many large projects are written in this language that are now being rewritten in Swift.
Frameworks and Libraries:
- Apple UIKit, Foundation and CoreAnimation are the main frameworks used in iOS development. Their knowledge is essential.
- GCD and NSOperation are the main frameworks for asynchronous work that allow you to manage running tasks and processes. Their knowledge is also vital.
- Moya, Alamofire, RxSwift, RxCocoa, Realm – third-party libraries and frameworks. Study them, as they are often found in commercial development.
- SnapKit, Swinject, Kingfisher – knowledge of these libraries is not required when you enter the profession but will definitely serve as an advantage.
IDE and infrastructure. As mentioned above, the preferred IDE for iOS development is Xcode. Get a handle on its functionality: what editions are there, how to connect the library, how to use plugins, etc. Also explore auxiliary tools: Xcode Instruments app (utility for debugging) and Fastlane (utility for automating builds and testing). And get acquainted with hotkeys in XCode – their knowledge helps to significantly save development time.
UI/UX design. Creating a user interface from a layout is a basic skill for an iOS developer. To understand how to build such interfaces, learn the principles of interface design.
In the future, when you gain experience, knowledge of these tools will come in handy:
- Core Data – a framework for interacting with the database;
- SPM, CocoaPods, Carthage – dependency managers and tools for connecting utilities, libraries and dependencies to the project;
- Push Notifications – a service for sending notifications to an Apple device from your application;
- App Store – learn how to prepare your app for publishing to the App Store, update and maintain your app, and evaluate performance
Your progress as a developer largely depends on how you know how to work in a team, defend your position and convey ideas. We advise you to pay special attention to the following soft skills:
Understanding of what you are really interested in. At the beginning of your journey, you will encounter a lot of routine work, such as fixing bugs and maintaining legacy code. Be patient, persevere and remember that it will definitely pay off.
The ability to learn. The IT-sphere is constantly growing with new technologies constantly emerging. Determine how you better ingest information and learn – with the help of books, courses, blogs, channels, communication on forums or meetups.
Managing your time. It’s easy to get excited and start burning the midnight oil. This will give a quick result, however in the long run it will lead to burnout and set you back a few steps. Use time management techniques that work for you, include hobbies, and organize your work area well.
Ability to deal with stress. A novice developer is often faced with tasks that take a lot of effort and time due to the lack of necessary skills. It is critical to learn how to manage stress so as not to drive yourself into a dead end and not slow down the learning process.
System approach to problem solving. Learn to estimate the time it takes to complete tasks by relating their complexity to your skills. Break tasks into subtasks and allocate time for each of them. Set priorities and be responsible for the implementation. Be curious and try to figure out the problem yourself. At the same time, it’s not shameful to ask for help if you reach a dead end: explain the problem, talk about possible solutions, and ask what a more experienced colleague would do.
Willingness to work in a team. Product development is a collaborative process. It is important to learn to listen to colleagues, adequately respond to criticism and negotiate with people. This will help you work as a team and achieve your goals. If you have difficulty justifying your decisions, read a few articles on how to learn how to build communication.
HOW TO PREPARE FOR THE INTERVIEW
To nail the interview, you’ll require:
- Good theoretical knowledge – understanding of the basics and specific concepts for iOS development.
- Successful completion of the test task. Based on its results, the employer will understand how close to you the technologies and methods used in the company are.
- Portfolio – this is usually a GitHub account. Useful for you to write a resume, and a potential employer will assess your skills
Remember that you cannot prepare for an interview in one day – you need to not only constantly expand your horizons, but also deepen your knowledge, return to what you have already learned and practice.
Watching public interviews on YouTube will also help – you will become familiar with the structure of the interviews and understand what to expect.
During the interview, you may be asked to solve several tasks. A potential employer will pay attention to how you act when solving them, how quickly you get to the answer, and how you reason and navigate the code.
- “Ninety-Nine Swift Problems” – analysis of tasks for logic, work with algorithms and data structures with code examples in Swift;
- “Swift Interview Questions and Answers” – questions and tasks that one can often run into during interviews.
Practice regularly. Discipline will help you stay on track: set yourself a challenge, create a checklist, and track your progress.
Don’t be discouraged if you’re asked a question in an interview that you don’t know the answer to. The main thing is to understand where to move and what to learn next.
HOW OUR IOS-DEVELOPER GOT INTO THE FIELD
One might say that I came to iOS development accidentally. By education, I am a linguist and teacher, so everything that connected me with programming was the word “languages”.
I became seriously interested in programming after university, when, after a couple of years of working as a teacher, I realized that this was not my thing. Once, in a conversation with a programmer friend, I raised the topic that I would like to dip my toe in IT, and he suggested that I look towards iOS development.
I started with general courses in programming, simultaneously pulling up the ossified school knowledge in mathematics, as well as university basics in discrete mathematics and linear algebra.
I focused on Swift and UIKit while learning the Git version control system and UNIX work in parallel.
As soon as I felt comfortable enough in terms of technical skills, I began to make small applications: first for myself, and then as part of test tasks for companies.
It took me about a year and a half of daily training to get my first offer, which I did not regret even a bit. “Entering IT” turned out to be difficult but possible. With due diligence and effort, nothing is impossible.
At the start, it is not necessary to have all the skills described in the article. The lack of some skills can be compensated with high motivation and developed soft skills. So keep calm and do your thing 🙂
Study, build a portfolio, go for internships and, voila, you are an iOS developer! If you at the dawn of your career path pay attention to the training materials that we left below.
MORE ADDITIONAL RESOURCES
Tutorials and articles
- Swift development documentation
- Blog with articles about Swift, Xcode and iOS development.
- Directory of podcasts, articles and news from the world of Swift.
- The book “Grokking Algorithms” by Aditya Bhargava – an illustrated guide to working with algorithms.