在我的职业生涯中,我遇到了两大类理论:物理理论和教育/管理理论:
根据物理世界的判断,物理理论要么是正确的(在适当的条件下),要么是不正确的.
教育/管理理论看起来像物理理论,但缺乏严格的测试.他们充其量只是提出了解决问题的新方法.多种理论很有用,因为其中一种理论可能会以正确的方式与您交谈.
作为软件工程的业余爱好者,似乎有很多软件工程理论(如敏捷编程,测试驱动设计,模式,极限编程).我是否应该将这些理论视为类似物理或教育/管理?
或者我误解了软件工程并发现自己处于"甚至没有错"的位置?
软件工程最终是关于心理学,人类如何管理复杂性.因此,软件工程原理更像是教育和管理理论而非物理原理.
一些软件工程背后有坚实的数学:O(n log n)排序比O(n ^ 2)排序等更快.但大多数软件工程是关于人类如何思考软件.如何组织事物,以便维护者不要发疯,预测可能会发生什么变化,什么不可能,预防和发现人为错误等等.它是心理学或社会学的一个分支.