How To Build Good Software



  1. Start as simple as possible; (不要老是想搞个大新闻)
  2. Seek out problems and iterate; and(不断地迭代控制复杂性)
  3. Hire the best engineers you can.(雇佣最好的开发人员)

让系统和任务充分自动化。Software engineering is about building automated systems, and one of the first things that gets automated away is routine software engineering work.

开发好的软件是有周期的:增加需求和复杂性,重构减少复杂性。Building good software involves alternating cycles of expanding and reducing complexity.

产品开发完并不意味着开发知识就可以丢弃了。产品是运行在系统上的,系统会变化,产品会升级,这些都需要开发知识的支撑。This knowledge continues to be important even after the product is built. If a new team takes over the code for an unfamiliar piece of software, the software will soon start to degrade. Operating systems will update, business requirements will change, and security problems will be discovered that need to be fixed. Handling these subtle errors is often harder than building the software in the first place, since it requires intimate knowledge of the system’s architecture and design principles.

不能把软件看做一个静态的产品,它其实是开发团队的集体智慧的表现。这也解释了为什么不要把重要项目给外包团队,因为这些开发知识是没有办法打包返回给你的。Software should be treated not as a static product, but as a living manifestation of the development team’s collective understanding.