《理解专业程序员》读书笔记

​软件领域的经典,没有理由不站在巨人的肩膀上。每次遇到瓶颈,需要借助外力突破时,书籍,尤其是经典的好书,让人如虎添翼!

| 一点提问:

专业程序员是怎么练成的?
如何培养使用工具的专业技术领导者?
为什么我们在学校教育上花费了上百万元,但是从来就忽视真正的学习?
为什么不能把程序员的教育完全托付给计算机?
什么是真正的学习?
提高技术能力的方法?

| 一部分回答:

技术评审
安排多次测试运行
在同样的时间里处理更多问题,或者探讨同一问题的多种解决思路。
分享不同的思维方式,掌握多种解决方法很重要。
不仅仅教授一种语言,而是教授两种判然有别的语言,正如,如果我们采用了双语策略,自然也就没有什么第二语言了。应该双语教学。
随机应变
构建大型系统,处理不同来源的大量数据
即使是最出色的程序员也必须花时间学习句法,拼写的艰苦课程,不然就会在实际调试时花几百小时浪费在着急生气上。
用更少的时间通过相互评审代码学习编程比全体送到大学校园听编程课程来得划算
教师、团队领导,必须奋力奔跑,才能保证自己一直在队伍前面
社会的、心理的力量——这些力量才是成功技术背后的真正动力,而且是技术存在的首要理由。
作为其中一个重要的起步措施,人们会把计算机培训从计算机手中解救出来,然后也许会把它放入人们的大脑中(值得深究)

| 一点理念:
我们每人都必须犯一些错误才能成长,但是人生苦短,如果每件事都要通过痛苦的经历才能学会,也未免太过艰难。
那些愚蠢的、痛苦的、完全错误的工作我们也实在不是非要尝试才行。
数据处理专家们不应该仅仅盯着自己的工资收入和晋升机会,更应该关注他们的公共责任。
在编程这件事上,我们全都身有残障,虽然我们可能还不自知。因为我们平时只用上了很小一部分潜能,所以,当我们要向世界证明什么东西的时候,我们也总能超越自我。所以,承认、接受自己身有残障的事实,这应该算是一个优势。
当你发现自己总在专业工作中为一些小问题恼火,也许是因为,从前某个重要的问题你已经回答错了。

| 关于经验:
经验不一定能教会人懂得任何东西

| 关于健康:
一个人要足够健康,不用其他办法,健康本身就“制造”幸福
身体要是不健康,其他成功秘诀都不会管用,身体不好的时候,第一重要的就是去把身体弄好。健康受损,大脑就是第一个开始衰败的器官。
头脑好,身体好!

| 关于变化:
无论你自己如何稳定不变,如果你的环境在变,你的个人处境可能也会变化
在变化方面的无能,最终会导致戏剧性或灾难性的变化
“不愿变化”的决心,往往是一种最强大的可以加以利用的力量。如果你直接和它较劲,那你几乎肯定要败落。如果你把它向你想要的变化方向引导,让系统自动去为保护它认为最有价值的东西而奋斗,这样就很可能会获得成功。——对于国家、公司、同事都适用。

关于变化的两条惯性定律:
第一定律:环境变化,迫使此时人们才会改变——会感到压力
第二定律:如果变化时,人们总是挣扎着保住对他们最重要的东西,牺牲不那么重要的东西。——会奋力保住(这也是很多人在自保和利益时的选择,就能观察出一个人最看重的是什么。所以人品,价值观,这些基础才会如此重要)

所以,让人感到压力&想奋力保住的东西如下:
生理需要(安稳、相对舒适的生活)
安全
归属感
他人的尊重
自我尊重或自我实现

通过以上定律,我们知道人对于压力会怎样反应,取决于人认为应该保住哪样重要的东西,这样我们就要问:变化会威胁到他珍视的什么东西吗?

| 关于用人:
我们总是把效率最高的人才从编程岗位上挪走或者轰走。
我要做的就是:不是光顾着自己能够提升多少,而是更应该想办法让团队中的每个人都提高,哪怕是每人提高1%,也会超过自己费劲巴拉的提高5%。
建立一套广泛得多的工作方式,想要管理高效,就得引导办公室里面的社会力量,达到为整个企业生产力目标服务的目的。
福特的基本反馈公式:
如果你想让人民改变他们正在做的,那么你应该确保他们的所作所为的结果都会反馈给他们自己。
收到自己工作成果的真实反馈,对工作积极性非常重要,因为真正的信息,是可以提高生产力的。——真正信息的作用
作为领导,一定要确切的知道属下在干什么,才能真实的反馈
管理者的任务,并不一定是直接给出这样的反馈信息,而是去安排这样的反馈,使之正规化,可靠化。
评审就是社会力量的一种,是今天就能采取的,最立即,最有效的步骤之一。
不做评审,任何程序开发管理者,对任何提高生产力的手段的实施,都不可能有踏踏实实的信心。也没有任何可靠的方法来打消幻觉。
可以推行程序员同级犯技术评审
降低离职率的措施,能够提高这些“活文档”的质量
让曾经阅读过,理解过的人签上名字,这样后面的读者也就能通过这样一种参考,找到对他们可能最有帮助的人。
在那以后的几天里,我把他的离职当成了自己的一种失败,但是每次有人离职,我都会这么想。可是,当我回头考虑这件事时,我明白了,一个公司不可能面面俱到,满足所有人的所有要求。我相信,那个人在自己的小公司里一定非常快活,在我们这里根本没法让他高兴到这个程度。不是每个人都一定要在一家跨国公司里当程序员的。
鼓励违抗愚蠢的命令,不一定非要勋章才行
每个人都应该有偶尔犯点儿错误的权利。如果谁都不犯错,那就说明大家从不尝试,从不思考。
公开表态总好过不战斗而被吃掉
害怕并非不专业,做胆小鬼才是不专业的

