我写程序至今已经有两年多了,这段时间里,我的收获很大,感触也颇多。实际上我 在三年前便正真的接触到了c++编程,只不过那时候还在学校,忙于功课,没有对c++ 进行进一步的研究,只是简单的停留在很是初级的阶段。现在看来,那个时候连 最起码的编译器设置都没有搞清楚,只是会写class类而已,当然是没有经过很好 设计的。应该不算是在编程,fan的成分很大。 工作后,公司时候的编程语言是c++,使用的编译器是vc6.0,这对于一个本来就 对c++编程感兴趣的人来说,实在是一件很好的事情。我这时候的c++学习虽然不 象在学校里可以很安心的拿着书看,但这里你可以实战。你需要有在工作中不停 学习的能力,资源是相当多的,在网上你可以找到几乎所有的资源,更何况还有 数据量n大的msdn,所有的这一切开始的时候可能让你眼花缭乱。我是一个很贪心 的人,对于好的东西,e.g.各种编程书籍的电子版,各种编程心得,etc. 很多很 多,我便“疯狂”的收集,虽然有点夸张,但毕竟到现在我觉得我还是收集了不 少很经典的书籍。现在看来,这样做有两大好处,一是在当时满足了我的收集欲 望,没有将一腔热情放在别处(相对于游戏或者别的什么的,收集还算很不错), 二是有了资料,我便可以查看,学习资料。比较糟糕的一点便是,我对于收集来 的资料,除了那些在工作中可以确实参考的东东以外,其他的就很少去看,扔在 那不管,觉得对不起自己,也对不起这些资料。 说了一堆废话,现在正儿八经的说写程序吧。我暂且在此称为做软件,那就是你 把别人的需求变成了最终别人想要的东西。这句话说的简单,可是要做到却是非 常难的,对一个公司是这样,对于个人来说就更难了。但我这里讲的做软件,绝 对不是有些人认为的写代码,写代码只是做软件过程中的一小部分。既然这里讲 到了过程,我就不得不说一下软件工程。我虽然工作时间和很多人比起来很短, 但我从一开始就认为,要想正真写好程序,最好先将软件工程好好研读一下。它 可以让你知道一些开发的基本规则,(在我的世界观里,世界上的万物存在,都有 各自的存在规则),也许它所介绍的不是最合适的规则,但你仍然是可以参照的, 至少在你还没有发现更好的规则之前。有人说过一句话,“好的过程才能产生好的产品”,我觉得很合适做软件,软件 工程的作用刚好是用来规范软件开发的流程,保证软件开发的质量。这样看来, 软件工程应为每一个写程序的人好好研读是不为过的。关于软件工程方面的书籍和文档资料非常之多,这里就不累赘了。公司实施好的 软件过程需要下面每一个员工的好好配合,这必然要求每个员工对软件工程的理 解不能是太肤浅。否则,公司实施诸如CMM之类的东西就很难有好的效果。我在这 里这样说的目的就只有一个,开发人员好好的理解软件工程对所在公司的产品质 量有很大的影响(肯定有人不同意我的看法,这是可以理解的,但你要明白,你要 给自己一个合理的解释)。对于个人,自我约束的实施某些软件工程的规则,比如PSP。这是很困难的,需要 你有非常好的自制力。目前我还没有看到有人这样做(这可能与我本来接触到的软 件开发人员就不太多有关),我刚刚步入程序员大军的队伍,对PSP仍然是一知半 解,今后要好好努力才是,如果能得到大侠的指点,那对于我再好不过了。 我最初认为会写出功能很牛程序的人就是大侠,就是高级程序员,心里特崇拜, 很是希望与之交流,恨不得自己也一步登天,化为大侠。慢慢的发现这是绝对不 可能的,到了现在,好好的省视一下自己,在开发的过程中,偶尔也能碰到一些 貌视难(在当时自己看来或在有人看来是这样)的问题,通过自己的学习努力,最 后解决了,心里很是高兴。但现在静下心来想想,我并没有成为什么大侠,更不 用说是什么高级程序员了,自己现在觉得是一个普通程序员,水平一般,但有一 点还是值得庆幸的,那就是我终于用一年半的时间明白了一些道理,一些如何做 一个好程序员的道理,一些如何让自己不断进步的道理(当然这些道理也是在变化 的)。 我想有不少程序员是从program fan开始的,我也是这样,虽然自己是学计算机出 身,但真正让我喜欢这个职业,却是因为自己对写程序的喜欢。也许有人觉得这 作为我选择程序员职业的原因太单薄,但我认为这是最重要的,你从事一个职业 ,首先你要喜欢它,这样你才可能为之呕心沥血,说的有点夸张,但事实就是这 样。这正如一个人不会为一个自己不爱的人献身一样,你选择一个人的时候一定 要理智(这点做到好像有点困难哦),当你做出了选择,就一定要全身心投入。 说道现在,如何开始呢?一句话,了解平台很重要。不管你是如何走入程序员大 军的,你应该比较快的熟悉平台,我比较笨,差不多过了一年的时候,我才意识 到自己对平台是很无知的,才慢慢了解学习这方面的知识。我现在用的是MS Window平台,而且好像自己就熟悉它,没办法,当时觉得学c++可能比较有前途。 就这样自己稀里糊涂的写了一年程序。之后才发现,如果现在突然之间MS Window 不用了,改用Linux等,我是不是就傻眼了,完全的不知所措呢?于是自 己便觉得要反省一下,自己应该掌握一种学习的套路,即使你换了一个完全全新 的环境,我以前的知识一点用不上,我也会在相对较短的时间里让自己去适应, 更重要的是我会有一套自己的学习方法。我所说的了解平台,绝对不是你会使用操作这个平台而已,而是你要了解这个平 台的运行机制,了解你在此平台上写的程序是如何在这个平台上运行的,彼此是 如何交互的,平台提供了那些你可以使用的接口等等,太多东西了。如果你觉得 自己已经很了解某个平台,甚至能指出某些待改进之处(当然这些必须是禁得起验 证的,不能是信口雌黄),那么你就可以算是了解了这个平台。所以了解平台在很 大程度上是逐步的,可能会占用你5-6年的时间来达到这个目标(这是我相对于自 己的一个估计,你可以自己估计,因为我比较笨一点)。 深入理解一种语言。在某个平台上往往会有很多的开发语言,人的精力有限,你 不可能什么都学,我现在不敢乱说那个语言不好,那个语言很好,各种语言的产 生都是有其各自产生的环境与条件,它既然存在了,那么它就是合理的,至少在 一段时间内发挥了它的作用,实现了它产生的意义。我相信你可以根据自己的情 况和环境来选择自己入门的语言。事实证明很多人到了最后,已经超脱了各种语 言,能了解各种语言的精髓,利用其长。 让自己学会设计,让自己的设计更合理。学习软件设计模式,这个东西我接触不 久,对它本身没有发言权,但对其的褒奖网上到处都是,好好学吧,别人的经验 啊。 慢慢尝试着经历各种过程。一个人要想真正的做软件,如果认为学会了写代码就 完了的话,那就大错了。做软件涉及到的方面非常的广,你应该尝试着做各种工 作,比如参与项目规划,计划制定,需求分析,系统设计等。这对你今后的做软 件非常有好处,千万不要一味的埋头coding,还要多动脑筋想想。我做的这一模 块在整个软件中起到什么样的作用,整个软件的流程是怎样的等等一些问题。 养成总结,积累的习惯。“天才在于勤奋,智慧来源于积累。”我正在努力让自 己养成这样的好习惯。这可能不光用在做软件上,在做人的各个方面都是一样。 要想有更快捷的信息来源,资料,外语一定要好!谁叫现在好多先进的东西总是 老外先想出来的呢?多看看老外的东西,有时候甚至可以给你带来一些灵感,让 你抓住一丝商机。外语的好处我就不累赘了。 题外话,修身养性。这一点并不是专门针对写程序的人,可以对所有的人使用。 懂得修身养性,对人对己对工作均是受益匪浅的,这可是一位高人的指点。 开阔自己的视野,不断的摄取新的知识,最终让自己也可以预知行业的未来趋势 。

评论