Learn Courses My Dashboard

Philomath's Dream Job Journey Journal

This is just a thread to help me stay accountable and also document my milestones. It’s been inspiring to read other people’s stories!

I used to be a science teacher (which I absolutely adored); however, during COVID it became really clear that teaching is just not a healthy job in any way. (To give you an idea, I taught 300 children a day and they wanted to add another 100 the next year.) Not only was the workload insane, but it became impossible to stay safe during COVID with the minimal protections offered by the district.

So, it was really hard, but I decided to pivot my life. I have always wanted to make apps, so I saved up, quit my job, and dedicated myself to learning programming. Maybe someday I’d love to make a living off of my own apps, but to start I’d like to get a job in the app-making world first. I actually have a dream company that I’m really hoping to get a job with.

Milestones So Far:

  • I’m almost done with a Bachelors in Information Technology. (Not a requirement, I know, but I thought I’d boost my chances by finishing the degree.)
  • I’m working on Apple’s Swift courses and I’m just starting the third book: Develop in Swift: Data Collections.
  • CWC 14 Day Beginner Challenge Complete!
  • Almost done with CWC iOS Foundations (SwiftUI) course! Two modules left!
  • I’m working on my own personal app to put into practice the skills I learn through CWC. And I think I’ve got my first version! I can’t wait to use data provided by users.
4 Likes

Thanks so much for sharing @Philomath !!

You have an amazing story! Can’t wait to see your app when you finish it!

Yes this isn’t a requirement like you said, but it can only help :slight_smile: there are lots of people in technology that don’t have degrees though, and that’s totally fine!

If you’re looking for a job in the next year, I’d also HIGHLY recommend you learn UIKit, not just SwiftUI. UIKit is the framework that came before SwiftUI and many apps still use it!!

1 Like

Hey thanks for posting, and congrats on the milestone, so far!

Still, I’ve never heard of a place, where you would be expected to teach 300 students, unless, you were a university professor! That’s insane. Sorry, to hear you went through that.

Also, I graduated with an IT degree as well. I find it will give you a solid foundation some others might not have. Plus, it taught me about the Open Systems Interconnection (OSI) model, which breaks down interactions into different layers. I found this invaluable for troubleshooting production issues, is it at the app layer, the network, data link, etc?

Can’t wait to see your app! Please post about it in the Community page, once you produce your first release :slight_smile: Great you’re almost done with the iOS SwiftUI Foundations course! That took me a long three and a half months to complete.

Cheers,
Andrew

P.S. I found it ironic, you chose your username as a math lover, versus a science lover. Still, so many science teachers love math too! Also, I’ve always heard that math can help in programming etc. Perhaps, you’ll be able to make your own algorithms, or do some cool machine learning stuff down the road.

Thank you so much for the tip! I’ve been learning UIKit through Apple’s textbooks. But I got incredibly frustrated trying to understand AutoConstraints. I will do the CWC UiKit course after this. Hopefully I’ll be able to zoom through it a little faster because of my new knowledge. :blush:

1 Like

Thanks! Getting comments on this really gave me a boost of motivation!

I actually just learned about OSI in my classes this week! I can’t believe it took them this long to introduce it. It seems like a crucial yet basic skill to understanding tech.

1 Like

Update:

Done with M6L7 of the SwiftUI Foundations course! Making progress! I really enjoyed learning how to get data from API’s (although I know I’ll need to practice it some more before it becomes natural). It’s crazy how quickly apps come together now.

Still super looking forward to when I learn how to store data provided by a user. That will be key to my app breakthrough.

It definitely helps for troubleshooting! However, you’ll find that most tech people are not aware of it. In the networking departments, e.g. Network Operations Centers (NOCs) it plays a great role.

However, from a developer perspective, much of it isn’t important. Most developers just care about the app layer. They don’t know what’s underneath. Instead, they rely on abstracted code to do what needs to be done. Perhaps, this changed with full stack development though as some app developers also took on the job of maintaining their infrastructure web server, database setup etc. Now the trend is to go away from all that towards containers and even less to serverless infrastructure.

Update:

Made it through M6L10. I felt so proud of myself while completing lesson 8. I was getting the hang of how to create UI’s quickly, I was able to implement the new Link view on my own after the initial explanation, and I realized the syntax mistake in the video before Chris did. I was so proud of myself. So much progress.

Then I got to lessons 9 and 10. Using UIKit views continues to be confusing to me. Not crazy confusing. But I know I can’t do it on my own yet. I’m positive that completing the UIKit version of foundations is necessary now. Delegates, coordinators, and all the specific functions of the different views really makes my head spin. Hope I get more practice through CWC before I’m totally on my own. Practice has helped a lot with other confusing step-heavy things like parsing JSON.

