老鸟经验谈

重构是程序员的主力技能。

工作日志能提升脑容量。

先用profiler调查,才有脸谈优化。

贵精不贵多。杜绝大姨妈般的“例注”。漫山遍野的碎碎念注释,实际就是背景噪音。

普通程序员+google=超级程序员。

单元测试总是合算的。

不要先写框架再写实现。最好反过来,从原型中提炼框架。

代码结构清晰,其它问题都不算事儿。

好的项目作风硬派,一键测试,一键发布,一键部署; 烂的项目生性猥琐,口口相传,不立文字,神神秘秘。

编码不要畏惧变化,要拥抱变化。

常充电。程序员只有一种死法:土死的。

编程之事,隔离是方向,起名是关键,测试是主角,调试是补充,版本控制是后悔药。

一行代码一个兵。形成建制才能有战斗力。单位规模不宜过大,千人班,万人排易成万人坑。

重构/优化/修复Bug,同时只能作一件。

简单模块注意封装,复杂模块注意分层。

人脑性能有限,整洁胜于杂乱。读不懂的代码,尝试整理下格式; 不好用的接口,尝试重新封装下。

迭代速度决定工作强度。想多快好省,就从简化开发流程,加快迭代速度开始。

忘掉优化写代码。过早优化等同恶意破坏;忘掉代码作优化。优化要基于性能测试,而不是纠结于字里行间。

最好的工具是纸笔;其次好的是markdown。

leader问任务时间,若答不上来,可能是任务拆分还不够细。

宁可多算一周,不可少估一天。过于“乐观”容易让boss受惊吓。

最有用的语言是English。其次的可能是Python。

百闻不如一见。画出结果,一目了然。调试耗时将大大缩短。

资源、代码应一道受版本管理。资源匹配错误远比代码匹配错误更难排查。

不要基于想象开发, 要基于原型开发。原型的价值是快速验证想法,帮大家节省时间。

序列化首选明文文本 。诸如二进制、混淆、加密、压缩等等有需要时再加。

编译器永远比你懂微观优化。只能向它不擅长的方向努力。

不要定过大、过远、过细的计划。即使定了也没有用。

至少半数时间将花在集成上。时间,时间,时间总是不够。

与主流意见/方法/风格/习惯相悖时,先检讨自己最可靠。

出现bug主动查,不管是不是你的。这能让你业务能力猛涨、个人形象飙升

不知怎么选技术书时就挑薄的。起码不会太贵,且你能看完。

git是最棒的。简单,可靠,免费。

仅对“可预测的非理性”抛断言。

Log要写时间与分类。并且要能重定向输出。

注释是稍差的文档。更好的是清晰的命名。让代码讲自己的故事。

造轮子是很好的锻炼方法。前提是你见过别的轮子。

code review最好以小组/结对的形式。对业务有一定了解,建议会更有价值(但不绝对)。而且不会成为负担。管理员个人review则很容易成team的瓶颈。

提问前先做调研。问不到点上既被鄙视,又浪费自己的时间。

函数不要超过50行。

不要一次性写太多来不及测的代码,而是要写一段调试一段。

UT和编码要同步做。

多写注释方便的往往是自己。

碰到一堆问题时,一次只尝试解决一个问题。

没把握一眼看出问题症结的时候,老老实实单步调试。

设计模式是个好东西,但不要强行使用。

没造成可观的损失前不要尝试做性能优化。

没事别重复造轮子。(那么有闲功夫的时候呢)

大多数情况下Boss不关心技术含量,而且往往简单的解决方案更快更有效果。

不要害怕接触新知识,因为害怕也没用,不管你愿意不愿意,你现在会的东西5年后就会过时。

老鸟和新手的一个很大区别来自于debug的能力。其中最主要又可以从两方面看出来:

从高层往底层找错。

科学方法。

很多新手遇到程序执行结果不对(尤其是图形程序员),先认为是机器毛病(浮点精度、硬件故障),然后认为是驱动有错,再认为是系统有错,最后才开始排查自己的程序。其实99%的情况下是自己程序有错,然后那1%里面的99%是系统有bug,再接着那1%里的99%是驱动有bug,最后到硬件问题,已经微乎其微了。应该从高层往底层查,而不是反过来。

debug一般来说是知道现象,但原因未知。这一点和很多自然科学的情况一样,所以完全也可以用科学的方法来:提假说->根据假说做出预言->做实验肯定或否定预言。对应于debug,那就是假设是某个地方有问题,那么推断它一定会导致除了你看到的现象之外的其他现象,运行程序看你的推断是否成立。掌握这个方法后debug不在变成瞎找瞎试,而是有迹可循有系统可依赖的方法。

我有一个学习的小技巧,就是学习新技术的时候,多看看“官方文档”。

多年来的学习和工作经历,让我比较深刻认识到一点:看“官方文档”非常重要。

我们很多的问题和技术细节,其实,只要我们认真将官方文档过一遍,会发觉大部分的问题和认识模糊的地方都消失了。甚至,你还能发现自己之前通过搜索获得的到一些资料,可能是不准确或者已经过时的。官方文档是真正的好东西,因为编写文档的人群,通常就是这些技术或者软件的开发者,他们才是对这些东西最了解的人,因此,他们写的文档质量是很高的,通常也是最新的。

官方文档的不足的地方,大概是中文版本不多,看起来可能会比较吃力。不过,请相信我,下载一个翻译辅助软件,慢慢看还是可以的。另一方面,就是这些文档编写者,通常是技术界大牛,他们编写文档有时候是基于他们自己的技术认知水平,跳过了很多基础概念,也增加了阅读难度。不过,这个我们也可以通过多查资料,慢慢看来解决,并且通常会带来额外的学习收获。

越难找到的bug往往越好解决。

预估工期(至少)乘以二差不多等于实际工期

你所需要的大多数功能都已经有人实现了,上github上多半能找到。

很多做H5游戏的公司既不懂什么是HTML5,也不懂什么是游戏

HTML5是一项标准,不是一项技术,招聘“H5工程师”的公司如果不是专门做广告营销(因为约定俗成的语境
),多半是没有靠谱前端的。

市面上的手机有超过30种不同的分辨率。

人的精力是有限的,单位时间效率比时长重要,熬夜写代码常常会对着屏幕什么都写不出来,不如好好睡觉。(然而白天的时间往往不是你自己的 = =)

为了快,不写文档,往往会陷入泥潭。磨刀不误砍柴工

比起鼓励师,不如给程序员找一个靠谱的PM

(对于新手来说)你觉得大的数据其实一点都不大。

“十大xxxx技术推荐”,“十佳xxx类库”,多半是编辑凑数抄来给萌新看,加点击率的,真正高质的技术推荐文章往往只写一个。