软件开发的变化并不大

写完《程序员修炼之道》至今已有十年。在这十年中,软件产业发生了翻天覆地的变化。很多人逐渐放弃随意的开发方式,转而学习采用更能保证开发结果的方法论,这其中有许多方法论是以敏捷技术为基础的。编程语言的发展出现了一种趋势,静态语言(如Java和C++)的应用率在逐步降低,而更动态的语言(比如Python和Ruby)的普及率在上升。

在体系结构方面,早期的应用集中在数据中心,后来快速过渡到桌面电脑,现在又以同样的速度向云端迁移。开发者现在不得不学习新的体系结构原则、新的网络通信技巧和新的应用部署方式。同时,应用正在向并行化的方向发展。

从表面上看,软件世界似乎陷入了疯狂的状态。

但如果你深入繁杂表象的背后,会发现变化其实并不大。1999年的那些通用开发原则,在2009年同样有效(很可能到2019年还会有效)。我们认为其中的许多原则都包含在这本书里了。

假设我们今天才写这本书,会有什么不同吗?表面上会有些不同。我们可能会采用不同的编程语言和技术给出不同的案例。我们可能不会用太多笔墨强调测试的重要性,因为今天大家已经认识到测试的作用。我们可能会更多地介绍Web、社交和协作方面的技术。

但这本书的本质不会变。因为软件是人写的,优秀的程序员都会采用务实和实践的方法。他们知道变化越多,掌握事物的基本原则就越重要。

祝阅读愉快。别忘了从编程中获得乐趣!

Dave Thomas & Andy Hunt, The Pragmatic Programmers

2009年8月

软件开发的变化并不大相关推荐

  1. 软件开发工程师--经验之谈

    分享一位软件工程师的多年总结,经验之谈,借此导航自己人生. 1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究结果.相信工 ...

  2. 软件开发工程师工作总结

    1. 分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来."其实这是一个来自国外 教育领域的一个研究结果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点 ...

  3. 6年软件开发工作总结

    以下内容为转帖,原文请见 http://hi.baidu.com/windxiang9470/blog/item/952d4519025f8672dab4bda9.html 1. 分享第一条经验:&q ...

  4. [zt]软件开发金钥匙——写给毕业生的忠告

    转自:http://www.cppblog.com/szhoftuncun/archive/2008/09/29/63052.html [zt]软件开发金钥匙--写给毕业生的忠告 "又是一年 ...

  5. 关于提高软件开发知识的建议

    1.分享第一条经验:"学历代表过去.能力代表现在.学习力代表未来." 其实这是一个来自国外教育领域的一个研究果.相信工作过几年.十几年的朋友对这个道理有些体会吧.但我相信这一点也很 ...

  6. 【软件开发底层知识修炼】一 深入浅出处理器之一 微处理器与微控制器

    学习交流加(可免费帮忙下载CSDN资源): 个人微信: liu1126137994 学习交流资源分享qq群1(已满): 962535112 学习交流资源分享qq群2: 780902027 深入浅出处理 ...

  7. 软件开发质量的双保险 — 2.业务设计验证与业务用例

    设计验证的第一层是检验业务设计的质量.业务设计内容是软件的核心,解决了如何用信息化手段替代原来的手工作业. 业务设计验证重点包括:业务逻辑.管控规则是否正确?数据逻辑.来源.公式是否正确?等.检验的方 ...

  8. 我对软件开发的一点思考

    但凡是搞IT的 对软件架构.设计模式.XP编程(极限编程)或是敏捷开发.代码重构 这些软件开发的思想或方法都不陌生 但是它们之间究竟有什么联系??? 在实际的开发过程应该如何做??? 才能构建一个好的 ...

  9. 《软件测试》第二章 软件开发的过程

    <软件测试>第二章 软件开发的过程 2.1 产品的组成部分 2.1.1 软件产品需要多少投入 2.1.2 软件产品由哪些部分组成 2.2 软件项目成员 2.3 软件开发生命周期模式 2.3 ...

  10. 基本软件开发模型:瀑布模型、V型模型、迭代模型、增量模型、螺旋模型、大爆炸模型、敏捷模型、原型模型、W模型 特点分析与总结

    瀑布模型 在瀑布模型中,开发过程是线性的.任务和阶段按严格顺序一个接一个地完成.进度平稳地向下流动,就像瀑布上的水一样. 将软件生命周期划分为制定计划.需求分析.软件设计.程序编写.软件测试和运行维护 ...

最新文章

  1. python输出数据到excel-如何使用python将传感器数据输出保存到excel中
  2. VTK修炼之道24:图像基本操作_单颜色通道图像合成彩色
  3. filepath直接指定到文件名吗_PyTest运行指定的测试集
  4. 面试难点!常用算法技巧之“滑动窗口”
  5. vue使用js-cookie写入获取不到_Vue 面向对象 - 实战 - 内容管理系统(五)
  6. 硬核数据研究:年轻人为什么这么喜欢“哈哈哈哈”?
  7. python垃圾回收机制gcgo_python垃圾处理机制
  8. python函数进阶小结_Python 函数3000字使用总结
  9. HTTP协议格式详解
  10. 服务器硬盘一直亮红灯怎么回事,请问:电脑的硬盘为何一直亮着红灯?且硬盘很 – 手机爱问...
  11. win10计算机文件夹隐藏,Win10此电脑6个文件夹隐藏方法
  12. MetaSploit攻击实例讲解------终端下PostgreSQL数据库的使用(包括kali linux 2016.2(rolling) 和 BT5)...
  13. 通过SqlDbx导出*.sql,然后倒入到SQLServer2005
  14. 教你做一个微信添加好友收付款的个性二维码
  15. linux实训心得体会范文
  16. php ui设计_什么是ui设计
  17. leek()函数使用
  18. 步进电机工作原理与编程
  19. php余额宝收益源码,2021亲测PHP投资理财分红源码 带积分商城+余额宝+大转盘+教程...
  20. 我该怎样度此生?——认真并干净地生活

热门文章

  1. 这些文章可以使知识融会贯通
  2. Javaworkers团队第五周项目总结
  3. 对MAC自带的SVN进行升级
  4. 【转】SVN中的Branches分支以及Tags标签详解与应用举例
  5. C++编程语言中引用(reference)介绍
  6. SpringBoot 入门篇(二) SpringBoot常用注解以及自动配置
  7. Android 滑动定位+吸附悬停效果实现
  8. 如何使用JSTL及JSTL标签库
  9. 使用Expression实现数据的任意字段过滤(1)
  10. cellmap 基站查询 for android