:partying_face: :trophy: :checkered_flag:

Update:

iOS Foundations (Swift UI) course completed! :white_check_mark:

Wow, the inspirational music in the next steps video really boosted my day today.

Next:

  • iOS Foundations (UIKit) → I already know that delegate pattern is something I need to get a handle on.

  • iOS Databases → I still haven’t learned how to save data from a user! :sob: I need that skill, so next course, here I come!

  • Design skills → Any tips for apps for design and layout? What does the CWC team use? Or are there better free versions for a beginner? I’ve been using Keynote and the program the team uses in videos looks WAY easier.

2 Likes

You are a rockstar! Well done :partying_face: seemed like you just blazed through it fast.

Haha right!?! I loved that piece too.

Chris in the videos mentions they user Figma. It seems like they go over design too in the third course within the third apprentice course. I’m almost done with databases, so looking forward to that :slight_smile:

Keep up the good work, and can’t wait to see your app!

Cheers,
Andrew

Thank you, Andrew! Also, congrats on getting close to finishing the databases course!!

1 Like

Congratulations, it’s a big milestone!!

I highly recommend trying to code with inspirational or epic music (instrumental, no lyrics), it works WONDERS for me haha

Your story is super inspiring @Philomath, I’m really rooting for you to land at your dream company!! You can do it!!!

1 Like

Thank you so much, @CalStark!

I hadn’t thought of doing that, but as I’m currently super stuck on a coding problem, I think I’ll give it a try RIGHT NOW.

Having a coding community give encouragement like this does wonders for when I feel like giving up! Thanks to you, CalStark, and everyone who has rooted for me, so far!

1 Like

UPDATE: Tuesday 1/18/22

Let the Foundations course begin again! This time with my nemesis AutoConstraints! In all honesty, I know that AutoConstraints are a crucial part of making sure my apps can work on many devices. However, every single time I start to learn how to use them, I get so frustrated I reconsider wanting to make apps.

:partying_face:

Today, I made it through all of M1L2 (including the bonus and the exercise). And I was able to quickly create the exercise layout in about 5 minutes! On my own! I knew all the things to change to get them to overlap correctly. I understood how to edit my constraints when they didn’t look the way I wanted. Thank you CWC team for helping me feel more confident!

:sob:

I feel like I finally understand my grandparents who are always complaining when apps update! The interface of Xcode 9 is SO DIFFERENT from Xcode 13. Occasionally, it is SO confusing to try and follow the tutorial videos. I was not able to do the lesson 2 example (where we add the log-in buttons) because I just couldn’t figure out which of the new options corresponded to the old options in Chris’s video. I’ll keep that project open and keep trying to figure out how to replicate the instructions.

(If anyone has help, here’s a thread where I posted about it : M1L2 (UIKit) - Button Images Not Stretching)

1 Like

Update 1/24/22

:partying_face:

UIKit Foundations M1 and M2 completed! (Module 2 was super fast since I did already know the syntax.) I found it helpful to pause the video and try to complete what Chris was doing before he did it. Just helped me practice my syntax. I had no trouble doing the worksheets included and I feel confident moving on to M3 tomorrow. I did appreciate the reminder on optional chaining. It helped me understand a lot of the things we did with optionals at the end of the SwiftUI Foundations course.

:sob:

While I did appreciate finding the worksheets (thanks Chris Parker), I have been really disappointed to see that the UIKit version of foundations doesn’t have quizzes or challenges. I know that SwiftUI is newer, but since programmers need to know both right now I wish this course was given the same level of detail.

Update 1/25/22

:partying_face:

M3L1 - M3L6 completed! I was able to breeze through several lessons which was such a mood booster. I even paused when we were creating the card class and cardModel and built them entirely on my own! I even realized that I’d get duplicate cards before Chris mentioned it and solved the “challenge” on my own initiative! No idea if it’s the most efficient, but I’m proud of it, so I’ll post my solution below:

I’m especially proud of the highlighted line with the guard statement and the continue statement. I pulled those from my coding knowledge and had to try a couple of things and debugging statements before I figured out I should use a continue statement instead of a break statement or a return statement in the else block!

:sob:

Protocols, delegates, and data sources are definitely my new confusing topic. I know I’ll get it over time, but it’s a little hard to wrap my head around. I saved M3L5 to go back to later. But I still understand it WAY better than when the Apple Swift Textbooks tried to explain it. Thank you, Chris!

Update 1/27/22

:partying_face:

