As a follow-up to my definitions of engineering I could again mention a (dangerous and now forgotten) ancient knowledge:
The software development and most other computer science topics are humanitarian disciplines.
This was widely known by the professionals of previous century but with the drastic decrease of the percentage of educated engineers who had switched into software development this obvious fact was replaced by many myths.
The main problem is that computer science was born from technical disciplines such as electronics and mathematics, the professors were unwilling or unable to move into humanitarian faculty and they had started to imitate "truly technical" vocabulary and education methods.
This has created a lot of problems. Modern agile movement is an allergic reaction on some of them.
To turn "software engineering" from a mix of imitations and profanations of engineering methods into a truly engineering discipline you need to understand what in the "software engineering" is not the "real" engineering.
The software development and most other computer science topics are humanitarian disciplines.
This was widely known by the professionals of previous century but with the drastic decrease of the percentage of educated engineers who had switched into software development this obvious fact was replaced by many myths.
The main problem is that computer science was born from technical disciplines such as electronics and mathematics, the professors were unwilling or unable to move into humanitarian faculty and they had started to imitate "truly technical" vocabulary and education methods.
This has created a lot of problems. Modern agile movement is an allergic reaction on some of them.
To turn "software engineering" from a mix of imitations and profanations of engineering methods into a truly engineering discipline you need to understand what in the "software engineering" is not the "real" engineering.