- Divide MVP features among members
- / [Optional] Rename packages/classes
- Add the first functionality increment Thu, Oct 8th 23:59
Intro to tP Week 8
What's happening this week:
Now that you have practiced the workflow in the previous iteration, this week's iteration v1.2 adds the first wave of functional code changes.

v1.2
- Learning outcome: Able to update functional code while working in parallel.
- Product goal: Take the first step toward an MVP by delivering at least some functionality changes.
- Strategy: Define the smallest possible MVP (simplest versions of must-have features only). Each member tries to merge at least one PR that moves the product toward that MVP.
The breadth-first iterative approach requires each intermediate version to be a full working product. However, to make things a bit easier for you (as you are only getting started with the project), you need not release any new product version at the end of this iteration. This means you have the freedom to create PRs for small code changes, without the pressure to implement a feature end-to-end within one PR (or even within this iteration).
Things to note:
- Read our reuse policy (in Admin: Appendix B), in particular, how to give credit when you reuse code from the Internet or classmates:
- Note the individual and team expectations of the tP, if you haven't done so already.
COMMON MISTAKE: Not following the required phrasing style for the first sentence of Java method header comments.
1 Divide MVP features among members
Although the MVP version is scheduled to be released in v1.3 and not in the current iteration v1.2, in this task we refine the MVP features and divide them among the team members .
- Re-confirm MVP feature design. Revisit your MVP feature list that you decided in a previous week. Refine it if necessary to ensure the following.
- It consists of not only
the most essential features of the target product, but also
the simplest implementation of those features. - It will still be a .
- It consists of not only
- Decide which team member implements which feature.
Reminder: We recommend that the work be divided primarily based on features/enhancements, not by components.
Ways to level up your tP game:
Avoid from the start the feature flaws and implementation bugs in the panels below that could cost you marks if they remained in the final version.
Especially note the part on overzealous input validation, which is a common issue found in tPs.
2 / [Optional] Rename packages/classes
- If you wish to rename AB3 packages/classes to fit your product, this is the best time to do so, and is best done by one person.
Renaming packages/classes is optional. It is fine to keep the existing ones.
3 Add the first functionality increment Thu, Oct 8th 23:59
Each member is expected to in each .
Prefer smaller PRs.
Example Suppose you are asked to implement a feature F in the current iteration. Instead of creating one big PR for it, you can start with a smaller PR that implements a very VERY simple version of F, followed by a few more PRs that improve F incrementally.
Side reading: [blog post] Small Pull Requests: 6 reasons why they are the best choice.
Steps:
- Select a code change to implement, as follows:
- Consider the feature that you have been assigned to implement for the upcoming MVP version of the product (which will be released in iteration
v1.3, not in the current iterationv1.2). - Pick a small code change that you'll need to do to implement that feature, i.e., a small code change contributing toward the feature, not the entire feature itself.
This code change should take the codebase forward in a meaningful way, without 'breaking' the codebase or existing tests.
- Implement that code change while following the workflow that you practiced in the previous week. A summary of the steps:
- Create an issue for it. Assign it to yourself. Assign it to milestone
v1.2. - Create a PR from a separate branch in your fork. Assign it to
v1.2. - Get the PR reviewed.
- Get the PR merged.
- Close the corresponding issue.
- Continue to implement code changes (i.e., repeat S1 and S2) that move you toward your MVP feature(s). We recommend creating when implementing code changes with no/low dependency between them.
- Wrap up the milestone. When the iteration period is over, do the following:
- Move any pending issues/PRs to the next milestone (i.e.,
v1.3). - Close the milestone.
- There is no need to do a product release.
End of tP Week 8
Shocked by iP to tP transition? Around this time you will realize moving code forward in the tP is much slower than in the iP. As discouraging as this might feel, there are several ways this can contribute toward the learning outcomes of this course, and it is not expected to affect your tP grade either.
Feel free to improve AB3 in any way you see fit. While not very 'buggy', AB3 is not meant to be a 'model solution' either. In particular, find and fix any bugs it has. If you are not sure if something is a bug or intended, you can post in the forum to check.
While we are on the topic, also note that the architecture of AB3 doesn't suit every kind of application either. As you gain more experience in other application domains, you will learn different types of architectures to add to the collection of architectures you can consider for future projects. The same goes for the tool chain and the tech stack of AB3. Therefore, do not try to apply AB3 as a template for every other project you encounter in the future.