无论谁都知道程序员应该会写代码——而且,这是作为程序员被需要的最重要原因。可是,在工作了一年多之后,我才深刻的体会到:作为程序员仅仅会写代码是一件让人痛苦事情,而且毫无前途可言。

       程序员和作家,从某种程度上是多么的相像——程序员使用各种语法结构,各种模板,各种库,就像作家在写作过程中使用各种修辞手法,各种叙述风格,各种固定的模式——最终目的都是创造出一件作品。当然,他们是有些区别的,因为读者可以直接通过作者的文字里解读作品——而程序员却不可能拿着代码说:“看,这就是我的作品”,因为程序语言作为一门计算机语言,只能够供很少的一部分人直接读懂——而这,也是为什么一般人都认为计算机语言那么困难的直接原因。大部分人只好去关心结果:界面美不美观,运行速度是否很快,操作是否方便,性能是否稳定?当然,作为读者和用户的共同点是:他们只享受结果。

        我们可能只需要几个小时就能写出一篇文章,然后让别人去评判这是篇好的作品还是篇垃圾;然而,我们却不能够只花几个小时写出一个软件,然后说:“看,这是我的软件,你来给个评分吧。”——一个工程的花费往往需要漫长的时间——正因为这样写软件需求,写软件设计文档才那么重要——没有人能凭着一时冲动坚持一年半载,更不可能将当初的想法一成不变的印在脑子里,更多的时候,当你在实施过程中都已经记不起来某些具体的东西而需要不断地翻查当初的设计文档。所以,你需要在你的作品完成之前——甚至在开始之前就要清楚地告诉别人你要做的东西——尤其是你的软件做与不做的决定权在他的手上的时候。可以试想,当你的老板直接了当的问你:“我为什么要支持你的方案?”而你仅能给予的回答却是:“额,这个。。。我觉得它很好。。。额,怎么说呢,它都在我脑子里。。。可是我不知道该怎么说。。。”如果,他是你的老板而没有对着你吼“你给我想清楚了再来说”,那么他已经太宽宏大量了。

        只有当你脑子里非常清楚你想做的是什么,你才能非常清楚的告诉别人你的想法。也只有你非常清楚的向别人说出了你的想法,别人才能考虑接受你的想法——如果你连清楚的告诉别人的你自己的想法都做不到, 谁还敢指望你能干什么呢?当我们强调团队合作,强调沟通的时候,如果你却想棵植物般没人能理解你想干什么的时候,那么,就算你再天才,别人也会对你敬而远之。

        “文章合为时而著,歌诗合为事而作”——但凡要写,必定是有东西要说。那么,每个读者都会想:他说的是什么,他说的够不够清楚了;然后读者才开始思考:他说的对不对,他说的是否和我想的一样。。。。。。

        如果linus,只是个会写linux内核的linux之父,linux绝没有发展到今天;如果C++之父也是个知道自己想问题的家伙,那么,C++能否流行恐怕也是个问题。别让世人误解成程序员都有点类似阿斯伯格综合症患者,相反,其实我们拥有和作家一样的创作潜质。

        从小学开始,我们就已经开始在接受“写作”这类作业。难道你不觉得,它其实一直都是在训练你怎么样去表达你自己的想法和感受?我想,我想说的已经说清楚了。