Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

iOS Build a Weather App with Swift (Retired) Concurrency Concurrency in Swift

Friedemann Wachsmuth
Friedemann Wachsmuth
1,231 Points

Rushing through Closures in 2:59 -- really?

This is so frustrating. Why is this course trying to rush through Closures in less than three minutes? They appear to me to be a rather complex topic and powerful tool. The teacher show cryptic slides (iirc with missing closing parenthesis in one case), talks super fast and paralyses me with many words I never heard before.

I am sorry, but this does not feel like learning. This feels like someone reading the Swift documentation to me in a hurry, without waiting or explaining anything.

Is ist just me who is frustrated?

7 Answers

I've got to be honest here and say that patience is required on this topic and course. Swift is a brand new language and there has to be some give and take as to how to present this to new and experienced programmers.

I was interested in learning more about closures as I felt they are also a super-powerful tool in programming so I did a little bit of homework and extra reading and they're totally making sense to me now. What I will say, Friedemann, is whilst it's not important to know about closures for this app, if you found this concept interesting, then do a little reading on the side whilst the Treehouse staff work on shipping a video/course on closures! :)

I have to join in on this. I think that these courses go way to fast.

The talking is too fast, and I need more explanation of things as in Amit's courses, which are exceptionally great for beginners.

I too felt that the weather app is a huge step from the basic courses, and i felt like a was blindly copying code at times, even after going through the courses multiple times.

Other than that, you guys are doing an awesome job, and a can't wait for more Swift stuff to be released. :-)

