原始笔记是两段大段落的引用块,章节信息混在文本里。这里按章节拆开,每章的原文摘录保持不动。
当前保留内容
一、前言
编程是一门技艺。简单地说,就是让计算机做你想让它做的事情(或者是你的用户想让它做的事情)。
作为一名程序员,你既在倾听,又在献策;既是传译,又行独裁;你试图捕获难以捉摸的需求,
并找到一种表达它们的方式,以便仅靠一台机器就可以从容应付。你试着把工作记录成文档,以便他人理解;
你试着将工作工程化,这样别人就能在其上有所建树;
更重要的是,你试图在项目时钟的滴答声中完成所有的这些工作。你每天都在创造小奇迹。
你不应该拘泥于任何特定的技术,而应该拥有足够广泛的背景和经验基础,以便在特定的情况下选择合适的解决方案。
你的背景来自对计算机科学基本原理的理解,而你的经验来自广泛的实际项目。理论结合实践会让你变得强大。
调整方法去寻找适应当前的情况和环境。对所有影响项目因素的相对重要性做出判断,
并通过经验找到合适的解决方案。随着工作的进展,你要不断地这样做。
务实的程序员不仅把工作做完,并且做得很好。
二、务实的哲学
务实的程序员的特质是什么?是他们面临问题时,在解决方案中透出的态度,风格以及理念。
他们总是越过问题的表面,试着将问题放在更宽泛的上下文中综合考虑,从大局着想。
毕竟,若不去了解来龙去脉,结合实际从何谈起?又怎能做出明智的妥协和合理的决策?
当你意识到自己在说"我不知道"时,一定要接着说"——但是我会去搞清楚"。
用这样的方式来表达你的不知道是非常好的,因为接着你就可以像一个专家一样承担起责任。
不要只是因为一些东西非常危急,就去造成附带损害。破窗一扇都嫌太多。
批判性地分析你读到和听到的东西,问几个值得思考的问题:
谁从中受益
有什么背景:每件事都发生在自己的背景之下,这也是为何"能解决所有问题"的方案通常是不存在的。
什么时候可以在哪里工作起来:不要停留在一阶思维下(接下来会发生什么),要进行二阶思考(当它结束后还会发生什么?)。
为什么这是个问题:是否存在一个基础模型以及这个基础模型是怎么工作的?
后续可补的方向
- 第三章及之后章节(注重实效的途径、基本工具、务实的偏执……)的摘录
- 把各章金句整理成可索引的小卡片,便于在项目复盘里直接引用
FEATURED TAGS
Git
Cheat Sheet
Markdown
Tools
C++
Linker
Thread
Linux
TCP
Network
GDB
Debug
leetcode
链表
WSL
Ubuntu
Windows
Linux Kernel
GCC
Android
adb
Troubleshooting
Profiling
Sanitizer
glibc
MySQL
Database
Python
curl
Build
ELF
clang-format
CMake
Graphviz
Performance
vcpkg
Protobuf
排查
速查
内存
STL
调试
性能分析
性能
读书笔记
方法论
架构
网络
Timer
mbedTLS
TLS
安全
负载均衡
脚本
工具
LRU
二叉树
BST
中序遍历
回溯
二分查找
优先队列
排序
旋转数组
jenkins
部署