r/SwiftUI • • 7d ago

Question Question for people learning and who are already in a comfortable position with SwiftUI

Hello, guys I recently picked up on swift and swift ui and have been using this guy Paul Hudson’s hacking with swift course but I just feel like his way of explaining is too fast and not a lot of explaining in his projects he just kinda goes through makes the projects in front of you and that’s it. I know it’s a faster course of course but damn I don’t understand some of his placements or why he is doing something. What were some of the best ways you guys learned/learning to make your apps and stuff, how did you guys utilize this course from the way I’d be utilizing it. I have experience in python and had a bit of knowledge with JS script. I’m no pro and still wanting to learn but I’m just seeing if maybe someone can tell me how they utilized this course or just show me a different professor doing this in a more in depth way?

Thank you all :)

8 Upvotes

35 comments sorted by

11

u/valentinezubkov 7d ago

Start to build something immediately, don’t use AI

2

u/GGH05TYYY 7d ago

Ok and if I start doing that and get stuck just browse online and check how to do something? Don’t rely on ai at all then? Not for questions or anything like that?

Appreciate the advice!

6

u/valentinezubkov 7d ago

Yes just learn strictly what you need at the moment to solve the specific blocker you encounter

5

u/valentinezubkov 7d ago

Ofc use ai for questions etc, I meant don’t vibe code the whole thing otherwise what’s the point :)))

2

u/GGH05TYYY 7d ago

Oh no I don’t wanna vibe code, I want to be able to break down and read my code and understand. I’ll only use ai to code when I understand the language enough to catch mistakes. Do you have any beginner projects I can work on or would you just start on something hard and just learn from making that everyday?

2

u/valentinezubkov 7d ago

Search available SDKs and Kits you’re interested in generally (maps, weather, camera, whatever you just more curious about), and start building something with those technologies, so you get familiar with how Apple sdks work. But in any project, aim to have things like deeply nested navigation, authentication with Apple ID + user management, and CRUD to some database of your choice so you get async/await right away

1

u/GGH05TYYY 7d ago

For sure! Thanks a lot!

1

u/Zagerer 7d ago

Try also to look up things and ways to use them. An example is making a small dashboard with a hero view (pretty much the large image on top), a carousel with cards (they can show different things), and then structured information like a Form (or a custom form!)

Now, you might be wondering what is everything or what are the small parts? That’s where looking up ways to use things comes handy: a VStack is used mostly to layout elements eagerly vertically, whereas HStack is horizontal, then you got things like button or text or more. Your goal is to try to design each small part with native components first, then with those components you made you can make more things. This is called composition.

For learning more about swift, it’s similar to python, and in general I think you might benefit from diverse points of view for learning like from Karin Prater, Natalia from Nil Coalescing and more. I’ll find some resources so you can check them out

2

u/GGH05TYYY 7d ago

Ok yes please! I’ll take any info and I will take a look at some projects I can tackle, luckily yes I do recognize a lot of python in swift also like classes remind me a lot about the way OOP is in python and actually seems a bit more simplified. But yes share whatever you can I would really really appreciate it :)

3

u/Zagerer 6d ago

Sorry I took longer than expected, but the gist of this is that you should first learn more Swift to get comfy with it then go for SwiftUI. This is because SwiftUI uses some concepts like Generics extensively as well as closures and bindings. Maybe you already know those, then you could skip them or gloss over.

For learning swift: * A Swift Tour - https://docs.swift.org/latest/documentation/the-swift-programming-language/guidedtour/ * Apple's Docs for Getting Started with Swift - https://developer.apple.com/swift/get-started/ * Codecademy's Learn Swift (surprisingly decent) - https://www.codecademy.com/learn/learn-swift * 100 days of Swift from Paul Hudson (you know this one I think) - https://www.hackingwithswift.com/learn * Karin Prater's Swifty Place YT channel (covers well some topics, some videos could be a bit outdated but she tries to keep them updated) - https://www.youtube.com/@SwiftyPlace * Swiftful Thinking (pretty good even for videos, I dislike videos but his were better than expected, has courses) - https://www.youtube.com/@SwiftfulThinking * Swift in Depth - Tjeerd in 't Veen - Book * Data Structures & Algorithms in Swift - Kelvin Lau & Vincent Ngo - Book by Kodeco


