软件开发十本书

2023-11-15

  几年前,总结了“软件测试十本书”,对从事软件质量验证和确认工作的基础知识进行简介。
  软件花钱最多、耗时最长、投入人力和精力最大的,是在开发过程。
  根据个人经验,推荐软件开发相关的十本书,供入门和进阶参考,坐等拍砖员。

1)代码大全

  软件开发世界的“入口地图”。
  软件行业人员的“新手圣经”。
  专业软件程序员的“百科全书”。
  经典中的经典,大师中的大师,众多大咖联名点赞。
  本书总结、归纳了,软件工程业行之有效的、细节具体的实践知识,让你可以利用前人智慧、避免重蹈覆辙。如,通过“隐喻”理解和表达软件,高质量的编程经验细节,软件质量改进方法,软件集成,软件人员,等等。
  几乎每一章,都是描述了软件职业的一个深入方向,每章的“更多资源”,是更多本的深入学习的经典书籍。
  本书近1000页,适合先系统化学习,了解全貌,再随时查阅,或深入研究。

  PS:如果你想做一个真正的“软件行业”相关人员,本书必读。


2)程序员修炼之道--从小工到专家

  1999年首版,“Pragmatic系列”图书的开山之作。
  职业程序员的“工匠精神修炼之书”。
  本书可以理解成《代码大全》的精华版和提升版,适合有一定年限经验的程序员。
  本书两位作者:大卫托马斯(David Thomas),安迪亨特(Andy Hunt),都是程序员大牛,也是“敏捷宣言”发起人之二,他俩把各种实战经验总结、提炼成一条条的程序员“心灵鸡汤”,并把鸡汤的营养、配方、制作过程、火候掌握等,都简要地展现出来,中间还穿插着各种段子,帮助程序员修炼成为熬制只有品牌鸡汤的大师傅。
  摘录几条喜欢的:
  关心你的技艺(Care About Your Craft)
  思考!你的工作(Think!About Your Work)
  不存在最终决策(There Are No Final Decisions)
  ......


3)走出软件作坊

  本书可以理解为《程序员修炼之道》的农村版,是中国大多数小厂码农的“生存及发展之道”。
  本书的一个副书名,很好地体现了这一个主题:三五个人,十来条枪,如何成为开发正规军?
  作者阿朱,在书中总结和提炼了自己和他人的实战经验,对没有进入头部大厂的程序员,犹如一盏指路明灯,让我们敢于直面现实,远离眼高手低的无用抱怨,明确明天的目标,做好手边的事,一步一步发展壮大。
  个人认为本书最有价值的是,为大家展现了一个软件类创业公司的方方面面:内部的需求、设计、编码、测试、发布,外部的售前、报价、实施、运营,产品怎么定位,员工如何考核,组织怎么建设,为初创公司CEO描述了可能遇到的问题、并提供了实操性极强的解决方法。
先生存,再发展。

 
4)深入理解计算机系统

  计算机系统方面的“经典之作”。
  国内外顶级学校的计算机专业教科书。
  本书的直面翻译:程序员看计算机系统(Computer Systems: A Programmer's Perspectives)。
  作者Randal E.Bryant、David R.O’Hallaron,是卡内基梅隆大学教授的教授,超过30年的经验。
如果说常规计算机专业课是集中本体、忽略边界,这本书则是以集中于整体运行为主,再关联边界上的各个专业重要概念。本书犹如串接珍珠的丝线,把各个计算机专业基础课的关键知识点,连接成魅力四射的珍珠项链。数值表示、数据结构、程序设计、编译、汇编、算法优化、操作系统、处理器、存储器、网络、并行计算,一个个独立的干巴巴的概念,在这本书中鲜活起来。
  看到前言里如此诱惑的字符串:“如果你学习和研究这本书里的概念,你将步入稀缺的“权威程序员”的行列......”,你还不行动吗?


5)编码:隐匿在计算机软硬件背后的语言

  计算机科普方面的“经典之作”。
  作者Charles Petzold,是微软公司设计Windows系统的大牛。
  本书从十岁儿童的视角出发,采用成长学习法:由日常电器手电筒开始,介绍莫斯密码,布莱叶盲文,制造出“拐弯通信”的电灯系统;然后从发报机、断电器、十进制、二进制,引导出二进制电灯控制系统“继电器”;再结合布尔系统,封装出电路的基本单位,与门、非门、与非门、或非门、反相器、缓冲器;构造出初级组件:加法器、触发器、选择器、译码器、锁存器、振荡器;组合出计算机系统:时钟、CPU、存储器、总线、操作系统、GUI。看了本书,才发现对计算机系统,理解不如“十岁儿童”。
  本书和上一本书一起看效果更佳,一个从专业程序员角度,一个从十岁儿童角度。


