OPEN SOURCE

Programming mentorship course: PatternFly and JHU

Getting started in your career using open source programs

Katie Edwards
PatternFly

--

Photo by Fahrul Razi on Unsplash.com

The job hunt after college is brutal. Even if students have earned great grades, completed internships, and generally exceeded expectations, it can still be difficult to find a job. Then, after the hunt is over and they’ve found a position, adjusting to a real-life working environment can be a real shock. Classes just don’t offer the experiences that many students feel they need in order to prepare for the workforce.

…Or do they?

One John Hopkins University professor has begun offering a unique open source course. In this class, students in the computer science program partner with mentors from open source companies and projects to take on ~60 hours of real-life, collaborative programming and development work.

This year, PatternFly got to join in on the fun. Two PatternFly developers, Eric Olkowski and Austin Sullivan, volunteered as mentors in this program.

Describing the program, Austin noted that, “It’s a pretty unique experience. A large portion of the class work isn’t your typical class work — it’s real work happening in open source projects.”

Now, Austin and Eric are sharing their thoughts on the experience as a whole — from their non-traditional introductions to development, to mentee onboarding challenges and why programs like this one may be even better than internships (for everyone involved).

Text: What’s your background in open source?

Austin:

If it wasn’t for open source projects and the culture that exists around it, I wouldn’t have the job I have now. I started out dabbling with various free online coding resources in high school, but in 2019 I found The Odin Project, which is an open source software curriculum. It teaches anyone who’s committed enough to stick with it to be a full-stack software engineer. 2020 ended up being a good year to be stuck inside on the computer so it worked out well, and I was able to spend a lot of time building these skills that I now use every day as a part of my job.

Beyond just doing The Odin Project curriculum, I also became a maintainer of the project and added to the curriculum and site and Discord community. I became a member of the team there in mid-2020, and was able to get involved in an open source project led by one of my team members there who also came from a non-traditional background. He had an idea to create an online version of the Cards Against Humanity game in a style similar to JackBox Games — Cards of Carousal.

That project was very similar to an actual full-time job experience. We were collaborative, used Git in a team-based way, did code reviews, and all the other things that you do in a more ‘real’ role — which was very different from just doing projects on my own and self-teaching.”

Eric:

My background prior to Red Hat was self-taught. I also learned from The Odin Project which I started in September of 2020. I also became a maintainer in 2021, and since then have been reviewing PRs from other contributors on the team, as well as other members of The Odin Project community.

One of my biggest contributions to The Odin Project was a series of lessons regarding accessibility, which I wrote with the help of 2 other maintainers. They helped workshop those lessons down into a digestible, concise format.”

Text: How did your open source experience lead you to mentoring John Hopkins University students?

Austin:

“The Odin Project has a discord of over 100,000 people, and there’s always opportunity for people who feel like helping other people learn and grow their skills. I’ve always liked mentoring and helping people, but doing it with development and programming is even better.

Helping with the Discord evolved throughout the Cards of Carousal project. For that, there was a lot of 1:1 mentoring that each of us received from the senior engineer on the team, and that helped me learn to be a better mentor myself. That experience made me want a more direct role in helping people build these skills, as opposed to the as-needed help that I was doing in the Discord.

So, when I heard about this John Hopkins program and that they were looking for people that wanted to volunteer to be mentors, I was super excited to have that opportunity to take on that more significant mentoring role. It would allow me to ‘give back’ to the community after so many people helped me, and it also seemed like a great opportunity to further strengthen my mentorship skills.”

Eric:

When I first started going through The Odin Project curriculum, I was very shy and didn’t participate all that much. Slowly, I started asking questions and chatting with people for reasons other than just getting help. After receiving so much help, I naturally started helping other people as well. One of the great things about The Odin Project is that it has a lot of people who give back what they were given. They give back in the form of mentorship and contributions.

This is why I immediately volunteered for the JHU program — because it was so similar to the experience I had with The Odin Project.”

Text: What was the planning process like?

Eric:

“The Red Hat PatternFly team got together to identify some existing projects for students to sign up for:

  1. Javascript to typescript conversion — taking components written in javascript and writing them in typescript.
  2. Unit test revamp — taking current unit tests that may not be as advantageous as they could be and updating them to a new, agreed-upon standard.
  3. General accessibility project — covered various accessibility issues between 3 main repos.

From there, we submitted those projects to the professor, and students signed up for projects of their choosing.

We weren’t sure what the ‘right’ amount of students to mentor was, but we ended up with 6 students, 2 on each project. Austin and I split that workload, with each of us mainly mentoring 3 students.

We had to think about how to go about the whole thing — we landed on having an initial group meeting with all of the students to introduce ourselves and identify any issues before the actual project work began. We took our PatternFly onboarding and condensed it down into the most relevant information for the students.

Once things started, we threw them possible issues they could work on, and had biweekly 1:1s to answer specific questions and make sure they were on the right track.”

Text: Did you encounter any challenges throughout this experience?

Austin:

The biggest challenge was that the time students had to work with us was so limited. Condensing the onboarding process was really difficult. At Red Hat, the onboarding process is pretty much a 3-month, nearly full-time process. That’s not even including the time spent getting used to technology we use on PatternFly, or how our documentation is written, our code styles, expectations for PRs, or what all the code in the code base does.

The average time for a professional developer to get up to speed on a project is something like 6 months, so how do you take people who have only had classroom experience and get them up to a level where they can contribute and build their skills in such a short time frame?

By the end of the semester, the students will have put an estimated 60 hours of work into this. That’s only a week and a half in the full-time world. If we took more than 16 hours, or 2 days of time, for onboarding a huge chunk of the time we had to work with them would be gone.

