How to Learn a New Programming Language
Adaptability is what the tech sector needs in its developers, explains Dr Matthew Barr at the Centre for Computing Science Education, University of Glasgow.
My first programming experience was with some variant of BASIC. Whether it was clumsily recreating a game on a friend’s Spectrum or squandering the awesome power of the school’s BBC Micro to print our names an infinite number of times, I don’t recall. But I’m pretty sure the first time I programmed it was in BASIC.
The point is, with the exception of Java, I’ve never been taught any of the languages I’ve used commercially. I have, however, benefited from an education that has exposed me to a wide range of programming languages and principles. This has equipped me with the tools I need to be able to pick up whatever programming language comes next.
And now, more than ever, this sort of adaptability is what the tech sector needs in its developers. The variation in technology stacks across organisations – and within organisations – is enormous. New programming languages and tools are released constantly, while many organisations must continue to support legacy systems that may or may not interface readily with modern technologies.
It is with these challenges in mind that we are designing the new Graduate Apprenticeship in Software Engineering at the University of Glasgow. As part of this process, we’ve consulted with around 30 companies across Scotland’s tech sector and we’ve heard loud and clear that employers need adaptable developers, capable of working with whatever gets thrown at them.
Depth of understanding
Adaptability has long been a hallmark of our Computing Science and Software Engineering graduates. This is achieved by teaching the principles that underpin Computing Science, providing a depth of understanding that transcends specific programming languages and equips students with the knowledge required to tackle new languages as they come. We also throw a lot of different languages at our students over the four years of their degree, including Java, C, Python, Haskell and more. So, they get practice at applying those principles, too.
Of course, the Graduate Apprenticeship is a little different to our traditional degree. Students will spend most of their time in the workplace, not on campus, and we want them to be able to make a contribution in the workplace as soon as possible.
Our unique delivery model – where we front-load the taught component of the apprenticeship, rather than opting for day release from the beginning – is a topic for another post. Here, I’d like to talk a little bit about one of the new courses we’re developing from the ground up for our Graduate Apprenticeship programme: How to Learn a New Language.One of the real advantages of the Gradate Apprenticeship programme is that students will be exposed to a whole range of programming languages, technology stacks and working practices. Students on our programme will share their experiences and learn from one another in a way that simply isn’t possible on a traditional campus-based degree.
But how do we teach such a class? The answer is that we don’t teach a particular programming language but, instead, focus on the commonalities and differences between the various languages that our apprentices encounter in the workplace.
By examining how a while loop, for example, works in Java versus Python versus C, students can gain a deep understanding of what’s really happening ‘under the hood’. This approach provides students not only with a profound understanding of the language they’re using in their workplace but also a working knowledge of how the underlying principles are applied in a range of different languages. Meanwhile, university staff are on hand throughout to explain these principles and make connections between the students’ various experiences.
This is just a small example of how the course will work. In addition to our extensive consultation with employers, we’ve also been running a novel research project designed to figure out just how we learn new programming languages. This is a process that that those of us with several languages under our belts would be hard pushed to put into words, but that’s exactly what we aim to capture.
The project has already provided many insights that have been translated into features of the course. But it has also confirmed our belief that we can’t simply shove apprentices onto our existing first year courses. To do so would be to entirely waste the potential of work-based learning, which offers such rich educational opportunities for those starting out in software development.
Our Graduate Apprenticeship in Software Engineering offers learning that is led by students, driven by employer needs and supported by experienced academics. The goal is to create adaptable, well-rounded graduates with a firm understanding of the principles that underpin what they do in the workplace. This will set them up for a successful career in industry even if – or, rather, when – the languages they use now go the way of BASIC and Pascal.
The University of Glasgow launches its Graduate Apprenticeship in Software Engineering in September. For more information, including how your organisation can get involved, please visit the website at https://www.gla.ac.uk/computing/apprenticeships