1、Live软件开发面面谈潘俊编著清苇大学出版社北京为跑民香馆热治四秋海的员影中四意类为取PREFACE开发软件离不开编写代码,但仅仅具备编程的技能也还不足以胜任开发软件的工作。这就好比一个人会烧砖、砌墙,但要造一间可供人居住的屋子,他还得了解屋子的结构、不同房间的功能、水电管线的敷设、墙面地面的装修等方面的知识。对软件开发人员来说,编程领域的知识往往是最受关注的,它们确实也可以分为多个层次:编程语言本身的知识(如C、Java),编程范式和思想,面向对象编程和函数式编程,开发框架的知识(如SpringAngularJS),等等。一个新人若想以软件开发为职业,大概需要阅读的范围就会集中在以上方面。然
2、而,当他开始项目开发时,就会发现还有许多实际的问题需要考虑和解决,软件开发并不像编程教材上的代码样例和习题那样专注于某个算法或思想。不妨考虑一个典型的业务系统,它是一个图形用户界面的程序,因而需要采用某种GUI框架开发界面;用户在界面上的操作通过事件机制调用相应的处理程序;用户界面、事件处理程序和体现需求的业务逻辑必须组成某种合理的结构,否则系统会随着功能的增加迅速变得难以理解和维护;系统越大,组件越多,越需要适当地保持它们之间的依赖关系,合理地应用接口是关键;这个业务系统显然比所有数据都来自即时输入的计算器复杂,许多信息要往返于数据库;最后,这是一个多用户使用的系统,必须适应不同用户的权限需求。编程语言和范式的理论知识没有触及这些实际的问题,开发框架虽然涉及实践,却又局限在具体的方案中,不易让人获得对知识的一般理解。软件开发实践中遇到的各个方面的问题往往缺乏系统的理论,程序员凭着各自的理解动手,或者知其然而不知其所以然,或者每个人的所以然有出入甚至矛盾。例如,针对接口编程就是尽量多用接口吗?事件驱动编程