Good places to learn swift for IOS app development?

Hello, I've been looking to study the Swift coding language in more detail and hoping that you guys have recommendations for any online courses or resources to learn Swift IOS development.


Im hoping you can direct me to a source that can help me to:


  1. Make data bases for app development
  2. Make social networking in app (something like a basic version of snapchat or WhatsApp for example in the context of phone calls and messages)
  3. Develop good coding practises (e.g. proper sortment of code such as the "Model-View-Controller" organisation method)
  4. get a good understanding of IOS development in general
  5. Have enough knowledge to keep going solo after the course.


I have tried Udemy (and it sucks), Apples developer "Develop in swift" guides and found some help but not enough, The Big nerd ranch books (which are good for jogging memory but not enough to keep me going), and even the app brewery (which is so far my favourite course and hope you guys can direct me to something similar, yet better (if you even know what that is 😅).)


Any good and helpful resources will be accepted, Thanks! 👍

Posted on May 12, 2024 4:24 AM

Reply
Question marked as Best reply

Posted on May 12, 2024 11:53 AM

Mous772 wrote:

1. Make data bases for app development


Presumably you intend to use and to create databases, and not to (at least initially) implement a database itself.


I’d probably start learning about databases with SQL and SQLite, which is included with macOS and iPadOS and iOS, well supported, with few bugs, and widely used.


Maybe this: https://www.sqlitetutorial.net/


Apple and many other vendors will use SQLite underneath other frameworks and tools. Apple offers Core Data and other frameworks here, but I somehow usually find myself using SQL or some other NoSQL database directly.


There are other fine database choices of course, and some other choices that are problematic or encumbered.


2. Make social networking in app (something like a basic version of snapchat or WhatsApp for example in the context of phone calls and messages)


Big project. Big. Big.


Includes substantial requirements for the associated back-end servers, as an entirely peer-to-peer design is problematic for various reasons.


Social networking apps are heavily dependent on the underlying and oft-flaky IPv4 and IPv6 networks. Flakiness which usually means learning about and using state machines and event-driven designs.


Past trivial scale, load-balancing and sharding, live backups, and performing rolling upgrades to clients and servers, and to protocols.


A social media app also necessarily includes content moderation, managing harassment and , bans and ban evasion detection, privacy, legal, and data security requirements, among other details.


If you want to learn a little more about back-end servers generally, maybe have a look at Parse Project or NextCloud.


At a smaller and much more constrained social networking project to initially learn about and develop for, IRC has numerous open-source implementations, the RFCs provide specs, and servers are available. XMPP is another option, as is mqtt, and ActivityPub used with Mastodon and other services.


3. Develop good coding practises (e.g. proper sortment of code such as the "Model-View-Controller" organisation method)


I’ve been at this for a very long time, and I’m still learning about all that. And more.


4. get a good understanding of IOS development in general


Apple doesn’t have a good of app design for Apple platforms overview. Not that I’ve found anywhere. Apple has big gaps throughout what should be the middle ground of the developer docs, too.


5. Have enough knowledge to keep going solo after the course.


Make mistakes. Learn. Make more mistakes. Learn. Learn new tools or frameworks or updates. Make yet more mistakes. As you get better at this, learn from the mistakes made by others. Put differently, this doesn’t end, and the tempo of changes is only accelerating, and the scale and scope of app projects is only increasing.


I have tried Udemy (and it sucks), Apples developer "Develop in swift" guides and found some help but not enough, The Big nerd ranch books (which are good for jogging memory but not enough to keep me going), and even the app brewery (which is so far my favourite course and hope you guys can direct me to something similar, yet better (if you even know what that is 😅).)


I’d suggest starting out with smaller apps too. Much, much smaller than WhatsApp. Maybe an ActivityPub client, for instance.


Any good and helpful resources will be accepted, Thanks! 👍


Here are a Stanford iOS Swift course and an intro-to-programming Harvard Python course (both are college level courses, and free):


https://cs193p.sites.stanford.edu/


https://pll.harvard.edu/subject/python



For a wider introduction, and wider options, beyond Swift itself:


I'm just starting out coding/programming - Apple Community


Swift programming language for beginners – Apple Community


https://www.swiftjectivec.com/


For keeping up, the Apple list mentioned above, or Verwer’s iOS Dev Weekly, among many other fine choices.


I’ve been reading Chris Eidhof’s Swift books, as well.


TL;DR: The scale and scope of what you seek to learn here — algorithms and data structures, databases, app design practices (MVC, OOP, modularity, etc), debugging and troubleshooting and logging, data encryption and data integrity and data security and data disposal, etc — is routinely a four year college degree program, plus ongoing learning for the rest of your career. Or years of “fake it ‘til you make it”. Or (probably the best approach) a combination. (Every piece of tech and every tool I learned about and used during college was outdated or obsolete within five years, too. If not already outdated when i learned it. Which also makes me skeptical about tool-focused training programs.)

5 replies
Question marked as Best reply

May 12, 2024 11:53 AM in response to Mous772

Mous772 wrote:

1. Make data bases for app development


Presumably you intend to use and to create databases, and not to (at least initially) implement a database itself.


I’d probably start learning about databases with SQL and SQLite, which is included with macOS and iPadOS and iOS, well supported, with few bugs, and widely used.


Maybe this: https://www.sqlitetutorial.net/


Apple and many other vendors will use SQLite underneath other frameworks and tools. Apple offers Core Data and other frameworks here, but I somehow usually find myself using SQL or some other NoSQL database directly.


There are other fine database choices of course, and some other choices that are problematic or encumbered.


2. Make social networking in app (something like a basic version of snapchat or WhatsApp for example in the context of phone calls and messages)


Big project. Big. Big.


Includes substantial requirements for the associated back-end servers, as an entirely peer-to-peer design is problematic for various reasons.


Social networking apps are heavily dependent on the underlying and oft-flaky IPv4 and IPv6 networks. Flakiness which usually means learning about and using state machines and event-driven designs.


Past trivial scale, load-balancing and sharding, live backups, and performing rolling upgrades to clients and servers, and to protocols.


A social media app also necessarily includes content moderation, managing harassment and , bans and ban evasion detection, privacy, legal, and data security requirements, among other details.


If you want to learn a little more about back-end servers generally, maybe have a look at Parse Project or NextCloud.


At a smaller and much more constrained social networking project to initially learn about and develop for, IRC has numerous open-source implementations, the RFCs provide specs, and servers are available. XMPP is another option, as is mqtt, and ActivityPub used with Mastodon and other services.


3. Develop good coding practises (e.g. proper sortment of code such as the "Model-View-Controller" organisation method)


I’ve been at this for a very long time, and I’m still learning about all that. And more.


4. get a good understanding of IOS development in general


Apple doesn’t have a good of app design for Apple platforms overview. Not that I’ve found anywhere. Apple has big gaps throughout what should be the middle ground of the developer docs, too.


5. Have enough knowledge to keep going solo after the course.


Make mistakes. Learn. Make more mistakes. Learn. Learn new tools or frameworks or updates. Make yet more mistakes. As you get better at this, learn from the mistakes made by others. Put differently, this doesn’t end, and the tempo of changes is only accelerating, and the scale and scope of app projects is only increasing.


I have tried Udemy (and it sucks), Apples developer "Develop in swift" guides and found some help but not enough, The Big nerd ranch books (which are good for jogging memory but not enough to keep me going), and even the app brewery (which is so far my favourite course and hope you guys can direct me to something similar, yet better (if you even know what that is 😅).)


I’d suggest starting out with smaller apps too. Much, much smaller than WhatsApp. Maybe an ActivityPub client, for instance.


Any good and helpful resources will be accepted, Thanks! 👍


Here are a Stanford iOS Swift course and an intro-to-programming Harvard Python course (both are college level courses, and free):


https://cs193p.sites.stanford.edu/


https://pll.harvard.edu/subject/python



For a wider introduction, and wider options, beyond Swift itself:


I'm just starting out coding/programming - Apple Community


Swift programming language for beginners – Apple Community


https://www.swiftjectivec.com/