6)敏捷软件开发:原则、模式与实践

  敏捷开发的“扛鼎之作”。
  第13届震撼(jolt)大奖图书。
  作者Robert C.Martin,是软件开发和软件工程专家,敏捷宣言发起人之一。
书名副标题显示了作者的逻辑,而且也达到了这个效果:原则、模式、实践(Principles, Patterns, and Practices),本书变成敏捷类书籍的标准模板。
  本书正式对外宣导了“敏捷开发”,总结了之前极限编程、测试驱动开发、拥抱变化、重构的重要内容,描述了面向对象设计重要思想和一些常用设计模式,并通过展示案例把原则和模式结合起来。
  如果说“深入理解计算机系统”串联了计算机系统,本书则是串联了“敏捷开发方法论”。
  本书包含了接下来三本书的关键思想和核心内容。

7)面向对象分析与设计

  OOAD的“经典之作”之一。
  深入理解各类设计模式书籍的“基石”。
  作者Grady Booch,UML的创始人之一,Rational产品的开拓者之一。
本书用严密的逻辑、经典的案例、搞笑的漫画,详细描述了软件系统的复杂性,程序设计语言的发展,面向对象的要素,类和对象的本质和关系,如何正确分类,如何用UML表示设计,最后还展现了5个应用案例。
  如今,“面向对象”相关概念已经泛滥成灾,我们都认为很重要,资料汗牛充栋,但却感觉无从下手;学习本书能正本清源,还面向对象一个清白。
  个人感觉,本书的结构以及作者,对Robert C.Martin有启发作用,让他能站在巨人的肩膀上,青出于蓝而胜于蓝。

 
8)Head First设计模式

  Head First系列(深入浅出XXX)的“奥运代表”。
  设计模式类书籍的“颠覆之作”。
  第15届震撼(jolt)大奖图书。
  设计模式的书非常多,大多专业性强,以代码和文字为主,可读性不足,让无数人叹为观止又望而生畏。这里的四位作者聚集计算机专家、作家、讲师、艺术家、媒体专家的能力,以图示、故事为主,文字内容为辅,为观众呈现了一道立体感十足的设计模式大餐:火箭鸭、气象站、星巴兹咖啡、披萨店、巧克力工厂、万能遥控器、黑话菜单、糖果机等等,让食客不知不觉就爽爽地吃下了一个设计模式快餐,还感觉意犹未尽,想吃更多。
  先看完这本爽文,再去啃其他专业书籍,不会让人因噎废食,反而更容易增肌加肉。


9)重构:改善既有代码的设计

  敏捷开发的“垫脚石”。
  重构了重构(Refactoring)这个词,成为一种方法论。
  作者Martin Fowler,软件开发、演讲专家,也是敏捷宣言发起人之一,和上面几位不是同事就是朋友。
  本书角度独特,聚焦于改善现有代码而非新代码,聚焦于改善设计而非编码,描述了重构的原则(测试驱动开发、自动化测试),使用了“代码味道”(Code Smell)来描述待改进的地方,列出了20多种经典的代码臭味和改善方法。
  本书和《反模式》有关,又比《反模式》走得更远,成为后续敏捷开发、持续集成中的不可或缺之基石。


10)C程序设计语言

  计算机语言书籍的“开山之作”。
  计算机语言书籍的“星星之火”。
  作者Brian W.Kernighian,Dennis M.Ritchie,是贝尔实验室的大牛,Dennis 还获得了“图灵奖”。
  本书1978年发布第一版,是所有计算机语言书籍的模板,经典的“Hello World”从此出发;几十年来的升级版内容都大致相同;书籍100多页,还包含了三部分,一是C语言本身,如关键字、控制流、函数、指针、数据结构等,二是输入、输出、库,三是操作系统的接口,把“KISS”原则体现的淋漓尽致。
  可以说,学习了这本书,并做完所有的练习题,你已经是一名可以上岗的初级程序员了。


  历史的长河中,软件正在乘风破浪,关于软件开发的书籍也如过江之鲫,本文主要选取关于软件设计、思维、工程方面的相对通用的经典之作。以上推荐,仅为抛砖引玉,期待大家更多的分享交流。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

