The Importance of Non-Technical Skills for Software Engineering

Christian Baghai
5 min readOct 23, 2023

--

Hello, today we are diving into an essential yet often overlooked aspect of software engineering education — non-technical skills. A 2022 paper by Wouter Groeneveld, Joost Vennekens, and Kris Aerts from the University of Leuven in Belgium provides some revealing insights into this issue. Published in ACM Transactions on Computing Education, the paper highlights the non-technical skill gaps between what academia teaches and what the industry demands. By taking a closer look at this paper, we aim to understand these skill gaps and propose how educators, students, and industry experts can collaboratively address them.

What Are Non-Technical Skills?

Before delving into the paper’s findings, it’s crucial to understand what non-technical skills are. These are competencies not directly related to the nitty-gritty of software development such as programming, testing, or debugging. Rather, they include communication, teamwork, problem-solving, creativity, and self-management. These skills are not optional add-ons but are integral for software engineers to cope with the intricacy, unpredictability, and fast-paced nature of the industry.

The Three Major Skill Gaps

The paper pinpoints three significant skill gaps in software engineering education:

Continuous Learning

Continuous learning is a vital skill for software engineers, who need to keep up with the rapid changes and innovations in the field. However, many academic programs do not adequately foster or evaluate this skill, leaving a gap between what students learn and what the industry expects. The importance of life-long learning cannot be emphasized enough in an industry where new technologies and practices emerge every day, and where today’s solutions may become obsolete tomorrow. According to some experts, continuous learning can help software engineers improve their creativity, problem-solving, and adaptability, as well as their technical proficiency. Some of the ways that software engineers can practice continuous learning are by reading blogs, books, and journals, taking online courses, attending webinars and conferences, participating in hackathons and open source projects, and finding mentors and peers to learn from.

Creative Problem-Solving

Innovation is the lifeblood of software engineering, as it drives the development of new products, services, and processes. Industry experts value engineers who can approach problems from multiple perspectives and develop creative solutions that meet the needs and expectations of users and stakeholders. However, this is another area where academic settings may fall short, often due to rigid project guidelines and evaluation criteria that don’t encourage creative problem-solving. To bridge this gap, educators should integrate more real-world challenges, open-ended projects, and techniques for creativity, such as brainstorming, prototyping, and agile practices, into their curricula. Additionally, industry professionals should collaborate with academic institutions to provide mentorship, feedback, and opportunities for students to apply their skills in authentic contexts. By fostering a culture of creativity and continuous learning, both academia and the industry can prepare software engineers for the complex and dynamic nature of the field.

Solution-Oriented Thinking

Being able to prioritize the best possible solution over individual opinions is vital for effective collaboration and decision-making in engineering teams. This skill is also known as solution-oriented thinking, which means focusing on the desired outcome rather than the problem. Solution-oriented thinking can foster creativity, innovation, and adaptability in software engineers. However, academic settings often fail to train students in this mindset, as they tend to emphasize technical knowledge and skills over non-technical ones.

Insights from Industry Experts

The paper also provides valuable inputs from industry professionals, summarizing them under six themes:

Cultivating a Learning Culture

Continuous learning is a vital skill for software engineers, as technology evolves rapidly and new challenges emerge constantly. Experts stress the importance of creating a learning culture that fosters curiosity, experimentation, and feedback. They also urge academic institutions to offer more realistic and relevant learning experiences for students, such as project-based learning, industry collaborations, and internships. These can help students develop not only technical skills, but also non-technical skills like communication, teamwork, problem-solving, and creativity. By bridging the gap between academia and industry, continuous learning can prepare software engineers for the dynamic and demanding nature of their profession.

Boosting Creativity

Creativity is a vital skill for software engineers, as it enables them to develop innovative solutions to complex problems. However, many academic settings do not adequately foster creativity within teams, often due to rigid project guidelines and evaluation criteria. Industry professionals suggest that academic projects should be more open-ended, meaning that they allow for multiple possible outcomes and approaches, and that they challenge students to explore new domains and perspectives. Open-ended projects can stimulate creativity by encouraging students to generate and test their own ideas, collaborate and learn from others, and apply their knowledge to real-world scenarios. Some examples of open-ended academic projects are: designing a mobile app for a social cause, creating a game that teaches a concept, or developing a prototype for a new product or service.

Techniques for Creativity

Brainstorming, prototyping, and agile practices are some of the techniques that experts use to stimulate creativity in software engineering. Brainstorming is a process of generating and sharing ideas in a group, without judging or criticizing them. Prototyping is a way of creating and testing a low-fidelity version of a product or a feature, to get feedback and improve it. Agile practices are a set of principles and methods that emphasize collaboration, flexibility, and customer satisfaction in software development. These techniques can help software engineers to explore different possibilities, experiment with solutions, and deliver value to the users. Experts suggest that these methods should be taught and practiced in academic settings as well, to foster a culture of innovation and prepare students for the real-world challenges of the industry.

Bridging the Education Gap

Industry professionals acknowledge the existing skill gaps and express a willingness to collaborate with academic institutions to bridge them. They suggest various ways to enhance the industry-academia collaboration in software engineering, such as guest lectures, internships, mentorship programs, and joint research projects. They also highlight the benefits of such collaboration, such as improved innovation capacity, real-world validation, and knowledge transfer. However, they also face some challenges in establishing and maintaining effective collaboration, such as finding the right partners, aligning the goals and expectations, and measuring the impact. Therefore, they call for more research and best practices to overcome these challenges and foster a culture of participative knowledge creation.

What Industry Looks For

When hiring software developers, industry experts focus on non-technical skills like communication, teamwork, problem-solving, adaptability, and initiative, as well as technical skills like programming languages, frameworks, and problem-solving techniques. They assess these skills through various methodologies during the recruitment process, such as programmer portfolios, interviews, and software developer assessment tests. These methods help them find the right mix of skills, evaluate the candidate’s fit, and compete for talent in the software engineering market.

Recommendations and Conclusion

The paper calls for more research and collaboration between academia and the industry to adequately address the skill gaps. Educators can play a pivotal role by integrating real-world challenges, encouraging creativity, and providing more practical opportunities for students to develop these skills. On the other hand, the industry can contribute by participating actively in the educational process through guest lectures, internships, and mentorship programs.

--

--