本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/10-tips-to-become-star-developer
Andrew C. Oliver是Open Software Integrators公司的总裁与创始人,公司主要与一些开源公司合作,特别是那些初创公司,致力于为客户提供课程开发、培训、咨询与支持等服务。合作伙伴可以将精力放在核心的业务领域上,公司则为其提供专业的服务。近日,Andrew撰文谈到了对于程序开发者来说,通过什么样的途径可以成为一个明星程序员,并给出了非常中肯的10条建议。
很多开发者会认为要想成为一个明星程序员所需要做的事情一定都是与编程技能相关的,不过这种想法却是完全错误的!优秀的代码是很好,但要想得到更好的工作,获得更高的报酬则需要让更多的人知道你是谁。换句话说,你需要推销自己,下面是我根据这些年的工作经验所得出的成为明星程序员的10个提示。
1. 撰写博客
搭一个博客,一个月写几篇文章。进行真正的研究,确保你所写的不是那种非常简单的东西。更严肃地说,就是要学会怎么写文章。根据学校的英语老师教你的方式来做:创建一个大纲、叙述、检查语法和拼音。接下来,简化刚才所写的东西,要做到让读你文章的人快速过一遍就能迅速掌握文章的要点。现在的互联网可是要做到精益求精才行。
2. 开源
不要相信那些关于开源的谎话。你们当中的那些年轻人可能已经记不起来过去有的开发者会失业的那种情况了,不过即便在经济不景气的时候,我创建的开源项目的所有开发者依然不会被裁员。请确保你所开发的开源代码能够反映出你的工作。我希望使用最简单的解决方案来解决难题,不过我面试了很多开发者,他们都将简单的问题给搞复杂了。无论你相信与否,这么做是有市场的,不过请确保你所编写的代码能够反映出你所在的市场。
3. 不是6个月,更不是10年
不要每6个月就换一次工作。严肃地说,一个公司的很多人都会出现离职的情况,同时也会有新人加入进来。换句话说,不要在同一个地方,做相同的事情达到10年以上,否则你会与市场绝缘并形成惯性的。举个例子,假如你在IBM工作,那么要想保持自身的价值,你就不能仅仅满足于按照IBM的方式,使用IBM的技术栈来编写代码。我从来没有雇佣过在IBM等类似的公司中工作过2年以上的人。他们给我的印象常常是面试中表现很不错,不过在实际的编程中却败下阵来。
4. 放眼新技术,着眼实际情况
尤其是一些年轻的开发者们都喜欢使用新技术。Ruby是我最喜欢的一种编程语言,不过平均来说,Ruby带给我的回报是不如Java的,Ruby的市场也比较小。事实也并非总是如此,Scala看起来势头很猛,不过不要忘记它的市场占有率,其实还是很小的。另一方面,也不要长久以来一直使用同样的技术,比如那些COBOL或是PowerBuilder开发者们。
5. 编写自己的文档
当我参与开发一个项目时,经常会被拉出去参加会议,原因就是他们看了我编写的文档或是演示,而且能够理解,这种情况出现太多次了。我总是一张总览图开始,后面则是对其各种细节的阐述。问题是:对于一个非常忙碌的人来说该知道哪些内容呢?大多数经理们想要知道什么?请按照这个思路编写文档。
6. 简洁是灵魂
对于管理来说,那些知道自己在说什么的人常常会给出更简洁的答案。如果回答很长且很复杂,那就意味着回答的人并不知道答案是什么。此外,声调通常与主题的重要性成反比。如果有坏消息来了,那么大家走进办公室时就会轻手轻脚,关上门,然后窃窃私语。请保证你知道自己说的是什么,知道如何总结,如何描述细节,不过请不要事无巨细地进行方方面面的介绍。请确保你的团队成员都经过了深思熟虑,然后清晰地阐明你的哪些观点要好于其他人的。
7. 当众发言
知道如何做演讲,学习如何在公众场合发言。研究一个主题,然后让自己成为这个主题的专家。如果能有一些幽默感的话,在公众场合的演讲效果就会更佳。要想掌握这种技能,你需要花费很多的时间与精力,还要忍受住别人的嘲笑,不过对于工程师来说,如果能用英语向管理者解释清楚问题,同时能就某个主题做出专业的演讲,那么他的薪资一般来说要比那些不具备这种能力的开发者高一些。
8. 现实一些
你很喜欢Erlang,不过Erlang的市场却没有那么大。你应该了解多种语言,还应该知道那些“新”的话题,不过请不要说出这种不成熟的话“如果不是Erlang,那我就不打算写代码了”,除非你真正理解了业务问题。这么做也许会让你成为一个狭窄领域的专家,不过即便这样也是有代价的,如果你所掌握的技能过时了,结果就不好玩了。当然了,NoSQL更适合于你自己的一些小项目,不过公司却不会在那种一次性的系统中对其进行投入,这种情况下RDBMS就很适合了。
9. 解决疑难问题,了解相关工具
花点时间学些大部分人都不了解的工具。你知道哪些很少有人知道/使用/理解的工具,让你比周围的人更具效率呢?比如说,Aspect4j并不适合于每一个人,不过它却适合我。我编写了一些.class文件操作,让其在Tomcat下正常运行,从而替换掉WebSphere,我修复了私有软件的内存泄漏问题。这每一次经历都让我超过了其他人,因为我使用了其他人很少知道的工具来解决重要的难题,而其他人则还在等待着厂商的解决方案。当然还有其他的,不过这些简单的工具却能够解决复杂的问题,让你超越其他开发者。
10. 保持谦卑
很少有开发者具备谦卑这种特质。有时,这意味着你需要做一些很具体的工作。极客的声望来去匆匆,不过请记住,是你的行动才让你收获这种声望的。下一周可能一切都烟消云散了。换句话说,“你并没有什么特殊的”。