Skip to content

Finalize Topic Collection Schema #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
FlatBallFlyer opened this issue Jan 18, 2024 · 32 comments
Closed

Finalize Topic Collection Schema #35

FlatBallFlyer opened this issue Jan 18, 2024 · 32 comments
Assignees

Comments

@FlatBallFlyer
Copy link
Contributor

FlatBallFlyer commented Jan 18, 2024

Review use cases for the Topic data structure and planning documents, then finalize the Schema for the Topic collection.

Clarification Added 2/1/24

This is the Curriculum template we are currently using. The topic and related collections should accommodate this information. This shows both EK and Odin resources. Things are organized to allow sections to be visibly collapsed to make the large amount of content more consumable. Google Curriculum Template

@michquinn michquinn self-assigned this Jan 19, 2024
@michquinn
Copy link
Contributor

michquinn commented Jan 20, 2024

Currently proposed additions are:

  • Topic Id
  • Outcomes: a list of skills with a slug name, text and level (an enum consisting of the following values: Generalist, Specialist-SRE, Specialist-Data, Specialist-API, Specialist-UX)

@michquinn
Copy link
Contributor

Some thoughts that come to mind reviewing the Topic schema:

  • The domain field is obviously taken from EngineerKit, but while it may be useful to preserve this categorization for those topics that we are adopting from there, do we really want to impose this on all other topics that may be added in the future?
  • The status property has to be amended as per Topics schema has Partner status property #31
  • Skills at it stands corresponds one-to-one to "learning outcomes" in EngineerKit. However, as per the ROADMAP, the system should support the following:
    • Recommending topics to add to an apprentice's curriculum based on their skills (for the Now scope only or also for later on?)

Topics are clearly related to curricula but I don't think we've laid out the exact relationship/use cases anywhere.

@FlatBallFlyer
Copy link
Contributor Author

Domain: There is nothing to say that a new domain could not be added at any point in the future, those are just the current values. I would actually suggest that we might even want to reduce the domains considerably. The grouping seems a bit arbitrary to me.

Skills: The skills referenced in the Now scope are the self-assessment values provided. If an apprentice has self assessed to possess a skill then resources for that skill should not be recommended. They can still be used, and added to a curriculum but they are not recommended. This is not part of the Topic microservice.

This does imply that we have a self assessment collection somewhere. That is likely a collection we missed, and it is tightly linked to curriculum, so I propose that we add those endpoints to the curriculum API.

Note that the curriculum API will also have a resource review collection, and we may want to add ratings to the resource model, and find a way to update resource ratings out-of-band.

I would also suggest that you evaluate the resource type list. I think that list has way to many values, and we need to reel it in to the values that have meaning in our context. This will require that the scraping script be updated.

We may also want to consider scraping some resources from the Odin Project. You can review the Oden Project Roadmap items in this document, and the Odin Full-Stack Path and then propose an approach for adding those resources (add new domains? - use existing domains - and add a new skill level of "Apprentice Candidate" for Odin resources?)

@FlatBallFlyer
Copy link
Contributor Author

More clarification on the Domain attribute. Think of it like this, the list of valid values has a very low volatility. Because of the way the API and UI are built, adding a new valid value, and updating the corresponding list in the enums collection, is the only change required. The API only needs to change if there is specific logic tied to the new value, and the UI will get the new valid value added to select lists with no code changes.

@michquinn
Copy link
Contributor

michquinn commented Jan 24, 2024

Thinking about the resource type field, it seems to me that rather than using fine-grained classifications such as video/video series/film or article/book/document, it might be more useful to have a few different properties describing important characteristics of the resource. For example:

  • Online/Offline: This could be a binary or an array accepting either or both values (such as books that are available on the web and in print)
  • Media Type: I was original thinking of a distinction between textual and audiovisual content, but it could also be represented as an array of the following: "text", "video", "audio", and "image". I'm not sure how you would address audio content with subtitles or a transcript, that would probably require another property.
  • Primary purpose: Broadly, I think most resources could be described as Instructional/How-to, Explanatory, Evaluatory, and Credentialing. Outside that framework are tools and exercises, and I'd say playing with a tool for learning purposes could constitute an exercise even if unguided.

