Let me make an analogy: we&#x27;re not going to teach kids how the food industry works before we&#x27;re teaching them how to bake a cookie. We&#x27;re also not teaching them about city planning before they had a chance to put some lego bricks together.<p>I think the important thing here is that kids need to see the necessity first. Only then can they start to deal with more abstract concepts. And actually, I don&#x27;t think this applies to only kids. I think it is the reason that &quot;learning by doing&quot; is so much more effective than anything else.<p>To give an example related to programming. I have seen CS students use preconditions and postconditions (i.e., assertions), on functions, without understanding why they were using them. They just wrote those assertions because the teacher said they had to do it. Of course, the assertions are useful, but only for large, more complicated, programs. But since the assignment programs were all small, the usefulness of this particular software engineering instrument completely eluded them.