View on GitHub

COMP 491/492

Dickinson College Computer Science Senior Seminar

Tech Spikes Activity

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 this 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 you will complete a spike to learn more about the key technologies use in your project. Specifically you will:

Additional details on all of these elements are given below.

Getting Started

For this activity there will be a number of deliverables that will be collectively produced by your project team and posted to the team Wiki page.

  1. Create a link to a new wiki page named “Tech Spikes” on your team’s “Project Deliverables” page.
  2. Click your link to create the new “Project Deliverables” wiki page. You’ll collect all of the deliverables for this assignment on that page.
  3. Add a header to the new page to identify its purpose.

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. You will use a gap analysis to understand the knowledge skills that your team currently has and the knowledge and skills that you may need to be an effective member of your project’s community.

Gap analyses are often performed in a four step process. Your team will use a similar four step process to complete your gap analysis and document it on your “Tech Spikes” wiki page.

  1. Add a new header to your team’s “Tech Spikes” page named “Gap Analysis”
  2. Add the following sub-heading and document the steps of your gap analysis as described.
    • Our Current Situation: Here you are interested in understanding the current knowledge and skill sets of your team members, as well as their strengths, weaknesses and interests.
      • Identify the relevant knowledge and skill set of each team member. While you likely share a common set of courses, you will each 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 both with respect to the knowledge and skills identified above, and other potentially relevant knowledge and skills (e.g. organization, writing, testing, documentation, etc…) This information will help your team with planning actions and delegating tasks to different team members.
    • Our Goals: Here you are interested in ensuring that your team has or develops knowledge and skills with the key technologies, languages, frameworks, tools, etc. that are used by your project.
      • Collect as much information as you can about the key technologies, languages, frameworks, tools, etc. that are used by the project. You have collected some of this in past assignments. You should include that information here, while also doing additional digging into the project documentation to ensure that you have identified all of the critical elements.
      • Prioritize the items that you have found by how important they will be to becoming contributing members of your project’s community.
    • Our Gaps: This section asks you to identify the differences between your team’s current situation and its goals.
      • Compare the knowledge and skills of your team members to those items identified as necessary for your project. Identify specific knowledge and skill gaps that exist in you team. These should focus on the highest priority goals first. You should identify both team gaps (an area where no one has the skill or knowledge) and individual gaps.
    • Our Plan: Finally, you will form a plan to narrow the gaps you identified.
      • Use the information you gathered above to assign specific team members to address specific gaps.
      • Learning everything necessary may be more than can happen in the time allowed for this assignment, so focus on the highest priority gaps first. You do not have to specify how the learning will occur here (that’s next). You must just be explicit about who will be responsible for addressing which gaps.
      • 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 your learning.
      • Not every team member must develop knowledge and skills in every area. It is okay to develop some specializations within your team. However, you are encouraged to ensure that all team members have some background in the areas identified as the highest priority.

Learning Resources

In this part of the activity you are to identify resources that that you will use to begin to fill in the gaps that your team has identified. While the Gap Analysis was a full team activity, this section should be completed based on how you have delegated responsibilities in the “Our Plan” section above.

  1. Add a new header to your team’s “Tech Spikes” page named “Learning Activities”.
  2. Add sub-sections to the “Learning Activities” section that align with the gaps in the “Our Plan” section of the “Gap Analysis”.
  3. In the sub-section for each gap, the responsible team members should create an annotated list of resources (with links) that you believe will help you learn what is needed to begin to fill the gap. Some tips for building this list:
    • Use resources that are identified by the project.
    • Ask your project community. Using the appropriate communication channel, explain what you are trying to learn and how you think it will help your team engage with he project and ask for suggestions of good resources.
    • Do a web search to identify resources (tutorials, lessons, videos, articles, etc…) that will help you begin to fill the gap. This will be your first instinct… but you are really encouraged to engage your project community!

You will want to look at a lot of resources (20-30 seems a good number) and narrow them down to a few (3-5) that are accessible to you, resonate with you, and can be completed in the time you have available. You may also want to lean toward resources that have you actively build something hands-on. That will directly contribute to the demonstration that is required for the presentation. Investing time here to identify good resources will pay off!

Learning and Live-Logs

