The reality of the future is that technology will continue to play an ever-increasing role in our day-to-day lives. We are seeing automation of job roles becoming increasingly common and i dare say it is only a matter of time until our medical, legal and social requirements are resolved via interactions with virtual and augmented technologies. Diagnosis of a medical illness via algorithmic responses is around the corner and we think there are many challenges ahead for driverless cars, wait until your life is in the hands of a piece of software. So what’s my point? There will be two type of people in our future society, those who are creators and the rest left as mere consumers. Here in the United Kingdom, we need to ensure that the software development industry is something we as a nation are able to provide for ourselves, or we are left with the reliance upon other countries dictating what technologies and software we need and use. So how do we ensure that we create a workforce of competent programmers?
There are indications that some schools are simply unable to teach Computer Science, whether that is due to a lack of Computer Science teachers or that the qualification is to difficult for students and therefore senior management are reluctant to gamble due to the data driven scenario metrics which schools are often judged by. I occasionally read bout practicing teachers claiming 100% exam and CA success rates, but the reality is not all schools are afforded the opportunity to allow students onto Computer Science courses on the strength of their achievements with other subjects. Computer Science needs to be available for all, and dare i say it compulsory to. Which leads me into an element of Agile practice.
Teaching programming to mixed ability classes comes with many varied challenges. Some students take to it like a duck to water, others, simply say that they just don’t get it and have no intention of doing so either, sadly some also lack the ability to practice at home due to hardware requirements which comes with further challenges, such as offered intervention which really requires student buy-in. The recent NEA problems also leads to a stronger reliance on theoretical knowledge and frankly that will not alleviate the recruitment crisis of capable trainee programmers with valid programming experience.. This led me to thinking about how does the professional development workplace deal with the upskilling of staff. Well, decent software houses make use of online development resources such as the popular Channel 9 , they also have set development days (last friday of the month as an example) but i also played a part in the use of peer mentoring in the form of paired programming. I recently carried out a quantitative study around paired programming and it appears there has been a flurry of academic research around the effectivity of paired programming methods.
Paired programming is making use of two students to solve a given problem as opposed to one student making their own progress (or lack of) when dealing with coding and complexity. A typical student (Year 9/10 – KS4/5 school only **See Footer note) works within the console application of the .Net framework to learn the basics of, selection, sequence and iteration, writing to files etc, and excelling students are then challenged to use Visual studio’s windows forms elements with MSSQL database connectivity. Naturally there is a high level of complexity involved when teaching students database app/web driven development. So how is that simplified with paired programming?
Both students work together with a single computer, one student works as a driver (writes code into the computer development software, the IDE), whereas the other student (The navigator) assesses code for potential refactoring when evaluating the drivers code, therefore the navigator validates success or verbally corrects slight code deviations. Both students change roles every twenty minutes or so (Agile Alliance, 2016). Research indicates that the benefits of paired programming are substantial. He and Chen (2015, p.7) found that 84% of a surveyed class agreed with the statement “I enjoyed doing the assignments more because of pair programming”. Cliburn’s (2003) interviewing of students found that 61.5% of students considered that paired programming improved their exam grades. My own studies, concluded that there was a strong increase in confidence of coders returning to solo coding scenarios.
After putting into practice paired programming within my own computer classrooms, the results were encouraging. Over half of the those students responded positively to its use, and often ask if they can work through mini class sessions in a team manner. Students even make use of the agile methodology to plan out who is going to develop which particular programming task for project based learning. Check out our scrum and agile topics.
However, it does not come without its own problems and headaches, but this methodology is yours to shape how you see fit. Try various scenarios. Pairing selection has to be carefully considered and research around progress for students with SEND and PP data is badly lacking. There is a need to check your students via code reviews and you must be on hand to give them a nudge in the right direction if they have grinded to a halt. One method i have used, is that when the pair swap positions, the new driver has to quickly comment the new navigators code, to show a complete and clear understanding of what has been wrote. I have also used various methods of paired programming, such as, two keyboards one computer, the use of two computers, where one is used to look for problem solving scenarios the other for working code.
Having a set of standard coding practices is essential and needs to be embedded early. For example, the correct naming of event handlers and methods, the consistent naming of solutions and toolbox items such as, buttons (btn_Submit or btn_Clear) you should have a master ‘Coding Standards’ document for such conventions and practices which is shared with all your Computer Science classes at the beginning of the academic year. Give paired programming a go you will not be disappointed. I will post a template document for this in a few weeks time.
Agile Alliance (2016) Pair Programming
Available at: https://www.agilealliance.org/glossary/pairing/
Cliburn, D.C., 2003. Experiences with pair programming at a small college. Journal of Computing Sciences in Colleges, 19(1), pp.20-29.
He, X., & Chen, Y. (2015). Analyzing the efficiency of pair programming in education.
Available at: https://gupea.ub.gu.se/bitstream/2077/38591/1/gupea_2077_38591_1.pdf
Want to contact us about this article, click here to use the contact form.
(** The author works in a years 14 to 19 school)
The Team @ TeacherTech
You can discuss this article over at the Teacher Tech Facebook page, click here to request access.