Comparisons have been made between teaching software development to new students and learning a new foreign language. Acquiring software development skills in many cases has as many similarities to the school of arts as to the sciences. Composing a new application can be compared to composing a book or concerto. Suppose that arts curriculum took the same approach as do computer sciences?
Consider for example a four-year undergraduate program for music composition. If syntax were considered the heart of curriculum, the focus would consist of teaching notes (the most rudimentary element of music), scales, arpeggios, timing, phrasing, harmony, and dynamics. Studies would primarily involve work done only by the student. Exposure to musical pieces of well known composers would be limited to small music snippets to demonstrate techniques. Suppose after four years of studying techniques and rules students then were asked to compose a piano concerto in E minor. It would be highly unlikely that any of the pieces would be robust and rich. These compositions would be limited by the degree of exposure the students had to outside compositions. The more exposure students have to outside compositions, the richer theirs will be. The same can be applied to software developers. Expectations are unrealistic for students to take code snippets and minimal application exposures and be able to build robust applications.
“Reading a well-written program can teach you techniques that help you write good programs. In fact, it’s difficult to imagine how anyone could become a good programmer without reading good programs”. Software engineering principles. Dale, N. (2003).