Acredito que muitas pessoas já devem ter passado algum momento da infancia brincando com lego e quebra cabeça sem saber que são peças importantes que estimulam nosso cerebro, e nos ajudam a pensar melhor, e programação tem muito haver com isso.
Tais brinquedos estimulam e ajudam a desenvolver o nosso raciocinio de forma que se pensarmos que quando estamos diante de tais objetos a primeira medida que temos independente da idade, seja adulto ou criança, é a de analisar as peças que temos, seja no caso do lego, ou de um quebra-cabeça, talvez a criança ainda tente ir montando mais na sorte o que é algo natural, mas com o tempo também passaria a conhecer como cada uma delas se encaixam, e devem ser combinadas para construir o que é proposto pela imaginação, ou montar todo o quebra-cabeça. O ponto interessante nisso está justamente no fato do raciocinar sobre o que se tem, e não só, mas raciocinar sobre o que se tem, e tentar fazer o que a imaginação acha que fica legal, veja, temos várias peças de lego espalhadas, isso é o que temos, a imaginação é o que queremos, e a partir daí começamos a deixar ela fluir da maneira que acha que ficaria mais legal, o mesmo para um quebra-cabeça, o que temos são várias peças que se combinam só que de uma maneira um pouco mais limitada, mas ainda assim também podem existir complexidade em alguns, e a mesma ação se repete, olhamos para o que temos, e nossa imaginação agora se prende aquele contexto, e tenta ver qual a forma mais "legal" pra se atingir o objetivo.
Todo esse desenvolvimento, se observado de uma forma mais abstrata para programação, é válido, uma vez que programar nada mais é do que raciocinar,e conhecer o que se tem, e imaginar como atingir o que se quer. E comparado ao ponto que, independente de qual linguagem ou paradigma que se trabalha, o que devemos é, conhecer o que temos, como funciona, o que é cada coisa dentro da linguagem, assim como no lego ou no quebra-cabeça que conhecemos as partes que temos. Veja o quebra-cabeça como pode ser encaixado nesse contexto, o quebra-cabeça pode ser o dominio o qual estamos limitados,a linguagem por sua vez possui peças que devemos deixar a imaginação combina-las para atingir o objetivo proposto. A linguagem como um todo é um lego gigante, que cabe cada um escolher a que mais lhe agrada e se dedicar, aos estudos.
Deixo claro que essa é apenas uma forma bem abstrata de se pensar em programação comparando-a dois brinquedos. E por incrivel que pareça programar é, entender o que é o seu quebra-cabeça, qual o o problema que estou sujeito, é conhecer o maximo possivel das peças do lego, o maximo da linguagem que se trabalha, pois só assim saberá como usa-la da melhor maneira, e de forma mais agil, e deixar que a imaginação faça o resto, pois ela sim será a encarregada de grande parte do seu trabalho.
Mt legal, gostei da analogia