Based on a very recent experience, I believe open source projects offer students a very good way to learn real world programming practices and improve their skills for the job market.
Recently I inherited maintenance on a project that was originally developed by some computer science professors and their students. It’s a pretty in depth piece of software used to track time entries. The code in this project is, unfortunately, not so good. The application does what it is supposed to do, but trying to figure out all the business rules by looking at the code is a very frustrating task. This project suffers from several deficiencies, such as:
- Lack of standard web based UI conventions
- Lack of sufficient comments
- Unreadable code
- Poor HTML standards
Since this project did involve inexperienced students one should expect some level of amateurism in the code, but with professors reviewing the code I also expect a lot of this stuff to get caught. But the poor quality of this code is not the real reason for this blog post, merely the reason behind the thought I had on how to help students, and apparently professors, learn better coding practices.
Enter Open Source software. Open source software projects may offer a learning opportunity some students aren’t getting in school. The best run open source projects have real standards, and teams of experienced programmers. They provide a place to learn from professionals who have been cutting their teeth on real world business applications. I’m willing to bet that students participating in open source projects will come out with better skills than students who only do the required class work.
So my suggestion to programming students, or even self taught programmers, is this: Find an open source project that interests you and participate. Learn about the other programmers on the project, find out what skills they can teach you, and ask lots of questions. Your skills and abilities will be better for it in the end. And my suggestion to professors: encourage open source project participation. Better yet, make it part of you curriculum the same way you would make an internship part of the course work. And work on these projects yourself.
I truly believe there is much to be learned from working in the open source community. Embrace the opportunities and make yourself a great programmer.