My best advice for the weather app (and anything you don't understand) is to pause the video and then analyse the code that either you're seeing Pasan write or that you've written yourself. I always watch each video a couple of times when I don't understand the concepts being taught and sure enough, it does start to make sense.

I also find it a useful exercise to go back to previous videos that I remember using certain concepts in after I've found out more about those concepts.

For example, the enums and structs course was just recently added and is now placed before you complete the weather app so that others who come along will learn about this at the right time in the process. Even though I completed the Swift track beforehand, after I completed the enums and structs course, I fired up the weather app and took a good look at the code and re-watched a couple of the videos.

Pasan Premaratne
STAFF
Pasan Premaratne
Treehouse Teacher

Friedemann Wachsmuth

This is intentional. We're only using a closure as a completion handler in standard API and there's no need to dive into the power that closures offer at this point. There will be a separate course that covers closures in the future.

Oh and would you mind linking to where you encountered the missing parenthesis so we can fix it?

Friedemann Wachsmuth
Friedemann Wachsmuth
1,231 Points

Hmm, I hear you.

Whenever Amit referenced or mentioned something that "isn't too important yet", he made that clear (and explained it later). As a noob, the jump from his "Swift Basics" to the two demo apps is ridiculous and extremely frustrating. In this weather app course, I see NSData and NSString calls that no longer work with XCode 6.1, fortunately there are some replacements in the comments in most cases. But beside that ( I understand Swift is heavily in flux) -- I do not feel like learning anything, I feel like simply mimicking something I don't understand at all. There are fractions I do understand, but I absolutely can't memorize them in the speed they are pushed through.

I really wish this course would be more thorough and better structured. I don't mind if it would be three times as long -- I want to learn something on Treehouse, not blindly copy code.

Regarding mistakes in the courses – I only found a feedback button after the quizzes, is there one for particular videos that I haven't found yet? Anyway, check the closure-video and mind the presentation slides. It is just 3 minutes long, so should not be hard to find. :/

Excuse me if I sound very frustrated, but I am. I was willing to pay for a Treehouse Sub after the trial ends, but the chaos and mess of the videos following those from Amit is totally counterproductive. After Amit's courses I was proud and had the feeling I learned and understood a lot of new things. The subsequent videos now make me feel frustrated, dumb and not like that it is worth to return here going forward.

I hope you understand what I mean and urge Treehouse to rethink how such a Swift course should be structured (beyond the first part, which is exceptionally great).

Pasan Premaratne
Pasan Premaratne
Treehouse Teacher

Ah I'm really sorry and I can understand why you're frustrated but the content is structured the way it is because of tradeoffs we had to make.

To clarify, our content is far from complete. Swift basics isn't done and neither is the iOS content. Amit still has 2 -3 more courses to release to complete teaching Swift as a language before students transition to iOS development (in those courses, structs, classes and other OOP paradigms will be covered). On the iOS development side, I'm aware that the transition from Swift basics to building a simple app and then tackling a weather app has mental jumps in between. These were choices that we made very carefully. We have a pretty diverse student base, from total beginners to programming, to people who are familiar with Objective C, to experienced iOS developers. In an effort to introduce Swift to as many of our existing students as possible, we started off with a bit of the language, a simple app, and something on an intermediate level.

There is more content in the pipeline that will be out soon to address this. Amit has an upcoming structs and enums course followed soon after by the rest of the language and OOP stuff. For iOS, we have more beginner apps that will bridge the gap between the simple iPhone app and the weather one.

I really do understand the frustration but at the end of the day we had to make these tradeoffs. Had we spent all our time on focusing on teaching the language, all of our content would've been outdated with all the changes in Swift 1.0, Xcode 6.1 and iOS 8.1 and we would be back to square one. Also regarding your comment about the NSData and NSString calls in Xcode 6.1 - I can certainly re-record the course but that would mean delaying the projects that bridge these mental gaps.

Just wanted to chime in after reading the comments. I came from a c++ background, with the first 2 years of university level comp sci education.

Closures was confusing for me on the first watch. I watched it two times. What I got from it was:

Closures -designed grab data and do something with it in the background

And in this video, the big info dump is the class function call: UIView.animateWithDuration(1.0, animation {}, completion: {(value: Bool) in})

3 parameters, but that's all I understand. Like others, it feels like I'm just blindly copying code. Upon doing some researching in wiki, I came to understand that these are something similar to functors in C++. Are they essentially the same? Are closures just calls where you can pass in a function to do something?

Anyway, I have to agree this closure business is a bit too brief. As for talking speed, I'd like to let everyone know that you can adjust the video speed. This can be helpful in digesting the information dump.

Closures aside, I found everything else to be extremely helpful. Thanks, Amit and Pasan.

Friedemann Wachsmuth
Friedemann Wachsmuth
1,231 Points

Thanks Pasan, totally understood now. It seems these upcoming courses are exactly the missing pieces I was hoping for -- can't wait to see them! :)

I realize more and more now that "Swift" is one thing, but "Swift with Cocoa" is a completely different story and having a much steeper learning curve. I maybe should be more patient with myself.

Pasan Premaratne
Pasan Premaratne
Treehouse Teacher

Yea we're trying to make them as fast as humanly possible so hang tight :) You've pretty much described it spot on..Swift is one thing, Swift with Cocoa is a totally different beast.

To address one of your other forum posts, one of the other issues with Swift/Cocoa is that since it's so new, there aren't established conventions and patterns yet. Amit has you using let in functions whereas I used var in that one case. Both work perfectly fine so there isn't really any agreement on what pattern developers are following. For the record, go with Amit's advice there. In the time since those videos were recorded, Apple wrote a few blog posts on their Swift blog about what's happening under the hood when you use let so while both work, let is preferred.

Finally, if it helps Treehouse has an indefinite account pause feature so that you don't get charged while waiting for this content.

Thanks for your patience and feel free to reach out to me anytime!

Pasan, would you be able to give me a rough estimate of when Amit is going to release his courses on structs and classes?

Amit Bijlani
Amit Bijlani
Treehouse Guest Teacher

The next Swift course is on Enums and Structs and will be released the first week of November

In addition, if i was to pause my membership on a day which was inbetween my 14 day free trial, would i have the rest of the trial run days available when i resume the membership?