软件开发十本书 的相关文章

  • 刷脸支付就是个破局的大杀器

    科技推动创新 改变产业链格局 从二维码支付爆发取代刷银行卡支付后 传统银行一直担忧的金融脱媒挑战实际上已是即成现实 尽管从监管层面上 一系列如 断直联 二维码互通 等监管要求 对金融机构有较大利好 但在二维码支付时代 大局已定 缺乏C端运营
  • 我国关税

    https zaq us tariff
  • 刷脸支付推动产业智慧升级是大势所趋

    近日 浙江省绍兴市上虞区将 刷脸支付 功能向基层延伸 率先实现全区安全范围内的全覆盖 刷脸就医在全国范围内不断实现 在这个充满诱惑的时代 代理刷脸支付这个蓝海项目是许多想做刷脸支付的创业者急需的内容 刷脸支付 这项技术自面世以来就充斥着各种
  • 未来简史--读书语句摘录及感悟

    文章目录 摘录 个人感想 摘录 18世纪末的英国哲学家边沁主张 所谓至善就是 为最多人带来最大的快乐 并认为国家 市场和科学界唯一值得追寻的目标就是提升全球的快乐 政治家应该追求和平 商人应该促进繁荣 学者应该研究自然 但不是为了荣耀什么国
  • 书摘

    因为近几个项目都是基于Linux 平台 于是开始持续关注linux shell 和linux系统管理相关的知识 平时除了阅读在线的博客来汲取这方面的知识 也努力看一些书籍来完善知识体系 而这本
  • 11年做安卓开发至今,我失业了,我跟CSDN的缘分

    今天来写篇自己的文章 自己工作的文章 11年毕业到现在 我彻底失业了 是真的失业了 不过失业我觉得没什么可怕 至少干了这些年 也攒下了一些生活费 至少饿不死就行了 我失业也是因为自己有业 并不害怕 从11年做开发 那个时候就边做开发 边思考
  • 一串有趣的代码

    啊哈 已经来学校四五天了 日子还不错 前些天遇见一段蛮有趣的 代码段 在 窗口输出常量 给大家分享分享 称的上是程序员的一点小浪漫吧 Protected Sub Button1 Click sender As Object e As Eve
  • 刷脸支付技术更多的是想要助力数字化运营

    刷脸支付是在原有的收银系统基础上增加一种收款方式 不影响收银系统 收银更有效 支付更便捷 体验感更好 节省时间成本 资金更安全 支付宝 微信官方为推广刷脸支付 两大官方投入巨额资金普及刷脸支付 日常生活中可避免忘记带手机 手机没电 通话中
  • 【周末闲谈】二进制VS三进制

    个人主页 个人主页 系列专栏 周末闲谈 周末闲谈 第一周 二进制VS三进制 文章目录 周末闲谈 前言 一 效率 二 三进制计算机 三进制计算机的最后 总结 前言 作为计算机是20世纪最先进的科学技术发明之一 对人类的生产活动和社会活动产生了
  • 关于C++函数返回值的使用方式以及局部对象何时析构的问题

    关于C 局部对象何时析构的探讨 我之前一直笼统的认为局部在函数调用结束之后 所有的局部变量会立刻析构 经过仔细分析之后才发现还有很多细节 这里对比了函数返回值的使用 Test t t fun 赋值 和 Test t fun 初始化 假设有一
  • 大话数据结构读书笔记 1---线性表

    大话数据结构读书笔记 编程基础 数据结构 算法 1 线性表 顺序储存结构的结构代码 define MAXSIZE 20 储存空间的起始分配量 typedef int ElemType ElemType类型根据实际类型而定 这里假设是int
  • 汇编语言(第三版)读书笔记 2 - 第2章 寄存器

    第2章 寄存器 前一章所说的总线 相对于CPU内部来说是外部总线 内部总线实现了CPU内部各个器件 运算器 控制器 寄存器 之间的联系 外部总线实现了CPU和主板上其他器件的联系 不同的CPU 寄存器的个数 结构是不相同的 8086 CPU
  • 还记得当初自己为什么选择计算机?

    还记得当初自己为什么选择计算机 当初你问我为什么选择计算机 我笑着回答 因为我梦想成为神奇的码农 我想像编织魔法一样编写程序 创造出炫酷的虚拟世界 谁知道 我刚入门的那天 电脑却故障了 我只能用巨大的打字机来编程 我感叹道 果然这个魔法圈子
  • 【华为数据之道学习笔记】5-5结构化数据入湖

    结构化数据是指由二维表结构来逻辑表达和实现的数据 严格遵循数据格式与长度规范 主要通过关系型数据库进行存储和管理 触发结构化数据入湖的场景有两种 第一 企业数据管理组织基于业务需求主动规划和统筹 第二 响应数据消费方的需求 结构化数据入湖过
  • 【华为数据之道学习笔记】5-10标签设计

    标签是根据业务场景的需求 通过对目标对象 含静态 动态特 性 运用抽象 归纳 推理等算法得到的高度精练的特征标识 用于差异化管理与决策 标签由标签和标签值组成 打在目标对象上 标签由互联网领域逐步推广到其他领域 打标签的对象也由用 户 产品
  • 为什么我的对话框创建失败了?菜鸟错误1

    对话框中的资源要么被定义为一个整数 要么被定义为一个字符串 仅仅一个简单的错误将会将其中的一个类型错误的变成另一个类型 我们来看一个例子 gt gt 请移步至 www topomel com 以查看图片 lt lt 你是否能发现其中的两处
  • 游戏策划:游戏开发中的关键环节

    在数字游戏的世界里 游戏策划是构建一个成功游戏的基石 游戏策划不仅仅是一个创意过程 它涉及从故事构建到技术实现的各个方面 以下是游戏策划中需要重点关注的几个重要内容 1 故事情节与世界观构建 一款游戏的魅力很大程度上取决于其故事情节和世界观
  • 2024 年 15 大软件开发趋势

    步入 2024 年 在技术创新和不断变化的市场需求的推动下 软件开发格局继续呈指数级发展 对于企业和开发人员来说 紧跟这些趋势不仅有益 而且对于保持竞争力和成功至关重要 在本文中 我们探讨了预计将在 2024 年产生重大影响的关键软件开发趋
  • 用CHAT如何写大学生会计综合模拟实训报告

    CHAT回复 标题 大学生会计综合模拟实训报告 一 前言 随着信息化时代的发展 现代会计工作不再只依赖手动运算和记录 而是更加倚重电脑软件系统的配合运用 因此 对我们大学生来说 把握会计理论知识的同时 积极掌握相关的实践应用技能变得非常重要
  • 人工智能 AI 如何让我们的生活更加便利

    每个人都可以从新技术中获益 一想到工作或生活更为便利 简捷且拥有更多空余时间 谁会不为之高兴呢 借助人工智能 每天能够多一些空余时间 或丰富自己的业余生活 为培养日常兴趣爱好增添一点便利 从电子阅读器到智能家居 再到植物识别应用和智能室内花

