Introduction

Programming skills have been widely recognized as one of the most important set of skills for twenty-first century success in many countries (Exter & Ashby, 2019; Wu et al., 2020). The mastery of programming skills can help learners improve their problem-solving abilities (Fessakis et al., 2013) and computational thinking (Sentance & Csizmadia, 2016). However, many students have difficulties and encounter challenges in programming. For example, Mladenović et al. (2016) found that students have difficulties in problem understanding, language syntax knowledge, and debugging. Mohd Rum et al. (2017) revealed that many students have difficulties in planning programming, testing program output, and evaluating programming solutions. In addition, many students do not like programming and they believe that programming is boring and horrible (Mathrani et al., 2016). Students become disengaged in programming because it is a notoriously difficult subject (Giacaman & De Ruvo, 2018). Furthermore, many students have a superficial understanding of programming concepts (Kunkle & Allen, 2016) and they lack a sufficient amount of hands-on programming experience (Yeomans et al., 2019). Previous studies revealed that scaffolding is an effective strategy for overcoming these challenges in programming (Margulieux & Catrambone, 2021; Zhang et al., 2021). Therefore, it is necessary to provide scaffolding for learners to overcome difficulties during programming.

Previous studies have attempted to provide fixed and static support for novice programmers through the use of technology. For example, Phuong and Shimakawa (2008) developed a collaborative programming environment for programmers, and they found the developed environment enhanced the capabilities of novice programmers. Mohd Rum et al. (2017) developed a metacognitive scaffolding learning environment for novice programmers and found that learners with metacognitive scaffolding outperformed learners without metacognitive scaffolding. However, the use of advanced twenty-first century technology alone cannot guarantee the desired learning outcomes (Bond, 2020). Productive and successful learning requires the thoughtful integration of technology and pedagogy (Janssen et al., 2019). Therefore, this study focuses on how to provide fade-in and fade-out scaffolding for novice programmers in collaborative programming environment. Fade-in scaffolding refers to scaffolding that is gradually introduced and fade-out scaffolding refers to scaffolding that is gradually removed.

Previous studies indicated that learning performance was closely related to the timing of the scaffolding (Shin et al., 2020). There is a debate about the roles of fade-in and fade-out scaffolding. For example, Tawfik et al. (2018) revealed that learners with fade-in scaffolding outperformed those with fade-out scaffolding in ill-structured problem solving. On the contrary, Tullis et al. (2015) found that fading-out scaffolding improved learning more than constant scaffolding in a mouse movement task. In addition, although previous studies have developed systems to provide scaffolding for individual programming (Mohd Rum & Ismail, 2017; Sun & Hsu, 2019), it is challenging to scaffold collaborative programming effectively. Collaborative programming is particularly helpful for novice programmers because it can offer opportunities to establish a shared understanding as well as to code, test, and debug projects along with their peers (Teague & Roe, 2008). However, very few studies have examined the roles of scaffolding fading in the collaborative programming field. Therefore, the aim of this study is to address the research gaps and examine the roles of fade-in versus fade-out scaffolding in collaborative programming.

The remainder of the paper is organized as follows. First, a literature review details the research status of collaborative programming and scaffolding. Next, we present a study comparing the roles of fade-in versus fade-out scaffolding in a collaborative programming context. Finally, the findings of the present study are summarized and discussed. As we move into the discussion section, there are a set of limitations associated with this study that must be kept in mind.

Literature review

Collaborative programming

Information technology has developed rapidly in recent years, and it requires a large human workforce with programming skills (Lu et al., 2017). Therefore, programming skills have become increasingly important and have become a core objective of undergraduate and graduate programs in engineering fields (Wang & Hwang, 2017). To improve programming skills, collaborative programming has been widely adopted in many schools. Collaborative programming, in which a group of learners work on the same code and complete programming tasks together, is considered an effective pedagogical approach (Nosek, 1998). Collaborative programming aims to improve learners’ programming skills through writing code and refining programs with peers (Lu et al., 2017). Furthermore, the benefits of collaborative programming, such as improving programming performance (Wang & Hwang, 2017), building computational thinking competence (Denner et al., 2014), improving problem-solving abilities, and developing a higher level of confidence (Beck & Chizhik, 2013), have been well documented in the literature.

