1. 积极大胆地谷歌。你得知道如何有效地组织搜索关键字,查阅别人写的代码,然后合理地用在代码里,从而解决问题。
2. 拥抱变化,坚持不懈。老手程序员在接触新技术时,能欣然接受像个初学者一样处处受挫,并总能在完成工作的同时自学成才。
3. 承认细节的重要性。例如变量和函数的命名、CSS 属性的命名、该用哈希还是用数组,以及其他看起来微不足道,但可能对项目有深远影响的事情。
4. 承认大多数的 “重要决定” 其实并没有那么重要。一般的开发者经常在技术选型等 “重大问题” 上陷入唇枪舌战,而程序员老鸟们会避免浪费时间在骂战中。这一点上,他们就像禅宗大师一样(zen-like)。
5. 选择合适的工具解决问题。网上有无数的开源库、工具和框架,让人眼花缭乱。而老手们清楚地知道针对怎样的问题,应该用什么样的工具。
6. 明白代码「不值钱」(该删就删)。你必须习惯于删掉几百行代码来重写程序的某一部分,毫不留情。
7. 在评估技术的时候要全面。例如,我一直在鼓吹 Elixir。它语法优美,社区完善,有很大的潜力。但 Elixir 诞生的时间太短,所以如果要构建复杂的功能,可能会难以找到能帮你提高效率的开源工具。因此,在评估要不要选择使用一项技术时,你得把所有这些因素都考虑在内。
8. 学会说 “我不知道”。没有比拒绝承认自己不知道更浪费时间了。
9. 仔细分析错误信息里的线索。传统教育告诉我们:失败是坏事。报错信息这种东西也经常被跟失败联系起来,然而优秀程序员明白,这些错误消息里其实隐藏着能将你指向最终正确解决方案的线索。
10. 了解过早优化和必要的 “炫技式” 优化的区别。老手们清楚在什么时候需要写一些看上去没那么好懂,但会让程序运行更快的代码。
11. 每个人都会犯错,为自己的过失负责。而尤其在团队里,把责任推来推去没有任何意义,因为错误的发生往往不只是一方的因素造成的。
12. 成为你所用的开发工具的重度用户。如果长期在某个开发环境下有相当比例的开发工作,那你应该去掌握使用它的细节。
13. 学会用 Vim(至少会一点)。 你至少应该在这个编辑器里学会勉强地移动和翻页。
14. 不要接陌生技术领域的私活。个人做自由职业项目,其中很大一部分挑战就是评估项目时间。不要规划自己未知领域的事情,那会让你处于想当尴尬的境地。
15. 不要数你干活花了几个小时。技术大牛会把时间花在有深度的工作上,并且他们清楚花了多少时间完全不重要。
16. 学会坦然接受批评。当你的代码因为各种原因四分五裂时,你需要培养用理性和逻辑的方式来应对(而不是情绪化处理)。
17. 和有更多经验的人结对编程。没有比这个更高效的编程学习方式了。
18. 一定要先自己做一遍代码审查。当你在 GitHub 上发起一个 pull request 之前,先把代码当成别人写的,自己先审查一遍。
19. 认识到做自由职业的难点不是写代码,而是其余的所有事情。销售、推广、客户支持,质量保证以及产品管理,所有这些都会花费大量时间。
20. 发现并解决更大的问题。优秀的程序员不拘泥于眼前的问题,而是清楚如何用更长远的方式彻底的解决这一类问题。
21. 深入了解一些大型开源项目的核心能让你开发时如虎添翼。如果你知道如何给你的项目打猴子补丁 (Monkey Patch), 那么你将无所不能。
22. 跳过多数的会议。你的公司雇你是来写代码的,而不是谈代码的。当会议多到失控的时候,不去参加也没有任何问题。而且一旦你开始这样做,别人会更珍惜你的时间。
23. 知道什么时候开始回馈。到了某个时候你需要将你的技能和经验传授给年轻的开发人员,就像你的导师当时教授你一样。
24. 能写烂代码。有时候可以当一当 “胶带式程序员”。关键是随着时间推移,你需要弄清楚什么时候可以走捷径,什么时候必须走捷径。这其实是最难掌握的技能之一。
像生活中的很多事情一样,编程也是你做的越多,了解的就越多。所以如果你是一个新手程序员,还是直接去编码吧。记得将这些最佳实践应用在日常工作中,来不断提升你的编程技艺。