The free/paid distinction is already captured in another property, and the characteristic of length which separates "video" from "video series" and "film" or "article" from "book" can be captured in the duration property.

@FlatBallFlyer
Copy link
Contributor Author

I like the thinking - the primary value of the "resource type" attribute is to match it to a learning style. Some people hate watching YouTube, others hate "step-by-step tutorials". Maybe we just call it that - learningStyle. Then if we wanted we could make it a list of styles that are suited to the resource???

Data design in general, a list of strings is better than a list of booleans.

@michquinn
Copy link
Contributor

michquinn commented Jan 24, 2024

There would still be at least two dimensions there, since a step-by-step tutorial can take the form of an article or a video, for example.

I suppose you could do something like

learningStyle:
  formats: ["video", "text"]
  resourceTypes: ["explanations", "tests"]

Have to decide on better names but you get the idea

Oh, and video/image could just be "visual", at least for learning style. For resource types that distinction matters

@michquinn
Copy link
Contributor

michquinn commented Jan 24, 2024

There seems to be some overlap with the proposed "level" and the existing "isGeneralistSkill" properties. Since the former already includes "generalist" as an option, the latter could be replaced with it.

Edit: I see "level" was proposed to be part of "outcomes". What was the idea behind this property again?

@FlatBallFlyer
Copy link
Contributor Author

FlatBallFlyer commented Jan 25, 2024

I like the resourceTypes list, and here is my proposal on language. I think some clarification is justified.

  • Outcomes should change to Skills, and skills have a level
    • generalist, resident, master, senior, distinguished (for now, names are still a bit up in the air so this is a start)
  • Resources should have a list of the skills this resource addresses (map resource to outcomes)
  • ResourceType seems to be causing confusion, change the name to learningStyles.
    • The purpose of resourceType is to map resources to a persons learning style.
    • I need to add a learning style to the person schema ;)

If we do this, then I don't think we need the format attribute. If a person has a learning style of "video lecture" and the resource has a learning style of "video lecture" then I think we captured the format, or at least supported the requirement, without having to create a new attribute and logic related to both type and format.

I think it's best to avoid creating things that might require a matrix of functions, or a matrix decision tree. Some times they are needed and important but you should really think about is the complexity required to meet the requirements or are we trying to perfectly capture information that is not needed by any feature but adds both maintenance burden and increases the "technical interest rate" of a piece of code.

@FlatBallFlyer
Copy link
Contributor Author

FlatBallFlyer commented Jan 25, 2024

The person learning styles feature has a cup-cake, birthday-cake, wedding-cake implementation.

person: 
  learningStyles: 
    exclude: [list of styles]

and later on we can do more with "include", "and or" logic or others, this is just a starter

@GrahamPaasch
Copy link
Contributor

Hi @michquinn . Checking in with you on how to contribute to this issue.

@michquinn
Copy link
Contributor

michquinn commented Jan 26, 2024

Hi, @GrahamPaasch. There's no formal process really that I'm aware of, so if you have any suggestions for the schema, I'd be interested in hearing your thoughts 🙂 I hope that answers your question

@michquinn
Copy link
Contributor

michquinn commented Jan 26, 2024

@FlatBallFlyer Just to make sure I'm understanding correctly. There seem to be some conflicting/overlapping suggestions so I'm trying to harmonize them

The proposed property topic.outcomes is really just topic.skills but extended. Currently the latter property is an array of strings, which we want to make an array of objects which would look something like this

topic:
  skills:
    - name: Provisioning Cloud Infrastructure
      description: Use Terraform to provision infrastructure with a cloud provider
      level: Resident
      domain: Specialist-SRE
    - name: Clean Code
      description: 
      level: Generalist
      domain: Generalist

Resources then reference these skills

topic:
  resources:
    - name: Terraform in 100 seconds
      type: Explanatory Video
      skills:
        - Provisioning Cloud Infrastructure
    - name: Getting started with Terraform
      type: Instructional Text # you wanted to name this learningStyle here as well?
      skills:
        - Provisioning Cloud Infrastructure

Does that look more or less like what you had in mind?

@FlatBallFlyer
Copy link
Contributor Author

More or less, I was thinking a slug name (short, no white space) and the list can be discussed with a PR