For keeping up, the Apple list mentioned above, or Verwer’s iOS Dev Weekly, among many other fine choices.


I’ve been reading Chris Eidhof’s Swift books, as well.


TL;DR: The scale and scope of what you seek to learn here — algorithms and data structures, databases, app design practices (MVC, OOP, modularity, etc), debugging and troubleshooting and logging, data encryption and data integrity and data security and data disposal, etc — is routinely a four year college degree program, plus ongoing learning for the rest of your career. Or years of “fake it ‘til you make it”. Or (probably the best approach) a combination. (Every piece of tech and every tool I learned about and used during college was outdated or obsolete within five years, too. If not already outdated when i learned it. Which also makes me skeptical about tool-focused training programs.)

May 12, 2024 8:43 AM in response to Mous772

Mous772 wrote:

Interesting points but I don’t think I’ve got decades 🤣 I’m hoping to start my first business through an app idea, I just generally need to know those 5 points to make it through, I guess I’ll have to at least try to keep looking 🤷‍♀️

Haven't you ever heard the phrase "fake it 'til you make it"?


If you don't want to spend decades, you can take a shortcut and get a computer science degree. That will give you the bare basics. It won't give you a good foundation in any of your 5 points. Let's review those points...


Make data bases for app development

Databases really aren't difficult. But they are a neglected part of most computer science curriculums. This is an area where you can really learn the basics on your own. The important part is to stick with those basics. Don't try to be fancy. You need a firm theoretical foundation in information science before you can get fancy without a disaster.


Lacking that foundation in information science, you are likely to fall for some hip, new idea that will make your life a living **** for years. Cases in point - Apple's Core Data and now SwiftData. Apple has its strengths, and information management is not one. Years ago, when I was younger and more naïve, I scoffed at people's criticisms of Apple's Core Data. I sure wish I had those months of my life back.

Make social networking in app (something like a basic version of snapchat or WhatsApp for example in the context of phone calls and messages)

This is something that some basic courses in sociology, political economy, or Marxism could cure you of. I'll tell you straight up - this is a very bad idea.

Develop good coding practises (e.g. proper sortment of code such as the "Model-View-Controller" organisation method)

Sadly, a computer science curriculum probably won't help with this. A nice corporate job might help if they have strict coding standards and require developers to comply. Much of the internet, including Apple, has no such concept and it shows.


That proper sortment of code you mention is the part that will probably take you decades to figure out. I could tell you, but you probably wouldn't believe me. I wouldn't have believed me when I was younger. You just have to figure it out on your own.

get a good understanding of IOS development in general

This is definitely something that you can only learn on your own. Universities are too slow to keep up. Books are long gone. It's a tricky thing. You have to find a new paradigm that is going to take over in a few years, but hasn't yet. Wait until it becomes stable and useable. Then adopt it. For example, now is a great time to start with Swift. I'm starting to really like it. But I'm so glad I didn't really dive into it until now. The same is not true of SwiftUI. That should be avoided.

Have enough knowledge to keep going solo after the course.

Don't worry about that. Just do your best and accept that your best will improve over time. But you can't force it or speed it up. But that doesn't mean you can't also be successful while you're learning. Just make smart choices and avoid internet social media.

May 12, 2024 5:39 AM in response to Mous772

Maybe you should sign up to Apple's developer mailing list. Somehow I'm on it 3 times. That way, you would know about things like Apple's new Pathways: Welcome to Pathways


But the brutal truth is that no one is going to teach you any of that. Any tutorials you find online, from Apple or anybody else, are for absolute beginners. Or worse, you'll find some social media influencers for where über programmers only in their own mind. They will be sure to get you worried about things like Model View Controllers or MVP, or MVVM, or whatever. That will get you proper disappointed when you learn the entire framework is based around a "ViewController". Oh wait, now it's all SwiftUI React Native.


What you have to do is start writing code. If you keep at it, you might figure it out in a couple of decades. If you're lucky, you can get a real programming job somewhere far away from the internet where you can learn proper development skills in peace. The internet isn't true. Remember that.

Good places to learn swift for IOS app development?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.