If you someday take a job in the software industry, you will find you write very few programs entirely on your own. In most companies, programmers work as terms to build applications that are much large than those any person could manage individually. Make it possible for many programmers to work together is a fundamental challenge of modern software engineering.