# 《程序员的呐喊》读书笔记

- Link: https://www.ixiqin.com/2018/12/24/the-programmers-shouting-reading-notes/
- Published: 2018-12-24T09:31:44+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2018/12/24/the-programmers-shouting-reading-notes/#)

 * [书籍信息](https://www.ixiqin.com/2018/12/24/the-programmers-shouting-reading-notes/#%e4%b9%a6%e7%b1%8d%e4%bf%a1%e6%81%af)
 * [书摘](https://www.ixiqin.com/2018/12/24/the-programmers-shouting-reading-notes/#%e4%b9%a6%e6%91%98)
 * [个人感受](https://www.ixiqin.com/2018/12/24/the-programmers-shouting-reading-notes/#%e4%b8%aa%e4%ba%ba%e6%84%9f%e5%8f%97)

## 书籍信息

**书名**：程序员的呐喊

**作者**：Steve Yegge

**豆瓣连接**：https://book.douban.com/subject/25884108/

## 书摘

> 首先，再垃圾的语言和技术也一样有机会赢，甚至赢面可能还会大一点，因为改正起来会
> 更快。
> 营销才是关键，追求公平竟争只会导致你的语言无人问津

这两句话我个人深有感触，很多程序员只会写代码，不懂得营销。无论是工具、还是语言，
都需要营销，才能获得更多的用户。

> 而我的少数派观点是，对任何人、团队或者公司来说，没有比一大坨代码更精粗的东西了。
> 代码量太大会压项目和公司，而且代码到了一定规模后除了重写别无也法，任何聪明的团队
> 都会尽一切努力免代码成山。不管有没有工具。

别让你自己陷入到一大坨代码中，保持尽可能的精简，这样才能尽可能的保证不出错。当你
写5个字的时候，出错的概率很低；但当你要写5000个字时，难免有错别字。

> 如果你想要上进的话，唯一要做的就是持之以恒，不管你是想要提高自己的程水平，还是
> 数学水平，或是想要健身，玩风答，甚至克服人类比害怕死亡更甚的第一恐惧：公开演讲。
> 只要脚踏实地，就能循序渐进。我无法许诺你能从学习中获得任何快感。你会长更多东西，
> 会对很多事情有独到的见解。甚至可能会有更好的工作，或是写出让你扬名立万的软件，
> 或是让你的工作变得更有乐趣，但是你会没时向看电视，有才有得嘛。我们都必须选择怎么
> 分配自己的时间，这是零和博弈

坚持让胜利成为可能。你不需要在一时超越别人，你需要一世超越别人。坚持很难，但值得。

> 这正是另一半讽刺的地方。程序员非常在意性能，他们愿意为此花费无数时间去摆弄算法
> 和数据结构，压榨程序里的每个指令周期和字节，但却不愿意用这些时间去学习在新硬件
> 上的新语言。哪怕这门新语言能让他在相同的时间里写出快1000倍的程序，或是只要千分之一
> 的时间就能写出性能相等的程序。

激进的学习新的工具、语言，让自己接触到最新的科技，掌握最新的工具，能力，学习到更多
的东西，更好的优化自己的工具链。

> 决定是否继续学业其实有个简单到发指的判断标准，那就是：不劳无获，学习是一件很困难
> 的事情。要是你觉得很简单，那你肯定是在摸鱼，不去挑战自己做些过去做不到的新事物，
> 你是不可能提高自己的。

学习是一件痛苦的事情，如果你不吃力，说明这些东西对你来说，已经不足以让你掌握更多
新的东西了，你需要适当的换个方向。

> 下面我们用一些例子来说明这些本质上的分歧，保守派比自由派更看重这理念
> – 软件在发布之前应该尽量修复所有bug 
> – 程序员应该回避错误 – 程序员学不会新语法–
> 产品生产系统里绝不允许存在危险或有风险的后门。– 假如一个组件的安全性存在任何疑虑，
> 那它就不能发布上线——不管团队怎么哀求哭嚎说没它没法继续工作。– 快比慢好。– 代码
> 必须通过编译器的安全检查数据
> – 必须遵循事先定义好的格式
> – 公共接口必须严格建模。

尽可能的保证激进，这对于想要战胜同侪的你来说，很重要。

> 本质上，保守主义就是风险管理。

正视风险的存在，并看到风险背后的机遇是一项很重要的能力。

> 为躲避风吹雨打，人类会本能地寻找庇护所，庇护所越强大，我们就越有安全感。Java国有
> 很多这样坚固的东西可以满足国民安全感。他们在惊叹宏伟架构的同时会觉得这样的设计“
> 一定是非常了不起的“。当需要修改结构时，这种感觉尤为强烈。架构上的强度过于惊人，
> 没人相信这样的结构会倾倒。

架构束缚了我们的创造力

> 还有一点需要格外小心的就是，任何语言都一样，你很容易碰到那种对语言环很熟悉，但是
> 对品味以及计算本身等真正重要的东西却一无所知的人。
> 若是吃不准要找什么样的 Java
> 程序员，不妨考虑一下这些条件：会玩好几门语言，讨厌J2EE和EJB那类牌肿框架，还有用
> Emas编程。这些都是不错的指标。

这些人至少学习能力过关、也有足够的兴趣和爱好。

> 可惜，大多数自认为“会写程序”的程序员都会狼隘地给异己者贴上“错”的标签。这是人的
> 本性，是我们最容易犯的误之一，我自己也不曾幸免。

与自己不同不意味着错。**求同存异**。

> 事实证明，编程和开车非常像，只要写几年代码，行了！自己就算是“会写程序”了，好像
> 用微波炉加热玉米煎饼一样，大多数程序员这时都会陷入舒适区，再也走不出来，就像司机
> 会尽量避开自己不熟悉的情况一样。要是有人给他们提点建议和意见，那这个人肯定是有
> 毛病，要么就是搞不清楚状况
> 
> …
> 
> 程序员和司机一样，总是自我安慰说等到需要的时候再去学新技能也来得及但是在内心深处
> 他们都明白，其实当需求出现的时候就已经太晚了。因此现实情况是这样的，早鸭子会和
> 水保持距离，司机会绕开泥泞的路段，而程序员会在舒适区里，搭建围栏把自己保护起来，
> 然后析椅世界和平。

改变应当是潜移默化的；前进也应当是。

## 个人感受

这本书是一本很好的书，在理念上会让你对一些原本没有印象的东西有了一些初步的了解，
同时，作者对于程序员的看法也值得我们去学习。做一个更好的程序员，让自己努力成长。

值得推荐的一本书！
