Throughout our educational journey we have always been taught that generally two heads are better than one. That teams working at their optimum could do the impossible and it was almost the impossible to achieve this equilibrium. We could go on for days talking about all the factors on how to improve the efficiency of a development team, utilising and identifying the skills of the engineers and their motivations or even how to make great project plans…. However from my experience, and a lot of others’ research, what it really all comes down to is a pretty obvious (or not) factor...
Well d’uh I hear you say. Of course it’s the people: good people make good software, right?
Arguably no, they maybe good workers, great even, but may not be with each other. So what we should be saying is great teams make great software. The word team boils down to: a unit of great people that work great together.
But ask yourself, when, as students or as junior engineers, did we have this realisation or have we even had it yet? I didn’t fully appreciate the value of my team-player skills until well after acquiring a number of software developer roles and now leading the product team and being the community manager of an open source CRM, SuiteCRM. Prior to this immersion of open source I had relatively little opportunity to flex my emotional intelligence muscles and found myself making a lot of rookie mistakes on how to talk to others and how to both direct and connect with these relative distant strangers, though like minded and talented people, towards the same goal of improving the product. Although this scenario refers to an open source community it can easily be applied to any technical team working towards team perfection.
Soft skills, or otherwise known as either professional or people skills, are not often talked about in the tech scene as being an necessity. More often it’s assumed that these skills will be learned at one point in peoples’ careers, or teams simply accept they aren’t worth refining versus the more covenanted skill of being technically knowledgable. But in open source, being able to communicate and converse with others is a core principle and without good soft skills then the project or software will more often fail due to lack of collective direction or leadership. We tend to think that we can solve a lot of our problems by throwing more tools or using the latest technology but often the hardest part is getting people to work together, collaborating and sharing mutual respect. This is something that should be considered placed at a higher importance than the tools & languages themselves when teaching the next generation of engineers. Technology moves so fast that often what language or framework we teach our students usually becomes obsolete in a couple of years. So we should be arming our students with good social skills that they will evidently need in order to adapt with the often changing technology landscape.
That’s where open source communities can help by being a great learning platform for aiding students to not only hone these soft skills but also teach them of the principles of Open Source: transparency; collaboration; and participation. They will learn early on in their studies how their interactions within an online community and the values of open source can have a knock on affect on their daily lives not only making better software but better themselves as people which then has a positive impact on society.
Ok, You may question if have my head in clouds in regards whether merely participating in open source as a student could shape the world, but does that sound so crazy? Let’s explore that..
As I stated earlier, soft skills in the tech industry are highly sought after and to add to this so are the environments in which young engineers can actually learn them from a wide number of peers. A large chunk of a student’s curriculum is of concentrated technical content mostly completed in isolation. Yes, there are team projects, but how often did you find yourself tripping up on miscommunication and/or direction with minimum guidance or incentive to correct? You could carry the team for a little while, but we all know that this isn’t sustainable in corporate teams and burn out is often around the corner. Course material that is dedicated to the participation of open source can help students build better social skills by immersing the student in friendly and collaborative online communities whilst sharpening the student’s technical proficiency.
I’ve listed below a few categorisations of soft skills, what attributes they include and then examples of scenarios within open source that students would have a chance to practise those skills.
|Communication (written & oral)||descriptive; tone of voice; confidence; responsive||write & comment code, update issue & other docs, ask for clarification|
|Teamwork||pragmatic; goal driven; task completion; conflicts||monitor progress & help each other e.g. contributing to other team members work to achieve a bug/feature|
|Interpersonal||empathy; patience; tolerance; listening||identifying with community members, peers & the code e.g. learn of other people situations, or roles within the community/work|
|Reflection||review; constructive criticism; open mindedness||post-mortem, improve code based on feedback, adapting solutions e.g. code review of a PR or a RFC|
|Critical Thinking||analysis; rational; evaluation;||test, trace, & debug code e.g. Working through debug logs, or deciphering patterns|
|Management||delegation; leadership; prioritisation||plan work & assign (or nominate) tasks to other team members|
|Problem Solving||clarification; attention to detail; innovation; decision making||design fix or feature (UI, code, tests, docs)|
Of course learning these attributes can be experienced outside of open source, but with the sheer number of open source projects available to choose from there’s bound to be something of interest to each student and at any skill level. This lower barrier of entry can attract earlier education to utilise open source as a means to explore community mentality even if they don’t possess advanced technical knowledge.
Students would have the chance to experience the industry with using real world scenarios and drives. Whether these drives are lead by the project’s roadmap, or by other community members, students would see their contribution being part of something bigger and having that tangible result helps stimulates their learning. It would also allow students to engage and learn from others who have a current knowledge of being in the industry, best practises and pro tips.
As well as practising acceptable and productive conversing between other community members, students will also see from different perceptions (maintainers, users, developers) and backgrounds thus helping them to learn and experience empathy not only for the people but the code itself.
However, not all communities are sunshine and rainbows, so open source projects need to play their part as well to provide safe and inclusive communities.
So, how does this help our industry, better yet our society? Well, by introducing the concept of both the principles of open source and participation at the grass roots we can encourage team mentality early on even before they enter the workforce. There have been positive findings* showing that by merely participating in a open source project as part of an exercise students were more favourable to further take computing studies even when they hadn’t considered it. By introducing this open source participation to students at early stages of their education (perhaps before their GSCE/N5s) this would provide them previously unconsidered opportunities: opportunities for young girls, minority groups and those with disabilities. Thus when students have graduated (or even before) they can inject into the industry diversity and thus leading to more innovation on better ways of working and solutions.
Also, if the students had positive experiences during their studies then by the time they join the work force they will already have developed this mindset of seeking the alternatives to proprietary as well as challenging the negative perception of open source.
As we examined earlier, that being in an open source community, be it active and healthy, would help invoke the community mentality in students and that working together you can achieve great things than when working alone. Students would learn of compromise, friendships and overcome conflicts for the sake of the community's greater goal. Good FOSS communities usually have a code of conduct to adhere to which usually includes points about bullying and harassing and that it would not be tolerated. This is enforced and supported by community members who usually provide quick feedback to those that are not following the expected positive and ethical behaviour presenting the students with consequences of their actions. This can help a student observe, learn and ideally emulate in other aspects of their lives leading to a better understanding and appreciation of other members of society.
Oh there is so many benefits of how students can learn from open source, that’s only the tip of the iceberg! However, what I hope you will take away from this is that by introducing open source participation at earlier stages of education we can teach our children how to socially conduct themselves in online communities thus helping them grow into positive and community oriented adults, not only to lead our tech industry but also shape humanity for the better.
* Evaluating Student Experiences in Developing Software for Humanity,
Gregory W. Hislop, Heidi J. C. Ellis, Ralph A. Morelli