Building Your Development Process Around GitHub
GitHub is a web-based hosting platform where you can host open-source projects and follow projects that you like and want to adopt. It uses Git, which is a distributed version-control system.
Developers love the GitHub platform. Not only does it give them tools to simplify their work, GitHub gives team leads and project managers what they need to connect with developers, review work, track progress, and automate workflow.
In short, GitHub is an excellent tool, one that I recommend building your development process around.
A little more about GitHub
Specifically, GitHub provides access control and collaboration features to help you manage bugs, features, and documentation related to your project. With GitHub, you can perform several project-related tasks within an environment that’s both deeply connected with source code and familiar to developers, boosting the efficiency of your project management efforts.
As far as pricing goes, GitHub offers a free plan for public repositories. Should you like the option of creating an unlimited number of private repositories, it also offers a flexible paid plan.
What is Git?
Free and open-source, Git was created in 2005 by Linus Torvalds, the creator and main developer of the Linux kernel. Git is used to track changes in source code files and coordinate the work of multiple people at the same time.
In GitHub, developers have web-based access to a Git repository hosted on the server so they can commit their code and collaborate. Since it’s a distributed system, every Git repository contains a full set of files and history of changes and can work independently of a network connection to other repositories. The result is a breakneck system that keeps data intact.
Avoid merge problems with continuous integration
When a developer begins a new project, they make a copy of the current codebase, create a separate branch, then get to work. As the developer works, other developers constantly update the codebase, adding new libraries and dependencies.
So when the developer tries to merge the copy that they worked on with the main codebase, their copy no longer reflects the main codebase, which results in conflict. This is known as merge hell. The longer a developer works on copy, the more “hellish” the problem gets, since the difference between their copy and the main codebase is bigger.
GitHub helps users keep merge hell at bay because it utilizes one of the best practices in software development: continuous integration.
Continuous integration is the practice of merging the code that developers write, several times a day. The goal is to reduce the amount of work that needs to be done on every merge. If the work takes a lot of time to complete, the developer must update their copy of the main codebase more frequently in order to incorporate incremental changes that others make.
Continuous integration is best used with automated unit testing, used to confirm that the codebase works as expected after each integration attempt. When tests fail, the developer immediately knows where the problems lie and can quickly fix them.
Improve collaboration using pull requests
The pull request is a unique feature that was created by GitHub. It’s a powerful collaboration tool not available in traditional project management apps.
Here’s how it works. Typically, when developers start working on a feature, they create in a separate copy of the codebase. This copy is called a branch. Whenever a developer wants to merge code with the main codebase — which is called a master branch — they create a pull request so that the code can be reviewed.
Pull requests allow team leads and other developers to review changes made in code. Then, they can either accept those changes or require that certain parts be re-worked. In a pull request, you can comment on individual lines of code and mention developers to start a discussion.
Better manage a project using the Issues feature
While pull requests are useful for coordinating and reviewing developer work, GitHub has another little something for project managers — a feature called Issues. Issues is used to track bugs or chunks of work that need to be completed by developers.
There’s so much you can do with this feature. You can tag and prioritize issues; combine issues that you create into milestones in order to track the overall progress that you make toward the release; easily assign issues to developers so that it’s clear who’s responsible for what; attach rich descriptions to issues; and tag issues in code commits and pull requests to easily track all related activity.
Or, better manage a project using the Projects feature
Issues are nice. But their default list view can be tricky to work with, especially if you have a lot of issues.
To make life a little easier for project managers, the GitHub team created a special view called Projects. A project is a Kanban board comprised of issues, notes, and pull requests in a repository, categorized as cards in columns that you define. Those cards contain all relevant metadata that you might need — labels, assignees, status, and many more. You can easily drag-n-drop cards as you wish or use keyboard shortcuts to rearrange them.
Effectively document a project using GitHub Wiki
Using GitHub Wiki, you can easily create pages and link them to each other to create project documentation. If your repository is private, only people who have access to it will be able to see wiki pages.
While GitHub Wiki is somewhat limited compared to something like Google Docs, it’s still a very useful tool to keep the documentation you need during development — environment setup instructions, deploy instructions, description of various modules, and pieces of your codebase. This documentation will be invaluable when you onboard new developers, and it should be kept up-to-date all the time.
GitHub isn’t the only tool out there that can help you build your development process. But in my opinion, it’s the easiest one to grasp and the most popular one. So if you’re not a developer and haven’t used GitHub before, check it out. It might take you some time to learn how to use it, but I think any time invested will totally pay off in the end.