
Artwork:Susan Haejin Lee


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.
Also in Developer Stories
The modern veteran: A coding superhero
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 youthink 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
AtVets-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 employershow 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.
More stories

Turbulent times call for adaptive leadership

Secure cloud deployment and delivery
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.
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.
Sign up for the newsletter
Sharpen your open source skills with tips, tools, and insights. Delivered monthly.