Rails course update #81
Replies: 11 comments 13 replies
-
There's been some discussions on Discord between the Ruby & Contributions channels, but those tuning into this discussion may have missed those. I wanted to start by recapping some of the discussion points that I have been a part of myself so that it can be easily referenced and discussed by others. This comment is going to stand on its own as the recap points and I will begin my actual discussion in a separate reply Established Rails 7 Updates (Based on currently existing issue postings)
Curriculum structure ideas (Discussed but not actually established anywhere)
|
Beta Was this translation helpful? Give feedback.
-
To start with an actual discussion point: I do agree that the basics section is a bit long and brought up that the asset pipeline content doesn't really fit in to the main MVC idea and the blog app project's focus. Thinking on it some more, I wonder if the Blog App could be used as more of a learning tool than it currently is? Right now the course is structured in a way that gives you a lot of information and then you follow the getting started with Rails guide. This guide is great and personally I used it very often when progressing forward and needing to remember how to do the syntax of something like permitted params or if I should use delete vs destroy, etc. I was thinking it may be beneficial to teach alongside the blog app, rather than before it. I recall that I learned a lot more by doing this project than the reading before it. Even though I thought I understood MVC as a concept and all of the reading, I was a bit overwhelmed when it came to the actual practice of it and putting it into place. I knew on paper that the controller connects to the model and view, but I didn't really know what it looked like to go through and build them. I almost had to "learn twice" because the first time around was giving me so much information that it was hard to know which topic I was applying. For instance, the Rails Basics section may have short and simple lessons on MVC/routing/whatever else is deemed to be included still. Then during the blog app project, have students do a chunk at a time and discuss what they have been doing to solidify their knowledge. Right now, the lesson page essentially just tells you "do until 8.2, skip 8.3 if you have issues, and then you can optionally do 9 and 10." I think it may be helpful to break it down more and move the learning from the lessons to the project. An example of what the structure could be is:
(Obviously I oversimplified some topics here, take this as a rough example of structure and not an actual publish-ready recap) That is a bit of a long-winded example and may be overboard, considering the blog app does include some of this in the tutorial itself. You could have overall section recaps instead of individual "X.1 X.2 X.3" pointers. My overall point is that I think it may help to teach these topics in a way that allows the learners to be able to apply their knowledge at the same time. My proposal here isn't to turn it into a tutorial but rather a recap of what the students have already done and saying, "you did this, with these pieces of MVC, and this is why you did it". |
Beta Was this translation helpful? Give feedback.
-
Thanks @MchaseCov Some great points. I've been doing some thinking on the structure as over time it has become a bit disjointed so I'm just going to throw out all my random thoughts and then we can start to pick through and find some actionable points. Having a project to follow along to rather than at the end of the rails basics section is a great idea. The blog app is good because it will likely stay updated with each new rails version so I agree it's not a bad project to stick with. It's a bit awkward though that it covers models which aren't covered in the basics section. So I agree with you that we should consider to change the basics section to cover the MVC parts of rails in a basic way alongside the blog app relevant sections. I propose we consider moving the railsy web refresher to the end of the introduction section. That way we can start rails basics with routing, controllers, views and then models and active record . The final project could be micro reddit for the basics section. Not sure where deployment would sit in with that but I'm sure a natural home for it will become clear when everything else is ironed out. The asset pipeline could probably be it's own section where we cover assets which will include both css-bundling and js-bundling now and images etc The forms section is ok I think except for any small updates. Advanced Forms and Active Record makes sense to go together because the advanced forms cover associations through forms so that is probably also ok. The other sections likewise don't look too bad on content. For the new content, especially the turbo and stimulus lessons they are advanced concepts so it would make sense to push them further back in the course. They aren't rails basics at all so maybe before or after the api lessons would work? The advanced topics lesson feels a bit awkward as a mish-mash of things. I wonder if some of these could be extracted out I think webpacker can probably just become a section within a lesson on the js-bundling gem rather than a standalone lesson. Students won't need to know a lot of the details. Just knowledge that it exists, what its purpose was and a little bit on how it worked in case they come across it in the wild. Happy to hear from Kevin shortly too, but although I've just splurged all my thoughts above I think if we focus on the basics section initially to iron out the details there we can then move onto the other sections so any feedback on my proposals for the basics section in appreciated. |
Beta Was this translation helpful? Give feedback.
-
Hey @MchaseCov Super valuable feedback. Firstly don't worry that you aren't a maintainer. We all got there by doing exactly what you're doing now. Getting involved and helping shape TOP for the future. I can't say I disagree with anything you've said and everything sounds sensible. The plan is that we get TOP rails 7 ready ASAP with the minimal amount of work needed. Then we continue with the slightly bigger project of improving the course and we'd love for you to help in any way you feel comfortable. Tomorrow I'll draw up a proposed course template for getting us rails 7 ready and if we all agree we can work on those and get the course out there. |
Beta Was this translation helpful? Give feedback.
-
@MchaseCov @KevinMulhern - would appreciate some feedback to make sure we're on the same page. The section with the blog app is still a bit of a pain really so I'm still pondering this. Worst case scenario we tackle it after we get on rails 7. This is the minimum path needed to get updated. We also need to decide on Chase's note
Rails Course Overview - Proposed initial Rails 7 structureThis can be the working structure that we can agree on and then action and get our course rails 7 ready. Introduction
Rails Basics
ActiveRecord Basics
The Asset Pipeline
Forms and Authentication
Advanced Forms and ActiveRecord
APIs
Rails Sprinkles
Mailers and Advanced Topics
|
Beta Was this translation helpful? Give feedback.
-
@MchaseCov @KevinMulhern See updated course outline #81 (comment) |
Beta Was this translation helpful? Give feedback.
-
-MMIncorporated. Something I would love to see and an example given of what was needed to improve the Rails course was testing. After looking at the example of tests on the Rails guide for different things to test i wanted to share my thoughts. I believe depending on how testing is incorporated it may change how some things are structured overall or the flow of the rails lessons. There are a few ways that come to mind for structuring a testing section for the rails section.
1b. A few solutions come to mind for this. One way is to introduce minor lessons for mailers and action pack going over testing both of them while having the testing section go over the rest of the testing concepts. There is another option to just ignore mailers and action pack testing, however, since it is mentioned in the rails guides I think it should at least be mentioned. Another Is to have the rails course be similar to the ruby course where there is the testing section then the final project section afterward. With the lessons going over all aspects of testing then finishing off with a TDD project. Personally, while this progression makes more sense to me, a concern is if we ask the learner to do a project right before the final project using what they learned from the lessons previously there is a chance they end up creating the equivalent of the final project. in which case I am not entirely sure it makes sense to have them end up building two large projects immediately after each other. Which for that reason I am skeptical of this choice but, it could still work albeit it would be harder to avoid having the learner build the equivalent of the final project twice or a project simply isn't included in this section which I don't favor at all.
|
Beta Was this translation helpful? Give feedback.
-
Regarding a turbo / stimulus project, these technologies could be a good candidate to go back and extend or refactor an earlier project with these tools, similar to how people add a mailer to Flight Booker. For instance, adding to blog project or micro reddit posts and comments. This also has the advantage of being very easy to implement (compared to concepting a brand new project). If it's decided that's worth doing anyway, would still be a good warm up. |
Beta Was this translation helpful? Give feedback.
-
Looking through the debugging page on the rails guide. I was thinking it might be useful to provide a lesson just going over the new tools. Especially given that rails 7 uses different debugging gems than introduced in the Ruby Section as well as the log file. I think a brief lesson as part of the Rails basics going over ways to use the new debugging tools could be useful. Mainly to introduce to learners on how to use these tools before going deeper into the rails course. |
Beta Was this translation helpful? Give feedback.
-
Doing this is such a great idea @CouchofTomato 💪 If we can come up with the ideal or as close to an ideal lesson plan as we can, we’ll have a solid roadmap to work off for a good while instead of the ad-hoc approach of adding lessons here and there we usually take. Just some of the things I’ve been thinking about with the Rails course. Sorry, I know a few of these have already been mentioned. But I think it's worth reiterating them:
I mentioned to @CouchofTomato, it may be worth doing a “completive analysis”. This is basically looking at other Rails curriculums, courses, books etc to see if there are any prevalent patterns in how they all introduce and place things, assessing what they do good/bad and what we could do better. We’ve done this in the past for a few things and it's always generated a lot of really good insights that can kick start making our own lesson plan. |
Beta Was this translation helpful? Give feedback.
-
So I looked through this conversation, and having just made my way through the beginning of rails up until Micro-Reddit I had a thought / some feedback. While going through the MVC lessons I attempted to follow along the Blog App and do a bit of it with every lesson I learned. So as I learned about Routers, I did the small part of the Blog App which included Routers, then with the Controllers lesson I did the same, and then Views (similarly to what @MchaseCov was discussing). I did find that this was very difficult to do, as the Blog App tends to bounce around a lot between those three concepts a lot. I had a much easier time with the Blog App after I stopped trying to bounce around, and more thoroughly read through all of the content one time through- since I was able to create a more cohesive structure in m head of what MVC looks like and how everything interacts. I started thinking about the Blog App again once I began working on Micro-Reddit. The Micro-Reddit project is amazing, and I feel like as a learner I got so much more out of it than the Blog App, because the in-house instructions were more vague, which challenged me to use the documentation to find out how to solve the various instructions given (while still providing hints, references to material, and lines of code at just the right moments). So the suggestion I had to updating the Rails Course, and I would love to help create this, would be to create an In-house Blog App project with instructions which are slightly more vague than the explicit ones provided by https://guides.rubyonrails.org/v6.1/getting_started.html As mentioned in this conversation Models aren't covered until later lessons, so those parts of the project (I believe sections 5.0-5.3) can remain predominantly copy/pasting code with explanations of what's happening. The upsides of this change would be that learners would get significantly more practice with Routes, Views, Controllers, and doing their own research of Rails documentation to create all three. The potential downsides of this change would be that more broad instructions would result in learners possibly running into more issues, and this would create the need for more help in the #rails-help channel. This additional bandwidth required by the community could possibly be offset by still including the Getting Started link as something to reference when learners are unsure of what to do. Let me know if I'm out of line in suggesting this, or any thoughts on why this is possibly a bad idea / any ways in which I can help :) |
Beta Was this translation helpful? Give feedback.
-
Rails Course Overview
This details how the course should flow. What do we want to cover and when.
Contents
Introduction
Rails Basics
ActiveRecord Basics
Forms and Authentication
Advanced Forms and ActiveRecord
APIs
Mailers and Advanced Topics
Beta Was this translation helpful? Give feedback.
All reactions