iOS development for beginners. Part 2: courses and tutorials
Published: 2023-03-24 11:42:11

In the [first part](https://dev.to/artem_poluektov/ios-development-for-beginners-part-1-initial-requirements-and-technology-trends-3mik) of this tutorial, I’d made a brief review of the initial requirements and recent technology trends. In this part I would start with a review of two ready-made iOS Development courses and later would also provide you with list of useful resources to get in touch with popular libraries, frameworks, and some other resources widely used by developers. If you’d choose to go only for the ready-made course, be sure to check my list at the end of your study for some topics you could miss.

## kodeco.com
As I stated in the first part, Ray’s website is a trendy place for the beginners. When I was an iOS developer, I used this website to learn to use new frameworks and new iOS features. The tutorials were easy enough for beginners and very straightforward. However, featured some architectural anti-patterns like writing tons of code in AppDelegate breaking Single-Responsibility principle.
**Pros:**
- many tutorials covering almost every topic you would need
- new articles every day or two
- prepared a study paths
- very detailed tutorials
- for the very beginners

**Cons:**
- most videos do not feature transcription, so you have to watch it in full
- some video tutorials are cropped into too small parts
- wide usage of architectural anti-patterns
- paid subscription ($19.99 monthly / $179.88 for annual plan)

So, kodeco.com is a pretty good source for beginners and even for junior/middle developers exploring new technologies. However, there are so many other ways to begin.

## CS193P by Stanford University
Paul Hegarty works at Stanford University. With the introduction of the first version of Swift in 2014, he started the development of this course. Stanford is one of the world’s top universities in Computer Science, so it features very high-quality mark. Latest version dated Spring 2021 features almost all you need to begin writing code.
**Pros:**
- free
- provided by the world-class university
- covers almost every important topic on iOS development including architecture
- very focused and straightforward

**Cons:**
- features SwiftUI instead of UIKit
- suitable for people familiar with programming
- no text transcription

I would go for Stanford as the initial point of the study. It’s free, already approved on many students and provided by one of the world’s top universities. It was also recommended by Craig Federighi, Apple’s SVP on Software Engineering. And by the day you'll complete the course, SwiftUI would become a little [or may be much] more popular.
You’ll find more info [here](https://cs193p.sites.stanford.edu).

## Useful resources
This useful resources list is not intended to replace or compete with professionally prepared courses above. Instead, I’m going to focus on real-world app development and introduce you with popular techniques, frameworks, and libraries.

## Development language
As I briefly mentioned in the first part of this tutorial, Swift is definitely #1 choice for macOS & iOS app development. And there a lot of official documentation about it.

- I would start with watching [WWDC 2016 video “Getting started with Swift”](https://developer.apple.com/videos/play/wwdc2016/404/) for a brief explanation of language usage and features.
- [The official Swift guide](https://www.swift.org/documentation/) would guide you from the very beginning to in-depth and modern features. You could check it anytime you need to find new ways of solving your tasks easier.

## Interface Builder
The second important step is to get familiar with Interface Builder, the tool which would make your life hundred times easier :) And, I also recommend to use Auto Layout, the technology to build adaptive interfaces for all available devices.

- You could find all available UI controls and best practices to build great UI in [Apple’s Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/platforms/designing-for-ios/).
- Watch this [video](https://developer.apple.com/videos/wwdc2017/412/) on how to use Auto Layout Techniques in Interface Builder.

## Source control
Every team uses a source control system to keep source code safe from losing it due to technical failures, to be able to move between versions or releases and, of course, to make working together on one project easier. Almost every mobile team today uses **Git**.

- Find out what is Git and how it works in [this tutorial](http://rogerdudler.github.io/git-guide/).

Xcode has a built-in menu to create commits, for pull/push actions. However, some developers prefer SourceTree app for a simpler, more powerful and straightforward interface. Also, sometimes Xcode is getting crazy and throwing some “unknown errors” when you’re trying to commit your code. SourceTree would save you in these situations. You could [download this app here](https://www.sourcetreeapp.com/) for FREE.

There are many online source code storages available free of charge. Most popular are [GitHub](https://github.com/) and [BitBucket](https://bitbucket.org/). For many years GitHub provided only public repositories for free, so that anyone could see all of your code in uncompleted projects, but a few days ago they launched private repositories, so nobody could see your code until you want it. BitBucket also provides you with free private repos at no charge.

## Dependency management
Don’t try to reinvent the wheel. If you need to develop a new feature, try to use existing solutions first. There are many frameworks and open-source libraries available for free. The best way to find a library is Google [Surprise :)], which would lead you to either GitHub or StackOverflow and then to GitHub. Here are a few tips on how to choose a library:

- Check a number of stars on the library’s GitHub page. It’s usually safe to use one with 1000+ stars.
- Check the latest release date. You don’t want to use an outdated framework. A new iOS releases every September, so the library should be updated for new version around this date.

## Popular libraries
There are thousands of libraries available. However, only a few are really useful and popular.

- [Alamofire](https://github.com/Alamofire/Alamofire) is number one choice for the client-server app. It makes working with network request extremely easy. Check their GitHub page for beginners guide. Moreover, they have 30K stars :)
- [KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess) is a beautiful and easy-to-use wrapper on Apple’s Keychain framework to provide secure storage for sensitive data such as a user’s password.
- [iOS Charts](https://github.com/danielgindi/Charts) is a powerful library for drawing almost every chart you’d need in UIKit.
- [Realm](https://realm.io/) is a very fast and easy-to-use alternative to Apple’s Core Data to create an offline database on the device. Check [my article](https://medium.com/@artempoluektov/mobile-database-optimization-realm-vs-sqlite-1a203eebd2e5) on comparing both technologies.

[Here](https://github.com/vsouza/awesome-ios) you would find a very popular curated list of other great iOS libraries.

## If you need help
Go to [StackOverflow](https://stackoverflow.com/). It’s the primary resource for getting help on solving developers issues. Try searching first, sure, somebody already had the same problem as you, and he/she got an answer. If no, try to ask politely, and you would get your solution very fast.
Don’t worry, even Senior guys couldn’t know everything. They just know where to find the right solution in the shortest amount of time. So they’re using StackOverflow dozens of times every day.

## Preparing for your very first interview
In the next part of this tutorial, I would guide you on preparing for your very first interview, provide you with a checklist of necessary pieces of knowledge and also supply you with some useful tips and tricks.

[Continue to Part 3.](https://dev.to/artem_poluektov/ios-development-for-beginners-part-3-preparing-for-the-interview-2ic2)