Once your team has completed the Gap Analysis and identified Learning Resources, you will use the remaining time until your Tech Spike Presentation to learn. The main goal is for you to learn enough to begin to close the gaps in your team’s knowledge and skill set. Your work must also result in something concrete that can be demonstrated during the presentation. This is likely to be a piece of code that does something with the technology you have learned.

Recall that the nominal expectation for time investment in this course is approximately 10 hours of work outside of class per week. You will use some of that time for readings and Moodle posts, but the balance should be spent on this learning.

Live-Logs

You will use Slack Live-Logs to document the time and effort that you invest in learning and to keep a record of what you have learned.

A Slack Live-Log is a thread in your team’s Slack channel that is associated with a task. When you, or a partner or a sub-set of your team begin a new task, a new thread should be created to Live-Log the work on that task. As work happen on a task, whomever is working on it will post messages to the thread associated with the task (i.e. they will Live-Log their work on the task.)

Live-Log messages should occur frequently and should document all significant events during your work:

Your Live-Logs will serve several purposes:

Presentation

Each team will give a presentation that:

Prepare this presentation for an audience of your peers (advanced undergraduate computer science majors). You may assume that they know a good bit about computer science and free and open source software. However, you should not assume that they know anything about the specific project your team is working on or the technologies you have learned about in this activity. When discussing topics that are outside of the audience’s assumed knowledge, context and background sufficient for the audience to follow the presentation should be provided.

Grading

The Tech Spikes assignment will be assessed using the rubric below.

Click rubric to enlarge image.
Tech Spikes Rubric. Gap Analysis and Learning Resources. 3 pts - On time; Gap analysis is detailed and thoughtful about the project demands and the team members' knowledge and skills; Learning resources are well selected and detailed annotations are given; Wiki contains all required information, is correctly linked, neatly formatted and easy to read;  Writing is clear, concise, well organized, uses complete sentences and proper grammar; Individual's contributions to Live-Logs are detailed and clearly demonstrate sufficient, regular and sustained time and effort. 2 pts - On time; Gap analysis is complete; Learning resources seem appropriate and are annotated; Wiki contains all required information, is correctly linked but formatting may distract from readability; Writing has minor organizational or grammatical issues that do not distract significantly from meaning or understanding; Individual's contributions to Live-Logs demonstrate some investment of time and effort. 1 pt - On time; Gap analysis is cursory or missing information; Learning resources are not well suited to learning goals, team members or timeframe, and/or lack meaningful annotations; Wiki is missing required information, incorrectly linked, poorly formatted and/or difficult to read; Writing, organization or grammar interferes with understanding; Individual's contributions (or lack there of) to Live-Logs demonstrate insufficient investment of time and effort. 0 pts - Late, missing or substantially incomplete; Clearly demonstrates little to no investment in the assignment. Individual's lack of contributions to Live-Logs  demonstrate no investment of time and effort. Presentation. 3 pts - Presentation was interesting, engaging and told a cohesive story;  All required information was clearly presented in a well organized and easy to follow manner; Language, terminology and explanations were appropriate to the target audience; Use of media (slides, etc.) was visually appealing and enhanced the presentation; Demonstration provided clear and compelling evidence of substantial learning; Participation was well balanced across team members;  Presentation was at the target length. 2 pts - Presentation was generally well organized and included all required information; Language, terminology and explanations were generally appropriate to the target audience; Use of media effectively supported the presentation; Demonstration provided evidence of learning; Participation by individual team member was mildly unbalanced (more or less) as compared to others;  Presentation was  moderately shorter or longer than the target length. 1 pt - Presentation was difficult to follow and/or was missing some required information; Language, terminology and explanations missed the target audience at numerous points; Use of media was ineffective or distracting; Demonstration did not provide evidence of sufficient learning;  Participation by individual team member was moderately to heavily unbalanced (more or less) as compared to others;  Presentation was  significantly shorter or longer than the target length. 0 pts - Presentation was substantially incomplete; Clearly demonstrates little to no investment in the assignment; No demonstration was given; Individual team member did not participate.


Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License All textual materials used in this course are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License

GPL V3 or Later All executable code used in this course is licensed under the GNU General Public License Version 3 or later