However, most students have many difficulties with collaborative programming. For example, many students are not willing to collaborate with peers during collaborative programming (Wei et al., 2021), and experienced coders demonstrate less enthusiasm about collaborative programming (Bowman et al., 2020). Students often lose confidence and decrease engagement when they encounter difficulties with programming (Mladenović et al., 2016). Furthermore, students have difficulties in establishing a shared understanding through conflict negotiation during collaborative programming (Wu et al., 2019). Therefore, it is necessary to provide scaffolding during collaborative programming. To the best of our knowledge, few studies have investigated how to provide scaffolding to improve collaborative programming skills. Therefore, this study attempts to bridge this gap and examine fade-in versus fade-out scaffolding in online collaborative programming environments.

Scaffolding and the fading paradigm

Scaffolding was proposed on the basis of the zone of proximal development, which is defined as the distance between the actual developmental level and the potential development level (Vygotsky, 1978). Scaffolding is conceptualized as assistance from a more knowledgeable peer or an adult (Wood et al., 1976). It has been found that learning is the most effective within learners’ zone of proximal development through scaffolding (Yu & Hu, 2017). One important aspect of scaffolding is how the scaffolding fades over time (Puntambekar & Hubscher, 2005). There are two types of fading paradigms, namely fade-in and fade-out (Jennings & Muldner, 2020). Traditionally, scaffolding should be fade-out when learners do not need it anymore (Lajoie, 2005). In fade-in scaffolding, scaffolding is gradually introduced, which is aligned with the theories of productive failure proposed by Kapur (2008). Kapur and Bielaczyc (2012) proposed that productive failure includes two phases, namely the exploration phase without scaffolding and the consolidation phase with scaffolding. Productive failure is characterized as scaffolding transitioning from low to high. Kapur (2016) believes that solving problems without scaffolding is a productive exercise and initial failures contribute to future learning.

However, there are differing opinions about the roles of fading scaffolds. For example, Bulu and Pedersen (2010) found that learners with continuous scaffolding outperformed those with fade-out scaffolding. In contrast, Kalyuga and Renkl (2010) believe that learners benefit more when scaffolding fades out. Therefore, it would be very interesting to investigate which type of fading paradigms is more effective. Although Wang et al. (2021) conducted an exploratory case study to investigate how a teacher can support preschoolers’ programming, how to fade scaffolding for novice programmers was not investigated in the study. To the best of our knowledge, very few studies have investigated how to provide fade-in and fade-out scaffolding in an online collaborative programming environment. To clarify the roles of fading scaffolding, this study examines the roles of fade-in and fade-out scaffolding for novice programmers in such an environment. In addition, the fade-in and fade-out scaffolding was provided by teachers in this study. Although technology scaffolding excels at organizing knowledge (Sung & Hwang, 2013) and promoting social interactions (Molenaar et al., 2014), it fails to provide an ongoing assessment and personalized guidance (Jennings & Muldner, 2020). Moreover, learners perceive guidance from computers as generic and unresponsive when compared with teacher guidance (Tansomboon et al., 2017). Furthermore, Furberg (2016) revealed that learners still need substantial teacher guidance even in a well-scaffolded learning environment. Teachers can provide explanations and personalized feedback for learners (Yilmaz & Yilmaz, 2020), and a teacher’s involvement can promote positive interactions (Kaendler et al., 2015), increase learning engagement (Xu et al., 2020), and foster collaboration (van Leeuwen & Janssen, 2019). Therefore, teachers cannot be replaced because they play a very important role as an educator, a facilitator, and a mentor (Mathrani et al., 2016).

Research questions

