College Isn't Setup for Open Source
My friend, who is graduating from undergrad in the spring, lamented to me about how scarce her GitHub profile was. Some job postings were asking for her profile, and while she had done a lot of work in her computer science program, GitHub reflected almost none of that.
And that's a problem with school, isn't it?
My experience in school was similar. At Rochester Institute of Technology, you would be given programming assignments and expected to complete them alone, without any assistance, to learn the concepts.
Well, except for what you could find online. Or a classmate who was willing to help. Many times I would complete an assignment and have someone ask me for help. I'd look at their code, see what was wrong, give pointers and suggestions, or most importantly, help them improve their debugging skills.
But none of that shows up on GitHub. Teachers don't want you to post your code on GitHub because other students could copy you verbatim. But most likely the assignment is similar to other code that could be copied as well. If a student is just copying the work (no matter from where), shouldn't that be obvious on their assessments (like closed book in class exams)?
Even in later years, after the basics of CS and into Software Engineering classes, where most of the work was project based, we never put it on GitHub. I must have done over twenty projects in school, and never once did I get the impression we could host it on GitHub, in public, for everyone to see our work. Many times it was explicitly stated that our version control had to be private.
That's disappointing. It's true that if I do a project and host it on GitHub, then the next class could take a look and copy it.
The simple solution is to not give the same project twice.
There's a lot to gain from using powerful open source tools. I would have loved to use pull requests to review teammates code. Issues to track bugs and assign them. Code Coverage, Code Climate, Travis CI, and other great tools built around open source. Rather than using these tools, we ended up using other variants that weren't as integrated.
Now that I'm working, a lot of my work ends up being open source. And all of my own fun projects are now open source as well. It's a great way to easily give back to the community, and it may help someone.
When hiring engineers, we try and look at their published code because it gives a great idea as to how they work. Everything from how they code to how they manage their projects. If they have a long history it's even great to see them learn over the course of their first project to their most recent.
It's a shame the education world isn't set up for it.
I'd have loved to put my school work on GitHub, so interested people could see all the work I've done.
For now,
- Take the interesting parts of the assignment and publish them after the fact. One more implementation of bubble sort in python isn't going to hurt.
- Try working with your professor to see if current and future assignments can be made open source.
- Keep working on your fun side projects, and don't be scared to open source them. Your idea won't get stolen, and you will probably write better code when you know someone else may be looking at it.
There are other solutions too.
- Have everyone in the fall semester do project 1, and have everyone in the sprint semester fork one of those projects, (their choice) and expand on it with new requirements.
- Have the teams write the same project, but ensure no two languages are the same.
- Have teams come up with their own projects and implement it.
- Make projects more modular based, and expect a finished package when complete. Publish it.