本来是要好好总结一下自己做程序多年的得失,不料,最近发生一些事,实在抽不出时间,今天终于挤出点,开了个头。暂且起个名,叫程序物语(我想,自然界的东西大多数是有灵性的,程序可能也是,你用心感受它,了解它,它也会善待你,回报你。物语的由来, 大意如此 。) ,这个系列就做为对初学程序者的一点建议吧。
每年的某个阶段,若干的莘莘学子们踌躇满志地从他们的象牙塔里钻出来,不管是情愿还是不情愿,总之,他们毕业了。毕业了按理就要工作呀,当然创业也可 以。只是需要具备一定的条件(后面将会提到此类情况。邀月注)。这里想提出的是针对那些将要从事程序开发/研发的朋友,包括各行,但仅限于IT相关的业, 可以笼统的称为程序员吧。
程序员到底应该做什么,我想这个问题很难统一。那我们不妨先来讨论一下:程序员必须做什么?换句话说,你必须做什么才能算得上程序员?以下是我参考了一些做多年程序的朋友和我个人的一点经验总结:
首先是热爱 。没有对程序的热爱,对程序员的热爱,对生活的热爱,是做不好程序员的。无论是出于谋生还是别的目的,既然做这个,就得投入你的热情。即便是所谓的黑客,首先必须是对那个行业有一种热爱,或是狂热。当然我们不能强求每个人都像 Jeffrey Zhao 那样执着,因为能将工作与自己的爱好良好结合起来的毕竟还是太少了啊,但是基本的热爱要有。别人怎么议论无须理会,像什么女朋友说你“大学四年出来就是个 做网站的”等等之类,让她说去吧,你得对自己有个起码的尊重,对自己从事的东西有持久的热情。你可以使用类似的回复:“盖茨辛苦几十年,就只会做窗户”、 “隆平辛苦一辈子,就只会种稻子”来平衡一下心态。
其次是严谨 。也就是说,这里不应该有太多的水分,像《手机》里严守一说的“有一说一”,来不得太多的虚伪和面子。知之为知之,不知为不知,有什么呀?这个Jeffrey Zhao身上体现的很明显,看他为一个观点,一个技术细节的较真劲儿,如果我是个女的,我就嫁她,我是说,如果啊!!因为想像他对生活、对婚姻应该也是比较认真的。这个严谨,体现了个人的基本素质。
类似的很多。 我 的一位老师,浙大的颜一谦副教授(现在已经退休,为什么没有教授是有另外的原因,在此略过。)在给我们上《自然辩证法》的时候,我就听得很认真。虽然有些 观点在我看来有点点偏激,但我抱定李开复老师的态度:我不同意你,但我支持你!至少我从中学取了很多辩证的观点,像库恩缺失等,很多人可能都不知道。后来,考了67分,我很高兴,虽然有人考80多分,但我是自己掌握,变成自己的知识。
还有一位老师,卢向南教授讲过一件事让我记忆犹新。她有一 次到欧洲去学术交流,看到国外同行做演示在用windows 2000,就很好奇,问他们为什么不用window xp?当时是2005-2006年,正是xp最鼎盛的时期。结果回答出乎意料:我们买不起xp,再说做演示用windows 2000够了。卢老师当时说了句:我们学生全部都用xp。很多老外用羡慕的目光看着卢老师:你们中国人真有钱啊!这种严谨的作风,什么事情做不好呢?国内 的学术界看似数量繁荣,其实外强中干,其实跟我们自己的浮躁与短视不无关系。至于那些拿着破解序列号赚吆喝的,我就烎得不知道说什么好了。
扯远点,说到基本素质,我今天早上班路上,看到一老外,大概五十岁的样子。在路边的自行车经过身边时,他自觉往后退了一步:虽然那车离他还很远。看到这个,我走上前去,说了句:thank you!他笑笑,没说什么。我也能猜提出他心理可能在想什么。
好了,回过头来看,第三是学习 。学习什么?如何学习?
学习什么,这个比较难确定,因为工作的原因,可能什么都学,也可能学跟你兴趣毫不相干的东东。
也就是说,遇到什么学什么。像我的路线:C-asp-Vb-SQL(2000/2005/2008)-.net(1.0/1.1/2.0/3/0 /3.5)-java-Eclipse(/netBeans/Tomcat/MySql/SSH)-Rose-PowerDesigner和 photoshop-flash-3dmax-html/js走下来,估计大多数人得走火入魔不可。我也不是开始就知道要学这些东东的,后来由于要用,而又没人能顶上,所以硬着头皮上。结果就是现在这样,大多数知道一些概念和基本操作,只有一两个方面能够持久有兴趣停留并研究。这是一个沉痛的教训!希望刚 开始的朋友汲取教训。
另外一种方式,可能搞一两方面深入下去。这样做是有条件的。就是得生活有保障,能让你有时间深入下去,不至于有另一半或 父母来逼你买房结婚等等。像我知道吉日兄做权限系统/工作流也付出了相当的人力和财力,这是外人无法体会的。但我以为,只要有价值,就要坚持自己的理念, 当然,有时候可以做稍微的变通。
至于如何学,邀月这里提供两种大概的思路:
针对第一种,用到什么学什么,就应该到相应的技术社 区转转,要找对人和地方。不是为了顶帖,顶帖是世界上最无聊的事情,要真实的发表自己的看法和见解,不要怕打击,大不了烎呀·!who 怕 who呀!不过,真正的技术牛人多数是很耐心的,这点我感同身受啊。慢慢地,可以回答一些别人的问题。尽量自己动手试,不要copy来paste去。积累下来,你自然会有提高。
第二种,建议做一两个开源系统,坚持做下去。每隔一段时间,组织用户来帮你测试。可能的话,慢慢商业化。当然,这过程中可能会有志同道合的朋友一起合作。那是最理想的方式。最坏的结局是时势变了,你一无所获地离开。其实也不是一无所获,只是表面上和外人看来如此。所以开始之前,先不妨做些调查研究。
学习什么并无优劣之分,其实在我看来专家有两大类型:什么都知道一点并逐渐深入,或者在某些方面非常深入。这两种类型在某个阶段会融合。涓涓细流也好,滔滔大河也罢,最终都会汇成蔚蔚大江!像金庸先生笔下的“重剑无锋,大巧不工”的境界。
好了,开始工作前的功课先做到这里,欢迎抛砖!
所有程序物语系列文章:
http://blog.csdn.net/downmoon/category/637548.aspx
助人等于自助! 3w@live.cn