The present study aims to examine the roles of fade-in versus fade-out scaffolding on collaborative knowledge building, programming skills, metacognitive behaviors, emotions, and collective efficacy. The following research questions were addressed:

  • RQ1: Do the students who learn with fade-in scaffolding build a higher level of collaborative knowledge than those who learn with fade-out scaffolding?

  • RQ2: Do the students who learn with fade-in scaffolding demonstrate better programming skills than those who learn with fade-out scaffolding?

  • RQ3: Do the students who learn with fade-in scaffolding demonstrate more metacognitive behaviors than those who learn with fade-out scaffolding?

  • RQ4: Do the students who learn with fade-in scaffolding have more positive emotions than those who learn with fade-out scaffolding?

  • RQ5: Do the students who learn with fade-in scaffolding demonstrate higher collective efficacy than those who learn with fade-out scaffolding?

Methods

Participants

This study was conducted in a higher education context, and the participants came from public universities located in the north of China. A total of 90 undergraduate students who had enrolled in a course of C programming in the first or second year of college voluntarily participated in this study. Power analyses for a-priori sample sizes for t-tests and F-tests indicated a required minimum sample size of N = 84 for an anticipated large effect size, a statistical power level of β = 0.95, an α-level of 0.05 (Faul et al., 2007). Therefore, the sample size of 90 participants was a statistically fair sample. There were 59 males and 31 females, and the average age of participants was 21 years. All of the participants were assigned into 15 fade-in groups or 15 fade-out groups. There were no significant differences in gender (X2 = 3.15, p = 0.07 > 0.05), major (X2 = 0.05, p = 0.82 > 0.05), age (z = 1.26, p = 0.08 > 0.05), or course grades of programming in C (t = 0.09, p = 0.93 > 0.05) between the fade-in group and fade-out group. Therefore, these two groups are statistically similar to each other in terms of gender, age, major, and course grades of programming in C. There were three students in each group. All participants had prior knowledge of C programming, but they were still novice programmers because they did not have extensive experience in C programming.

Procedure

The exploratory procedure is shown in Fig. 1. Before the exploratory experiment, all of the participants performed a pre-test to examine their level of prior knowledge. There was no significant difference in prior knowledge about C programming between the fade-in and fade-out groups (t = 0.47, p > 0.05). Next, all participants took part in an online collaborative programming project using the Visual Studio integrated development environment and completed the same task for three hours. The Visual Studio integrated development environment includes an editor, terminal, and text-based chat window, in which participants can collaboratively program and discuss the task with peers. Figure 2 shows a screenshot of the collaborative programming environment. The programming task was to develop a three-player hungry snake game using the C programming language. Figure 3 shows the process and outcome of a three-player hungry snake game.

Fig. 1
figure 1

The diagram of the exploratory experiment design

Fig. 2
figure 2

The collaborative programming environment

Fig. 3
figure 3

The screenshot of a three-player hungry snake game

Table 1 presents the details of the three types of scaffolding in each group. The three types in the fade-in group were gradually introduced and only provided when participants could not solve problems independently. More specifically, scaffolding was not provided if this group met the task requirements on their first attempt, and they had to first struggle to solve problems by themselves. The three types of scaffolding in fade-out group were only provided a single time when certain conditions were met and then removed during programming. After online collaborative programming, all participants took a post-test and answered a questionnaire on collective efficacy.

Table 1 Types of scaffolding
Fig. 4
figure 4

The example of a concept map

Instruments

