Welcome to the Full-Stack Node/React Practicum!
Below is a quick outline of the practicum. Remember to stay in communication with your project team, project team apprentice lead and/or your practicum volunteer mentor lead. Slack is the best place for your questions, and you have a Slack channel for your individual project as well as for the whole practicum group.
What You Will Be Learning
As you work together to enhance the project, remember that your goals are to:
- Gain experience working on a development team
- Collaborate + integrate code with a larger project
- Solve code problems with other developers
- Develop good continuous integration habits
- Get a sense of what software developer jobs are like
- Make real-world decisions about what code to include and why
- Gain exposure to agile methods and terminology
- Gain experience on a real-world, deployable project
- Understand development, staging and production pipeline concept
- Complete work that can be added to your portfolio
Course Calendar
The calendar below shows the start date of each week of the course and includes breaks and special events.
Course Sections
SPRINT | START | END | LESSONS |
---|---|---|---|
0 | Oct 15, 2023 | Project Setup and Prep (see bottom of current page) | |
1 | Oct 16, 2023 | Oct 29, 2023 | Project Scoping, Repository Setup, and Project Management |
2 | Oct 30, 2023 | Nov 12, 2023 | Building a Front- End UI, a Working API, and Deploying Some Code |
3 | Nov 13, 2023 | Dec 3, 2023 | Authentication and Integration with APIs |
NOTE | U.S. Holiday on Nov 23, 2023 | Team can take time off that week (Nov 20-26, 2023) | |
4 | Dec 4, 2023 | Dec 17, 2023 | Email Features, Debugging, and more, plus Final Presentation Prep |
– | – | – | Final Presentation Information Page |
DEMO DAY | Dec 19, 2023 | Present your Practicum Project during Weekly Café at 12pm EST |
Before You Begin
Keep in mind this practicum is intended to be primarily focused on student collaboration. Each team will work together to help each other through the process of working with others on one main production repository of code. Teams will be provided a starter repository from the Code the Dream School GitHub account. Your apprentice/mentor leader(s) will be the primary admin on that repository, but you all will be collaborators. It will be important to observe how to handle merging code updates. Each team member should take an active role in collaborative decision-making among your team and should help/be aware of the process for merging and resolving merge conflicts. Don’t wait to be assigned something; think creatively about how you can contribute to your project’s success! Lean on each other and communicate often – each team should have daily check-ins (these can be asynchronous) and at least one weekly meeting where everyone can check in and update so your team can decide together if you need to adjust your work plan. Keep in mind the personal goals you had in mind when beginning practicum, and work towards those goals.
Setup and Prep
Overview
Practicum is the experiential learning component of Code the Dream classes, where you will practice the skills you learned in class, on a software development team. Each team will consist of approximately 2 Node.js class students and approximately 3 React.js class students. You will work together over 2 months to define, build, and work towards deploying an application using the programming languages you learned in classes. React students are not expected to know or work in Node, and vice versa, but you all do need to communicate with each other to understand the limitations and benefits each angle of the project has to consider and work with.
Each Team Member is expected to spend about 10-20 hours per week on project work. Your team will start by brainstorming app ideas, (you can get some ideas by googling “React/Node app ideas for beginners” or “Portfolio Project ideas for Node” (or React). Once you decide on a concept, you’ll begin to define the features you want to build. From there divide up and prioritize the aspects of your project (this is called scoping), each team member will work on small chunks of the work, and your team will collaborate to integrate each person’s code into the project, and resolve any conflicts that arise within the code. It’s important to do more frequent smaller updates/changes to your code/project because smaller changes make for easier to solve merge conflicts. Throughout the practicum, your apprentice/volunteer mentor(s) will be available to help you resolve blockers and conflicts between team members’ code, but you should also work together to problem solve.
Additional activities and resource sets each week will help you build on the knowledge you gained in class, and apply it in this team setting. As a team and as individuals you should work through the calendar links above, reviewing materials as many times as you need and jumping ahead if there is something you want to learn about, or information you need for your present work. Remember that we are all here to learn and grow. The primary objective of the practicum is to get comfortable working in a group setting and building positive communication skills. The app/site you build is just a by-product of working together and cooperating with each other. There are no tests or assignments to hand in during practicum; these resources are simply here to help fill in any knowledge gaps, so you should use them however is most beneficial for you.
Your team will meet weekly, in order to:
- complete a brief standup (each person shares what they worked on over the past week, what they plan to work on this week, and blockers they’ve run into)
- these details should also be shared daily, but the team does not need to meet daily. Each member should post/update daily in whatever program your team decides to use to track project progress.
- collaborate on merging code into the project’s codebase
- seek technical guidance from your apprentice/volunteer mentor(s)
- resolve blockers and other issues that may arise
- prioritize and assign upcoming work
If you have not agreed on a specific day and time to regularly meet, be sure to do that within the first couple days of Practicum! Your assigned mentor(s) have been made aware of the common time windows created based on your availability form you completed, but please be sure to make them aware of your final decision on day and time via your small group’s Slack channel.
Additional meetings or calls may be needed to facilitate collaboration; do what works best for your group, and use Slack often for asynchronous communication. You may wish to use Slack calls or huddles in your project channel, or a Google Meet link; decide as a group in your first week what will work best for everyone. A shared zoom link will also be provided for all practicum teams. Be aware of when other teams are meeting and if you have to meet the same time another group is meeting, notify CTD staff so we can give mentors codes that allow you to use breakout rooms.
Roles
- Team Members (students within the team) work on their projects and collaborate:
- Pick up tickets in GitHub Projects (or whatever ticket process you’ll be using), then write + integrate code
- Collaborate to resolve merge conflicts within code
- Review one another’s’ code for practice + code optimization
- Attend weekly team meetings to provide status updates on work and collaborate with teammates
- Review supplemental resources to assist with project work
- Project Leads (apprentices and/or volunteer mentor(s) assigned to your team) assist Team with technical and project needs:
- Help to scope and clarify work to be completed
- Assist with prioritize the backlog in GitHub Project
- Troubleshoot code problems
- Oversee and help with resolving merge conflicts
- Review code for readiness to merge as needed
- Class Coordinator provides oversight of all practicum project groups:
- Arrange project teams and communication tools (Slack channels)
- Provide program-related materials for the practicum
- Troubleshoot any issues that may arise among Team Members and/or Project Leads throughout the practicum