Core concepts to being a programmer