从北京来到广州,本
池建强 : 从北京来到广州,本来想着往南千里,鲜花满地,没 想到广州这么阴冷。温度不低,但是空气中透着湿气,很容 易打穿你的衣服,可拆卸的羽绒内胆,牢牢的捂在身上。没 穿秋裤,不热,也不算冷。现在最期待的就是明天龙哥的演 讲了,另外,大概率和像往年那样,蹭龙哥一顿夜宵,聊聊 微信,说说产品,看看生活,一想到这些,还真有点兴奋。 深夜了,分享一篇文章:程序员的生产力。
2019-01-08(38赞)
评论区:
池建强 : Redis 之父萨尔瓦托·桑菲利普(Salvatore Sanfilippo)列出了 9 种可以用于区分程序员生产力高低的重要特质,他认 为,如果一个程序员同时具备了这 9 种特质,那么就可以说他是一个 10x 程序员。 1. 编程裸技能:完成子任务 从处理编程 子任务上,可以看出一个程序员的短板和长处,比如实现一个函数或者一个算法。事实上,擅于应用基本的编程技能来高 效完成任务的程序员,并没有如人们所想得那样普遍存在。 有时候,团队里有些不是很称职的程序员,他们甚至不知道该 怎么写一个简单的排序算法,但是比起那些看似称职却缺乏实战经验的程序员,这些不称职的程序员却能完成更多的工 作。
池建强 : 2. 经验:模式匹配 桑菲利普认为,经验就是一系列解决方案,它们已经被证实可以用于处理一些重复性的任务。 经验老道的程序员知道该如何处理各种子任务,这样不但省掉了很多设计工作,而且避免了很多设计错误,而设计错误是 简洁性最大的敌人。 3. 专注:实际时间和假设时间 花在编码上的时间不仅要看数量,也要看质量。造成注意力不集中的因 素既有内部的,也有外部的。集中注意力和避免被打扰,对于提高编程效率来说是至关重要的。
池建强 : 4. 设计权衡:用 5% 换取 90% 项目的非根本性目标在很大程度上导致了设计的复杂性,或者导致无法达成其他更 重要的目标,因为根本性功能和非根本性功能在设计上存在竞争关系。如果意识不到这点,复杂性就会随之而来。对于设 计者来说,如果项目要最大化产出,就要把精力集中在重要的事情上,并在合理的时间内完成。 5. 简洁性 简洁性是成败之 间最为明显的分界点,理解复杂性的产生过程有助于理解什么是简洁性。不愿意做出设计权衡和设计错误的累积是导致复 杂性的两个主要因素。
池建强 : 6. 完美主义(为了偏袒设计而放弃生产力) 完美主义可以分为两种:一种是追求程序极致性能的工程文化,另一 种是个人特质。不管是哪一种完美主义,它们都会对程序员实现快速交付造成阻碍。完美主义和对外部评判的恐惧会导致 设计上的偏袒,程序员根据主观的心理因素和无关紧要的衡量参数做出设计决策,却忽略了健壮性、简洁性和及时交付。 7. 知识:理论有益 在处理复杂任务时,具备一些理论方面的知识会对设计产生重要影响,比如数据结构方面的知识、了解 计算能力的局限性和一些重要的算法。虽然程序员没有必要成为无所不知的超级专家,但是至少要知道一些问题的潜在解 决方案,避免设计出复杂、缓慢、低内存效能的解决方案。
池建强 : 8. 底层:理解机器原理 程序的很多问题都是源于对计算机工作原理的误解,即使是使用高级语言开发的程序也不 外乎如此。这种情况可能导致一个项目需要重新设计和实现,因为项目所使用的工具和算法出现了根本性的错误。对此, 精通 C 语言,知道 CPU 的工作原理,了解系统内核的行为以及系统调用的实现原理,做到这几点就可以解决这些难题。 9. 调试技能 查找和解决 bug 经常会占用程序员大量的时间。查找引起 bug 的问题根源,在合理的步骤内修复 bug,以简单 的方式编写包含较少 bug 的代码,对于程序员来说,做到这几点就可以显著提升效率。
池建强 : 期待明天。
徐小白 : 对第六点感同身受,有时候经常执着追求更好的方案,反而影响交互。 期待池大对于明天的分享[跳跳] 其.龙 : 要是你上周来广州,更阴冷