Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Proposal to lean course content #10

Open
nicholasnbg opened this issue Aug 24, 2020 · 2 comments
Open

Proposal to lean course content #10

nicholasnbg opened this issue Aug 24, 2020 · 2 comments

Comments

@nicholasnbg
Copy link
Collaborator

Overview

After retrospective discussions around feedback received for the last iteration of the course ran at REA, the following code changes were proposed with the aim of "slimming down" the course to help "zoom fatigue", and deliver a more refined course.

Proposed Changes (in no particular order)

  • Pre fill app wiring for all but one route (1 time to discuss dependency injection and learn, rest pre filled to save time)
  • Pre fill decoders/encoders past for 2nd day(?)
  • At end of SaveMovie endpoint (after Traverse and Validation module), go and reimplement getEnrichedMovie endpoint using traverse
  • Pre implement SaveReviewValidator (it is simple, nothing new from previous validations)

Accompanying Presentation Changes/Notes (for context)

  • Http4s presentation might be a bit type heavy first cab off the rank, might need some simplification.
  • We have 2 endpoint walk throughs (HelloWorld, GetAllMovies), can we consolidate?
  • Limit Circe encoder/decoder examples to the main 2 or 3 we actually use, too many ways to do one thing can be confusing.
  • We considered changing the order to teach traverse and validation before getEnrichedMovie to make this endpoint simpler to implement, but agreed that you have to earn traverse!
  • Traverse could use a good diagram, and a little more focus in the Validation preso
  • By pre implementing 'wiring' and some encoders/decoders, we can save a significant amount of time, to eithe redistribute to heavier sections of the course, or finish a bit earlier one or both days.

Questions

  • Should these changes be limited to remote only runs and be reverted to the fleshed out version once being run in person again?
@wjlow
Copy link
Collaborator

wjlow commented Aug 25, 2020

Thanks for compiling this. I sure have missed the conversations over there 😄

Proposed changes

I agree with everything. In regards to prefilling the codecs, I think it's okay because by the end of day 1, they would have written a custom encoder. I'm not sure if they ever do write a custom decoder, but it doesn't really matter because doing it once isn't gonna make them remember it anyways, haha.

Presentation changes

Since the presentations aren't open source, it's hard to discuss them in detail, but...

  • The 2 endpoint walkthroughs can be consolidated. We can get rid of HelloWorld.
  • Circe encoding: Perhaps we don't teach how to create a Json using Json.obj here
  • Circe parsing: Perhaps we can move strToJson to the end of the exercise and call it strToPerson and just teach decode[Person](str). I just noticed we aren't teaching the handy decode which goes from String => A, bypassing Json altogether.
  • Circe decoding: I think there's nothing to thin out here. We start off by teaching the anonymous class approach using new Decoder and then tell them how to refactor it to a single abstract method syntax. I think this is useful, lots of people get confused by the single abstract method syntax right off the bat, myself included.

Questions

  • I think it's worth thinning out the course in general anyways. That's what I always wanted to do. It's way too hard the way it is currently.

Next steps?

If you want to create separate issues for each of the things we want to change, I'm happy to pick up some of them as we go. I hope to run this course in the next 3 months and I was planning to simplify it in time for it.

@wjlow
Copy link
Collaborator

wjlow commented Aug 28, 2020

On second thought, I'm not sure if it will be easy to get rid of HelloWorld entirely. Showing FetchAllMovies as the very first endpoint might be a bit overwhelming. HelloWorld could be a lot shorter though.

I definitely think pre-filling app wiring will save a lot of time. So much time is spent in wiring up in AppRuntime and then updating AppRoutes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants