Any introductory talk on Free and Open Source Software (FOSS) addressed to students will throw up the typical question: “Will FOSS get me a job?” This is generally a follow-up question to “Why should I do this FOSS thing?” A lot of blogs and articles that I read state that in the current economic downturn, FOSS ought to be something students should be looking at. This goes to prove that FOSS has attained mainstream acceptance as a skill worth acquiring.
In short, students should consider participating in and contributing to FOSS as early as possible.
And, as a response to the first question, the answer is generally a resounding NO. FOSS isn’t going to get any student a job. However, it is going to equip anyone who chooses to participate or contribute with the required skills, competence, and the recognition that will surely come in handy when building a career around software development.
Training a recently recruited software developer from the ground-up in the basics of the software development process is an expensive and labour-intensive affair. Yet, lots of companies do so because of the lack of such skills in their freshers. This is one aspect that can be taken care of by gradually acquiring skills in the world of FOSS. The academic curricula that students go through bring them up to speed with the rigour and discipline imposed by the theories. FOSS allows them to immediately implement their knowledge and learn from a collaborative experience.
Let’s take the example of students who feel motivated enough to begin by participating in and thereon moving to contributing to FOSS. What skills do they obtain? Plenty.
Since FOSS development is mainly driven over the Internet, the very first skills that get polished are communication skills and the ability to use communication tools like e-mail and IRC (and IMs). Virtual communication puts the responsibility on the sender of the message to be clear, concise and precise. All these are very good qualities to be learnt. Additionally, appreciation of the cultural nuances of interaction, the social norms, etc, make a new contributor a much more well rounded personality in addition to enhancing developer skills.
Moving on, any FOSS project would have its version control system, and submissions of code or content to the version control system undergo the age-old process of peer review. How are these two important? It helps a student get familiar with the theory and practices of version control, the need to write code/content/patches according to established guidelines, and build upon the communication skills learnt to appreciate the feedback from a peer review group.
So, from just interested participants, willing students are well on the road to becoming well-rounded developers with various skills that make them invaluable when the recruiting season comes around. But wait, there’s more: FOSS development processes ensure that contributions of code/content are always out in the open and available for perusal/analysis. What this means is a portfolio of development work. How does that help? Well, if there is an existing body of peer-reviewed code/content on a publicly-available version control system, it helps a recruiter do a technical assessment of the candidate. This does not really mean that a company would waive standard procedures of technical tests, but it would perhaps be of an added advantage when put in the perspective of peers. And, for companies already doing FOSS, such a code/content portfolio is of immense use. It allows them to form a judgement around the competencies of the candidate and even check out with the project module leads about how good the contributor is.
The curricula teaches the students about the Software Development Life Cycle (SDLC), its various stages, and the different checks and documentation that make up the Body of Knowledge. Participating in an upstream FOSS project provides an excellent exposure to these intricacies. Following up a project roadmap and working on tasks related to modules/components, while keeping in mind the project release cycles, allows the contributor to become proficient in the real-life aspects of the SDLC concepts. Additionally, with time and an increase in the quantum of contributions, the new contributor would soon be confident enough to help out and mentor others in the project. Thus completing the circle, while learning how to work with dispersed teams, communicate virtually and work to timelines.
These are qualities that companies spend an inordinate amount of time inculcating in their new recruits; while participating in a FOSS model of software development, anyone can learn it as on-the-job training. This can be done in addition to the activities of an academic life. Lessons from books are somewhat easily tested and applied in real-life projects. Thus, students should take the time to look at any interesting project and make an effort to participate in it.
So, why did I say that FOSS will not get students a job? It should be fairly obvious by now. Brushing your teeth regularly does not automatically make you a film star, does it? But good dental hygiene along with disciplined practice should equip you with a pleasing personality that may (or, may not) lead to stardom. In somewhat a similar way, FOSS allows anyone to acquire skills and personality traits that lead towards becoming a better developer and an improved person—which is a long way down the road towards building a good career.