PA05 - Tech Spike Preparation
Introduction
In agile software development a spike is a small side project done to test an approach or to learn something new. The goal is to learn enough about the approach or the new topic to inform the work on the main project. Because the work done in a spike is experimental or is part of a learning process it is done outside of the main project’s code base. Then what has been learned from the spike is used to produce a clean implementation of the desired functionality in the main project. By working in this way mistakes or missteps that naturally occur during the learning process do not get accidentally left behind in the main project’s code base. It is not unusual for there to be many spikes across the course of work on a project. Each time a developer is unsure about an approach or a technology they should take a little time out to do a spike. They then return to the project with a higher level of confidence in the approach being explored or the technology that was learned.
Assignment
In this assignment the project teams will prepare to complete a tech spike in which they learn more about the key technologies used in their projects. The result of this activity is a planning document that will guide the team’s work on the tech spike. This planning document will include a Gap Analysis, a list of Learning Resources and a description of Planned Artifacts. The Gap Analysis will help the team identify gaps in their present knowledge and skills as related to their chosen project’s technical requirements. The list of Learning Resources will identify instructional materials that can be used to fill those gaps. The description of the Planned Artifacts will indicate things that the team plans to build to demonstrate their learning.
Getting Started
To get started:
- Make a copy of the
TechSpikePreparation.md
file from theteams
directory into the team’s own directory. - Add a bullet to the “Project Documents” section of the team’s
README.md
that links to the team’sTechSpikePreparation.md
file.
Gap Analysis
A gap analysis is a process that can be used by a business, a team, or an individual to compare their current state to a desired future, and then to set goals to move toward that future. Gap analyses are often performed in a four step process. In this section, teams will follow an adaptation of that four step process to perform a gap analysis that will guide their tech spike.
Work as a team, involving every team member in the discussion, to complete a gap analysis by adding the following content to the appropriate sections of the team’s TechSpikePreparation.md
file:
- Our Current Situation: The point in this section is to identify the current knowledge and skill sets of the team’s members, as well as their strengths, weaknesses and interests.
- Identify the relevant knowledge and skill set that is possessed by each team member. While the team members likely share a common set of courses, each will also have different knowledge and skills based on past experience, outside projects, internships, etc.
- Identify the specific strengths, weaknesses and interests of each team member. Do this with respect to both the knowledge and skills identified above as well as any other potentially relevant knowledge and skills that may help the team (e.g. organization, management, writing, testing, documentation, etc…).
- Our Goals: The point is this section is to identify the knowledge and skills with key technologies, languages, frameworks, testing, tools, etc. that the team will need to have in order to becoming contributing members of the project’s community.
- Collect as much information as possible about the key technologies, languages, frameworks, tools, etc. that are used by the project. Some of this information has been collected in past assignments. Copy that information here, while also doing additional digging into the project documentation to ensure that all of the critical elements have been identified.
- Be sure to use the project community here as well. Search the appropriate communication channels for questions and posts that may provide insights.
- Prioritize the items that have been found by how important they will be to becoming contributing members of the project’s community.
- Our Gaps: The goal of this section is to identify the differences between the team’s current situation and its goals.
- Compare the knowledge and skills of the team members to those items identified as necessary for the project. Identify specific knowledge and skill gaps that exist in the team. These should focus on the highest priority goals first.
- Be sure to identify both team gaps (an area where no one has the skill or knowledge) and individual gaps.
- Our Plan: Finally, in this section the team will form a plan to narrow the gaps that have been identified.
- Use the information gathered above to assign specific team members to address specific knowledge and/or skill gaps. Do not specify how the learning will occur here (that’s next). However, it must be clear which gaps each team member will be addressing.
- Use your team members’ strengths, weaknesses and interests to inform your decisions of who will learn what.
- When it makes sense, form sub-teams or pairs around particular gaps to facilitate learning.
- Learning everything necessary may be more than can happen in the time allowed for this assignment, so focus on the highest priority gaps first.
- Not every team member must develop knowledge and skills in every area. It is okay to develop some specializations within your team. However, all team members should have some background in the areas that have been identified as the highest priority.
- Not every gap must be addressed. Be sure to focus on the largest and highest priority gaps.
- Use the information gathered above to assign specific team members to address specific knowledge and/or skill gaps. Do not specify how the learning will occur here (that’s next). However, it must be clear which gaps each team member will be addressing.
Learning Resources
In this part of the activity teams will identify learning resources (readings, videos, tutorials, courses, etc…) that that they will use to begin to fill in the gaps that the team has identified. While the Gap Analysis was a full team activity, this section should be completed individuals, pairs, or sub-teams based on how the team has delegated responsibilities in the “Our Plan” section above.
- Add sub-sections to the “Learning Resources” section of the team’s
TechSpikePreparation.md
file that align with the gaps in the “Our Plan” section of the “Gap Analysis”. - In the sub-section for each gap, the responsible team members should create an annotated list of resources (with links) that they believe will help them learn what is needed to begin to fill the gap. Some tips for building this list:
- Search the project’s documentation for any resources that they have provided or recommended.
- Be sure to use the project community here. Search the appropriate communication channel, explain what you are trying to learn and how you think it will help your team engage with the project and ask for suggestions of good resources.
- Do a web search to identify resources (tutorials, lessons, videos, articles, etc…) that will help fill the gap. This approach may be your first instinct… but you are very much encouraged to engage your project community!
Look at a lot of resources (20-30 seems a good number) and narrow them down to a few (2-4) that are at an appropriate level, seem engaging, and that can be completed in the time available for this assignment (i.e. before the presentation). It can also be beneficial to lean toward resources that have you actively build something (see Planned Spike Artifacts below).
Investing time here to filter through a variety of resources and identify good ones that have you build things will pay off later!
Planned Spike Artifacts
PP01 - Tech Spike Presentation occurs at the end of the Tech Spike (See the Course Schedule) and requires that each team give a presentation. In this presentation the team will introduce the project and demonstrate of some of the things that were built during the Tech Spike. This section asks that teams identify artifacts that they may build during the Tech Spike and demonstrate in their presentation.
Consider the learning resources that have been identified:
- Add a bullet to the “Planned Spike Artifacts” section of the team’s
TechSpikePreparation.md
file for each thing (i.e. artifact) an individual, pair or sub-team may build.- Each artifact might be something that is created by following one of the learning resources (preferable) or something that the individual, pair or sub-team aim to build based on what is learned. Note that listing the artifacts does not imply that they will all be built. The plan for which learning resources are used and what artifacts are built can evolve as the spike progresses (e.g. a learning resource turns out to be not as good as initially thought).
- For each bullet:
- Indicate the individual, pair or sub-team that may build the artifact.
- Give a brief description of the artifact.
- Indicate if the artifact is a part of the learning resource or something designed by the individual, pair or sub-team.
Completing the Tech Spike
Once a team has completed the Gap Analysis, identified Learning Resources, and Planned Artifacts, it will use the time until PP01 - Tech Spike Presentation to learn, build artifacts, and prepare the presentation.
During this time the team members are expected invest the expected amount of time per week (See the Syllabus) working on the following tasks:
- engaging in learning activities (readings, videos, tutorials, courses, etc…) to develop knowledge and skills.
- using what is being learned to build concrete artifacts that can be demonstrated.
- participating in team meetings with the instructor on work days.
- preparing PP01 - Tech Spike Presentation.
- completing TEAMMATES feedback sessions that will inform project effectiveness scores.
All textual materials used in this course are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License
All executable code used in this course is licensed under the GNU General Public License Version 3 or later