-
Notifications
You must be signed in to change notification settings - Fork 454
Description
Preamble
Both the User Guide and the Developer Guide has accumulated cruft over time.
Some issues include:
- Sections that students are expected to read but not maintain (e.g. Testing, Dev Ops)
- No clear separation between the various types of documentation
- Insufficient visual aids
Discussion
We need to find a way to refactor the documents such that students can find the resources that they need effectively.
According to the model proposed by Daniele Procida in his talk and accompanying article, we should divide our guides into distinct sections:
Tutorials
These are meaningful exercises that achieves a single, concrete goal. Each tutorial should be platform agnostic as much as possible to ensure that all students can replicate the tutorial successfully. Tutorials should consist of bite-sized steps with little side-effects so that students can establish a clear causality between their actions and results. Extraneous discussion should be left to other sections of the guide and alluded to briefly.
How-To Guides
These guides attempt solve common problems preemptively. Each guide should clearly outline a series of steps a student can take to achieve a specific goal but should allow some leeway so that students can adapt the guide to their own use-case. Each guide should have a clear title so that students do not have to read through an entire guide to determine its usefulness.
Reference Guides
Since we already have robust documentation in the code base, there seems to be no need for a separate document.
Further Discussion/Explanations
Optional reading that explores the rationale behind:
- Design decisions: choice of design patterns, architecture, alternatives considered
- Historical reasons: impact and implication of legacy code
- Technical constrains
These discussions should be divorced from the code base as they serve as a contextual guide.
Proposed solution
Since AB4 is targeted at confident students who are already comfortable navigating the code base, we choose to tailor documentation for AB3.5.
Keeping in mind that both guides need to end up being collated into one file for submission:
Developer Guide
- Refactor sections that students do not need to maintain into separate documents
- Documentation
- Dev Ops
- Testing
- Discussion
- Create a landing page for the following tutorials:
- Setting up the development environment
Crucial for every student. - Enhancement of AB3.5 (Current candidate for the task is implementing the
remarkfeature)
This tutorial could potentially be a graded task for students to get comfortable with the code base. - Executing a morph of AB3.5 (Current candidate for the task is to morph AB3.5 into a to-do list app)
Lessons learnt from past observations are that the termmorphis not very well-understood and students struggle to get to a point where all of them can execute the recommended fork workflow without running into extensive merge conflicts. The deliverable at the end of the tutorial should be a cleanly refactored code base. - Plotting of various UML diagrams with PlantUML
We decided upon PlantUML as it is an open-source, cross-platform tool for plotting UML diagrams that plays nice with git versioning.
- Setting up the development environment
- Create a landing page for the following how-to guides:
- Adding a new UI component
🦀UI is gone🦀 and changes to the UI are potentially gradable. - Packaging/usage of resources in the application JAR
Students tend to completely forget that they eventually need to package their application into a JAR, resulting in a bit of a sticky situation just before their PE dry run. - Adding of dependencies
Even though the use of external dependencies is not strongly encouraged, students should be equipped with the knowledge to consume libraries in a replicable fashion. - Styling of PlantUML diagrams
Hands down one of the biggest pain points of PlantUML. Replicating the diagrams drawn in PowerPoint was a chore due to the lack of cohesiveness in the official docs. Hoping that this will alleviate some of that for the students and in turn the graders' eyesight.
- Adding a new UI component