| 关于编程:
“温伯格珍贵编程法则”:
1.标准不够标准。
2.总会剩下1个bug的,你找到了这个剩下的,那还会有另1个
3.任何有可能发生的事都将会发生,除非你的测试计划中已算到了它会发生。
4.要是有人伸出1指,点出代码中的错误就在某处,那么就在处之外的其他地方去找这个错误——很可能错误就在该人的另外个指头指的地方。
5.1盗司“预防”顶得上1磅“事后补救”,可是管理层不会在防”上花哪怕1个便士。
6.需求、设计、编码能以任何速度完成——只有排错花时间。
7.再长、再乱、再复杂的代码,维护者都能把它弄得更糟糕。
8.人人都谈“文档”,可从来没人为它做任何事。
这儿根本没有规则是最好的规则
让那些一心追求产量的人理解追求质量的人,近乎不可能——反之亦然

矛盾论:
1.不要太早地放弃一种疗法。
2.不要让一种疗法耽搁太长时间。

医生拿那么多钱是有道理的。他们这个行业秘决中的秘诀,不在于这些“秘诀”本身,而在于知道何时应用哪个秘诀。也许我们付给他们这么多钱,也不仅是为了他们“知道怎样做”,而且为了他们“知道何时怎样做”。

我们的最差解题方法,其实就是我们的最佳解题方法做过了头。
如果做过了头,集中注意力也就变成了强迫性精神病。
面面俱到也就变成了优柔寡断。

把最佳解法和最差解法分开的那一条线,也许比我们想象的还要细微,这也就能鼓励那些目前最差的人,并且让最好的那些人保持清醒。

每次你读到什么写给别人看的东西,都先问问自己:
1.它是不是读下来比重写一遍还费劲?
2.它是不是不正确?
3.它是不是容易误导?
4.它是不是会让你感到一种只有H配方才能缓解的不适?
如果以上任何问题的答案是“是”,那就重写一遍。

代码本身就是文档的根基,那可以着手提高代码作为文档的质量。如果代码本身就是一种文档,那么测试代码的文档功能,就是读代码。
如果我们对于这样一个困难的问题太过严肃,那么也就很可能不屑于一些看似荒谬的提议,比如“把问题翻个个儿”

| 关于自我尊重:
我们最终想要的是自我尊重,其他任何人都没法给我“自我尊重”,虽然一些人曾经能够夺走我的“自我尊重”。当我最终能够善待自己时,我能与其他人和睦相处。
寻求成功可能是为了补童年的挫折。

| 关于思考:
人们不思考的4点“显而易见”的原因:可能

有人不愿意让人们思考。们就
没人在乎自己是不是思考。这个
过度思考会让大脑疲倦,因此也可能妨碍其他的事情。
在学校里我们没学会思考。
三思而无为,总比不思而妄为要好

知道什么时候让事情水到渠成,这是最高的智慧

| 关于主意:
主意来自3个源头:
错误
偷窃
交配
惩罚是最有效的教学方法,它教会你如何避免惩罚

| 关于沟通:
当我们把一个解决问题的想法转化成实际的解决方案时,我就有时必须要和他人交流,这时太高的“内部运算速度”会导致过载。
“如果你想让别人喜欢你,”俄罗斯有一句古老的谚语这么说,“就让他们帮你个忙。如果你想让他们恨你,那就帮他们个忙好了。要想让别人对你的智力产生印象,其实也跟上面的情况类似。

如果想让人认为你聪明,那就认真听人说话,仔细理解人家的意思。
如果你想让人认为你傻,那就不妨经常用你的高见打断别人的话。

教训:如果你傻到了认为烫斗是为了你才时冷时热,你也就活该挨烫
换句话说:所谓交流;总要有两个活人。一个活人加一个烫斗则不成。

| 关于职业生涯:
万物之道:人家付你工资,更多地是因为你所知道的东西,而不是你干的事情。
最重要的文档是保存在人的脑子中的。
如果你不学习,那么你也就到期了
年轻人再弄瘤,再吵闹,再没教养,头发再难看,再长,说到底,年纪越大还是越走下坡路。
换句话说:专业人士的最终安置应该是体面地退休。