The main measurement tools of this study were the pre-test, post-test, and questionnaire on collective efficacy. Both the pre-test and post-test were adapted from Tan (2017). The aim of the pre-test was to evaluate participants’ prior knowledge about the C programming language. It consisted of six multiple-choice questions, four fill-in-the-blank questions, and two programming questions, with a full score of 100. An example multiple-choice question of pre-test is shown in Fig. 5. An example fill-in-the-blank question is “The three types of iteration statements in C programming language include , , and .” The two programming questions were “Please write a program to calculate the value of ‘100 + 101 + 102 + ⋯ + 300” and “Please write a program that takes 10 integers as input, stores them in a one dimensional array, and then outputs them in reverse order.” The post-test consisted of three multiple-choice questions, six fill-in-the-blank questions about writing code, and one programming item to evaluate what participants had learned during the collaborative programming. The full score of the post-test was also 100. An example multiple-choice question of post-test is shown in Fig. 5. An example fill-in-the-blank questions is “Please write code to determine whether or not two snakes have collided.” The programming question was “Please write a program to make a snake move horizontally and increase its body length by 1 unit in every 2 s. After 2 min, end the program automatically.” These items were closely related to the structured programming method, functions, and algorithms in C programming, and they can represent a participant’s programming skills to a large extent. Furthermore, the differentiation of the pre-test and post-test were 0.30 and 0.52, indicating good differentiation. The difficulty of the pre-test and post-test were 0.75 and 0.59, implying appropriate difficulty. The homogeneity reliability of the pre-test and post-test reached 0.83 and 0.92, indicating good reliability. The validities of the pre-test and post-test were examined and confirmed by two experts who had extensive experience in C programming. The inter-rater agreement of the pre-test and post-test were 0.82 and 0.87, indicating good validity.

Fig. 5
figure 5

The example multiple-choice questions of pre-test and post-test

Collective efficacy is defined as a group’s shared beliefs in its abilities to execute tasks to achieve group goals (Bandura, 1997). The questionnaire of collective efficacy was adapted from Zheng (2017). It includes two types of constructs, one is the belief in a group’s abilities to achieve the goal, and the other is the perception of commitment to the group work. The collective efficacy questionnaire consists of 10 items with a 5-point Likert scale. The Cronbach’s alpha value of the questionnaire was 0.85, indicting excellent reliability. In addition, the confirmatory factor analysis (CFA) was further conducted to examine the construct validity of the collective efficacy questionnaire. The CFA results revealed that X2/df = 1.26, the root mean square error of approximation (RMSEA) = 0.05, the goodness of fit index (GFI) = 0.95, the comparative fit index (CFI) = 0.98, the incremental fit index (IFI) = 0.98, and the Tucker–Lewis index (TLI) = 0.98. The model fits the data well and satisfied the threshold values according to Hair et al. (2010). Therefore, the construct validity of the questionnaire was confirmed further. Moreover, the results indicated that all of the factor loading values ranged from 0.53 to 0.86, which satisfied the threshold value of 0.5 according to Bagozzi and Yi (1988). The composite reliability (CR) of the two constructs were 0.72 and 0.82, which satisfied the threshold value of 0.60 according to Bagozzi and Yi (1988). The average variance extracted (AVE) values of the two constructs were 0.50 and 0.56, which satisfied the threshold value of 0.50 based on Bagozzi and Yi (1988). Therefore, the collective efficacy questionnaire achieved good convergent validity.

Data analysis methods

This study adopted a knowledge-map-based analysis method to analyze 8913 discussion transcripts to measure collaborative knowledge building level. This analysis method was proposed and validated by Zheng et al. (2015), and it consists of three steps. The first step is to draw a target knowledge map. The second step is to code discussion transcripts based on predefined rules by two coders. The inter-rater reliability of two coders was 0.79, indicating good reliability. The last step is to calculate collaborative knowledge building level and generate a knowledge graph for each group. The collaborative knowledge building level is equal to the activity quantities of all knowledge nodes in the knowledge graph. The activity quantity of each knowledge node refers to the information entropy of online discussion transcripts, which can be calculated through our analytical tool.

Programming skills were measured through the post-test and group products. The group products were evaluated on the basis of the rubric shown in Table 2. Furthermore, the pre-test, post-test, and group products were analyzed by two experienced teachers who are blinded to experimental condition and had rich experiences in coding procedure and programming knowledge. The inter-rater reliability of the group products was calculated using Kappa statistics and was 0.895, indicating good reliability.

Table 2 Rubric for group product evaluation

