Discussions: Training the next generation of software engineers using Open Source Software
Raise your hand if you have heard this one before. “College education is disconnected from industry”. Very often, there are discussions on whether college education is effectively preparing young professionals for the challenges they are going to face when they enter the industry. Especially in software engineering, a continuously and rapidly changing environment, training young professionals to be ready to address the needs of the industry in a highly dynamic environment where new technologies, tools and platforms, emerge every day, is considered a holy grail nowadays, in the educational world.
So, how can academic training connect better with, or serve better, if you will, the needs of the industry? Is there a way for educators to re-create or simulate “real world” challenges during their academic courses? Can the students train in real projects during their studies, or it is inevitable that their first interaction with the industry will happen during their internship? Can Open Source Software help?
I had the pleasure of discussing the aforementioned challenges with Prof. Ioannis Stamelos, President of the School of Informatics, Aristotle University of Thessaloniki. Prof. Stamelos has been doing research in Open Source Software Engineering for 25 years. He has co-authored more than 200 manuscripts, published in international journals and the proceedings of international conferences, several books and participated in a lot of ICT research projects. He is an expert on Software Engineering, Open Source Software, Software Quality, Software Management and Cost Estimation, among other topics. For several years, he has been utilizing Open Source Software projects to introduce his students to open source software engineering, asking them to actively work on an open source projects as part of their semester assignment or their bachelor thesis.
Q: Prof. Stamelos thank you for joining us. Can you please provide a brief background of your experience in the field of Open Source Software (OSS) and how you came to apply it in the educational sector?
A: I have been researching the OSS field since about 25 years ago (around 2000). I used eclass open source platform to host my courses, and helped other colleagues in the School of Informatics to do so for their own courses. In addition, I use only open source (OS, applications, code, etc.) for my teaching lectures and lab sessions.
Q: How do you believe open-source software projects can enhance the learning experience of young software developers?
A: OSS projects provide a unique opportunity for young software developers to see software theory applied in practice, experience real world software development situations and improve their hard and soft skills in real world settings. Care must be taken however in dealing with OSS peculiarities.
Q: Can you describe some of the key learning outcomes that can be achieved through students' participation in OSS projects?
A: Students learn several soft skills, like introducing themselves to a new team/community, interact remotely with different kinds of stakeholders (programmers, coordinators, users, debuggers, etc.), explain and understand software issues.
Moreover, they are trained in understanding, expanding and maintaining large chunks of code written by other programmers, apply diverse coding standards, adhere to various codes of conduct, and in general, apply in practice almost everything they have learned in theory.
Q: How do OSS projects compare to traditional classroom training methods in developing software developers' skills?
A: OSS projects provide real world environments for developing software skills. Students are trained to interact with developers or other learners outside their own learning teams, and they are potentially faced with different problems than their course learning mates by participating in different OSS projects.
They receive knowledge tips that their academic instructors might not be able to provide in a typical lab setting, and they are able to exercise their skills beyond the lab hours.
Q: What are the specific skills that young developers can gain from working on real-world open-source projects?
A: Soft skills include:
- Communication.
- Person to person interaction.
- Ethical behavior.
- Working in teams.
- Participating in communities.
- Open mindset thinking.
Hard skills include:
- Programming in various programming languages.
- Testing and debugging.
- Version releasing.
- Quality evaluation.
- Refactoring.
- Use of specific software engineering tools and software technologies.
- Awareness of application domains.
Q: Can you provide examples of open source projects that you believe are well suited for young software developers in the educational setting?
A: I would recommend OSS projects with the following characteristics: beta version projects that are suitable for testing and debugging tasks, non well documented projects that might require some documentation effort. Projects should not be too large (hard to handle for novices) or too small (e.g. not other peer students’ projects).
In any case, I would let the students choose OSS projects of their own preference (e.g. those that match their own state of knowledge in programming or in application domains they are already interested in). Projects should have a welcoming community, with a mentoring mentality.
For these reasons, it is imperative to keep track of the students’ satisfaction and evaluation of the projects they have visited and worked within.
Q: What kinds of challenges do students typically face when they first start working on open-source projects?
A: There are several challenges, e.g. choosing the right project, introducing themselves properly to the community, identifying suitable tasks to undertake or propose, reporting and interacting correctly with various community members. In addition, they are faced with the typical software engineering hardships, like understanding and maintaining code, writing quality code, etc.
Q: How can instructors and educational institutions foster an environment that encourages the use of OSS in the classroom?
A: Institutions should provide open source infrastructures (operating systems in labs and office environments) to foster the use of OSS in general. Instructors should use open source tools in their teaching and lab sessions for the same reason, as it would be hard to convince students of the benefits that OSS projects provide to them if instructors are not OSS users themselves. Commercial tools and infrastructure should be used only when absolutely necessary.
Q: Could you share some success stories of students who have gained significant benefits from working on OSS projects?
A: One of my students participated in a project as a novice member of the community, but eventually became the coordinator of the project. Another one produced UML diagrams to document a project, and eventually was asked to teach the coordinator system analysis, as she (the coordinator) had no prior knowledge in this field. Yet another student implemented an entire new function in a well known OSS media player.
Q: How does participating in OSS projects prepare students for the workforce, especially in the tech industry?
A: Participating in OSS projects provides students with a specific workforce experience that is different and more realistic than the typical student team collaboration environment. Although graduate students will probably work in a different work environment, they are already acquainted to collaborating with people they hardly know and with technical skills at various levels, getting assigned tasks and reporting back results, asking questions appropriately, etc.
In plain words, by participating in OSS projects, students are exposed to conditions similar to those of the software industry.
Q:Can OSS projects be incorporated into various areas of study, or do you think they are more beneficial for specific fields, such as computer science or software engineering?
OSS projects are very well suited to software engineering and programming tasks. However, they may be leveraged as practice communities in various fields. Non computer science students may exercise their skills in evaluating software that is useful in their profession, ask for software features and provide requirements, and eventually test and report issues to the developers.
Q: How do you see the role of OSS in education evolving in the future?
A: I expect OSS to grow even more in the future, especially because of the support of governments of digitally advanced nations. Consequently, OSS usage will increase in the future, along with OSS awareness among educators and students alike. Such facts will make OSS a major player in the education field.
Q: How can the broader open-source community support and enhance educational initiatives?
A: Major OSS organisations (FSF/FSFE, Apache, Mozilla, etc.) may play a crucial role here, by promoting, mentoring and even financing if possible educational activities that will strengthen the bond between OSS projects and educators/students
Q: What are some ways that institutions can measure the success of integrating OSS projects into their curriculum?
A: Some metrics I can think of are: the number of courses that involve OSS in their practical sessions/projects, the number of students opting to attend such courses, the number of students opting to undertake OSS related tasks among other, non OSS related options, the number of educators that use OSS projects in their teaching, the number of ECTS points gained by participating in OSS tasks, the degree of satisfaction of students after having completed OSS tasks.
Q: How can institutions encourage students to continue contributing to OSS projects even after they have finished their formal education?
A: This is more a question of having a participatory/volunteer culture. Institutions should promote the culture of give and take among their students, benefiting not only OSS but the entire society. More specifically, computer science students may be instructed on how to build a reputation and a career based on their participation in OSS projects.
Q: What is your advice for educators who want to integrate OSS projects into their curriculum, but are unsure of where to start?
A: The easier way is to read the literature on the many educators that have used OSS projects in their teaching. Novice educators may be informed of the pros and cons of this approach and decide how to shape their own students’ participation. There are some sites and web pages that provide information on suitable OSS projects and tasks to start with. The safest way is to guide some good students to enter OSS projects for one semester, check the results and receive feedback by their students, and if satisfied increase the number of students in the next course version. Personally, I started by asking students to volunteer in one course, then proceeded with half of the students, always on a voluntary basis, and ended up by asking all students to enter the OSS world as part of their practical assignment for a couple more courses.
Image credit: Giammarco Boscaro on Unsplash