Neo-Piagetian Theory and the novice programmer