We’re Teaching Coding All Wrong
Budding computer scientists should learn to collaborate, not go it alone.
Any tech breakthrough is almost always a joint effort. To add a single feature to an iPhone app, teams of front-end engineers, user experience designers and graphic designers must work with cyber security specialists, back-end developers and iOS developers — just for starters. That means that today’s best engineers are prodigious collaborators and communicators. And yet we still train too many prospective coders to work alone.
From their first day in the classroom, computer science students are nudged to value individual successes over team victories. Most assignments are completed and submitted solo. While liberal arts majors are drilled in methods of communication, and vocational programs like business and medicine feature tons of group work, many computer science programs prize technical output over so-called “soft skills” like collaboration and communication. Conflict resolution and critical thinking get short shrift.
Computer science classes are among the most likely to grade students on a curve, which pits classmates against each other, ensuring that one student’s success has the potential to lower another student’s grade; this approach has been found to deter female students in particular.
The deepening shortage of computer science professors has led many programs to adopt “competitive enrollment” models, which make introductory classes even more cut-throat, making students believe they must compete to stay in the major.
Even when students want to work together, they are often deterred by strict policies that consider collaboration to be cheating. Yet students who learn through “pair programming,” in which two programmers work together at one computer, earn higher grades, create stronger projects, and display higher levels of satisfaction with their computer science classes.
The benefits of pair-programming are particularly pronounced for women: in one study, women who coded in pairs during an introductory course earned higher grades, were 36.8% more likely to major in computer science, reported greater levels of confidence in their solutions, and enjoyed the programming process more than women who did not work in pairs. Another study found that working in pairs increased women’s confidence by 24 percentage points, compared with a 15-point increase for men.
Students who did not grow up coding at home or learning computer science in school — disproportionately women and students of color — benefit most from the engagement, social ties, and active learning that arise from collaborative work. Perhaps if collaborative learning didn’t remain so rare in coding education, the field could improve its dismal diversity record: computer and mathematical occupations are just 25% women, 8.4% Black, and 7.5% Latinx. Those numbers are even worse in many top firms, where Black and Latinx coders report feelings of isolation and often represent just 3 to 6% of employees.
Meanwhile, employers consistently find their new hires to be proficient coders but struggling collaborators. While the vast majority of employers value essential “soft skills” even more highly than a candidate’s college major, hiring managers place communication and problem-solving skills among the top-five competencies computer science students are missing.
The results can be seen in Silicon Valley’s individualistic culture, in which engineers struggle for power within their teams and even refuse colleagues’ input for fear of losing sole credit for their work. Code reviews are supposed to be opportunities to workshop issues, but instead become contests for recognition. When new team members have questions, they are told to “RTFM” or “read the fine manual.” Accepting help is cast as a weakness, and giving help is cast as a waste of time. Every time a coder fails to brainstorm or offer direction to a colleague, the industry loses out.
Silicon Valley has spent years debating how to find the coveted “10x engineers” — or engineers who are ten times more productive than the average. But engineering managers know that there’s a lot more to being a great engineer than writing the most lines of code. The best engineers understand their colleagues, build consensus, and can iterate on others’ work. On an even more fundamental level, they are able to read and digest other people’s code — which is a distinctly different skill than writing fresh code from scratch, and one that college students have too few opportunities to practice. College programs that focus on solo coding are missing the bulk of a professional engineer’s responsibilities.
We can’t blame coders who come into a role expecting to solve problems on their own. It’s how they’ve been trained and taught.
When we tell prospective engineers that individual victories are the only kind worth winning, we set them up to enter the workplace as competent coders but poor collaborators. We squeeze out coders who do not see themselves in the image of lone wolf inventor. The industry cannot afford to lose out on that potential.
This article originally appeared on Bloomberg.com.