Content analysis and lag-sequential analysis were adopted to analyze the metacognitive behavioral patterns. The two coders are blinded to subject identity and experimental condition to analyze discussion transcripts of all groups based on the coding scheme (Table 3). This coding scheme was based on that of Zheng et al. (2019). The inter-rater reliability was 0.9, indicating excellent reliability. Next, GSEQ 5.1, developed by Quera et al. (2007), was adopted to calculate the behavioral transition through the z-score. The z-score refers to the adjusted residual that can represent whether the behavioral sequence is more significant than expected by chance (Bakeman & Gottman, 1997). If the z-score is larger than 1.96, it indicates that the behavioral sequence is statistically significant (Bakeman & Gottman, 1997). The z-score is sensitive to sample size (Bakeman & Quera, 2011) and this study analyzed 8913 behavior codes to examine the behavioral transition. Moreover, the emotional status was classified as positive, negative, neutral, or confused based on Zheng and Huang (2016). Two coders classified the emotional status of the 30 groups and the inter-rater reliability was 0.9, indicating good reliability.

Table 3 Coding scheme for metacognitive behaviors

Results

Analysis of collaborative knowledge building

To examine the difference in collaborative knowledge building, the normality of the distributions was tested using the Kolmogorov–Smirnov test. The result reveals that all data are normally distributed (p > 0.05). The homogeneity of variance was also evaluated, and the result indicates that the homogeneity of variance is not violated (F = 0.177, p = 0.678 > 0.05). Therefore, analysis of covariance (ANCOVA) can be used to examine the differences between the fade-in group and fade-out group by excluding the impact of the pre-test scores. Table 4 shows the results of ANCOVA. The finding reveals that there is a significant difference in collaborative knowledge building between the fade-in and fade-out groups (F = 5.410, p = 0.028 < 0.05). Furthermore, the fade-in group outperformed the fade-out group. Figures 6 and 7 show the knowledge graphs of one fade-in group and fade-out group. The nodes and edges of the knowledge graphs represent the knowledge and their mutual relationships, respectively. The numbers next to the nodes denote the activation quantities that were calculated using our analytical tool. It is very clear that the fade-in group activated more knowledge nodes and relationships than the fade-out group.

Table 4 Summary of ANCOVA results on collaborative knowledge building
Fig. 6
figure 6

A knowledge graph of a fade-in group

Fig. 7
figure 7

A knowledge graph of a fade-out group

Analysis of programming skills

Programming skills were measured through post-test and group products. The normality distribution and homogeneity of variance were evaluated to examine whether the data could be analyzed using ANCOVA. The Kolmogorov–Smirnov test results reveal that all data sets are normally distributed (p > 0.05). In addition, the findings reveal that the homogeneity of variance is not violated for the post-test (F = 0.006, p = 0.939 > 0.05) and group products (F = 0.093, p = 0.762 > 0.05). Thus, ANCOVA can be used to examine the differences in the post-test and group products of the fade-in and fade-out groups by excluding the impact of the pre-test scores. Two ANCOVA for the post-test and group product scores were conducted using the pre-test score as the covariant and the fading paradigm as the independent variable, and Table 5 shows the results. The analysis shows that there is a significant difference in the post-test scores of the fade-in and fade-out groups (F = 10.383, p = 0.002 < 0.01). Moreover, the adjusted means of the fade-in group are significantly higher than those of the fade-out group. Therefore, fade-in scaffolding can significantly improve group learning achievement.

Table 5 Summary of ANCOVA result on the post-test and group product

The results also reveal that there is a significant difference in group product scores between the fade-in and fade-out groups (F = 146.879, p = 0.000 < 0.001). Furthermore, the fade-in groups outperform the fade-out groups in terms of group product score. Figures 8 and 9 show portions of the group products of the fade-in and fade-out groups, respectively.

Fig. 8
figure 8

The fade-in group product

Fig. 9
figure 9

The fade-out group product

Analysis of metacognitive behaviors

The lag-sequential analysis method was adopted to analyze metacognitive behavior transitions. Tables 6 and 7 are the adjusted residuals tables for the fade-in and fade-out groups, respectively. In the two tables, the behaviors in the left-most column indicate the starting behaviors and the behaviors in the top-most row indicate the subsequent behaviors. The findings reveal that there are 13 significant behavior sequences for the fade-in group: OG → OG, OG → MP, MP → MP, MP → MC, ES → ES, ES → MC, MC → OG, MC → MP, MC → ES, ER → MC, ER → ER, AM → ER, and AM → AM. There are only seven significant behavior sequences for the fade-out group, namely OG → OG, MP → MP, ES → ES, MC → MP, MC → MC, ER → ER, and AM → AM. Figures 10 shows the behavioral transition diagrams of the fade-in and fade-out groups.