随机推荐

  • 学习笔记-创建赫夫曼树

    赫夫曼树 给定 n 个权值作为 n 个叶子结点 构造一棵二叉树 若该树的带权路径长度 wpl 达到最小 称这样的二叉树为最优二叉树 也称为哈夫曼树 Huffman Tree 还有的书翻译为霍夫曼树 赫夫曼树是带权路径长度最短的树 权值较大的
  • 学会项目成本管理计算,PMP计算题就是送分题

    学会项目成本管理计算 PMP计算题就是送分题 PMP中的计算主要在 lt 项目成本管理 gt 的控制成本部分 服务于挣值管理 EVM Earned Value Management 挣值分析 EVA Earned Value Analysi
  • 【知识图谱】基本概念&数据&综合应用&具体使用

    知识图谱 基本概念 数据 综合应用 具体使用 1 基本概念 1 1知识图谱组成 1 2 应用 1 2 1 应用一 医疗领域方向检索 1 2 2 应用二 金融领域反欺诈 金融知识图谱 1 2 3 推荐系统 2 数据 2 1 文本数据 2 2
  • vtk.js+react 实现ArrowSource 平移,缩放,旋转

    vtk js react 实现ArrowSource 平移 缩放 旋转 MatrixBuilder 矩阵构造器 ArrowSource 箭头 实现代码 MatrixBuilder 矩阵构造器 实现方法主要使用到的APIMatrixBuild
  • 扩散模型实战(三):扩散模型的应用

    推荐阅读列表 扩散模型实战 一 基本原理介绍 扩散模型实战 二 扩散模型的发展 扩散只是一种思想 扩散模型也并非固定的深度网络结构 除此之外 如果将扩散的思想融入其他领域 扩散模型同样可以发挥重要作用 在实际应用中 扩散模型最常见 最成熟的
  • 云存储服务器的安装文件,云存储服务器的安装文件

    云存储服务器的安装文件 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ exe 在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ
  • 【三维重建】Ubuntu18.04安装COLMAP

    Ubuntu18 04安装COLMAP 文章目录 Ubuntu18 04安装COLMAP 前言 安装COLMAP 安装CUDA cuDNN 安装依赖项 安装Ceres优化库 安装glog 可选 配置并编译COLMAP 运行COLMAP 总结
  • 数据结构-线性表之堆栈

    什么是栈 是一种数据结构 能够实现后进先出的一种业务场景 即栈中的元素被处理时 按后进先出的顺序进行 所以栈又叫做后进先出表 LIFO 例子 生活中的叠放在厨房桌子上的碗就是一种栈结构 放的时候只能把碗放在最上面 取的时候只能从最上面开始取
  • python+Visual studio code配置Selenium环境

    python Visual studio code配置Selenium环境 使用pip命令安装selenium Visual studio code控制台中直接输入 python m pip install selenium 查看是否安装s
  • 如何使用OpenAI进行embedding句子后,输入新句子比较

    import openai import numpy as np from sklearn metrics pairwise import cosine similarity Set up OpenAI API credentials op
  • 权衡问题---学习了微服务各大常用组件的一点思考

    1 没有什么技术可以完全通用 只要深度使用一定需要从业务出发对技术进行权衡 从几个例子出发 1 ES的分片机制天生支持分布式 同时也带来了分布式了弊端 排序和算分问题 搜索的场景需要严格的定制化 通过对mapping的修改可以支持算分的调整
  • vtk9.2.6编译记录

    1 cmake gui打开 搜索qt相关 将默认选项改成yes 重新configure之后 会出现新的选项 比如Qt目录 确认没有问题之后 Generate生成sln解决方案后 用vs编译 2 配置CMAKE INSTALL PREFIX
  • Git 将已有项目上传新建仓库

    Git 将已有项目上传新建仓库 一 gitee或github创建空白仓库 记得保留下git链接 https gitee com huadeng863 git 二 在已有项目目录内删除已有git readme 如果有的话 将项目中的 git
  • buildroot 编译出错

    编译buildroot的时候出现如下错误 Incorrect selection of kernel headers expected 4 1 x got 4 0 x package pkg generic mk 228 recipe fo
  • phpstudy 8.1下载安装和简单使用教程

    phpstudy下载 去官网下载PHPStudy 选择自己电脑对应的系统版本 在首页导航选择windows版 弹出下拉框点击phpStudy 客户端 进入下载界面 点击下载 接着选择64位 然后就开始下载了 PHPStudy安装 解压下载好
  • stm32---用外部中断实现红外接收器

    一 红外遥控的原理 红外遥控是一种无线 非接触控制技术 具有抗干扰能力强 信息传 输可靠 功耗低 成本低 易实现等显著优点 被诸多电子设备特别是 家用电器广泛采用 并越来越多的应用到计算机系统中 红外遥控通信系统一般由红外发射装置和红外接收
  • 无意中发现的方法:一招让你的 IntelliJ Idea 飞起来

    一 引言 最近工作中使用到了 IntelliJ Idea 说实在的 不太熟悉这个 IDE 不知道为什么 对比 Eclipse 和 IntelliJ Idea 在我的电脑上 竟然是 IntelliJ Idea 比 Eclipse 运行的更卡一
  • python炫酷gui界面_如何炫酷的使用Python

    Python很酷 真的很酷 但是 我们中的很多人都是从不同的编程语言开始的 尽管我们确实很容易地掌握了Python 但是我们仍然不擅长以pythonic的方式做事 本文介绍了我几年来学到的一些技巧和相同的实际示例 希望你喜欢它 1 有用的键
  • android aidl出现无法import

    当采用eclipse 写aidl时出现couldn t find import for class 原因是你import的包没有在framework aidl里parcelable过 所以解决办法很简单 找到对应api level的fram
  • 软件开发十本书

    几年前 总结了 软件测试十本书 对从事软件质量验证和确认工作的基础知识进行简介 软件花钱最多 耗时最长 投入人力和精力最大的 是在开发过程 根据个人经验 推荐软件开发相关的十本书 供入门和进阶参考 坐等拍砖员 1 代码大全 软件开发世界的