-
Notifications
You must be signed in to change notification settings - Fork 0
Plan to split up existing javascript/node.js modules across the new courses #29
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
Conversation
proposals/js-node-plan.md
Outdated
|
||
### Open Questions: | ||
|
||
- **Deployment**: Should we provide guided deployment in Introduction modules? Just instructions, so they would be able to use them for Foundation Final Project. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My initial thought: In foundation, people should understand deployment as a concept (ie. what it is, why we do it, how we do it in theory). Any actual deployment of their code/apps should be very easy (if possible :D)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Web Architecture 101 introduces the concept of deployment, and this is the right place for it IMO. Just at the very vague level of "If you've written stuff on your laptop, how do people use the code you wrote, when you turn your laptop off?".
If we haven't already, I suggest that we (as part of this restructuring work):
- identify a deployment/hosting service that the trainees can use for their final project (for the sake of argument: suppose we choose Heroku)
- at various places throughout the courses, whenever deployment comes up, we show/teach whatever it is, using Heroku as an example.
- example: back end code? Deploy a simple web server so that it's reachable at https://whateveritis.herokuapp.com/api/
- example: front end code? Deploy as static assets so that it's reachable at https://whateveritis.herokuapp.com/
- example: databases? Here's how you get Heroku to provide a database, so that your back end service can use it.
This way, by the time we get to the Big Final Project, the trainees have seen the whole process at least once all the way through.
We can of course choose to mix the blend of "give careful instructions on how to do it" vs "show it once, and enable them to go off and learn more for themselves".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good to have a "click this button" to deploy your changes in some hosting provider as @rvedotrc mention. In the backend specialization people can learn how to automate this using workflows etc.
We could make it a requirement that after a certain point all homework PRs should include a link to the deployed code.
proposals/js-node-plan.md
Outdated
### 1. Module: Advanced JavaScript | ||
|
||
**Duration**: 4 weeks\ | ||
**Purpose**: Deepen JavaScript knowledge with modern concepts and patterns used in both frontend and backend development. This module is part of both the Frontend and Backend Specialisation tracks. While topics are shared, examples and homeworks must be tailored per track. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just thinking practically.. so really the "only" shared thing is the learning goals/topics? If examples, exercises etc. should be tailored, then it's actually most of the content in github that will end up being custom per specialism?
Just thinking ahead already to how we might structure it in practice.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, the concepts, principles, and explanations would be the same, too.
Where it helps, maybe we end up giving multiple examples / exercises (e.g. two: one front end, one back end), with the idea being that you can just go with whichever one is more relevant for this trainee cohort.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Depends. Some examples/exercises (if it is something like "write a function" or "write a peace of code") can be shared as well for some topics. But for Promises, for example, makes more sense to use different examples (fx "fetch" for FE and "database interaction" for BE), and maybe tasks will follow that.
I don't have an answer / suggestion to that, also just thinking out loud
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok yeah, maybe it's not super obvious at this point. But it's a good first example of how we can manage more "shared" stuff 😁 I guess our options are:
- Have entirely separate modules (e.g. Advanced Backend JS, Advanced Frontend JS) that can diverge all they like
- Have shared learning goals (i.e topics to cover), but content can diverge as much as it likes to suit the specialism
- Have one shared module, with specific examples/notes inside to help lean the mentor/trainee to a specific specialism
Also just thinking out loud (again)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on my experience with the exercises, I believe it would be more effective to organize the material into separate, focused modules. would make our life much easier and for trainees and mentors as well.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree wiht @saloumeh-67. Ideally, I also think that we should link to learning material rather than reinventing what is already on the internet. I don't see it as a big issue copy/pasting some content between two pages.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we should link to learning material
That's fine, but it does also come with an extra cost: validating that the links still work, and still point to useful content. Example
Linking to well-known high-reputation stable sites (for example MDN or The TypeScript Language) carries less of a risk, though.
This is really great @markitosha! 🤩 Thank you so much for taking the time to make a clear proposal. The diagrams really help. I'm summarising a few thoughts, to double check my understanding: Total length of js content:Foundation - 7 weeks total (same as in the original proposal) I'm not implying any opinion here, just seeing how it compares to what we had before, to see if the courses will change size in any drastic way (looks like not :D). Module changes summaryEssentially...
Overall, it sounds like we are good to mostly reuse all content as a starting point, but after "General Javascript":
And, final project(s) are still a bigger open question, and probably out of scope of this task. -- Not explicitly looking for a response to this comment, just sharing out loud. But if it looks like i misunderstand anything, please say. |
proposals/js-node-plan.md
Outdated
|
||
#### Final Week Homework Note: | ||
|
||
Introduce small reusable logic/function tasks already in the final week (e.g., calculating prices, transforming arrays) and encourage saving the code — these will be reused in API or frontend in later modules. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does this approach already exist in the legacy modules? I do love the idea of making assignments reusable later on, to build upon learnings, just wondering how much "new" work it is to introduce here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't be sure, but I don't think I've seen exactly that. What I've seen, is that they're building their JavaScript homework application while learning, which is the similar idea and I suggest to reuse it earlier on.
Anyway, since we need to come up with Final Project for Foundation anyway, that's probably won't be that much of additional work 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we can continue the same way with having trainees choose one app and continue working on it (in fundamentals have smaller steps as @markitosha mentioned and then get more advance in the FE/BE. )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I guess for the fundamental projects and homework that we can provide the high-level structure of the code and have them fill out blanks. i.e. functions etc.
As we get closer to the specializations they can gradually get exercises which require them to design things from scratch
proposals/js-node-plan.md
Outdated
|
||
*Option 1*: It might be natural to introduce separate files in «Introduction to Backend», and then mention in «Introduction to Frontend» how it is solved there. | ||
|
||
*Option 2*: Introduce idea of structuring files (and import/export) on «Web Architecture 101» session. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Regarding option 2, i think this could be a good idea anyway. Even if just a very high level mention. "Codebases are made up of multiple files/modules that do different things. They can be used, combined and built on top of by others, similar to... insert amazing analogy here".
(please don't quote me 😆 but hopefully you get my point)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would probably opt for pushing this to specialisms. Sometimes it is also easier to teach them the benefit of splitting the code into multiple files after they experience their own code grow out of hand.
proposals/js-node-plan.md
Outdated
|
||
**Approach:** | ||
|
||
- Start developing simple reusable logic (just functions solving problems for their future project!) in latest General JavaScript homeworks. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea, I think. Do you have a few examples?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
More vibe than examples: maybe some data transformations, reusage of functions they'll write later (fx handlers for events), business logic (fx "count the price for all picked items in one currency").
Exact examples I don't have now. But when we come up with ideas for Final Project, I'm pretty sure that we'll be able to see what can be separated and reused for the Project
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For Final project we can use our JS mini projects that we currently have,(e.g., money converter, games) that can be reused but may need adjustments:
Fundamentals Phase: Simplify implementations (e.g., basic currency conversion, text-based games)
Specialization Phase: Expand with advanced features (e.g., API integrations, GUI enhancements)
proposals/js-node-plan.md
Outdated
|
||
**Duration**: 1 week\ | ||
**Purpose**: Introduce shared concepts between frontend and backend. Creates a unified mental model before Introductions for specialisations and removes duplicates from modules (like API explanations).\ | ||
**Note**: It, probably, will require some new material there (we didn’t have architecture before), but we can always just stick to the topics that was introduced before in old modules. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Happy to see this included (IIRC, it was me that suggested this at one of the first workshops). I'd be happy to volunteer on creating this module — but maybe I'm jumping the gun a bit here. :-)
proposals/js-node-plan.md
Outdated
|
||
**Duration**: 1 week\ | ||
**Purpose**: Provide a hands-on primer to backend development. Enables learners to build a basic working backend (simple CRUD server or even less).\ | ||
**Reasoning**: Placing backend first in hands-on development allows learners to apply their JavaScript fundamentals while reinforcing their understanding of APIs introduced in Web Architecture 101. This progression is both natural and confidence-building: learners already know how to write logic, and now they can wrap it in endpoints (basically, another level of functions). Starting here also clarifies the API before they consume it from the frontend side. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This reasoning ❤️
proposals/js-node-plan.md
Outdated
- Start developing simple reusable logic (just functions solving problems for their future project!) in latest General JavaScript homeworks. | ||
- Reuse and expand this logic in homeworks for Introduction modules. | ||
|
||
### 1. Module: General JavaScript |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
### 1. Module: General JavaScript | |
### 1. Module: Foundational JavaScript |
Slightly more meaningful name?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice overview! ⭐ Great job
I think it will be very valuable to have the Introduction to Web Architecture
I also like how this first teaches how to do things in 1 basic way. Later we can introduce advanced features and "smarter" alternative ways of writing the same code.
proposals/js-node-plan.md
Outdated
 | ||
|
||
 | ||
|
||
 | ||
|
||
 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry 😬 But there was a very useful recommendation in another thread to download draw.io file and open it there: same content, but much more readable than images I've tried to add here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
proposals/js-node-plan.md
Outdated
|
||
#### Final Week Homework Note: | ||
|
||
Introduce small reusable logic/function tasks already in the final week (e.g., calculating prices, transforming arrays) and encourage saving the code — these will be reused in API or frontend in later modules. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I guess for the fundamental projects and homework that we can provide the high-level structure of the code and have them fill out blanks. i.e. functions etc.
As we get closer to the specializations they can gradually get exercises which require them to design things from scratch
proposals/js-node-plan.md
Outdated
#### Topics [not limited to]: | ||
|
||
- Client vs Server | ||
- What is Backend? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe also:
- What is frontend
- (maybe) What is DevOps
proposals/js-node-plan.md
Outdated
|
||
### Open Questions: | ||
|
||
- **Deployment**: Should we provide guided deployment in Introduction modules? Just instructions, so they would be able to use them for Foundation Final Project. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it would be good to have a "click this button" to deploy your changes in some hosting provider as @rvedotrc mention. In the backend specialization people can learn how to automate this using workflows etc.
We could make it a requirement that after a certain point all homework PRs should include a link to the deployed code.
proposals/js-node-plan.md
Outdated
### 1. Module: Advanced JavaScript | ||
|
||
**Duration**: 4 weeks\ | ||
**Purpose**: Deepen JavaScript knowledge with modern concepts and patterns used in both frontend and backend development. This module is part of both the Frontend and Backend Specialisation tracks. While topics are shared, examples and homeworks must be tailored per track. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree wiht @saloumeh-67. Ideally, I also think that we should link to learning material rather than reinventing what is already on the internet. I don't see it as a big issue copy/pasting some content between two pages.
proposals/js-node-plan.md
Outdated
|
||
*Option 1*: It might be natural to introduce separate files in «Introduction to Backend», and then mention in «Introduction to Frontend» how it is solved there. | ||
|
||
*Option 2*: Introduce idea of structuring files (and import/export) on «Web Architecture 101» session. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would probably opt for pushing this to specialisms. Sometimes it is also easier to teach them the benefit of splitting the code into multiple files after they experience their own code grow out of hand.
In the old curriculum, js2 and js3 don't have "normal" assignments, they build a javascript project throughout each week. They also have "optional homework", which i guess was just the old assigments before we replaced them with the js projects. Right? Now i'm looking at our foundation "intro to backend/frontend" modules and what to do about the assignments. I'm thinking we take these steps during the restructure:
@markitosha does this match what you're expecting too? Feedback welcome! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mentioned before that i would summarise the open questions that still exist from above. I've moved them into the relevant tasks that already exist (e.g. final project, advanced js module) so we shouldn't miss anything. Probs worth coming back to this proposal again after we have the first pass of the programme implemented though, to double check :)
@markitosha I wrote on the issue but maybe i should here: Can you please move the proposal under the contributing directory? e.g. "contributing/proposals/.."
Then I approve/merge :)
|
||
### Open Questions | ||
|
||
- **Deployment**: Should we provide guided deployment in Introduction modules? Just instructions, so they would be able to use them for Foundation Final Project. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this could be a good chance for students to practice reading official documentations and learning how to deploy to Vercel, Netlify etc without direct guidance from us, but rather, by figuring it out themselves by readings the docs. We can be there to supervise during the whole process.
The reasoning here will be to have the students learn the skill of reading docs as well, which is crucial for their career development.
|
||
### Open Questions | ||
|
||
- **Deployment**: Should we provide guided deployment in Introduction modules? Just instructions, so they would be able to use them for Foundation Final Project. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe deployment and hosting are one of the main challenges students face during the final project. To reduce confusion and ensure consistency, I think it's important to stick to one clear approach: either the students choose a cloud provider and the mentors guide them through it, or HYF defines a single technology stack that all students use.
I lean toward @babak-f perspective - students should be encouraged to research, evaluate the pros and cons, and gain hands-on experience making these decisions themselves.
Proposal for #4