My name is Axelofwar and I’m extremely excited to welcome you to Day 1 - Learn Collaborative Development! There are a ton of languages and frameworks used in modern day development that can make the coding landscape feel very broad and sometimes even scary. Before we dive into any of those, there are some basics to understand about the coding environment and working with other developers on a project. We’ll start with some of these common tools that enable any developer to contribute - regardless of language or framework.
Topics Covered
Agile and Scrum are methodologies used in software development to improve the efficiency of teams. Agile is a philosophy that emphasizes working in short iterations and prioritizing customer feedback. Instead of trying to tackle a large project all at once, Agile encourages breaking it up into smaller, more manageable pieces. This way, teams can quickly make changes as needed and adjust course based on feedback, as well as assign smaller tasks of a greater goal to specific engineers.
Scrum is a specific implementation of Agile that breaks work down into sprints, which are short, focused periods of time where the team works on a specific set of tasks. At the end of each sprint, the team evaluates what was accomplished and plans for the next sprint. This process helps teams stay on track and make continuous progress toward their goals.
Agile and Scrum work together to create a flexible and collaborative work environment that encourages continuous improvement. By breaking work down into smaller pieces and working iteratively, teams can adapt to changes and make improvements quickly. Scrum provides a structure for organizing work and keeping everyone on the same page. Both methodologies prioritize communication and collaboration among team members. It is more important to understand these concepts at a high level, so that you are familiar with the terms that I will explain later. Low-level comprehension of agile/scrum methodology and its details is less critical.
GitHub provides a platform for version control, collaboration, and communication among team members working on the project. To effectively manage a project on GitHub, you need to define the scope of the project, break it down into manageable tasks, assign those tasks to team members, and set deadlines for completion. You should also track progress, communicate regularly with team members, and adjust plans as needed. GitHub has a lot of native project management features in order to make this easier! We will break down some of these terms next.
Terms - there’s tons of terminology that gets used in the dev world but I’ll try to break down some of the most important into two categories - Agile/Scrum terms and GitHub terms. Don’t worry too much about agile and scrum, its more important to get the terms below as they are what will be used - less the agile/scrum methods.
Agile/Scrum terms:
Board - the total sum of tasks needed to complete a project (completed and ongoing)

We will look at using Agile/Scrum terms moving forward, but our examples will utilize the GitHub projects section shown above - which is their native project management tool.
GitHub terms:
git branch -b → show current branchesgit checkout -b <new_branch_name> origin/main → create a new branch that tracks origin/main
axelofwar/chatGPT-help-bot on branch main

axelofwar/chatGPT-help-bot on branch axelofwar-nft-inspect
Add - identify the files that you want to track changes in. These are the files that will be included in your later commit, push, and merge to the main branch
git add <file_name>Commit - the changes in your local branch that you would like staged to add to the matching branch on the server
git commit -m "changes made to x file"Push - how you get the changes from local branch to sever branch
git push origin HEAD → this will push to the HEAD of whatever branch you are on (HEAD = your last checkpoint)Fetch - how you get the changes from server branch to local branch
git fetch --prune → this will pull latest server changes and prune(delete) any branches that no longer existMerge - add the changes from one branch to another - this use your local instance of the main branch as reference for what is changed - NOT THE VERSION ON THE SERVER - so make sure that you pull latest changes into your branch first to avoid merge conflicts
git mergeRebase - better than merge imo, this will rewind any updates you’ve made and add in the updates from the main branch on the server before fast-forwarding your branch back to where you had it. This is great for preserving your changes while updating the rest of your code base so that when you want to merge your PR - there are no merge conflicts.
git rebasegit rebase -i→ interactive rebase to edit previous commits (this is useful for editing old commit messages or squashing multiple commits into one - when you want to request review I HIGHLY RECOMMENDED to squash first - seek help if needed)git rebase origin/main → rebase main onto your branch in order to update it with main changes while preserving your codegit rebase -i --root → rebase ALL commits on a branch (use with caution!)Pull Request - in order to get the code you’ve updated on your branch added (’merged’ in git terms) to the main branch - the best practice is to open a pull request on that branch. This pull request is a formalized request to the main branch owner for you to add whatever code changes you are proposing to their main codebase. ALL changes you would like added to the main branch should be created in a separate branch and pull requested to the main (unless you own the repository)

Issues - an issue in git is a story or task as known in Agile/Scrum. Use issues to identify work that you are going to take on, or assign open issues to yourself in order to identify to the rest of the team which tasks or stories you are taking responsibility for.

GitHub also offers many other features such as wikis, page deployments, branch protections, and much more! You should look into these if you want to become a 10x open source contributor! Much of the open source community simply scroll GitHub for issues on projects related to things they enjoy and look for ways to contribute! This is a great way to enhance your skills, network, and potentially even become an official contributor on profitable ventures!
Note on Project Management: