@coltkell. Thanks very much for your question!
Trust me when I say this, you are not alone. This is in fact one of my personal frustrations when it comes to learning (the constantly changing world of technology). However, here are some very helpful tips that I will share with you that help me move forward:
ALL fields, and careers require constant learning. Lawyers, doctors, dentists, even athletes today have to adjust to new rules, so very little in life remains stagnant.
The constant change can be a GOOD thing, so use it to your advantage. How do you do this? One way I used learning iOS to my advantage was to identify areas that would be trending, and hopped on the bandwagon before other, more senior iOS developers did, and that allowed me to leap frog them with respect to my career. I did this specifically by learning Swift before many senior iOS developers, and in doing so, gave myself a head start, and despite the disparity in years of experience, I was able to apply for jobs, and projects that others could not. Had the industry NOT been moving quickly, I would remained behind my competition.
Focus. One has to be strategic with their learning. You simply CAN’T learn EVERYTHING on ANY subject. This is not realistic. Notice, doctors specialize, lawyers practice in a particular field, and athletes play a particular position for their sport. Do the same thing. How? When it comes to iOS, there are many, MANY areas, and as you learn, you’re going to discover some areas more enjoyable to learn than others. As you grow in your learning, it is very important to keep your eye out on those areas that you enjoy doing, and those that you don’t. Once you find an area that you enjoy, consider concentrating your learning for that area, and develop some expertise. I just found out that a very popular author who is an authority on Core Data actually knows very little on Auto Layout. This honestly blew me away because of the very fact that he’s a known author, and an authority on a particular subject in iOS development. Yet, he openly stated that because that area is his specialty, he actually does very little work on Auto Layout. So don’t feel too bad about knowing some areas more than others! Which is an excellent segue (no pun intended) into my next point:
Know the fundamentals! What are they? In my humble opinion, certain topics keep coming up over, and over again in iOS development, and you simply can’t ignore them. There are certain topics you simply must know very well, and in my humble opinion, they are:
a. Swift - This is your programming language. This is your foundational tool kit. Swift to an iOS programmer is what English is to a reporter who works for the NYTimes (or any media outlet in North America or the UK). You simply must know how to program in this language, and know it WELL.
b. UITableViews - I wish I knew when I first started iOS development several years ago how important it is to know this, but hey, I do now. Know UITableViews BACKWARDS. Why? Take a look around you. Most, if not all apps require SOME use of a table. UITableViews are ubiquitous in the mobile world, and it is rare to find an app that does not utilize it in some form or another. Moreover, learning UITableViews forces you to learn so many other concepts that you truly grow as a developer when you focus on this topic. You are also forced to understand Protocols and Delegates which is a key concept in iOS development, and you’ll find learning other areas much easier once you have a solid grasp of this.
c. Networking - Rarely are apps “islands”. Most apps today are so complex, they require some form of communication with the Internet, and this means being able to make contact with a web service, and send/receive JSON data. Nowadays with the plethora of cloud services being offered, including Apple’s own CloudKit, rarely you’ll find an app that does NOT communicate with a web service of some kind.
d. Multithreading/Memory management - This is an advanced topic, however, I must stress that as you grow as an iOS developer, you will be expected to know this topic, so please have it on your radar. Don’t ignore it. Please.
e. Auto Layout - It is almost impossible today to build an app without having some knowledge of UI/UX design, which is why I strongly recommend you have some knowledge of Auto Layout. There are so many devices that Apple makes, which is why it is so important to ensure you know how to make your app’s UI consistent across as many devices as possible. Auto Layout is the way to go, so don’t ignore this.
I’ve given you a good start for now. The above topics (with the exception of Swift) don’t change often, so once you have a solid understanding of them, you will not have to re-learn it over, and over again. The important thing to remember when you do your learning is to make sure you understand CONCEPTS, as opposed to just memorizing code. Make sure you know WHAT you’re doing AND WHY. As a developer with tight deadlines, it’s quite easy to forget about the WHY part since most times we only care about getting things to work, but this is a huge mistake.
I hope this helps.
All the best!