提高程序员职业生涯的十四条经验

不要害怕角色变化。和不同的人共事,开发不同的产品,感受不同的公司文化是非常有意思的。在我看来,太多的人只是被动地呆在同样的地方年复一年的工作,只有在被迫的情况下才去改变。


1、当性能遇到问题时,如果能在应用层进行计算和处理,那就把它从数据库层拿出来。排序和分组就是典型的例子。在应用层做性能提升总是要比在数据库层容易的多。就像对于MySQL,sqlite更容易掌控。

2、关于并行计算,如果能避免就尽量避免。如果无法避免,记住,能力越大,责任越大。如果有可能,尽量避免直接对线程操作。尽可能在更高的抽象层上操作。例如,在iOS中,GCD,分发和队列操作是你的好朋友。人类的大脑没有被设计成用来分析那些无穷临时状态——这是我的惨痛教训所得。

3、尽可能简化状态,尽可能局部本地化。适用至上。

4、短小可组合的方法是你的好朋友。

5、代码注释是危险的,因为它们很容易更新不及时或给人误导,但这不能成为不写注释的理由。不要注释鸡毛蒜皮的事情,但如果需要,在某些特殊地方,战略性的长篇注释是需要的。你的记忆会背叛你,也许会在明天早上,也许会在一杯咖啡后。

6、什么让工作变得有乐趣?在你考虑将乐趣融入到你的日常工作之前,你必须先定义对于你而言乐趣意味着什么。对我来说,乐趣是指通过完成我以前认为不可能的事情——归咎于感知到的复杂——而实现的某种启迪。因此,挑战自我去探索和学习新的东西,而不是工作于那些陈词滥调的任务,使我更享受于我的工作。这让我明白了我应该少做那些没有这种特点的工作,多做那些有这些特点的工作。

7、享受工作

当然,享受的工作,别人可能会觉得难以苟同,这很正常。但是我依然想分享一些东西,这些东西让我觉得自己像一只快乐的小蜜蜂,你可以借鉴我的点子,制作出你自己的清单。

  • 工作于我自己的项目/思路
  • 工作于促使我学习的项目
  • 致力于开源
  • 探索新的编程技术
  • 探索新的编程语言
  • 磨砺我的编辑技巧
  • 摆弄我的编辑器配置

8、估算解决问题所需要的时间。

不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。

9、编程语言是一种语言,只是一种语言。

随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该觉得“舒服”,并且能够写出有效(而且简洁)的代码。最重要的,让语言去适应项目,反之亦然。

10、不要过于注重程序的“设计模式”。

有时候,写一个简单的算法,要比引入某种模式更容易。在多数情况下,程序代码应是简单易懂,甚至清洁工也能看懂。

11、经常备份代码。

在我年轻时,我就有过因硬盘故障而丢了大量代码的经历,这经历很恐怖的。只要你一次没有备份,就应当像有着严格的期限,客户明天就需要。此时就该源码/版本控制软件大显身手了。

12、带着问题睡觉

如果你正在解决一个很难的问题,那么不妨带着问题睡觉。有科学研究表明,这样做虽然你表明上并没有在主动思考,但你的潜意思却这么做了。其结果就是,第二天再去研究问题,解决方案已经呼之欲出了。

13、改变/跳槽

不要害怕角色变化。和不同的人共事,开发不同的产品,感受不同的公司文化是非常有意思的。在我看来,太多的人只是被动地呆在同样的地方年复一年的工作,只有在被迫的情况下才去改变。

14、活到老学到老

软件行业的一大魅力就是我们随时有机会可以学到新的东西。你可以尝试不同的编程语言和工具,阅读软件开发的书籍,接受MOOC课程。相信我,量变才能达到质的飞跃,这些小小的学习积累,终有一天会大大地提高你的知识和能力。

阅读余下内容

发表评论

电子邮件地址不会被公开。 必填项已用*标注


京ICP备12002735号