@GrahamPaasch
Copy link
Contributor

GrahamPaasch commented Jan 26, 2024

@michquinn Regarding learningStyles, @FlatBallFlyer and I just finished an indepth discussion of this concept. I am not convinced of the evidence that supports catering to learning styles as an effective learning strategy. What convinces me most is evidence from the top of the evidence-based medicine food pyramid, meta-analyses and systematic reviews.

These can be found on sites like PubMed and typically come with a DOI string identifier. A lot of important progress has been made recently in regard to accessing these resources due to the creation of Sci-Hub. Accessing these papers are now as simple as pasting the DOI string into a Telegram conversation with a Sci-Hub bot. As most of these studies are funded in part or in whole by tax dollars, it is ethical for people to access them for free, since the payment has already been collected. What is unethical is the extortion of these resources for personal financial gain, and syphoning benefits away from the public, the researchers, and the research subjects.

Here is a ChatGPT analysis of my claims.

I agree with including a resource filtering feature, and with assigning tags to the resources, but I disagree that learningStyles is an effective tag. Instead, I advocate for a tag called "learningStrategies", which classifies resources as a type of educational strategy, from a list of strategies with the highest backing evidence, ideally with the backing evidence included somehow, such as by including the DOI, which is simply an identifier. The DOI string is outside the scope of a discussion about the ethics of methods for accessing scientific research.

According to my research using ChatGPT, here are the 13 learning strategies with the highest level of backing evidence to prove their efficacy:

  1. Spaced Repetition (Cepeda et al., 2006): 10.1037/0033-2909.132.3.354
  2. Retrieval Practice (Roediger and Karpicke, 2006): 10.1037/0096-3445.135.2.344
  3. Interleaved Practice (Rohrer and Taylor, 2007): 10.1037/0096-3445.136.4.653
  4. Elaborative Interrogation and Self-Explanation (Dunlosky et al., 2013): 10.1177/1529100612453266
  5. Concrete Examples (Hattie, 2009 - "Visible Learning"): This is a book, and therefore does not have a DOI. ISBN: 978-0415476188
  6. Dual Coding (Clark and Paivio, 1991): 10.1037/0033-295X.87.3.245
  7. Feedback-Driven Learning (Hattie and Timperley, 2007): 10.3102/003465430298487
  8. Goal Setting (Locke and Latham, 2002): 10.1146/annurev.psych.53.100901.135145
  9. Teaching Others (Fiorella and Mayer, 2013): 10.1037/a0034248
  10. Metacognitive Strategies (Dunlosky et al., 2013): Same as Elaborative Interrogation, 10.1177/1529100612453266
  11. Problem-Based Learning (Strobel and van Barneveld, 2009): 10.1007/s10734-008-9119-8
  12. Collaborative Learning (Kyndt et al., 2013): 10.1016/j.edurev.2012.12.002
  13. Scaffolding (Van de Pol et al., 2010): 10.1016/j.edurev.2010.01.001

The implementation looks like this:

topic:
  resources:
    - name: Terraform in 100 seconds
      type: Explanatory Video
      skills:
        - Provisioning Cloud Infrastructure
    - learningStrategy:
        "Dual Coding": "10.1037/0033-295X.87.3.245"
    - name: Getting started with Terraform
      type: Instructional Text
      skills:
        - Provisioning Cloud Infrastructure

And it is not necessarily incomplatible with an implemenation of a learningStyles filtering mechanism.

@GrahamPaasch
Copy link
Contributor

GrahamPaasch commented Jan 26, 2024

Something I'm more excited about however, would be "resumeGoal". This key would contain a value of what you could honestly put onto your resume, and back it up, after you consumed the resources. It would be a bullet point string and could be used for automatic resume completion delivered as a reward for acheiving specific milestones on MentorHub.

For example, of the many qualifications listed in this job post there are at least these two that appear to be easy to achieve via participation on MentorHub:

  1. "A thorough understanding of the best practices for services execution."
  2. "Strong coaching and mentoring skills."

Therefore, these might be good resumeGoal bullet points to assign to learning resources. Once the prerequisite learning resources have been completed, the learner can honestly state and back up in an interview that they have these skills, and even describe the exact means through which the skills were gained.

It could look like this:

