Abstractions are just types of leverageable mental designs. Teaching good design fundamentals should be a cornerstone of the second or third year. Anyone why wants to create their own abstractions, be they APIs, command line flags, user interfaces or even databases, should be required to do design as an art.