This month, I achieved the GitHub Fundamentals certification, and in this article, I want to share how I did it, what new things I learned, and what I didn’t know before but wish I had known earlier so I could have implemented it sooner.
This month, I achieved the “GitHub Fundamentals” certification, and in this article, I want to share how I did it, what new things I learned, and what I didn’t know before but wish I had known earlier so I could have implemented it sooner.
The GitHub platform is a cloud-based solution built on Git, a version control system. It facilitates collaboration and project management through a range of features and AI-powered tools, enabling efficient software development, while ensuring quality and secure deployment.
Some features we can highlight are as follows:
As mentioned initially, this post is intended to discuss what you need to know in order to pass the certification exam. Below, we have an image that represents each of the described entities and the topics you should study to successfully pass the certification exam, which consists of ✏️ 75 multiple-choice questions.
This mental map represents how I organized the key concepts needed to prepare for the certification, following the GitHub Foundation Learning Path, which I will explain next.
In order to effectively study and understand all the essential content for the certification, I completed the ‘GitHub Foundations Learning Path’ provided by Microsoft Learn. This path consists of 15 modules, totaling approximately ⌛ 10 hours, with each module averaging about ⌛ 35 minutes. The journey combines 📚 theoretical knowledge with ✏️hands-on exercises, enabling me to effectively learn and apply the concepts.
The modules include ✏️ hands-on exercises solved in stages, using GitHub Actions to validate each step of the process. This inspired me to develop similar tutorials for future posts.
Some modules, such as the first one, offer an interactive console that facilitates executing typical Git commands, further enhancing the learning experience.
Each unit includes a set of ✏️questions to validate what has been learned, similar to those found on the exam. > 🙌 I recommend completing and reviewing these questions to consolidate the knowledge acquired.
With the foundational concepts established, I will now delve into a detailed description of each unit. Below, you will find explanations of the key elements and tools I studied, and how I organized them to effectively prepare for the certification.
Code management on GitHub is essential for productivity and effective collaboration within development teams. Below are the key tools that facilitate this management:
The repository is the core component of a project on GitHub, which is where the source code, along with its version history, documentation, and other relevant resources for the project, is stored.
Pull Requests (PRs) are a fundamental tool for collaboration on GitHub. They allow developers to propose changes to the source code, which can then be reviewed and discussed by other team members before being merged into the base code.
Pull Request States It is important to understand the possible states of a Pull Request (PR) on GitHub, which can be: * Draft: PRs in draft status are still in development and not yet ready for formal review. This state allows collaborators to work on a proposal before requesting official feedback. * Open: Open PRs are ready and available for review and discussion by project collaborators. This is where proposed changes are evaluated before deciding whether to integrate them into the base code. * Closed: Closed PRs have not been accepted and therefore will not be merged into the project’s base code. This state may indicate that the proposal was rejected or that the author decided not to proceed with it. * Merged: Merged PRs have been accepted, and the proposed changes have been successfully integrated with the main branch of the project. This is the final state of a successful PR.
### 🔧 Issues |
Issues are tracking tickets used to report bugs, suggest improvements, or discuss new features. They are essential for planning and organizing work within a project, allowing teams to prioritize tasks and track progress. |
Discussions on GitHub provide a space where collaborators can engage in broader conversations about the project. These discussions can be organized into several categories:
Gists are a simple way to share snippets of code or text. They can be public, accessible to anyone, or private, visible only to the creator or those with whom the link is shared. Gists are useful for quickly sharing code examples, notes, or scripts among collaborators or with the broader community.
## 🟠 Accounts This is one of the topics where you may encounter questions, and within the recommended learning path, you can find three types of accounts:
Additionally, the existing plans are:
GitHub Free: Provides the essentials for individuals and organizations, with limited storage and GitHub Actions minutes.
GitHub Pro: Extends the features of GitHub Free with more GitHub Actions minutes, storage, and advanced tools for private repositories, ideal for individual developers.
GitHub Team: Similar to GitHub Pro but optimized for organizations, adding advanced team collaboration capabilities.
GitHub Enterprise: Offers premium support, enhanced security, compliance, and advanced authentication options, along with significantly increased resources and storage. There are two versions of this account type:
I’ve titled this section “Methodologies” because throughout different chapters of the learning path, I encountered several methodologies that you need to learn. Therefore, I decided to group them all under the same concept.
⚠️ Remember that this is my approach to studying for the certification, and you might find that the learning path or other resources refer to these methodologies differently.
🔀 GitHub Flow: A workflow that utilizes specific components (branches, commits, and pull requests) to collaborate and experiment with new features or fixes in a software project.
🔄 InnerSource: Involves adopting open-source practices and principles, such as transparency and collaboration, within an organization. This means projects are shared internally, allowing any team member to access, modify, and contribute to the code, similar to an open-source project but within the organization.
🛠️ Contributing to Projects: I consider this a methodology because GitHub enables active participation in open-source projects through its platform. This practice is not only fundamental for collaborative software development but also promotes learning, innovation, and community building among developers. Key considerations include:
❤️ Supporting Projects Financially: In addition to contributing code and feedback, you can also support open-source projects financially. For this reason, GitHub Sponsors allows you to fund projects and individuals to help them continue their open-source work, while giving them the recognition they deserve. To support a project:
> source: Identify where you can help
> source: Identify where you can help
Communication within a repository is essential and encompasses the detailed documentation of objectives, changes, methodologies, and rules to be applied. Below are the main tools and practices that facilitate this communication:
📄 README File: The README file is the first line of communication in a project. It should contain essential information about the project’s purpose, how to use it, how to set it up, and any other relevant details that users and collaborators need to know.
📚 Wiki: This section is designed to host more extensive and detailed documentation. Unlike the README, which is brief and direct, the Wiki is ideal for sharing content such as use cases, examples, design principles, technical details, and any other aspects that require a more in-depth explanation.
Markdown is a markup language that provides a simple and efficient way to format and style content in issues, README files, wikis, and any other textual documentation within a repository.
If you’re not familiar with Markdown, I recommend checking out the DataCamp CheatSheet, which summarizes everything you need to get started. Additionally, within the chapter, there’s an exercise titled “Exercise - Communicate using Markdown” that will allow you to apply and reinforce your practice using markdown.
> source: DataCamp CheatSheet
I have titled this section “Products” as it includes two chapters dedicated to two key products. One of these products leverages AI, while the other focuses on enhancing productivity.
GitHub Copilot is an AI-powered assistance tool for developers. Its main features include:
GitHub Codespaces provides configurable development environments in the cloud, built on Docker container. Therefore every each Codespace operates within a 🐋 Docker container hosted on GitHub. Also, this container includes all the necessary tools and settings for your project, ensuring a consistent and reproducible environment for all project contributors.
Here’s an overview of the key functionalities and states of a Codespace:
GitHub has introduced new types of projects that significantly enhance productivity and project management. While previously existing projects focused primarily on code management, the new GitHub Projects integrate key elements that allow you to manage not only the code but also the broader aspects of project management within a single tool.
This new approach aims to streamline workflows, provide more comprehensive tracking, and improve collaboration. It’s important to note that there may be questions about the differences between the previous project types and these new ones. In the following sections, I’ll highlight the functionalities and benefits of the new project types, helping you understand how they differ from the old ones and how they can be utilized to optimize project management.
In GitHub Projects, tasks are represented as issues and can include key details such as title, description, assignee, start date, and complexity. These issues can be customized with various field types like text, number, date, single selection (for dropdown lists), or iteration to better suit your needs.
The types of views that can be generated are:
tabular view
that organizes issues in a table format. This view is primarily used to view and manage detailed information on multiple issues simultaneously, facilitating comparison and bulk editing of data.card-based view
where issues are organized into columns, typically by status or category. This view is primarily used to visualize the workflow of issues through different stages, aiding task management and progress tracking.### 📊 Insights Insights in Projects allows you to visualize
, create
, and customize
charts
using the elements added to your Project as data sources.
When creating a chart, you can define filters, the type of chart, and the information to be displayed.
The generated charts are available to anyone with access to the Project.
These charts enable you to analyze and manage the project, enhancing your ability to plan, control, and assess the project’s progress.
Task automation on GitHub is important for improving efficiency and consistency in project management. The following are the key tools that facilitate this automation:
updating task statuses
, running tests
, deployments
, and other actions
defined in YAML files. Integrated workflows in GitHub Projects streamline automation without the need for complex configurations.Security is a fundamental aspect within GitHub, which provides a range of tools and best practices to enhance security in software development.
Access to your GitHub account can be enhanced with advanced authentication methods that validate user identity more securely. * SAML SSO Authentication: Allows user authentication through a centralized Identity Provider (IdP), enhancing security and access control. * Multifactor Authentication (2FA): Adds an extra layer of security through two-step authentication, which may include physical security keys and time-based one-time password (TOTP) applications.
GitHub offers vulnerability alerts to help you identify and address security issues in your repositories.
> source:Automated security
SECURITY.md
file, detailing how to responsibly report vulnerabilities..gitignore
to exclude critical files and carefully review changes before committing them.master
or develop
, requiring approved reviews before allowing merges. This ensures that only secure and reviewed code is integrated into the main branches.On GitHub, you can use advanced search to efficiently navigate repositories, find issues, review pull requests, and join discussions. Here are some practical examples to enhance your search capabilities and collaboration on projects:
topic:machine-learning stars:>1000
r0mymendez/datapp
repository.repo:r0mymendez/datapp is:issue is:closed
is:issue language:python is:open label:help-wanted
is:pr review-requested:@m
in:discussions is:open language:python
topic:machine-learning stars:>1000 is:issue label:help-wanted language:python is:open
The following references were used to create this article, with the first being the primary resource and the other materials were utilized to practice and simulate the exam.
Text and figures are licensed under Creative Commons Attribution CC BY 4.0. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".
For attribution, please cite this work as
Mendez (2024, Aug. 20). Romina Mendez: My Preparation Journey for GitHub Fundamentals Certification. Retrieved from https://r0mymendez.github.io/posts_en/2024-08-20-my-preparation-journey-for-github-fundamentals-certification/
BibTeX citation
@misc{mendez2024my, author = {Mendez, Romina}, title = {Romina Mendez: My Preparation Journey for GitHub Fundamentals Certification}, url = {https://r0mymendez.github.io/posts_en/2024-08-20-my-preparation-journey-for-github-fundamentals-certification/}, year = {2024} }