learning-lab-crash-course-su20 icon indicating copy to clipboard operation
learning-lab-crash-course-su20 copied to clipboard

the future of this repo: updates, maintenance, and ownership

Open mattxwang opened this issue 3 years ago • 5 comments

I want to spend a bit of time thinking about the future of this repo, especially since issues like #36 are being raised.

I think this has been a very influential project:

It's also still the only no-experience full training plan we have, and one of the few fully-recorded training sessions.

However, it's showing its age, and there is no active maintenance. Some things I want to specifically call out:

  • we should be teaching React hooks-first at this point
  • we need to update how create-react-app works - both in the template code it generates and eschewing the CLI for npx
  • we should be updating syntax for major version bumps for things like Jest, Express, Firebase (this is a big one)
  • we probably need to stop recommending enzyme given its lack of activity, and switch to something like testing-library
  • we should probably spend a bit of time talking about "new" ecosystem developments: CJS versus ESM, yarn (and pnpm?), deno/bun, Next, etc.
  • I'm still greatly unhappy with how I taught lesson 3, especially since we now don't need to teach classes (really) and can probably make a more concise curriculum set

I think this presents several problems.

  • I don't like just archiving this project, since:
    • even if we replace it with something else, we lose a lot of history
    • we currently don't have a drop-in replacement (in my personal opinion); in particular, I think there's significant utility from having one coherent track instead of making people do multiple different external courses (which often don't overlap well)
    • I'm still quite proud of our impact, and it's used by others (especially due to the high star count)
  • However, nobody maintains this.
    • I'm too far removed from ACM at this point to be the point person, though I'm happy to help out.
    • Internally, ACM is split across several repos: the ones I linked above, + Hack's stuff, + whatever external recommendations we make.
    • Obviously, ACM's dev team + Teach LA's dev team aren't in the same place they were 2 years ago, and each have many more obligations.
  • But, if we do nothing, we're actively creating bad learning experiences.
    • Information is inaccurate/frustrating,
    • and we're splitting attention

So, what do we do? Obviously the best case is we somehow do a stellar job maintaining this without dropping any other ACM commitments, but that seems rather unlikely and unfair towards the current ACM people. It would be great if I could get some current officers to chime in.

(thanks for bearing with this rant)!

cc: @matthewcn56 @doubleiis02 @jainsujay02

mattxwang avatar Jul 13 '22 02:07 mattxwang

My thinking is that we should focus on maintaining repos that we actively use as part of our workshops.

  • I want to focus on projects that don’t have free/easily accessible alternatives. The topics covered in this particular Repo can mostly be learned from Coursera and other MOOCs. (I'll admit that I couldn’t find anything as comprehensive as this repo quickly)
  • I’m reluctant to request people to maintain learning repos that we are not actively using because they will miss out on the connections formed from in-person activities/teaching.

Nevertheless, I recognize the value of this particular repo so I don’t mind if someone from ACM/dev team wants to work on it but I am content to let it be archived.

jainsujay02 avatar Jul 13 '22 12:07 jainsujay02

I really love how the learning-lab-crash-course helped offer me an introduction to web development and am grateful for it :). Similarly to what should be done for the QWERHacks Firebase Workshops I believe that updating long-term learning tools is the better alternative to creating new ones (something I am guilty of unfortunately.)

With regards to how we can go about updating it without placing too much extra commitment on people's shoulders, I think that we can take a similar approach to how we have updated legacy projects in the past for TeachLA.

  • As committees like TeachLA, Hack, and the Dev Team teach their members with new training, a common problem is that there aren't that many hands on ways that people can apply what they've learnt. What we've done for TeachLA is that common exercises for people after training is giving them issues to update old projects. Specifically, I want to call out the great work that's been done on the TeachLA editor's front-end with refactoring and turning older Class-based style of react components into the more modern functional hooked versions.
    • I believe this approach of offering open-source issues for people to update curriculum for tools such as React and Firebase are a great hands on way for people to practice and not put too much work on officers who already have roles and responsibilities.
  • For updating non-React parts like revamping how JS is taught, new ecosystem developments and any curriculum in general, a lot of this content is also covered by individual committees.
    • I think a good way to provide intern projects this year for TeachLA's training director interns (and possibly the dev team training interns as I am thinking of creating a training director role for the Dev Team as well :eyes: ) could work on revamping sections that we believe need tuning up and covering them as workshops for their respective committees.

Our centralized intern training plan for web development draws a lot of inspiration from the learning lab crash course for the introductory HTML/CSS/JS sections, and in large part that is because I haven't found the need to change how things are taught for the introductory sections. I echo your sentiment on changing how JS was taught and found myself not going over everything from the JS/React section and only teaching what was core to web development principles and react in the live version.

The web development centralized training repository, the yearly hackschool repos, TeachLA dev training and this crash course have a lot in common in terms of providing a one stop shop for web development. TeachLA now just pulls from the TeachLA Dev Training Repo every year and I'm guessing the Dev Team and all the interns interested in web development just learn from the centralized-intern-webdev-training repository (ultimately up to the intern training director but I'll def give my opinion next year as well!) which is great for centralization on the committee/intern scale, but now the larger problem is what should we push towards for people to learn web development from ACM as a whole?