Table 6 Adjusted residuals of the fade-in group
Table 7 Adjusted residuals of the fade-out group
Fig. 10
figure 10

Behavioral transition diagrams of the fade-in and fade-out groups

There are several differences between the fade-in group and fade-out group, as shown in Table 8 and Fig. 10. First, the fade-in group showed more behavioral transition than the fade-out group. There are seven significant behavior sequences that only occurred in the fade-in group, namely OG → MP, MP → MC, ES → MC, MC → OG, MC → ES, ER → MC, and AM → ER. This result indicates that goal setting, planning, monitoring and control, enacting strategies, and evaluation and reflection could be the crucial behaviors resulting in better programming performance. Second, the fade-out groups show more repetitive behavior transitions, such as OG → OG, MP → MP, and so on. Overall, the fade-in groups show a stronger metacognitive behavioral transition than the fade-out group.

Table 8 Significant behavior sequences that occur in the fade-in and fade-out groups

Analysis of emotional status

To examine the differences in emotional state of the fade-in and fade-out groups, the independent samples t-test was adopted to analyze the data. As shown in Table 9, the results indicate that there is a significant difference in the positive emotion of the fade-in and fade-out groups (t = 2.59, p < 0.05, d = 0.94). There is a large effect size for positive emotion according to Cohen (1988). However, there are no significant differences in negative emotions (t = 1.92, p > 0.05, d = 0.54), neutral emotions (t = 1.48, p > 0.05, d = 0.70), and confused emotions (t = 0.97, p > 0.05, d = 0.35) between the fade-in and fade-out groups. The fade-in group demonstrated less negative, neutral, and confused emotions. These findings reveal that fade-in scaffolding can significantly encourage more positive emotions.

Table 9 Independent samples t-test results of emotional status

Analysis of collective efficacy

The mean of collective efficacy was 3.98 for the fade-in group and 3.54 for the fade-out group, respectively, indicating the fade-in group outperformed the fade-out group (Table 10). The results of the independent samples t-test reveal that there is a significant difference in the collective efficacy between the fade-in and fade-out groups (t = 3.29, p < 0.01, d = 0.70). Therefore, fade-in scaffolding can significantly improve the collective efficacy of the group.

Table 10 Independent samples t-test results of collective efficacy

Discussion

This exploratory study examined the roles of fade-in scaffolding and fade-out scaffolding on collaborative knowledge building, programming skills, metacognitive behaviors, emotions, and collective efficacy in an online collaborative programming environment. The results indicate that the learners with fade-in scaffolding significantly outperformed those who learned with fade-out scaffolding in terms of knowledge building, programming skills, metacognitive behaviors, emotions, and collective efficacy. Therefore, fade-in scaffolding may be more useful than fade-out scaffolding for novice programmers.

This study revealed that fade-in scaffolding could significantly improve knowledge building and programming skills. The main reason lay in that the scaffolding was gradually introduced and increased during collaborative programming to engage participants in exploration and solving problems. The cognitive scaffolding provided in this study was in the form of concept maps, coding examples, and concept explanations. Previous studies revealed that novice programmers faced difficulties in understanding basic programming concepts (Koorsse et al., 2015; Tsai, 2019). Menon and Kovalchick (2020) found that concept maps are helpful for understanding programming concepts through organizing and key concepts and their relationships. Therefore, the concept maps provided in this study (as shown in Fig. 4) demonstrated programming concepts and their relationships to improve the level of collaborative knowledge building. In addition, coding examples can lower the difficulty and improve efficiency for programmers (Yaghmazadeh et al., 2018). Thus, the coding examples provided in this study contributed to improving programming skills. Moreover, concept explanations were also provided for students to clarify their misconceptions. All in all, the fade-in cognitive scaffolding helped improve knowledge building levels and programming skills.

