Open source projects provide real world experience to fledgling developers.
Competition is tough and thousands of young developers emerge every day. This puts a lot of pressure on students to gain an edge over other developers and also a lot of pressure on Java teachers to provide students with the skills that will guarantee a future job. What is the most important thing a developer can have when graduating from a university? Experience. Let's examine some of the emerging ways for students to gain professional experience while in school and ways for educators to enhance their classes and equip their students with both a quality education and the tools to compete in the real world.
Students arrive at a university, where they first learn the basics of programming. After mastering the basics, they begin to work on more complicated exercises. When students master these projects, the teacher has to create complex projects that will both give the student a strong theoretical background and arm the student with expertise that can be used later on in life. There are many approaches that can work for this, but with the rise of open source software (a development approach which, after all, originated in the academic community), some unique opportunities now exist.
Open source projects and education
Open source projects allow a student to work on software that actually will be used by others and to interact with a world-spanning community of Java developers. The most successful open source projects (e.g., Emacs, Linux, Apache, NetBeans) are ones where the software is highly modular and the APIs are well documented -- someone can download the source code and documentation and begin coding without needing to first understand the nuances of the entire codebase.
Another important point here is that one of the most effective ways to learn coding techniques quickly is to work with an existing codebase so that the new developer is exposed to the work of other developers. Modifying existing code is a powerful way to learn the ins and outs of developing software, as well as how to interact with other developers -- more often than not, former students will be hired to maintain or enhance existing codebases. These skills will be critical to their success.
Open source development vs. traditional corporate development practices
One question you are probably asking is: Is working in open source really similar to working in a corporate environment? Does participating in open source really develop the right skill set? I would argue that it develops a valuable skill set for any future development career.
In my particular case, I work for Sun Microsystems. We are very active in the open source world, and in particular are working very hard to take the lessons learned from working in open source and apply them to internal projects. We look on open source development as a set of "best practices" for distributed development, ones that we need to learn from because, used internally or externally, they are more efficient than the traditional corporate processes for software development. We're hardly the only company in the industry taking this approach. So, yes, these skills are quite marketable.
Open source projects are generally e-mail driven. Someone working on an open source project generally joins mailing lists where the codebase is discussed and debated, and decisions are made. If there's one thing you learn from working in an environment like this, it is how to present ideas effectively -- both by example and by practice. Communicating effectively is another part of the skill set a developer needs in the job marketplace.
Open source projects and educators
But it's not only about the students, it's also about educators. There are a number of sites in the Java community and elsewhere dedicated to information technology educators. In particular, they provide community forums for the discussion of ideas, experiences, the sharing of syllabi and approaches. There are support materials available to make working in open source more effective. On netbeans.org, we've put together page of resources for educators detailing some of these, including links to our own NetBeans in Education program. That can be found at http://edu.netbeans.org/resources.html. Let's walk through a concrete example of how this can be useful:
A Java teacher, let's call him Bob, has to teach XML next fall semester. Bob knows the basics of XML, but is not strong enough in it that he could come up with the most effective exercises (let's face it, none of us can stay on top of all the available technologies out there!). Now, traditionally, Bob would perhaps inherit an existing course, its syllabus and materials, and, regardless, begin studying the subject and come up with what he plans to teach and how he plans to do it within whatever framework his particular institution designs these things.
But there's a crucial difference this time. Bob can also go to a site with resources for teaching XML, tools that help his students to focus on just the topic at hand (such as open source structured XML editors). And he can interact with other people who have been in the same situation and benefit from their experiences as well. The result: His students get a better education because they're benefiting from a collective exercise in discovering what works best. Was academia always such an exercise? At its best, yes. What we have done is make this process more realtime and brought people together who might otherwise never encounter each other.
The benefits for the student and the professor are clear. The student whose university plugs into an edu-in-open-source program can gain a tremendous amount of experience that will be valuable for ongoing education and in the job market. The educator has the opportunity to re-use, customize and benefit from what has already worked somewhere else, and share that with a world-spanning community of educators -- improving and enriching teaching and ultimately the institution's reputation for providing a quality education.
George Dvorak works for Sun Microsystems in the Czech Republic in marketing and community development for the NetBeans Open Source Java IDE project. He is responsible for the NetBeans in Education project. For more information, see http://edu.netbeans.org