A lot of work went into the planning phases, and my background in The Odin Project helped me. I had experience writing lessons and finding the best resources that we can, so I was able to leverage those same skills to put together the shortest, sweetest onboarding experience that I could. This allowed us to “gently firehose” knowledge at the students.

We also had a planned progression of different issues so students could start with low-lift projects and progress in a sustainable way. We didn’t want there to be any huge cliff jumps from project to project.

For the testing and conversion project, I took available issues and sorted them into easy, medium, and hard issues so that the students would know what to expect. We didn’t want any lost motivation due to not being able to build up confidence and velocity.

The students had excellent foundational knowledge, but I’ve still seen tremendous growth in all of them.”

Eric:

“One more minor challenge was students having to juggle their class load and midterms with their contributions for this particular class. One student I’m working with let me know that midterms were coming up and that he might be more absent than usual — so it could have been worse, and we were able to plan around it, but I know it’s a challenge for the students especially.

Integrating students into the day-to-day workflow that we use on PatternFly was also a challenge. in terms of showing them what a stand-up is like or how to comment on PRs and including them in Slack messages. Showing students how interactions typically happen, when feedback conversation happens in meetings that they’re unable to attend because of their class schedules.”

Austin:

“They get most of the key information, but may be missing out on elements of team-based workflows because of their class schedules. It would have been great if the students working on each project could have had stand-ups or group meetings where they could discuss their work and get feedback from each other. One group has worked together some by relaying information I gave one student in a 1:1, but more collaboration would better reflect the full-time development experience.”

Text: What benefits do students gain from experiences like this, and how it is different from an internship?

Eric:

“It gives students an opportunity to get a build running on their own computer from scratch, and getting to go through the code base enough to know what’s going on generally. It happens in such a short period of time, but they’re able to work with other maintainers of whatever repo they’re working out of. They get experience responding to feedback and comments on their PRs, and working collaboratively with everyone else merging changes and keeping your own build up to date. Overall it gives students the experience of adapting to a workflow they’d see in a job that they may not otherwise see until they get that job.

This is also a little more accessible than an internship. Internships can be more limited, and this is a whole class participating in projects that they sign up for themselves.”

Austin:

“For me, it’s hard to say what exactly the benefits are for students. I don’t have a CS degree, so I can’t compare this class to their curriculum. But I can say that the students are getting dropped into a huge existing code base. Coming from a self-learning background, all the projects you do are small and you’re building them “green field”. You have total control of the project from start to finish. You never have to look at a 1000-line component, and figure it out because now you have a bug to solve.

This is an experience that you just can’t get working on your own project, or most school projects. I could be wrong, but I found that PatternFly React is around 1 million lines. Getting that skill of being able to read all this existing stuff and how they work together is a really unique benefit to this kind of program.

I’d describe it as a mini-internship, in that you get plunged into an actual development team kind of workflow and get to see how everything really works. That experience is so different from what most people expect from a class — you usually don’t get exposure to real workflows and production code.

Instead of a 3-month full-time internship, this class is a very part-time experience, where students can dedicate time that would otherwise be spent doing homework to working on open source projects.

This seems a lot more accessible than the traditional internship model — you can only take on so many interns when they’re all full-time, but this is a lot more scalable and more people can gain this experience.”

Text: What benefits did you take away from this mentorship experience?

Eric:

“Getting to help people out who don’t have the same type of experience as me was reminiscent of helping out on The Odin Project Discord server. It solidified me wanting to take on more mentorship opportunities. Now, I feel more confident in volunteering to be a mentor as opposed to a mentee.”

Austin:

“I’ve really enjoyed doing it. I was always helping out on The Odin Project Discord for free because I like helping people, but now I’m getting paid for it? It doesn’t get better than that. It’s helped me gain long-term mentorship skills. Learning how to set up this program was also a learning experience for me.”

Text: What would you recommend to people looking for development experience?

Austin:

“That’s a tricky question because it’s so dependent on a person’s specific situation. However, The Odin Project is a valuable resource and I wouldn’t be here without it.

For people in a CS program, if your university offers a course like this, take it. If you have the opportunity to do something like this ever, do it. This is such a unique opportunity in the way that you can experience things that most people don’t have access to.

This is targeted towards people who already have a good grasp on programming, but if you’re just trying to get started in the field or want to grow this skill as a hobby, don’t be afraid to contribute to open source projects. There are a lot of projects out there that need people to help contribute and maintain them. If you find something interesting and they have some open issues, comment and ask if you can take one. Get your work out there in places where it’ll make an impact.

Programs like this open people up to the idea that there are so many projects on Github that you can freely contribute to if you have the desire, skills, and time. That aspect of open source is something that I find awesome — especially the first time you submit a PR and suddenly your work is being seen by millions of people. That’s a magical feeling.”

Eric:

“Whether you’re pursuing a CS degree or you’re in some form of higher education, if your university doesn’t offer a course like this, talk to a professor and see if it’s something they’d consider implementing or looking into. Worst case, it doesn’t get implemented, and best case, you end up implementing this program at your university for everyone to benefit from.

If you can contribute to open source, do it. It doesn’t have to be extravagant — you can contribute to documentation or React, it can all be beneficial for everyone reading or using the thing you’re updating. It also gives you the experience of forking, cloning, and all of that.

Additionally, keep in mind that whether you’re soon to graduate and start the job hunt, or you’re just getting started or you’re learning through an open source curriculum, know that it’ll be a difficult process and it might take its toll on you. But as long as you keep pushing, eventually, you’ll get where you want to go.”

Have a story of your own? Write with us! Our community thrives on diverse voices — let’s hear yours.

--

--

Katie Edwards
PatternFly

Doodler, plant enthusiast, bird watcher, hobby collector, and UX content designer at Red Hat.