Practicing Software Engineering in the 21 st century