Programming Fundamentals, Learning framework to learn any programming language, Fundamentals for software engineer