resumeGoal:
  - servicesExecutionBulletPoint: "A thorough understanding of the best practices for services execution via the Services Execution Manual"
     prerequisites: 
       - name: Services Execution Manual
         type: TextBook
         ...
  - mentoringBulletPoint: "Strong coaching and mentoring skills via the mentorship of 5 Agile Institute mentees over 6 months, leading to a 50% increase in their salary through career advancement."
     prerequisites: 
       - name: Agile Institute Mentoring
         type: Agile Institute volunteer work
         ...

@michquinn
Copy link
Contributor

michquinn commented Jan 26, 2024

There's a lot to digest here so I may come back later with more questions but to start with is there a master list somewhere of those learning strategies? I see you've listed 13 of them (and that's quite a few already!), I just don't have a clear sense of which ones we'll be limiting ourselves to and why.

I like the idea of resumeGoals as well.

The idea of learning styles or strategies was Mike's, as was the matching of people with resources. That's not to dismiss it at all, but rather so I can give you a sense of what my initial thoughts were when I proposed changes to the resourceTypes property/attribute.

My purpose in introducing the format and type fields was to whittle down the list of resource types such as "book", "article", "document" etc. and simply focus on the most basic characteristics of these resources so people could more easily choose what they wanted to engage with at a given time. I think it's useful to know whether you're clicking on a link to a video or an article, I don't think it's all that important to know whether the video is "just a video", a film, or a series. The length of the video (or series of videos) is more important so you can make a decision about whether you want to start watching it now or at another time. (Though I haven't explicitly made this point before it could also be useful for accessibility purposes. Audiovisual content without subtitles or a transcript may not be appropriate for someone with hearing impairments, for example. Allowing said resources to be filtered out could be useful)

Likewise for type, I thought a user might want to filter resources if, for example, they feel they need an in-depth explanation for how something works, vs just needing to a get a particular task done with the steps on how to do it. The question of "what does infrastructure as code mean and why would I want to implement this strategy?" is quite distinct from "how do I write an ansible playbook to do XYZ?"

@FlatBallFlyer
Copy link
Contributor Author

FlatBallFlyer commented Jan 26, 2024

I like the idea, but you are getting ahead of the game. This scope here is to capture information about different Topics of interest.

  • Define Skills - related to career alignment and in the future to be referenced in goals.
  • Define resources - for gaining those skills, with information that empowers mentors to make good assignments
  • Future use of this data will be closely aligned to curriculum.
  • DJR process will help build goals that match to skills.

@michquinn
Copy link
Contributor

@GrahamPaasch I've finally read your comments more closely, I really like the resumeGoals concept you've laid out, I think it works a lot better than skills as we have it. I would consider a slightly different structure along the following lines, though

resumeGoal:
  - name: "Services Execution"
    description: "A thorough understanding of the best practices for services execution via the Services Execution Manual"
    prerequisites: 
      - name: Services Execution Manual
        type: TextBook

Another matter is whether we would consider consumption of a resource as sufficient proof of having met that goal or if an assessment or functioning work sample is necessary

Types are still undecided. It was brought to my attention by @FlatBallFlyer that my broad approach of categories like explanatory-text, explanatory-video, instructional-text, instructional-video may not be fine-grained enough to support proper filtering of resources appropriate to different apprentices' needs.

If we are to take your approach of associating a learning strategy with each resource, it does require that anyone categorizing resources understand those strategies (whether we would want to filter by such strategies from the UI or just leave it to the software to suggest resources on the basis of said categories is another question). It would also seem to me that if it is non-trivial to determine which learning strategies fit a given resource, that the property should be optional or otherwise have an "undetermined" option so resources can still be added when it is uncertain how to classify them.

@michquinn
Copy link
Contributor

michquinn commented Jan 31, 2024

While I was trying to search for existing categorizations that we might use as inspiration (particularly published linked data vocabularies), I came across a standard from the IEEE. Unfortunately, it appears to be paywalled: https://ieeexplore.ieee.org/document/9262118/definitions

There is a Wikipedia article which gives an overview, however: https://en.wikipedia.org/wiki/Learning_object_metadata

EDIT: Other resources
https://oerschema.org/
https://schema.org/LearningResource

@GrahamPaasch
Copy link
Contributor

GrahamPaasch commented Jan 31, 2024 via email

@GrahamPaasch
Copy link
Contributor

I think this is what we're looking for:

mentorHubProjectSchema:
  UserProfile:
    - UserID: Unique identifier for each user
    - Name: Full name of the user
    - Email: Email address for communication
    - Role: Role of the user (Apprentice, Mentor, Engineer, etc.)
    - CareerStage: Current stage in career progression
    - LearningStylePreferences: Describes user's preferred learning styles
    - MentorID: ID of the assigned mentor (if applicable)

  SkillsAndCompetencies:
    - SkillID: Unique identifier for each skill
    - SkillName: Name of the skill
    - Description: Brief description of the skill
    - DifficultyLevel: Difficulty level of the skill
    - RelatedCareerStage: Career stage where this skill is relevant

  LearningResources:
    - ResourceID: Unique identifier for each learning resource
    - Title: Title of the resource
    - Type: Type of the resource (Video, Article, etc.)
    - Topic: Topic or subject area of the resource
    - AssociatedSkills: Skills related to the resource
    - Duration: Estimated time to complete the resource
    - Format: Format of the resource (Online/Offline)
    - AccessibilityOptions: Available accessibility options (e.g., subtitles)

  MentorshipSessions:
    - SessionID: Unique identifier for each session
    - MentorID: ID of the mentor conducting the session
    - ApprenticeID: ID of the apprentice attending the session
    - Date: Date of the session
    - Duration: Length of the session
    - FocusArea: Main focus or topic of the session
    - Feedback: Feedback provided during the session
    - FollowUpActions: Actions or steps to be taken following the session

  CareerProgressionAndCertifications:
    - UserID: ID of the user
    - CareerStage: Current career stage of the user
    - Achievements: Notable achievements of the user
    - Certifications: Certifications awarded to the user
    - DateAchieved: Date when the certification or achievement was awarded
    - MentorFeedback: Feedback from mentors on career progression

  ProjectWorkExperience:
    - ProjectID: Unique identifier for each project
    - UserID: ID of the user who worked on the project
    - Title: Project title
    - Description: Brief description of the project
    - SkillsApplied: Skills applied in the project
    - MentorID: Mentor associated with the project
    - Outcome: Outcome or result of the project
    - Duration: Duration of the project

  FeedbackAndReviews:
    - ReviewID: Unique identifier for each review
    - UserID: ID of the user being reviewed
    - ReviewerID: ID of the person providing the review
    - Date: Date of the review
    - Content: Content of the review
    - Ratings: Ratings given in the review

# This schema is designed to be flexible and scalable, aligning with the goals and structure of the Agile Learning Institute's mentorHub. Feedback and suggestions for improvements are welcome.

https://chat.openai.com/share/db7fe120-fd91-4c28-85bf-d95114b19a6d

@GrahamPaasch
Copy link
Contributor

But that's based on our discussions, as I said I think we need to capatilize on AI and base our decision making on "knowing unknowns" by prompting AI to provide proposals backed up by the best possible scientific evidence:

Via ChatGPT:
Redesigning the schema for the Agile Learning Institute's mentorHub project requires a focus on evidence-based practices in education, career development, and technology. As an expert in these areas, I'll integrate insights from relevant scientific literature to enhance the effectiveness of the schema. Here, I'll think aloud about each component, referencing high-quality evidence where applicable.

User Profile

  • Proposed Changes:
    • Add LearningGoals: Short-term and long-term learning objectives of the user.
    • Add CareerAspirations: Specific career goals.
    • Remove LearningStylePreferences: Research indicates that learning styles (visual, auditory, kinesthetic, etc.) are not as effective as once thought. A meta-analysis by Pashler et al. (2008) suggests that there is little evidence to support the efficacy of learning styles in improving learning outcomes (DOI: 10.1111/j.1539-6053.2009.01038.x).
  • Rationale: Focusing on goals and aspirations is more in line with evidence-based approaches to motivation and achievement in education.

Skills and Competencies

  • Proposed Changes:
    • Integrate Bloom's Taxonomy Levels: To categorize skills not just by difficulty, but by cognitive process (remembering, understanding, applying, analyzing, evaluating, creating).
  • Rationale: Bloom's Taxonomy is a well-established educational framework that can help in structuring learning pathways more effectively.

Learning Resources

  • Proposed Changes:
    • Add Evidence-Based Rating: Rate resources based on the evidence supporting their efficacy.
    • Remove Type: As learning styles are less relevant, categorizing resources by type (video, text) may not be as critical.
  • Rationale: An evidence-based approach to resource selection aligns with the principles of effective learning. This also aligns with Dunlosky et al. (2013) who evaluated various learning techniques and found techniques like practice testing and distributed practice to be highly effective (DOI: 10.1177/1529100612453266).

Mentorship Sessions

  • Proposed Changes:
    • Add Structured Feedback Mechanism: Incorporate a structured format for feedback based on SMART (Specific, Measurable, Achievable, Relevant, Time-Bound) criteria.
  • Rationale: Effective feedback is crucial in learning. A systematic review by Hattie and Timperley (2007) emphasizes the importance of feedback in accelerating learning (DOI: 10.3102/003465430298487).

Career Progression and Certifications

  • Proposed Changes:
    • Integrate Competency-Based Assessments: Assess skills based on demonstrated competencies rather than time-based metrics.
  • Rationale: Competency-based education is gaining traction as an effective approach, as evidenced by various studies showing its benefits in higher education and professional training.

Project/Work Experience

  • Proposed Changes:
    • Incorporate Project-Based Learning elements: Focus on real-world projects that integrate multiple skills.
  • Rationale: Project-based learning is an effective educational approach, as highlighted by Strobel and van Barneveld (2009) in a meta-analysis (DOI: 10.1007/s10734-008-9119-8).

Feedback and Reviews

  • Proposed Changes:
    • Implement 360-Degree Feedback: Include feedback from peers, mentors, and self-assessment.
  • Rationale: 360-degree feedback is a comprehensive approach that can provide more balanced and holistic views, as supported by research in organizational settings.

Overall Schema Considerations

  • Evidence-Based Design: The schema should be grounded in evidence-based educational practices. This includes the integration of meta-cognitive strategies and self-regulated learning principles, as these have been shown to be effective in enhancing learning (Dunlosky et al., 2013, DOI: 10.1177/1529100612453266).
  • Adaptability and Continuous Improvement: The schema should be adaptable, allowing for continuous updates and improvements based on the latest research findings in education, psychology, and technology.

By redesigning the schema with these changes, the mentorHub project can be more closely aligned with current evidence-based practices in education and professional development. This approach ensures that the platform remains effective, relevant, and capable of delivering high-quality learning experiences.

@GrahamPaasch
Copy link
Contributor

This:

mentorHubProjectSchema:
  UserProfile:
    - UserID: Unique identifier for each user
    - Name: Full name of the user
    - Email: Email address for communication
    - Role: Role of the user (Apprentice, Mentor, Engineer, etc.)
    - CareerStage: Current stage in career progression
    - CareerAspirations: Specific long-term career goals of the user
    - LearningGoals: Short-term and long-term learning objectives

  SkillsAndCompetencies:
    - SkillID: Unique identifier for each skill
    - SkillName: Name of the skill
    - Description: Brief description of the skill
    - BloomTaxonomyLevel: Categorization based on Bloom's Taxonomy (remembering, understanding, applying, analyzing, evaluating, creating)
    - RelatedCareerStage: Career stage where this skill is relevant

  LearningResources:
    - ResourceID: Unique identifier for each learning resource
    - Title: Title of the resource
    - Topic: Topic or subject area of the resource
    - AssociatedSkills: Skills related to the resource
    - Duration: Estimated time to complete the resource
    - Format: Format of the resource (Online/Offline)
    - AccessibilityOptions: Available accessibility options (e.g., subtitles)
    - EvidenceBasedRating: Rating based on the evidence supporting their efficacy

  MentorshipSessions:
    - SessionID: Unique identifier for each session
    - MentorID: ID of the mentor conducting the session
    - ApprenticeID: ID of the apprentice attending the session
    - Date: Date of the session
    - Duration: Length of the session
    - FocusArea: Main focus or topic of the session
    - Feedback: Structured feedback based on SMART criteria
    - FollowUpActions: Actions or steps to be taken following the session

  CareerProgressionAndCertifications:
    - UserID: ID of the user
    - CareerStage: Current career stage of the user
    - Achievements: Notable achievements of the user
    - Certifications: Competency-based certifications awarded to the user
    - DateAchieved: Date when the certification or achievement was awarded
    - MentorFeedback: Feedback from mentors on career 

https://chat.openai.com/share/db7fe120-fd91-4c28-85bf-d95114b19a6d

@FlatBallFlyer
Copy link
Contributor Author

These comments are well beyond the scope of this issue. This issue is limited to the Topic domain, may of your collection names are off, and there is a lot of work to go. If you want to move some of this content onto other issues we can consider them there. This issue should address only Topics, Resources, and Skills. Many of these schema's already exists as drafts, with open issues. Please limit discussion here to the scope of the issue.

@michquinn
Copy link
Contributor

michquinn commented Jan 31, 2024

That structure looks great. Regarding sufficient proof of having met a goal, I advocate for an assessment and/or a portfolio example. Also, a certification would be a great qualifier.

We're in agreement here (including your addition of certification which I neglected to add)

I'm not sure how important it is to classify resources by "type", unless it's a paid/free classification type. The most important thing to include with a resource in my opinion is how to access the resource, such as a link to the website or file storage location. Also, an ETA for how long it takes to complete. I'm not sure how meaningful the "type" classifications would actually be in the end, and as I wrote before I'd like to avoid playing to biases and validating toxic preferences.

I'm going to push back on this pretty strongly. There are many reasons a user may want to filter by media type. Just a few off the top of my head:

  • Environment: An apprentice may not be in a setting that is conducive to consuming audio content. For example there could be too much background noise to make out what is being said, or they not have headphones and be in a place where playing audio out loud is unacceptable, such as a library or on public transportation.
  • Language ability: Depending on the linguistic background of the apprentice, some audio content may be challenging to understand (keep in mind audio content varies in quality, and speakers/presenters may speak in a fashion which some can find challenging whether due to accent, speed, or other factors). Reading in this case would be more accessible (the reverse can be true as well, some may find listening easier). Difficulty understanding audio can also be due to hearing conditions.
  • Network connectivity: Video and audio are much larger, and if not downloaded in their entirety (which may be prohibited), have higher requirements for network speeds and reliability. Textual resources, on the other hand, can be downloaded in advance (even if "downloading" means having loaded the tab in one's browser on a mobile device such as a smartphone or laptop when they had access to a better connection)

Besides the fact that unlike other categorizations, describing a resource as "video" or "text" is straightforward, taking away this categorization removes the ability for apprentices (or anyone else) to filter content with no apparent benefit. You are making an assumption here that these divisions are unimportant, and imposing that assumption on users by removing their ability to see this information and choose whether to make use of it.

Regarding learning strategies, those are separate from resources in a way. For example, whenever I see practice questions in the AWS Cloud Practitioner materials I screenshot them and put them in ANKI. Then when I do the ANKI deck then I am doing a "Spaced Repetition" learning strategy, using materials from whatever resource I can find that contains practice questions. The "type" of the resource isn't as relevant to me as whether or not it contains practice questions. It's really important that people who want to learn are using effective learning strategies, and it's more important that they use effective learning strategies than it is that they think they're using effective learning strategies.

If strategies aren't an inherent part of resources then they need not be included as a property thereof

I'm very skeptical that resources are of meaningfully different "types". Most things online are a form of dual coded information. I would say that a live dance class is a different "type" of learning resource than a video series on dance, but only if there is active physical intervention.

Except that you could potentially ask questions and interact with the instructor, allowing them to modify their teaching on the spot, whereas a video series is recorded and no longer going to change. But then that is the difference between studying vs being taught actively.

Can you let me know in a brief and succinct way what our goal is here? I know we're trying to finalize the topic collection schema, but to what ends? What are we trying to do here to capture information about different "topics of interest" that has not already been captured in EngineerKit?

Well, I'm of the opinion that resources are a top-level category, topics I'm less sure of. Ultimately, though, we want to describe the resources that form the basis of a curriculum (curricula will likely include a couple of other, basic items but resources are a critical part). The way curricula are currently set up, there is a "Now" scope consisting of the items (resources grouped by topic) which an apprentice is to focus on during the week.

Besides describing properties of the resources themselves (such as duration/time to complete), some sort of structure is useful to help mentors and apprentices alike decide on which resources to add in a single "sprint" and which to work on next.

It occurs to me that the current template primarily consists of courses (e.g. EngineerKit and the Odin Project) divided into modules, with each module containing resources organized into groups (corresponding to the topics of this schema). There is also at least one attempt at creating a new course, "SRE"

@FlatBallFlyer
Copy link
Contributor Author

FlatBallFlyer commented Jan 31, 2024

MentorshipSessions are encounters, and there are encounter plans and encounters. Additional information to be added to the person collection (what you called a user profile) will include goals and other aspects, but we are building this one step at a time.

Your continued insistence that there is no such thing as a learning style has always bugged me and I couldn't find the right words. You're failing to account for people who have different learning abilities, I'm confident that people who suffer from dyslexia will perform better when they're giving video or audio content. I'm convinced that people who suffer from significant ADHD will perform better when you give them tutorials than when you give them lectures. People who deal with performance anxiety are likely to perform better with lectures than they are with tutorials.

Resource ratings will be provided by apprentices when they complete the resource they'll be given an opportunity for a brief writing that does not need to be covered within the scope of this issue

The only reason that we have for capturing skills is to help us set goals and document accomplishments. A skill should be a referencable, specific, technical, example of putting something into practice. Skills can be the generalist level "having the ability to discuss" a topic or at the specialist level "experience implementing X tool to solve Y problem." The language used for skills is the language of job requirements and resumes. You'll need to explain to me the value of using blooms taxonomy in this case. IMHO it provides a significant cognitive load (explain it to users) - and gains us little to no real value because of the difficulty in capture and maintaining that data.

@michquinn
Copy link
Contributor

michquinn commented Jan 31, 2024

I do wonder if for the categories that are difficult to iron out (such as granularity of types) that we might not be better served by leaving those as optional, and then staff can go in and add tags and adjust them as they see fit. That is:

  • fundamental media type (video, text, audio, image) is mandatory, perhaps an array of strings
  • More specific classes (lecture, step-by-step video tutorial, getting started article) can be left up to institute staff to collaborate on. They are optional tags included on resources. Tags can be added at any time, more than one tag could be used potentially

@FlatBallFlyer
Copy link
Contributor Author

Guys, I think we're doing this all wrong. If we have this kind of detail to discuss, you should create a branch make the changes to the schema files and submit a pull request. These will be much easier topics to discuss when we have a concrete design asset.

@michquinn
Copy link
Contributor

You should see a PR from me by this weekend

@GrahamPaasch
Copy link
Contributor

Here's a PR I made. While it does make sense to have the schema enforce data integrity at some level, I think a more flexible and adaptable schema will serve this project a lot better in the end, as what is valuable to learn in technology varies quite a bit from year to year. I think the EngineerKit Modules belong as part of data feed to an invoked schema, rather than hard coded within the schema. Similar with resource types. Although it allows for mistakes and inconsistencies in the data, I think it's worth the risk in order to be able to use the schema flexibly and creatively, which will matter a lot as things change. I believe that AI will totally reshape most things over the coming years.

https://github.com/agile-learning-institute/mentorHub-mongodb/tree/issue35_topicsschema_proposal
https://chat.openai.com/share/db7fe120-fd91-4c28-85bf-d95114b19a6d

I think this issue can be closed, as further discussions are better suited to occur alongside visible schema change proposals via commits.

@FlatBallFlyer
Copy link
Contributor Author

There are no PR's open on the repo - show me your proposed schema and I'll review it then. I suggest you review the standard WorkFlow before we go any further. I would point you to the Architecture Principles - Separation of Concerns for our standards on where data quality enforcement occurs. You only get one chance to ensure data quality in a solution like this, and that is to enforce data constraints when it is captured.

I don't have time to read a lengthily ChatGPT transcript. I can not comment on your ideas until I see how they impact the schema's in this repo. The issue will remain open until the schema is finalized. EngineerKit is seed data, not an integration source. We also have resources related to Odin that will need to be in the system.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants