Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)
There is a lot to learn in this repository. If you can't master all the material
at once, that's expected! Anything you don't master now will always be waiting
for you to review when you need it. These 4 emoji's will help you prioritize
your study time and to measure your progress:
- 🥚: Understanding this material is required, it covers the base skills you'll
need to move on. You do not need to finish all of them but should feel
comfortable that you could with enough time.
- 🐣: You have started all of these exercises and feel you could complete them
all if you just had more time. It may not be easy for you but with effort you
can make it through.
- 🐥: You have studied the examples and started some exercises if you had time.
You should have a big-picture understanding of these concepts/skills, but may
not be confident completing the exercises.
- 🐔: These concepts or skills are not necessary but are related to this module.
If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push
yourself without getting distracted from the module's main objectives.
---
Practice studying and remixing other people's solutions to coding challenges. Create your own solutions by mixing and matching pieces from other people's code.
🐣 Reconstructing: You can reconstruct a variety of solutions to the same challenge when they are presented as parsons problems.
🐣 Analyzing: You can analyze a function written at your level. This includes:
[x] Behavior: Write documentation, test cases and use cases to describe the function's behavior.
[x] Strategy: Describe the function's strategy using plain english.
[x] Implementation: List the language features in a function and explain how each one is used.
[x] Small Changes: You can think of 2+ changes to the function's implementation that would not change it's strategy.
🐣 Remixing You can analyze several solutions to the same challenge then ...
[x] Write: Your own solution by remixing the ones you studied.
[x] Explain: How the other solutions inspired yours; what ideas did you take from them? what ideas did you not take?
[x] Analyze: Complete a write-up your own solution as though someone else wrote it.
[ ] Writing Tests: Given a working function, you can write passing test cases to describe it's behavior.
[ ] Writing Functions: You can design multiple solutions to the same code challenge, keeping notes about different experiments you tried along the way.
[ ] 🐣 Generating Documentation: You can write a JSDoc comment for your solutions and run a script to generate markdown documentation.
[ ] 🐣 Fuzz Testing: You write solutions that pass randomly generated test cases.
🐥 Test Driven Development: You can solve open-ended, ambiguous coding challenges at your level:
[ ] Reading Docs: You can understand what the function is supposed to do by reading it's JSDoc description.
[ ] Writing Tests: You can write test cases before there is a function to test.
[ ] Writing Functions: You can write one function that passes the test cases you have prepared (even if it's just 1 test case!).
[ ] Refactoring: You can improve your function's implementation without failing any test cases that were passing.
[ ] Iterative Development: You can repeat the TDD process until you are satisfied with your test cases and solution.
[ ] 🐔 Code Golf: Write your solutions with the fewest characters possible! This won't help you write readable code, but it will make you think deeply about JS, your strategy and implementation.
Learning Objectives
Priorities: 🥚, 🐣, 🐥, 🐔 (click to learn more)
There is a lot to learn in this repository. If you can't master all the material at once, that's expected! Anything you don't master now will always be waiting for you to review when you need it. These 4 emoji's will help you prioritize your study time and to measure your progress: - 🥚: Understanding this material is required, it covers the base skills you'll need to move on. You do not need to finish all of them but should feel comfortable that you could with enough time. - 🐣: You have started all of these exercises and feel you could complete them all if you just had more time. It may not be easy for you but with effort you can make it through. - 🐥: You have studied the examples and started some exercises if you had time. You should have a big-picture understanding of these concepts/skills, but may not be confident completing the exercises. - 🐔: These concepts or skills are not necessary but are related to this module. If you are finished with 🥚, 🐣 and 🐥 you can use the 🐔 exercises to push yourself without getting distracted from the module's main objectives. ---
1. Remix
Practice studying and remixing other people's solutions to coding challenges. Create your own solutions by mixing and matching pieces from other people's code.
2. Write
3. Review