We should decide one of these tools that we would want to push as the de-facto content to represent ACM and spend time touching that one up and updating it as a living document. This repo offers a lot of great content from the HTML/CSS/JS perspective, TeachLA's dev training repo covers a lot of extra backend guides and advanced react guides, and JSChats (and each individual guest training sessions which I loved like Omar's TS session) offers a lot of great lessons in the latest advancements of web devlopment, while tools like HackSchool and the centralized-intern-training plan offer concise ways to cover the absolute necessities of all of these tools. Now the question lies in how do we combine all these great resources together!

matthewcn56 avatar Jul 16 '22 22:07 matthewcn56

After reading @matthewcn56's thinking, I'd like to propose that we just maintain one comprehensive web-dev training repo that

  • covers all the common concepts, frameworks, and tools that we (TLA Dev Team, ACM Dev Team, Hackschool, and others) teach
  • is not geared towards any one part of ACM but focuses on teaching the content thoroughly
  • is used as a foundation course with independent modules that are forked by different committees/training directors to cover the concepts that are directly relevant to their current workshop and they can then add lessons (if necessary) that are only relevant to their workshop (I imagine there won't be too many).

I also like Matt's idea to have interns revamp parts of the repo as their intern project. I have always found that teaching someone else a concept reinforces my own learning so it should pan out!

Of course, since this learning lab repo has the most detailed content, it would make sense to use this as our base and update/add/re-write lessons where necessary.

Needless to say, for my idea to work, there will have to be buy-in from all of the teaching/dev team directors, but I believe this approach should improve the quality of our training while reducing the burden of maintaining legacy repos.

What do you think @matthewcn56 @doubleiis02 @mattxwang?

jainsujay02 avatar Jul 17 '22 03:07 jainsujay02

Just with a month left in the summer - want to give a chance for @doubleiis02 to chime in first! I do have some thoughts but I'll save them for a bit 😊

mattxwang avatar Aug 19 '22 22:08 mattxwang

Thank you everyone for providing your valuable opinions and being patient for my response.

Like Matt Nieva, I also used this repo to get started with web development and found it very helpful in getting me started on projects :) That said, I definitely agree with the issues Matt Wang brought up, not only the fact that it's outdated but also that some of the tools that the workshop series teaches is not as relevant to Teach LA's projects (or in general, ACM's projects) anymore. I'm pretty sure I did not end up watching all of the videos, probably only the first ones about html/css/js and react, but I still found that enough to get started.

In addition, our current training directors last spring mostly relied on the content from the teach-la-dev-training https://github.com/uclaacm/teach-la-dev-training repo instead of this one. I feel that this repo has a good amount of useful content, and out of all the options I would vote to continue using this repo over the summer 2020 repo. I really like Matt's suggestion to have training interns work on updating the repo!!

As for Sujay's suggestion to create a new generalized repo for not only Teach LA's dev team but also for the ACM dev team, Hackschool, etc; I like the idea and there definitely is a lot of overlap. It would definitely be useful to have the resources stored in one place rather than having to repeat information in different locations. The only thing is that the three teams have unique purposes for their training. I imagine that even if we end up creating one centralized repo, Hackschool may still create their own repos since their training is more of a workshop track for a large audience and they need a place to store recordings, slides, etc. However if we do decide to work on this, it would make the ACM-wide intern training workshops much easier to plan for and develop!

Given all of this, here is what I think:

  • option 1: update teach-la-dev-training https://github.com/uclaacm/teach-la-dev-training
    • add new workshops that the Teach LA dev team creates to this repo
    • migrate and organize existing workshops that the Teach LA dev team has created to this repo
    • *pros: *most efficient method / less work for our training directors, repo remains catered to the Teach LA dev team's training style, more likely to be maintained since Teach LA training directors will have ownership
    • *con: *we will have to collaborate with the other teams for the general ACM intern training anyways later on
  • option 2: create centralized repo for ACM's webdev training
    • do what option 1 does but also gather and organize resources from other places
    • *pros: *make centralized ACM intern training an easier task, have a single repository for all of ACM's webdev content, ideally very robust
    • cons: more effort and communication required, some teams may work on this repo and then also end up creating their own, more dispersed ownership and less likely to be maintained, repo may get quite big or harder to organize

For both of these options, we would have the training directors + interns + anyone else who creates a workshop participate!

On Fri, Aug 19, 2022 at 3:23 PM Matt Wang @.***> wrote:

Just with a month left in the summer - want to give a chance for @doubleiis02 https://github.com/doubleiis02 to chime in first! I do have some thoughts but I'll save them for a bit 😊

— Reply to this email directly, view it on GitHub https://github.com/uclaacm/learning-lab-crash-course-su20/issues/37#issuecomment-1221134279, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMC7L2M6A7UGVTJF2VLARDLV2ACPVANCNFSM53NAGG2A . You are receiving this because you were mentioned.Message ID: @.***>

doubleiis02 avatar Aug 20 '22 02:08 doubleiis02