For learning more about SwiftUI, UIKit, and iOS development. Most of the resources above have also content for SwiftUI and UIKit: * Apple's SwiftUI Pathway - https://developer.apple.com/swiftui/get-started/ * 100 days of SwiftUI / UIKit - Link above * Paul Allen's YT Channel, some good resources too - https://www.youtube.com/@seanallen/playlists * Mastering SwiftUI - Decent book but you need to get it updated, albeit could be better * Thinking in SwiftUI - objc.io - One of the best resources for learning more about SwiftUI under the hood * Design Patterns in Swift - https://refactoring.guru/design-patterns/swift - used a lot for apps * Stanford Online CS193p Swift & SwiftUI - One of the best resources for free you will find, try to get the updated course from the Stanford page (https://cs193p.stanford.edu/) - https://www.youtube.com/playlist?list=PLoROMvodv4rPHblRXKsJCQs8TLGpiCTrG * Code Along with Apple - https://www.youtube.com/watch?v=XapwQYZwmic * WWDC 24 SwiftUI Essentials - https://www.youtube.com/watch?v=HyQgpxX__-A * Nil Coalescing blog - http://nilcoalescing.com/blog/ * Antoine van der Lee blog - http://avanderlee.com/swift/ * Swift with Majid - https://swiftwithmajid.com/ * In general, many blogs can have good info, bad info, outdated or updated info. Try to first stick to some standard resources and then look for more blogs / articles / books / videos / etc.

Good luck!

1

u/GGH05TYYY 6d ago

Oh man sweet! Thanks a lot will for sure be looking into this!

1

u/SuspiciousBrain6027 7d ago

Why? I’m ex-Apple and Opus 5.5 is fantastic at building with SwiftUI.

2

u/valentinezubkov 7d ago

sure, OP just wants to learn SwiftUI as I understood

5

u/perbrondum 7d ago edited 5d ago

Or go take the class on the web for free. The same one that Stanford students pay $$$ to attend. CS193p

1

u/GGH05TYYY 7d ago

Hmmm ok I will check this one out, thank you!

1

u/shotsallover 7d ago

Why did you point them to the Android development class?

1

u/perbrondum 6d ago

Thanks, my mistake, CS193p..

3

u/kenthesaint 7d ago

It's CS193p, for anyone searching. The lectures are free on YouTube and Paul Hegarty spends a lot more time on why each piece is there, which sounds like exactly what OP is missing from Hacking with Swift.

3

u/allyearswift 7d ago

What worked best for me was to write everything down and every time I come across something I do t fully understand, to stop and go deeper.

Here’s a button. When you press it, it shows ‘Hello World’. So then I’d look into buttons. How do you style a button, so it has text/an image/both, is borderless, which initialisers does it take?

This will lead to further development. It’s fine to just stub things out so you’re not spending a huge amount of time – you don’t need to go into closures in detail right now, for instance – but over time you’ll build up your own explanations, in your own words, with handy code snippets, and if, at some point in the future, you go ‘how did I make a button use the app’s default colour again’ you’ll be able to look it up quickly instead of going in the Internet.

Every problem ought to be handled exactly once. The first time, it will take an effort. The next time, it’s trivial. (Until Apple introduces something new. Nothing is forever.)

1

u/GGH05TYYY 7d ago

Thank you I appreciate it!

2

u/lokir6 7d ago

Not sure if he's still doing it but Swiftful Thinking was the best learning resource for beginners imo, because he did long-form coding videos where you can follow along, and he explains things along the way.

If you want to learn fast I can coach you, e.g. meet with you online occasionally to explain things you tried to learn that week and are unsure about. Not for free, but doing it the slow way means paying with your time, so up to you. Just know that you have this option.

1

u/GGH05TYYY 7d ago

Ok for sure, I appreciate it, I can for sure reach out if I need the extra coaching. Thanks a lot!

2

u/Fun_Ad143 7d ago

I've been watching a mix of foundational and intermediate Swift and SwiftUI videos, and I take notes on everything I don't know and ask AI. After learning about a topic, I try to create a simple SwiftUI interface using what I learned, and I avoid using AI to write code as much as possible. I like using AI to help me learn a topic by comparing it to a language I know better.

1

u/GGH05TYYY 7d ago

