很多程序员的项目常常半途而废。他们有那么多的好点子,但是很多都流于空想。几乎每一个软件开发者都有一个这样的文件夹,里面很多都是些还没完工的项目,而这些程序里有不少在它诞生初期真心是个超棒的点子。和这些人一样,我也有很多好主意,有的甚至就是现在有些企业在用的。比如正决定着在eBay上还是在Amazon上做电子商务获利、做一个以业务为基础的社交网络(水管业、电子行业、软件开发等)、比特币搜索引擎、开发一个CSS框架来取代Bootstrap、从Instagram上找出最有魅力的那些人、开发一个实时访问统计引擎,这样的例子举不胜举。几乎每一个项目我都着手去做了,但是没见到一个是完工了的。当我和我的同事朋友聊起这个话题的时候,他们也普遍反映,他们也是如此。很多很多的好点子都夭折在他们的文件夹里。为什么会这样?
因为成功所以缺乏动力
首先要谈谈我们的职业,拥有着让人眼红的高就业率。用事实说话,全国的失业率约为6.7%,而WEB开发员的失业率还不到1%。而且我们的工资水平也比平均值高。2012年软件开发员的平均年收入就已经超过9万美元。当然现在你要是足够优秀,完全可以远远超过这个数。看着跟着我学习的新手菜鸟成为入门级程序员,心中有一种莫大的个人成就感。而这个职业的薪酬也让他们很满意:起薪4万5千美元到7万美元。
所以,和其他大多数人相比,特别是那些在工作岗位上碌碌无为做一天和尚撞一天钟的,因为岗位薪资不高而不断跳槽的,软件开发员还是比较成功的。这里请允许我冒昧的做一个概括,如有雷同纯属巧合。可以说,半路出家的程序员相对于这些人是比较成功的了。也就是这种成功的优越感麻痹了我们的神经,使得我们缺少了完成目标的动力。
知识范畴不同
我们知识广博。对于几个城市之间旅行怎样便捷,我们可以侃侃而谈。我们知道怎样把一个复杂问题分解成一个个小的子问题逐个击破。我们是真正的“世界通”,因为我们可以用任意一种语言说“Hello World”,面对即使需要成千上万的计算,我们也不皱眉头,因为我们懂得递推的方法。我们知道的很多,但是又是否足够多呢?伟大的科学家爱因斯坦曾经说过:
浅学误人,所以危险;博学自负,更加危险。
牛顿,大家都知道,誉为那个时代最聪明的人之一,可以准确预测离我们上百万千米远的天体的运动。他说,他是站在巨人的肩膀上才能看的更远。而物理学并不是他唯一的兴趣,他还给我们留下了微积分学等等宝贵的知识财富。由此思彼,那么他应该也对资本和市场运作很了解咯?
哈哈,那你就大错特错了!在1720年南海股票泡沫的高峰期,他投入的所有现金化为乌有,然后破产了。因为他不了解市场,所以即使他知识再多再渊博,也帮不了他一点忙。因为他的知识领域是独立的,不相关的——他发现了物体运动的规律,但是这些规律对他掌握投资者心理毫无帮助。我们也是这样的情况。我们可以花一整天时间去解释算法,研究数据结构,但是我们却不懂得用户想要什么。当twitters刚出现的时候,我想当然的认为不过是个昙花一现的流行事物。事实证明我错了。当我们在解决问题的时候,往往只追求解决方案是否吸引人,却忽略了联系这个问题的世俗看法。
不断跳槽
我敢保证,其他任何一个主要城市都是这样的,但是在这里,我仅代表我自己和我的同事朋友们在纽约工作时的经验。我们不断跳槽。但是也不是每个人都是这样。我在网上一篇文章的评论上看到有的人已经在同一个岗位上干了19年。我也发现了,那些很容易被别的项目所吸引的人,往往不会停留在同一个岗位上太久。就是因为这个原因导致很多项目不得不中断。
中断项目有很多原因。比如,刚进入新工作,并且需要专心致志做那里的项目,就不得不把原来的先搁置一边。又比如,因为做的这个项目和我们以前做过的可能差不多,于是顿时失去了兴趣。距离也是原因之一,特别是如果你隔个几年就要跳槽的话,坚持就愈加困难了。在这里,我需要提一提,转变心态很重要。如果你打算在三年后辞职,那么为什么不不能在3个月里搞定你的项目?如果你能保持着这种激情,当你在项目上一筹莫展的时候,灵机一现,好点子就来了。
赋予夭折的项目新生
因为这样那样的原因,我没有让我的好点子“出世”。首先我们承认了这点,然后我们找出了原因。现在第三步就是要修复它们了。这不是一朝一夕就能完事的,而且可能我的很多项目仍然会是这种半死不活的状态,然后我思索许久,终于想出了一些步骤,可以避免这些项目永远成了文件夹里的摆设。
你最棒
首先,要明白每一个项目都能让你稍微——或者在某些情况下是大幅度——成长为一个更佳的开发人员。技术需要靠时间的积累,所以你开发的项目越多,你就越棒。以学习新技术,新的编程语言,新的框架为动力去开发一个项目,那么即使你完不成,也能学到不少知识。而且如果你有其他要事要办,你可以立即暂停这个项目。
构建项目组件
你开发了很多项目,变得越来越熟练,不知道你是否知道这个小窍门——复用代码?构建模块和库,而不是每次需要使用的时候都去重新写一次。假如你现在在做的项目不是最后一个,那么我劝你最好构建一些项目组件,而不是光写那些只能用在这个项目里的代码。在文档里给自己写点注释,这样下次要用在下一个项目中就方便了。
和大家协作
现在我们已经有了能让那些夭折的项目重生的好方法,是不是蠢蠢欲动,跃跃欲试了?你的点子可能精妙无比,就像你的孩子一样宝贝,也或许价值数十亿美元,但是到目前为止——它一文不值。你需要和其他人分享你的点子,并且越多越好。这种自然而然的兴奋能促使你不断致力于这个项目,推动它的发展。甚至你可以开源,邀请大家参与进来。这种相互协作的方式会让你有种使命感,专注于此,不轻易放弃。
解决你手上的问题
不要好高骛远,也不要眼高手低,试着去做一些对你真正有用的东西。如果你是程序开发员,那解决程序问题,如果你在公司工作,那制作那个公司需要使用的程序什么的,即使是你个人方面,也一定会有一些可以用技术解决的问题。那么为什么不先下手为强呢?不要等到问题积累起来了再去解决,一步一个脚印,同时你还可以得到一些有用的程序什么的,何乐而不为?
勿以事小而不为
有句俗话,不要想着去创立需要时限8个月才能办起来的公司,把时间放在可以在4周内甚至更少就能做好的事情上。无论多么简单,每个月固定日子发布你的最新成果。这样做会有很强的心理暗示,能激励你的工作。相反,如果你坐在笔记本前捣鼓了8个月想干件惊天动地的大事,但是却毫无进展,有多么沮丧是可想而知的。量变会导致质变,一件件小事办好了可能会有大大的成功。因为人生的旅途是一场马拉松,而不是短跑。
吹牛也是项技术活
社会压力是真实存在的,与其偷偷摸摸工作,还不如告诉大家你的工作内容。你得到的反馈有可能会有助你改进产品。或许你担心别人会把你的点子占为己有,但是我可以保证,绝对不会有这种事发生。因为即使是很简单的想法别人想要去执行,也是很困难的一件事。所以没必要讳莫如深。说出来,你还可以从大家提出的建议中提炼出有意义的加以改进自己,而更加重要的是,这样做会促使你不得不去实现它。不然牛皮吹破面子就不知道放哪里了,哈哈。
写到这里,要告一段落了,不知道你有没有学到什么诀窍能对你的项目有所帮助?记得:行动最重要。
译文链接: http://www.html5tricks.com/why-developer-not-finish-pros.html英文原文: Why developers never finish their projects