Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Theories of software engineering [closed]

Tags:

theory

In my career I've come across two broad types of theory: physical theories and educational/management theories:

Physical theories are either correct (under appropriate conditions) or incorrect, as judged by the physical world.

Educational/management theories have the appearance of being like physical theories, but they lack rigorous testing. At best they give new ways of thinking about problems. Multiple theories are useful because one of them may speak to you in the right way.

As an hobbyist student of software engineering there appear to be a lot of theories of software engineering (such agile programming, test driven design, patterns, extreme programming). Should I consider these theories to be physical-like or educational/management-like?

Or have I mis-understood software engineering and find myself being in the position of "not even wrong"?

like image 834
Ian Hopkinson Avatar asked Feb 06 '09 19:02

Ian Hopkinson


1 Answers

Software engineering is ultimately about psychology, how humans manage complexity. So software engineering principles are far more like education and management theories than physical principles.

Some software engineering has solid math behind it: O(n log n) sorts are faster than O(n^2) sorts, etc. But mostly software engineering is about how humans think about software. How to organize things so that maintainers don't go crazy, anticipating what is likely to change and what is not, preventing and detecting human errors, etc. It's a branch of psychology or sociology.

like image 142
John D. Cook Avatar answered Sep 19 '22 01:09

John D. Cook