MacTalk 跨越边界

  • By 龙井
  • Fri 22 April 2016
  • Updated on Fri 22 April 2016

我自己关注池老师的Mac_Talk公众号也是从冯老师的小道消息而来的,当时对苹果的一切都很向往,羡慕那些有Mac有iPhone的人,看着池老师分享Mac的那些好玩儿的地方,看着池老师被人忽悠着升级OSX导致电脑崩溃,一天天就这么过来了,岁月静好,我却依然,依然没有多大的变化。除了开始使用MBP,从此有一种带我装X带我飞的感觉!春节后,池老师在文章中分享了他的新书《跨越边界》,循着链接走到微信读书,开始读起来!读完之后感触颇多,感觉很多地方都很有道理,关于程序员三部曲更是有种醍醐灌顶的感觉。所以萌生了整理读书笔记的想法,把池老师的经典句子和段子写下来,万一哪天见着他了还可以跟他掰扯几句。最后,我想说:我虽然算不上正规&&合格的程序员,但是我希望自己能在工程师的道路上走的更加精彩。

写给走在编程路上的人

程序员真正的价值
  1. 除了编程技巧和程序设计能力,解决问题的稳准狠是衡量一个程序员是否优秀的重要因素之一,也是资深技术人员真正的价值所在。

这一点感受很深,资深程序员可以很精准的定位问题并解决问题,这需要大量的实践经验,也需要很清晰的问题解决思路,我个人在这方面表现的一直不好,总是依靠试,缺少足够细致深入的分析,总是希望通过调整参数观察现象解决问题不是最好的方式,从现象中发现可能的问题点,进行分析和推演能有效提供问题的解决效率。

  1. 解决问题的能力无法速成,只能依靠实践、经验和惨痛的教训历练而成,有时候还需要灵感和运气。
  2. 不停的学习、实践和死神,成千上万个小时之后,高手始成。
  3. 首先,排查是程序问题还是环境问题,把线上程序恢复到运营正常时的老版本,如果出现了同样的问题,那就是生产环境发生了改变,如果运行正常,要么是你修改老bug时引入了新bug,要么是新增加的代码出现了问题。 其次是阅读产品的修改日志,根据代码提交的时间线构建系统,通过二分法排查,定位是那部分代码引起的问题。 最后,排除了所以不可能,剩下的无论看起来如何不可能,就是它干的。

我目前在做DevOps,一种集文化、过程、实践、工具于一体的东西,池老师描述的这是一个典型的部署生产环境时引入问题的分析场景,首先我们应该快速止损,就像第五点说的,以最小的代价解决问题。先恢复出可用版本,之后再是怎么分析问题,解决问题。这其中就显现出生产环境的APM(应用性能管理)和日志管理的重要性了。生产环境对开发者而言,是相对封闭的,通过生产环境的日志数据,分析问题很重要,这也是DevOps强调的团队协作、能力延伸、信息反馈。

二分法对程序员解决问题非常重要

  1. 程序员真正的价值是什么?以最小的代价解决问题!知行合一,方可无敌于天下!
当程序员老去
  1. 程序员,是一个终身学习的职业...
  2. 真正有可能晚景凄凉的程序员,是对技术和产品没有兴趣的人,是仅仅把编程当做生活工具的人,是哪些不能终身学习的人。
  3. 在某个领域深耕细作的同时,不要忘记拓宽自己的知识面,如果一个人的领域太过专业化,一段时间后,你可能会发现自己的专业已经陈旧了。如果一个人的知识面很广,在终身教育的配合下,你的专业可以随着时代的变化而改变。

这是一个略显凄凉的话题,刚毕业时也写过程序(ASP.NET),谈不上热爱,因为感觉不到cool,那个时候出去面试,机会很少。正逢微软变软,自己技术能力也不过硬。很早就萌生了关于程序员不能做一辈子的想法,要怎么去专做业务,做管理。现在想来真是无知。这两年开始做Linux相关,用着Mac,感觉学习新技术,做出新程序是一件很爽的事。我很享受那种持续学习的新鲜感,希望这种状态一直持续下去。

程序员如何选择技术方向
  1. 武学造诣:决不要把计算机强加给人们的限制认为理所当然,人不是机器的奴隶,把了解机器的限制作为通晓计算机的标准只能是自欺欺人
  2. 立足平台,你会站的很稳,立足一个点,你能摔得很惨,就是这样
  3. 我不是懂得很多,我只是学得很快而已

朋友们总说一句话:人生,选择大于努力。我也总在选,却一直没得选,后来发现中学看到的那句话是真理:有志者立长志,无志者常立志。真正牛掰的人选择方向做深做实,我们已经望不到他们的项背了。

程序员犯过的错
  1. 年轻的时候谁能不犯错?重要的是犯错之后你做了什么。强大了,还是沉沦了。
  2. 无论烦什么错,永远不要执行:sudo rm -rf /

误删数据,没有备份,这是程序员(包括运维工程师)最容易犯的错,我曾经也误删除过user表数据,不过还好我们可以通过其他库重新生成一份。这个错,我的前辈同事也都犯过,套用《极限挑战》的话,这就是命呀!昨天正好听了一场用户体验的分享,其实我们的工具需要增强体验,尽量屏蔽到误操作的场景。

和没有备份相比,更痛苦的是备份恢复出来是空的,或者是很久以前的数据,这个很多DBA一定都遇到过。所以我们在梳理了备份的目的之后,要求做多级的备份,以保证可用性的要求。备份的目的:随时能够找回旧数据,包括:误删除、应用程序故障、服务器系统故障(文件系统损坏、磁盘损坏)等等。多级备份:一级备份:数据的主备实时同步,二级备份:压缩后存储到同平台其他服务器,三级备份:压缩后存储到其他虚拟化平台。最后,最重要的是拿备份时常做恢复,验证数据完整性

2B Continue...

程序员的《禅与摩托车维修艺术》

恐慌,对未来,对现状,对自己的能力的恐慌