The 6 Pillars of Software Engineering