Yesterday I completed M3! That means my match game is completed! Moving along! Someday, I’d like to come back to this app and add some features like:

  • Adding an additional alert action to allow people to reset the game and start over

  • Showing people what score they got in the alert text

  • Making sure the timer stops when the user matches everything. Right now, the timer just keeps going even if the user finished the game.

Today, I rewatched M3L5 to review the protocol/delegate concept. I think I’ll watch it one more time tomorrow to make sure it sinks in. Then I zoomed through M4. (Since I had already learned these concepts, it was easy to go quickly through it. But I did enjoy the practice activities in the worksheets.)

:thinking:

I have some questions for anyone further along in programming than me. Mods? Andrew? (@mikaelacaron @Chris_Parker @RedFox1) I hope it’s ok that I asked you guys specifically. If it’s not, let me know and I won’t do it again.

  1. Can anyone explain to me the difference between the MVC (model-view-controller) pattern that we’re learning in the UIKit version of the course and the MVVM (model-view-viewmodel) pattern that we learned for SwiftUI? Do we use a different pattern because of the differences between UIKit and SwiftUI? Or are they the same thing?

  2. I was trying to classify my files from the Matching Game by the MVC pattern and I’m not sure what exactly the App Delegate and Scene Delegate are. I mean, they’re obviously delegates. But where do they fall in the MVC pattern? And I guessed that the CardCollectionViewCell and the SoundManager were ViewControllers. But I’m really not sure.

@Philomath great questions! Of course it’s okay to tag people, it often leads to further responses and discussion :slight_smile:

However, I’d suggest in the future, creating an entirely new post for this! Maybe posting this into the App Development section of the forum. That way more people will see this post, and be able to respond versus people keeping track of your great journal, or someone like me that was thankfully tagged :slight_smile:

The biggest difference I see, so far is that in MVC, the Model actually stores/ holds onto its own data. In contrast, in the MVVM pattern, the ViewModel would hold onto the data. Also, in the MVC pattern it seems the entry point into an app is through the controller versus a View. Also, the Controller seems to take user input, while in MVVM the View does this.

The MVVM pattern seems recently adopted by the mobile app industry, it works better in my opinion with the purposes of classes too. For example, we think of classes as blueprints for things. Rather, we instantiate objects of the classes to perform operations on them. We often keep track of their states with the ViewModel in this way too.

I had to read up on these differences, but here’s an article that helped me out: MVC vs MVVM: Key Differences with Examples.

Still, even that article gets it wrong, by saying that the models in MVVM hold data. While to me, they don’t. I found this article that more definitively confirms that as well: MVC Versus MVP Versus MVVM - Learning JavaScript Design Patterns [Book]
“MVVM consequently allows us to create View-specific subsets of a Model, which can contain state and logic information, avoiding the need to expose the entire Model to a View. Unlike MVP’s Presenter, a ViewModel is not required to reference a View. The View can bind to properties on the ViewModel, which in turn expose data contained in Models to the View.”

Despite the typos and repeated paragraphs, a skim of this article explains some of the differences too. I like the graphic they use for MVVM the best: MVC vs MVVM- A complete guide with comparison

This GeeksForGeeks article gets MVVM wrong in my opinion by saying the model holds the data. While to me the ViewModel plays this role. Although, I liked its simple definitions of all the components:

As for your second question, I have no idea! Haha - I already have a job in the IT space developing Python apps, and doing Site Reliability Engineering (SRE). I don’t plan to become an iOS developer for a company. Rather, I plan to make my own apps :slight_smile: I know how to manage backend infrastructure/ APIs, databases, so will set that up from scratch as well, or use an awesome service like FaunaDB, if I don’t settle for Firebase. Read up more on my background here

Cheers and keep up the great work!

Andrew

1 Like

Wow! Thank you so much, Andrew @RedFox1! Your explanation was so detailed and it really helped me see the difference between them. That’s also a good tip to put my questions over in a different thread. I’ll do that next time. Thank you so much for taking the time to explain it to me in such detail.

Also, I am so glad to hear that I am not the only one who sometimes has trouble separating parts of my app. :laughing:

Update 2/7/22:

:partying_face: :partying_face: :partying_face:
I keep forgetting to update the journal, but I’m really proud of myself because I’m officially done with iOS Foundations! Both versions of the course are completed and done!

I don’t feel completely competent in all of the concepts taught (especially since there were so few quizzes and challenges in the UIKit version of the course), but I feel fairly competent and want to keep pushing forward to learn new things.

Tomorrow, instead of pushing into the Databases courses, I’ll be creating my own study guide from the iOS Foundations courses with the most difficult syntax flows. (Delegate protocol pattern I’m looking at you). That way I can refer to them later in case I need more practice.

Really looking forward to the next courses!