Skip to content
GitHub Copilot is now available for free. Learn more

Teaching in public with GitHub

Uplift others by sharing your knowledge.

Artwork: Susan Haejin Lee

Photo of Jerome Hardaway
Vets Who Code logo

Jerome Hardaway // Executive Director, Vets Who Code

The ReadME Project amplifies the voices of the open source community: the maintainers, developers, and teams whose contributions move the world forward every day.

While we speak a lot about #LearningInPublic, we rarely talk about #TeachingInPublic. While difficult, it can be gratifying, as it gives education opportunities to those who might not have access to learning resources that live behind a paywall.

It also minimizes the point of entry to giving back to people, particularly those coming from community-taught backgrounds like myself, so you don't have to go back to school for the degree and teaching certificate. All this also helps you become a better programmer because it reinforces the things you think you know and makes you learn how to communicate them with people who are not coming from the same position you are in the journey of writing code. Finally, it's been a lot of fun to build and interact with people from all walks of life as we focus on becoming better software engineers.

It all begins with the repo

Much like open-source projects, the repo is the single source of truth when teaching. Files, resources, and tools should be linked or stored in it, as it's the base of operations for you and the learners. The README needs to be manicured, descriptive, and in-depth. The new dropdown component at each heading and link has been a joyous update and helps me create an efficient and easy-to-navigate curriculum. If you want to condense for clarity, you can add multiple READMEs. The important thing here is not to skimp.

Remove whatever barriers you can

Yes, developers need to learn to set up their own development environments. But it can be a distraction from more important concepts, one that can ultimately be a small but annoying barrier to learning. Although still in beta, I've enjoyed using GitHub CodeSpaces during the teaching process, and it's a definite game-changer. While storing the files in the repository helps learners tremendously, this feature turns your resources and code into an accessible programming environment within the browser that the learner can execute code indirectly. This feature is beneficial in ensuring that the education sticks and keeps tab switching and frustration down. All of this improves the experience so that newer developers can focus on learning the hard stuff.

Communicating requirements

At Vets-who-code, we teach Kanban and write user stories as a part of the learning process. This method helps us ensure clarity in the workload when we use project boards for assignments. People often ask: "Shouldn't every learner do every portion?" On their capstone, yes, they should implement everything they learn on their project. Still, Github's real power with learners teaches them how to work collaboratively as a team and communicate needs and blockers across the team to complete the assignment, which is how you work at a real job. So when I teach, every project is a group project. It helps me learn more about developers to see what they gravitate to and see who needs what type of support. I have the devs assign themselves a ticket. This creates a form of accountability to the team, which they bring with them into the workforce. I also enjoy the process of watching them escalate, pick a ticket, escalate it to an issue, make a branch for the issue, solve it and then merge it with a PR. Practicing this workflow makes it easier for students to tell employers how they work, making it easier to hire them because a methodology to the madness is one of the things hiring partners look for in new developers. 

Keeping the conversation open

We have a current cohort building a feature that we hope to go live on web app this year. While doing so, I also wanted to ensure that those not in the cohort could see what is going on without having to enter a messaging app channel, so we have been using GitHub Discussions to speak about the feature so that anyone in the VWC community can chime in. 

Keeping the communication open on this feature while also giving them freedom teaches them how to lead the creation of a product. Beyond the parameters placed regarding our stack, my goal is to be as hands-off as possible because I want to see what new ideas come out of their minds to make the web app better that I might have missed. Once you set a course of adhered to parameters, you learn a lot from newer developers when you listen, allow them to come up with new ideas, and experiment.

Focus on fun—especially after difficult segments

If Computer Science is the most dreaded part of VWC, I think the most enjoyable part is learning about workflows and automation in Github actions. Setting up the actions and creating workflows to automate from the chosen serverless tool is easy and powerful for two reasons: one, after working with Javascript for two months, YAML is like your favorite iced beverage, and two, the process of building a workflow to automate a deployment makes you feel closer to a real developer. A mixture of relief and empowerment is needed after a tough session like that, so it's good that there is something available to give them that feeling.

Use templates to guide feedback

One of the things we have to teach is giving and receiving feedback when learning how to code. I'm not going to go into details, but you can't give feedback the way some of my veterans are accustomed to getting feedback (every U.S. Marine reading this is currently chuckling right now). So we use a prepared template in Github Issues to guide how to communicate things to each other and the team in a technical, respectful, and constructive way.

Jerome Hardaway is a Senior Software Engineer at Microsoft and The Executive Developer of Vets Who Code. Having served in the Air Force as Security Forces then transitioned into software engineering, he is focused on helping underrepresented members in the veteran community learn and break into tech. He has received numerous awards and honors due to his work but the most rewarding part to him is easing the point of entry so that others have easier paths into tech than he did.

About The
ReadME Project

Coding is usually seen as a solitary activity, but it’s actually the world’s largest community effort led by open source maintainers, contributors, and teams. These unsung heroes put in long hours to build software, fix issues, field questions, and manage communities.

The ReadME Project is part of GitHub’s ongoing effort to amplify the voices of the developer community. It’s an evolving space to engage with the community and explore the stories, challenges, technology, and culture that surround the world of open source.

Follow us:

Nominate a developer

Nominate inspiring developers and projects you think we should feature in The ReadME Project.

Support the community

Recognize developers working behind the scenes and help open source projects get the resources they need.

Thank you! for subscribing