Developing Competency in Programming among Future Software Engineers