Planning Your Project

Successful project planning is the backbone of any hackathon project.

After coming up with an initial project idea, it is a good idea to think about how to ensure that there is a common understanding of your project (see Ideation). Moreover, it is important to structure your work going forward. You might want to assign certain roles to team members based on their strengths and set deadlines so that you ensure all of your work is finished in time (see Team work).

Ideation

Think Like a User: Put yourself in the shoes of your target audience. What are their needs? What problems are they facing? This will not only help you think of the appropriate use cases, but it will also help you get on the same page as your teammates.

Keep It Simple: Start with a minimum viable product (MVP). Focus on the core features that solve the primary problem. Additional features can be added later if time allows.

Create user stories User stories are documented features, described from the perspective of users. They should be formulated in the structure below.

Prioritize: The most efficient and standardized way to formulate user stories is with the MoSCoW method. MoSCoW stands for must, should, could, would. Each category reflects a larger importance, such that must features should be implemented long before could features.

As a [user], I [must/should/could/would] be able to [feature], so that I can [goal].

See also:

Start with creating Low-Fidelity Wireframes: Use pen and paper or simple online tools to sketch basic layouts. Focus on the flow and structure rather than details.

Iterate Quickly: Share your wireframes with teammates and get feedback. Make quick adjustments based on input.

Move to High-Fidelity Designs: Once the structure is finalized, use tools like Figma or Adobe XD to create detailed designs with actual UI components.

Team work

Use Agile Methodology: Break your project into small, manageable tasks (sprints). Regularly review progress and adjust plans as needed.

Define sprints: A sprint is a period in which a work is done to reach a final product. Before each sprint, it is decided what the final product should look like. We suggested defining daily sprints.

Stand-ups: Stand-ups are short explanations of each team member of what their work will be for the foreseeable future. This ensures that the whole team is up to date and that no time is wasted due to misunderstandings.

Assign Roles and Responsibilities: Clearly define who is responsible for what. This helps prevent overlap, ensures accountability, and plays into every team member’s strengths.

Use management tools: The use of management tools takes saves significant time, which is highly important in the amount of time available for this project.

**Trello: Simple, visual task management.**: Trello allows you to categorize User Stories, such that members can assign features to implementers and the progress status of features can easily be viewed. This takes some of the mental load off the leader's shoulders and provides a reference for all team members.

GitHub Projects: Integrated with your codebase.| GitHub:

4. Version Control with Git

Pro Tips:

- Use Branches: Create a new branch for each feature or bug fix. This keeps your main branch clean and makes it easier to manage changes.

- Commit Often: Make small, frequent commits with clear messages. This makes it easier to track changes and revert if necessary.

- Pull Requests (PRs): Use PRs to review code before merging. This helps catch issues early and ensures high code quality.

Resources:

GitHub Learning Lab