8 concepts that are worth learning for a novice programmer