-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #348 from turingschool/tech-challenges
Tech challenges
- Loading branch information
Showing
4 changed files
with
680 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
--- | ||
title: Technical Challenges | ||
layout: page | ||
--- | ||
|
||
Technical challenges may be given as part of the interview process to help assess candidates on how they break down problems, communicate their logic and reasoning, demonstrate their technical knowledge, and implement a working solution. Our goal is to provide you with the opportunity to practice these skills and develop a good process. Students will complete timed technical challenges and reflect on their approach to these problems. | ||
|
||
These scenarios are focused on helping you develop a good approach and do not always allow enough time to complete the challenge. Do not be discouraged if you are unable to implement a solution in the alotted time. Some of the challenges are very difficult and are assigned **intentionally to emphasize process over results**. | ||
|
||
<section class="call-to-action"> | ||
|
||
### Technical Prompts | ||
|
||
We will use these [Technical Prompts](./prompts) for our practice throughout Mod 4. | ||
|
||
</section> | ||
|
||
## Technical Challenge Format | ||
|
||
Technical challenges will either be solo or paired. | ||
|
||
After each challenge, students should track their reflections with their preferred note taking tool. | ||
|
||
<!-- COMMENTING OUT UNTIL WE DECIDED IF WE WANT TO KEEP DOING THIS SURVEY AND HOW OFTEN --> | ||
<!-- Students will also complete the [Technical Challenge Confidence Check](https://forms.gle/M24x2XisnkNGe35g8) survey at the beginning of the week and retake the survey at the end of the week to measure their progress. --> | ||
|
||
### Solo Challenges | ||
|
||
For solo challenges, you will be given a technical challenge and a designated amount of time to work through it. Start by focusing on your approach to breaking down the problem. Work to develop a process for when you don't know the answer or where to start. If you are feeling stuck or not sure where to begin, use this [problem-solving template](./problem_solving_template). | ||
|
||
After the time is up, talk through your process with a peer. Share your solutions, compare approaches, and ask questions to help one another see the same problem from a new perspective. _If you want to take it a step further, talk about the Big O complexity of your solution._ | ||
|
||
Once you've finished your discussions with a peer, take time to add your personal reflection on the process to your notes. | ||
|
||
<section class="call-to-action"> | ||
#### Reflection Questions | ||
1. What worked well in your process? | ||
2. What was difficult/where did you struggle? | ||
3. What feedback/discussion did you have with your peer? | ||
4. Even if you didn't get to a solution, would your problem solving process have impressed an interviewer? | ||
5. Is there anything you want to change about your approach to the next technical challenge? | ||
|
||
If this isn't your first technical challenge: | ||
6. Were you able to improve your approach? What went better? | ||
</section> | ||
|
||
### Paired Challenges | ||
|
||
You will be assigned either a partner or a small group. Start by coordinating who will be the problem solver and who will be the observer first. The problem solver will then work through the challenge in the designated amount of time. The observer should be participating and taking notes for feedback. Once the time is completed, the observer should share feedback. Switch roles and repeat with a new problem. | ||
|
||
Be sure to add any reflections to your notes. | ||
|
||
<section class="call-to-action"> | ||
#### Problem Solver Outline | ||
1. Clearly define what you are trying to solve | ||
2. Communicate any considerations or questions that you would ask | ||
3. Pseudocode your solution _(Pseudocode should simply be words. Don't try to write a mix of code and words.)_ | ||
4. Implement & Test your solution | ||
|
||
#### Observer Outline | ||
1. Actively listen to who you are observing | ||
2. Take notes for feedback. Use these questions to help guide your feedback: | ||
- Did your partner clearly define the problem they were solving? | ||
- Was communication clear and were you able to follow their thought process? | ||
- Did your partner use technical vocabulary or use vague terms? | ||
- Did your partner take time to plan out their approach to the problem before trying to code a solution? | ||
<section> |
30 changes: 30 additions & 0 deletions
30
module4/projects/tech_challenges/problem_solving_template.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
--- | ||
title: Problem Solving Template | ||
layout: page | ||
--- | ||
|
||
Sometimes the hardest part of a challenge is undestanding what you are trying to solve, or knowing where to begin. Below is a guide to help you get started and gain momementum for developing a solution. Use a notebook, gist, or document to copy the prompts below and work through them. | ||
|
||
1. Rewrite the question in your own words | ||
2. Answer these questions: | ||
- What assumptions will you make about this problem if you cannot ask any more clarifying questions? | ||
- What are your reasons for making those assumptions? | ||
- What are your initial thoughts about this problem? (high level design, 2-3 sentences) | ||
3. Identify the elements of this problem | ||
- [ ] Searching of Data | ||
- [ ] Sorting of Data | ||
- [ ] Pattern Recognition | ||
- [ ] Build/Navigate a Grid | ||
- [ ] Math | ||
- [ ] Language API knowledge | ||
- [ ] Optimization | ||
4. Consider which data structure(s) do you think you'll use? What pros/cons do you see with that choice? | ||
5. Write out a few lines of initial pseudocode: (mid-level design, NOT REAL CODE) | ||
6. Write your implementation code and test your solution (low-level design) | ||
|
||
<section class="note"> | ||
Reminders | ||
1. It is okay to use Google! However, you should __not__ google the technical challenge to find solutions unless you have completed the challenge yourself. __Do__ use Google or documentation to look up possible enumerables that might be a part of your solution, check assumptions about your pseudo code, or for clarifying parts of the problem. | ||
|
||
2. Please do not make your answers public. | ||
</section> |
Oops, something went wrong.