Hallo vrienden, Leo hier.
The article today is a meta-programming article. It is not about programming itself but is how I started my iOS development career. The motivation behind this is the common pattern of people lost at the beginning of their journeys in the world of iOS.
Keep in mind this is the first article of a series of articles that will come. Today's goal is to show the five steps and the reasoning behind them.
Before we start, we need to set some preconditions. I'm expecting that you already have an environment where learning iOS development is comfortable, I mean any Mac made by Apple from 2012 until now. I'm saying that because I learned iOS development in a 2012 MacBook Pro and it was ok, not perfect but comfortable. Also, it is important to say that it is POSSIBLE to learn iOS development if you don't have a Mac, I just don't feel that it is comfortable.
Maybe the first issue is having a comfortable environment to study that is completely comprehensible. Although it is possible, it is not the scope of this article on how to study Swift without a Mac.
The target audience is everyone who wants to start an iOS development career and has a comfortable setup to study. Also, I will answer the famous question "UIKit or SwiftUI?", but you may be disappointed with my answer and will not be in the article today.
The final disclosure is all of this article is my vision and it is highly biased on my experience. It also became so big that I will split it into more or less 6 articles. Everyone will have different inputs and outputs when trying to learn something. Try to not compare yourself with others and please take your time.
No more talking let's jump into it. But first...
Painting of the Day
Today's painting is a 1050 B.C. art piece called Weighing of the Heart from the ancient Book of the Dead for the Singer of Amun, Nany.
Archaeologists found this papyrus in the burial of Nany, a woman in her seventies. She was a singer of the god Amun-Re. Nany also had the title "king's daughter," which probably means that she was a child of the high priest of Amun and titular king, Painedjem I. As was customary during the Third Intermediate Period, Nany's coffins and boxes of shabtis (funerary figurines) were accompanied by a hollow wooden Osiris figure, which contained a papyrus scroll inscribed with a collection of texts called the "Book of Coming Forth by Day" – better known to us as the Book of the Dead. When unrolled, this scroll is more than seventeen feet long.
The scene depicted here shows the climax of the journey to the afterlife. Nany is in the Hall of Judgment. Holding her mouth and eyes in her hand, she stands to the left of a large scale. Her heart is being weighed against Maat, the goddess of justice and truth, who is represented as a tiny figure wearing her symbol, a single large feather, in her headband.
Nany has been found truthful and therefore worthy of entering the afterlife. Anubis says to Osiris, "Her heart is an accurate witness," and Osiris replies," Give her her eyes and her mouth since her heart is an accurate witness."
I chose this painting because I will talk about the beginning of my journey, nothing better than a painting of the beginning of the paintings right? On second thought this is literally what happens afterlife, so the painting theme is about the end of a journey, which also represents the end of my journey as a backend developer and the beginning of my journey to be an iOS developer.
You want to start an iOS development career.
I don't start this from zero. I already knew how to code. Before my iOS career I was a Java backend engineer for 7 years. This for sure helped me migrate to iOS development and maybe if I was beginning from complete zero I would have done things differently. Who knows?
As I said in the title I'll explain in 5 steps that I used on how to start an iOS development career. This was the path I took to become an iOS developer and maybe this could help someone else out there. I create the steps to be done in succession, I mean they follow a reason behind them.
The five steps are:
- Learn Swift Language
- Learn how to Build Interfaces
- Learn Common iOS programming Features
- Learn how to programmatically Test my code
- Learn Architecture and iOS project tools
They are not out of nowhere, each step was carefully thought to be the next step toward an iOS development career. I had a reason for them and I'll show you in the next section.
Reasoning on the steps
Now let's follow the reasoning behind that steps.
First of all, you need to learn Swift programming language. This is not optional. You must be able to read any kind of Swift code and know what is going on. This ability is crucial and non-optional for the rest of the journey. If I would argue about the most important step, would be the first one. Investing your time mastering Swift itself and every second doing that will be worth it.
After having a SOLID understanding of Swift, the next is how to build interfaces. After all my goal was to be an iOS developer. In this step, you will not only learn the interface but also how interface flows work, for example, how to pass information from one screen to another. This way learning how to build a screen is a sine qua non skill to have. Some people would argue that you could already get a job with those two steps, and they are right. I'm 100% that you can get a job knowing how to code in Swift and build interfaces, but for me, I needed more to feel that I was ready to apply for jobs.
Now you know how to build screens and have a solid understanding of Swift. The next step is to become familiar with some iOS libs. In this step, I learned a lot about the
Combine etc. Those are tools that will help you build more complex interfaces and also will help you to land the famous first Junior iOS position.
Well, now you should have all the tools to build any app that you want. My next thought was: "Ok, now I have this app but how can test it?". And here is where you will learn how to properly test your code. Generally speaking, you have two kinds of tests, the UI test, and Unit Tests. I focused only on unit tests and learn just the basics of UI testing in the beginning. Unit tests are hard enough so be calm and take your time to learn.
And finally, when you know how to code the app and test it, it's time to... organize it! The last step was learning how to structure an iOS project (spoiler: there are infinite ways to do that), and how to create common project patterns like MVC, MVVM, VIPER, coordinators, etc. Also in this step, you will learn about modularisation and third-party frameworks management like Cocoapods and Swift Package Manager.
Now you understand why the steps are in that order. You go from the more concrete knowledge that is language and building screens to more abstract and advanced knowledge that is architecture and unit tests coverage.
There are also things you should consider when you start this journey.
The first final piece of advice is that this journey WILL take time. I don't know how much time, maybe 6 months, 2 years, 5 years, that doesn't matter. Don't try to rush things, it's not because there is an 11 years old boy that can code as fast as Flash that you also should be that way. Remember that is your journey and you will have your problems and your victories.
The second piece of advice is that like I did, find a Mentor. This is very important because of two things: you will have a knowledge resource when things get dark ( and they will sooner or later), and you will not be alone in your journey. Not being alone is the best thing that you can have to stay motivated, you will realize that others also have struggles, and it is an eye-opener knowing that you can count on someone. The Twitter iOS community is great and if you have any questions you can ask me there.
Try to study with completely free resources and I always recommend that before paying for courses, dig around for all free content, and then after months of studying free content you have a more educated opinion on what course you should take, and in my case, I always enjoy more the paid content if I study free resources first. The advantage of studying with free stuff is that you can get your hands dirty before you fully commit to a whole course. I'll talk about paid resources later there is plenty of good stuff out there.
Create a study routine. For me, this is one of the foundational principles of learning iOS. It is infinitely better to study 15 min a day every day of the week than 2 hours just one day. Why? For me, a daily routine forces me to every day think about the subject I'm studying and that creates an ongoing understanding increase. When I decided to become an iOS developer I studied at least one hour a day for six months before getting my first job offer.
Today we started the series on how to start an iOS development career. I hope you enjoy all the tips and count on me to help you if need any guidance.
Part 2 of this post is already available: Learning Swift Programming language. If you are curious about the techniques I used to study, you can check there!
That's all my people, I hope you liked it as I enjoyed writing this article. If you want to support this blog you can Buy Me a Coffee or just leave a comment saying hello. I'm open to
writing freelancing! Just reach me in LinkedIn or Twitter for details.
Thanks for the reading and... That's all folks.
Did you find this article valuable?
Support Leonardo Maia Pugliese by becoming a sponsor. Any amount is appreciated!