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.)