What is persevering?
Persevering is being determined, resilient, tenacious – never giving up. Albert Einstein said: “It’s not that I’m so smart, it’s just that I stay with problems longer.” Computer programming is hard. This is part of its appeal – writing elegant and effective code is an intellectual challenge requiring not only an understanding of the ideas of the algorithms being coded and of the programming language you’re working in, but also a willingness to persevere with something that’s often quite difficult and sometimes very frustrating.

Albert Einstein: "It's not that I'm so smart, it's just that I stay with problems longer." Photograph by Oren Jack Turner.
To develop expertise in anything complex, we need to persevere and practise, train and rehearse. This applies to many fields of human endeavour: art, music, dance, sport, chess, research, computer gaming, programming … “The key is deliberative practice: not just doing it again and again but challenging yourself with a task that is just beyond your current ability, trying it, analysing your performance while and after doing it, and correcting any mistakes. Then repeat. And repeat again.” – Norvig, P. (2001): “Teach Yourself Programming in Ten Years”.
Why is persevering important?
In computing and elsewhere, systems and problems can be complex, their contexts unfamiliar. We may have to try many options or use technologies new to us; we may even need to change from our normal, fast and intuitive way of thinking to something slower, more deliberate and logical. Computer scientists need qualities of patience and endurance and a tolerance of confusion. In playing a challenging computer game, there’s a tight feedback loop of cause and effect which some liken to the process of coding and debugging: both gamers and programmers report a state of ‘flow’ in which they are utterly absorbed in their respective activities, a focus motivating them to persevere, finish the game or solve the problem.