One member in our software team at work is a musician in a local band, and there was a discussion on 'how do you learn songs'. He explained that he only has to listen to a song a few time to get 'the groove'. When asked what 'the groove' was he explained that each song has a structure, at the highest level song and chorus. In the details there are segment with guitar patterns. He explained that he recognises guitar techniques so it all makes sense and he can perform the song, on guitar, as he knows the pattern of these recognisable sub-patterns (my words).
The discussion went on with other team members, with me listening, on how this was similar to software patterns both those we know as 'patterns' and general lower level patterns. We reflected on how when we come to code some functionality we do not need to thing of all the lines, the details, as we can thing of 'yea we iterate through the collection and do XYZ on 'em'. We recognise this pattern and when we need to type we do a 'foreach' etc.. The end result is we can discuss design at a higher level without then need of the 'then we do a foreach, and then ....'.
It made me think of (many years ago) when I was practising Morse Code for my Amateur radio licence (ham radio). We had two levels of licenses, a 'Novice License' and a 'Full Call'. The Novice license exam included morse at a rather slow rate (from memory: 6 words per minute), and the Full Call exam includes morse at (from memory) 16 words per minutes. The interesting thing is that the faster test was easier because with the slow machine generated morse you needed to actually hear the number of dots and dashes while with the faster morse you could hear the 'song'. For example 'dot dot dot dot' sounds like 'diddledee'. You do not listen for dots and dashes but listen for sound patterns.
So learning a song is helped by the expertise of learned patterns. Same for morse and software design. As another team member said today 'Not surprising given the brain's pattern recognition ability'.
So is a corner stone of training patterns small and great?
1 comment:
The same type of thing happens with mathematics, and even with language.
Training is really useful to start the process, but it still takes time and practice to make the patterns part of your vocabulary (software, musical, mathematical or linguistic). It's well worth the time and effort though. :)
Post a Comment