设计
在没有足够多的具体实例之前,先不要急着建立抽象
别做一般性的考虑,先考虑清楚到底要覆盖哪些目标场景
如果你没写过自己的编程语言,那就尽量别碰 DSL
经历比资历重要,除非以前做过,否则大家都是拿不定主意
大部分人并没有十年的编程实战经验,所以要相信自己的判断
不论你设计的多么好,总有人能指出他认为不好的地方
项目
不要乱动别人写的代码,尤其是不要删那些看起来没用的逻辑
项目中遇到的问题,大多不是技术问题,而是人的利益冲突
永远无法兼顾所有人的利益,所以重要是自己决定怎样做
不存在足够好的理想中的团队环境,换一个团队只是换一些问题
项目就是用不完美的办法尽量达成目的的过程,因此总有令人不满意的地方
债务总是会有的,区别是积累一段时间后偿还,还是随时偿还
代码
只靠代码本身,无法进一步提高代码的可读性
可维护性是玄学,人们都认为只有自己的代码才更好维护
好代码是有代价的,洁癖是不可取的,我们需要的不是代码而是功能
把代码写正确,比把代码写优雅更重要
著名项目里的代码,并不比你写的好
不存在看不懂的代码,再烂的代码多少也能看懂一点,静下心来看下去很重要
产品
解决问题的时候,还要关注问题是怎么定义的
问题有时候并不需要被解决,找到提出问题的人
亲手用一用自己的产品,避免“亲爱的用户,我是你爹”
没有该不该做的事情,只有轻重缓急
需求不可能不变,因此不是要禁止变更,而是要对变更进行管控
对于究竟怎样做更好,产品经理有时候也不能确定,只是他必须表现出确定
做事
疼痛需由当事人自己说出来,要关心用户但也不要替别人拿主意
不要勉强采用别人的方案解决问题,自己的事情自己负责,不认可就别接着做
我们都是公司的资源,因此不要以浪费资源的方式开展工作
别人不是反对我们的方案,而是反对我们给他们造成的麻烦
专业技能千篇一律,办事能力千差万别
事情能进展下去,不是因为本身是对的,而是各参与者都能得到自己想要的
学习
程序猿是在帮别人解决问题,而不是自己
开发者的时间不是自己的,公司不是学习的地方
没有纯技术团队,总得做一些不想做的事情
你觉得需要学的,是别人想让你学的
工作不止编程这么简单,不要用十年只学编程
编程是一个不断学习的过程,除了学习通用知识之外,还要学团队成员创造的知识