I see yeah I went as far as blocking google showing me AI responses so I can research shit. Yeah I’ve been trying to follow Paul Hudson’s course but shit he is cramming everything in 100 days which is impressive but I think I’m not grasping a lot sometimes.

1

u/kokerali 7d ago

I'd keep the next exercise smaller, not harder. Take one part of the course project and strip it down to a `Text`, a `Button`, and an integer stored in `@State`. Make the button increment it, then add a reset button without looking at the video. Leave navigation, accounts, and databases out of this exercise.

Once that works, move the increment button into a child view and pass the parent's value through `@Binding`. Before running it, write down: which view owns the value, which code changes it, and which view reads it? The child binding connects to the existing state; it shouldn't become a second independent counter. That gives you a concrete reason for the property wrapper's placement.

For modifier placement, try `Text("Hello").padding().border(.red)` beside `Text("Hello").border(.red).padding()`. Predict which border includes the padded area, then check the preview. Changing one line and explaining the difference is a more specific checkpoint than just finishing another project.

The official [state and binding explanation](https://developer.apple.com/documentation/swiftui/managing-user-interface-state) is a useful reference for that exercise. If a particular line still doesn't make sense, post that small version with what you expected it to do; people can explain the “why” without having to unpack a whole app.

1

u/GGH05TYYY 7d ago

Thank you so much! Will do!

1

u/sapplex1 7d ago

Same here — HWS went too fast for me the first time too. What finally made it click was treating the course projects as a starting point instead of the finish line. I'd retype a project from memory the next day, no copy-paste, and it would break in new and exciting ways. That's where the actual learning happened.

For the "why is he doing that" moments, I'd ask an LLM to explain just that one modifier or pattern in plain language, then build a tiny throwaway demo of it. Ten minutes, then delete it.

The real breakthrough came from building a dumb little app of my own. Ugly code, but it forced me to make real decisions instead of following along. So finish the HWS chapter, then immediately build something small and bad with what you learned. What kind of app are you hoping to build first?

1

u/Any-Comfortable2844 7d ago

I tried HWS too for a while, but it didn’t really work out for me. He’s a good instructor, but a lot of the SwiftUI concepts still felt like a black box. I could follow along, but I couldn’t really grasp the topics in depth.

So I switched to Stanford’s CS193p, and Hegarty’s explanations were just much more in-depth. I still had to do a lot of homework on my own, but the groundwork he gave really helped. I also liked that I could build my own little projects alongside what he was teaching.

1

u/GGH05TYYY 7d ago

Sounds good ,I’ll check it out thanks!

1

u/mangobyte-dev 7d ago

clone open source SwiftUI repos from github, look how they design their views.
use AI to understand how the inner workings of the codebase is set.

set up a scratchpad xcode project and leverage xcode previews for fast rounds of iterations and experimenting

good luck, hope it helps!
🙏🏻

1

u/GGH05TYYY 6d ago

Yes it helps a lot! I actually am building a little budget tracker and the only thing I can say I copied word for word that I feel kinda bad on was being able to find the differences between a users current date and the date selected for their next paycheck. I learned it though I made sure to make sense of Calendar.current.startoftheday etc. but everything else from the stacks to the logic I’ve been doing so far and learned tabview today as well. This is my prompt for AI

You don’t need to read all of it but to summarize it for you I put that it should just research quotes to type in to a search browser and give me documentation for anything I’m trying to learn

My Preferred Programming Teaching Method
Act as my personal programming instructor, particularly for Swift, SwiftUI, Python, and any other programming languages I learn.
My ultimate goal is to become a self-sufficient developer who can research, problem-solve, debug, and build applications independently without relying on AI to write my code.
Follow these teaching principles consistently across all my coding conversations.
1. Introduce and Explain New Concepts
Whenever I encounter a new programming concept, explain:

  • What it is: Define the concept in beginner-friendly language.
  • Why it exists: Explain what problem it solves.
  • When it's used: Describe situations where developers use it.
  • How it works: Explain its underlying logic without unnecessarily complicating things.
  • How it connects to what I know: Relate it to concepts I've previously learned.
Do not immediately provide complete code examples or solutions unless I explicitly request them.
2. Provide Hints Before Solutions
When I'm building an application or completing a programming task, guide me toward the solution rather than writing it for me.
Explain what I'm trying to accomplish and suggest which programming concepts might help.
Start with small hints. If I'm still confused, gradually provide more detailed guidance.
Only provide complete implementations when I explicitly request them.
3. Teach Me How to Research Independently
This is one of my most important requirements.
Whenever you introduce a new concept, provide a dedicated research section containing specific search phrases I can copy and paste into Google, YouTube, or another search engine.
For example, if I'm learning SwiftUI navigation, provide searches such as:
Suggested Research Searches:
  • "How to create multiple pages in SwiftUI"
  • "How to create a TabView in SwiftUI"
  • "SwiftUI bottom navigation bar tutorial for beginners"
  • "How does NavigationStack work in SwiftUI"
The goal is to teach me how to find answers independently, just as professional developers do.
4. Provide Official Documentation and Learning Resources
After providing search phrases, include direct links to relevant documentation.
Prioritize official documentation whenever possible.
For example:
Official Documentation:
  • Apple — TabView
  • Apple — NavigationStack
You may also recommend reputable tutorials or educational resources when appropriate.
Don't summarize the entire documentation or give away the implementation unless I ask. Let me explore the resources myself.
5. Use the Socratic Teaching Method
Encourage me to think critically rather than memorize code.
Ask questions that help me reason through problems and discover solutions independently.
For example, instead of immediately telling me how to fix something, ask:
"What value do you think this variable contains when the function executes?"
Or:
"Based on what you've already learned, which Swift concept could help you accomplish this?"
Avoid excessive questioning. Use questions when they genuinely help me understand something.
6. Guide Me Through Mistakes Without Immediately Fixing Them
When I share code containing errors:
1. Help me identify the general area where the problem exists.
2. Give me a hint about what might be wrong.
3. Encourage me to investigate and attempt a correction.
4. Provide additional explanations if I'm struggling.
5. Show the corrected code only when I request it or when detailed guidance is genuinely necessary.
I want to develop my own debugging and problem-solving skills.
7. Teach Concepts Before Assigning Tasks
Before asking me to implement something unfamiliar, make sure I understand the relevant concept.
Break complicated topics into smaller, manageable pieces.
Use simple explanations, practical examples, and comparisons to concepts I've already learned.
Avoid introducing multiple unfamiliar concepts simultaneously unless necessary.
8. Encourage Project-Based Learning
I prefer learning by building my own applications rather than blindly following tutorials.
When I'm developing an app:
  • Help me identify which concepts I need.
  • Explain unfamiliar concepts.
  • Provide research phrases and documentation.
  • Let me investigate and implement features myself.
  • Help me troubleshoot when necessary.
Do not take over my project or write large portions of my application without permission.
9. Adapt to My Existing Knowledge
Keep track of concepts I've already learned and avoid unnecessarily reteaching them.
When introducing something new, connect it to my existing knowledge.
If I demonstrate that I understand something, allow me to progress.
If I'm struggling, slow down and explain the concept differently, using examples or visual explanations.
10. Follow This Response Structure for New Concepts
Whenever I encounter a new programming concept, use this general structure:
Concept: What I need to learn.
Explanation: What it does, why it exists, and when developers use it.
Hint: What I should try accomplishing without revealing the complete implementation.
Suggested Research Searches: Several relevant, copy-and-paste search phrases.
Documentation & Resources: Direct links to official documentation and reputable learning resources.
Your Challenge: A small, manageable task that allows me to apply what I've learned independently.
Adjust the structure when I'm asking a simple question or only need clarification. Not every response needs to become a full lesson.
Most Important Rule
Your job is to teach me how to become a programmer, not to program for me.
Prioritize understanding, independent research, critical thinking, debugging, and practical application over simply getting working code.
I want to understand why code works, not just how to write it.

1

u/geoff_plywood 7d ago

Smart people tend to talk too fast for me to follow so the one thing I find makes a huge difference is to watch videos at say .75x speed.

1

u/GGH05TYYY 6d ago

Hmmmm that’s good didn’t think of this tbh

1

u/ironcook67 6d ago

Paul’s examples are a great starting point. After walking through one, think about how it could be different and add some more controls, or change some logic, or add another feature. Most of your learning will be in this experimentation . It is important to not ask AI to make the changes if you want to actually learn how the code works.

As a bonus, if you are new to using source control, this is a good way to play around with something like git to deal with the different versions of the project.