| 一些结论:
1.从来没有哪个程序员因为身体好而遭了太大的罪,提醒你这一点,似乎都没太大必要,但是很多专业程序员对身体,简直像拿着烧红了的拨火棍的小孩儿一样。所以,如果你想在编程领域“走到某个地方”的话,那么想办法保持一个好的身体成功的可能性就会大大提高。或者,如果你现在还不够健康的话,就先把身体弄好吧!

从过去中,我们还能采集到哪些智慧的话呢?当我想到自己认识的很多专业人士时,我觉得下面的话很恰当。

2.没有哪个程序员,是因为自知太多而大大影响了前途的。这并不是说,如果你毫无自知,那也就不能在编程领域有所长进要是那样的话,我也就不会在这里写这篇文章了。回想我的早年经历,在自知方面的盲区太大——简直足够遮住一条银河了。我倒宁愿说,我后来的经历是托了自己成熟之后的眼光的福,但是似乎我学的东西越多,我的自知也就越少。到现在,我确实能够明白,如果我当时能站在局外考虑问题的话,早先有很多机会本来能够做得更好的。想一想,如果当时不是被自己的盲区遮盖了双眼,我会省下多少次开夜车的浪费!

我倒是很会观察别人的盲区。每次我终于发现了自己是多盲目时,我也会发现,其实别人也有“见我所未见”的本事。这样一来,我就会请求别人洞察力的帮助,作为回报,我也用自己的洞察力去帮助他们。

获得、索取这一类的眼光往往并不像我想的那么容易,但是这又教给我另一个道理:

3.没有哪个程序员,是因为善于和人相处而大大阻碍了注意,我说的是“和别人相处”,而不是“顺应别人”,这种区别特别细微,但是在计算机行业却特别重要。计算机永远不会“顺应”。有些人老师为了计算机的这种“直脾气”发火,可是这样的人做程序员久不了。程序员们最后会明白,计算机不会把谎言当作论据——因为它的论据就是简简单单的事实。计算机也不会操纵你非按照它的办法做,因为它没有自己的“办法”。

从计算机上人们懂得了正直——因为计算机正是正直待人的。而为了应付不正直的系统,人们也懂得了如何不正直地行事——我们也能从中得出另外3条成功的原则:

4.没有哪个程序员,因为正直对待计算机,或者正直对待正派人,而受到过伤害。

5.很多程序员都曾因为正直对待不正派的人而受到过伤害,但是他们都很快地恢复了。

6.也有很多程序员,为了跟不正派的人打交道,自己也就变得不正派,而这种不正派往往是永久性的,成了无可挽回的残疾。我猜,这些也许还可以归结为“处理不同意见的技巧”或者“在有限时间内承受困难的意愿”。如果你的工作让人实在没法忍受,或者你还有其他选择,可参见这一条:

7.如果程序员银行账户里不缺存款,或者还有其他的公司邀请,那么在纷争中,或困难中,他也不大会做出个人让步,或个人牺牲。但是,问题不仅仅是问题,也提供了学习的机会——了解这一点对你也会有帮助。比如说,离职当然是躲开一大堆麻烦的好办法,但是:

8.对于程序员来说,“一大堆麻烦”也提供了增进自我了解,提升与人相处能力的机会。

如果你不相信,只要读一读艾丽丝的故事,或者其他历险故事里成百上千个历经劫难的主人公的收获,就不难知道了。

理解专业程序员做准备,与其说秘决在于学习COBOL的关键字,不如说在于掌握在不同情况下处理问题的新手段。
《论个人力量》(On PersonalPower)一书中,Rogers说:
个体,而不是问题,是我们关注的重点。我们的目的不是要解决一个特定的问题,而是要帮助个体成长,使他既能应付当前的问题,也能用某种更完善的方式,应付今后的问题。

9.如果一个程序员一直都在成长、进步,他也就不会害怕未来。

| 写在最后:
当你有这样的感觉时:
总觉得我自己的问题是大问题,是重要得多、复杂得多的问题,与普通人遇到的那些不可同日而语,这可能会导致不少不愉快。

就想想宇宙中那1千亿个银河系,其中每一个可能都有1万亿颗星星,每颗星星上都可能生活着50亿人其中不少“人”可能都是程序员,也许有那么好几十亿人吧,此刻,正在跟你处理同样的一个bug呢。每当我在什么问题上一筹莫展的时候,想到宇宙中的那些难兄难弟就会让我宽慰不少。

我想告诉你的事情:如果你对自己在宇宙中的有了更合理的认识,你睡觉都能香得多。

发布了44 篇原创文章 · 获赞 12 · 访问量 8380

猜你喜欢

转载自blog.csdn.net/GongMeiyan/article/details/103672658
今日推荐