Programmers need metacognition support to understand programming problems, correct programming errors, and test program output (Mohd Rum & Ismail, 2017). The findings of this study demonstrate that the fade-in metacognitive scaffolding significantly increases metacognitive behaviors and behavioral transition. This result corroborates with previous findings that metacognitive scaffolding can offer substantial benefits for online collaborative learning (Kwon et al., 2013). The metacognitive scaffolding provided in this study aimed to help students to set programming goals, make plans, monitor progress, reflect, and evaluate as well as adapt their metacognition. These metacognitive behaviors indeed resulted in better programming performance, on the basis of the findings in this study. Furthermore, the present study revealed that goal setting, planning, monitoring, enacting strategies and evaluating and reflecting could be the crucial metacognitive behaviors. As Mohd Rum et al. (2017) found, outstanding programmers adopt more metacognitive strategies than novice programmers. Therefore, the metacognitive scaffolding elicited more metacognitive behaviors and increased programming skills.

This study revealed that fade-in emotional scaffolding promotes positive emotions and decreases negative, neutral, and confused emotions. The main reason could be that the teachers provided fade-in emotional scaffolding when the learners demonstrated various kinds of emotions. Teachers can help learners to regulate negative, neutral, and confused emotions. For example, when learners felt sad and anxious during programming, the teachers encouraged them to think positively and find help from peers. On the contrary, learners’ emotions could not be captured in real time when scaffolding was faded out, which led to more negative, neutral, and confused emotions in the fade-out group. In addition, the present study found that the fade-in group demonstrated higher collective efficacy than the fade-out group. This result could be explained by Bandura’s (1997) views, that engaging participants in collaborative learning with scaffolding increases a group’s efficacy beliefs.

Regarding the implications for research and practice in collaborative programming, several points can be made according to the results. First, fade-in scaffolding is better than fade-out scaffolding for novice programmers. Furthermore, novices need scaffolding for a long time (Tawfik et al., 2018). The findings reveal that teachers and practitioners should provide a set of scaffolding for novice programmers during programming. Second, this study found that teachers cannot be replaced by tools and learners still need teacher guidance in programming. Even with the aid of technology, teachers still need to make explanations based on analysis results and make decisions based on data (Yilmaz & Yilmaz, 2020). Third, learners need multiple kinds of scaffolding during collaborative programming, including cognitive, metacognitive, and emotional scaffolding. The results of this study indicate that cognitive scaffolding in the forms of concepts maps, coding examples, and concept explanations are very helpful for improving programming skills. In addition, metacognitive scaffolding can elicit more metacognitive behaviors and help novice programmers to plan, monitor, and evaluate during programming. Emotional scaffolding can promote positive emotions and motivate novice programmers to improve their programming skills.

However, this study was constrained by several limitations. First, this study only focused on one online collaborative programming task and the duration of the online collaborative programming was short due to the impact of COVID-19 pandemic. Caution should be exercised when generalizing the findings to other contexts. Second, this study only examined the roles of fade-in and fade-out scaffolding in programming performance, metacognitive behaviors, emotions, and collective efficacy for novice programmers.

Conclusions

This exploratory study sought to examine the roles of fade-in and fade-out scaffolding for novice programmers and obtain a better understanding of the complexity of scaffolding. This study serves to demonstrate the importance of fade-in scaffolding for novice programmers. The present study revealed that the fade-in scaffolding played a very important role in helping novice programmers improve knowledge building and programming skills, foster positive emotions, and increase metacognitive behaviors and collective efficacy. This study also provides a valuable reference for research and practice in collaborative programming.

Future studies should examine the roles of fade-in and fade-out scaffolding when learners complete different programming tasks over a longer period of time. Moreover, there is a need for further studies to investigate the roles of fade-in and fade-out scaffolding in higher-order skills, transfer skills, and cognitive load through mixed methods to obtain a deep understanding of the nature of fade-in and fade-out scaffolding. In addition, the current scaffolding approach should be extended in instructing student programming processes to contribute to the growing research community.