程序员之路是一行一行打出来的

张国斌 提交于 周日, 09/07/2008

有一句话我一直记得很深,“当人深处迷茫之中时早已不再迷茫”。很绕很矛盾的话,也可能有人听到后会马上跳脚喊,我一直迷茫怎么还是迷茫呢?呵呵。静一下想一下再喊。 大家都这么大了,路该怎么走,你知道么?作为程序员,路该怎么走,你知道么?

05年入学,对IT一无所知,对程序一无所知,甚至对自己也是一无所知。路走到了今天,我感触确实不少,写点东西以飨来者。

科班出身的我们,从开始就按部就班的学着操作系统,数据结构,组成原理;从c到c++,汇编,java这些又是标准课程。面对纷繁复杂的IT界,你每天记住五个名词或者缩写,到今天我敢说你依旧很多东西不知道。难怪不知道怎么走。我们不是选择太少而是选择太多。我们得到的信息不是太少而是太多。

不知道现在还有没有人疑惑是该学c++还是学java;是该选择.NET平台还是java平台;是该学通信还是学web;是好好编程还是学好软件工程;是学python还是ruby;是学javaFX还是WPF;是专注windows开发还是去linux;是跟着大家一起SOA还是OO。。。如果这个单子继续列下去,就像死循环一样吧,无终无止直到崩溃。

但单子上的每一个选择又都是那么切身的烦恼着我们。站着说话不腰疼的人无法理解切身的痛。我是从大二下学期开始学习的,是突然之间对作为程序员感了兴趣,虽然晚了点,但迟到总比不到强。当时我就很迷茫,也不知道该学什么,当时网上c++还是比较火的,虽然有人说它已经死去,被什么什么替代,但总有很多人站出来力争并有些道理。于是热血的我斥资买了大量c++经典,基本能叫上名来的经典我都买了吧,五本以上。当时看着书架上一片c++,心情澎湃啊,谁说c++会死掉,我跟谁玩命。可最后呢,呵呵,不好意思,没坚持下去,除了effective c++看了一半左右,其他有的翻翻有的连动都没有,最后把所有书半卖半送给同学了。

然后马上转到.NET平台,开始学习C#,至今都不知道为什么,也许打了鸡血,又是心潮澎湃吧。可这次基本算是坚持下去了。一如既往,书架上一片.NET,c#,图书馆的相关书籍也是不知被我借了多少本。我觉得有一点幸运的是我看的第一本.NET书籍是understanding .NET的中文译本《.NET大局观》。看了以后确实有了一个不错的大局观,虽然当时有不少地方看不懂,但足够了。我知道.NET是平台,C#什么都不是。如果不理解.NET,学c#没用。以至后来我跟同学说“java不是一种语言,c#不能独存”,至今想想都很有道理。

于是一路沿着程序员的路走了下去,开始去理解OO,间断的编程序,学习web,了解SOA,看《程序员》杂志,总和几个哥们高谈阔论技术。其实我知道自己水平很低,但是我知道我在干什么,而且还有点兴趣。足够啦。

那么再回到题目,路该怎么走。我是那种不爱听别人话的人,我不同场合跟人说过,别人说话都是放屁,如果你觉得香就去听,不喜欢就算了,喜欢屁的人还是不多的。我话虽然说得很难听,但tell the truth,我就是喜欢屁的那种人,我当面抵触背地里就会想人家说得到底对不对,我自己哪里有问题。表里不一啊。

既然是程序员的感悟,再回头说点技术的路怎么走。技术大牛们总是喧嚣着这鼓吹着那,什么技术的发展总是朝着更快更简单(很多人说,孟岩也说过,他是个有争议的牛人)想想还真对,谁不喜欢简单点快点啊。但是从一个技术跳变到另一个技术为什么简单了为什么快了。你知道么?

很多人都学过c++,先不管编过多少代码。C++中的多重继承大家印象深刻吧,在后来的高级语言中都把这个特性砍掉了。为什么?我不知道。为什么不知道,因为我没用过多重继承,它没有给我带来过巨大的麻烦让我困惑不已。如果硬让我说多重继承带来的麻烦就是我不知道为什么它被砍掉了。蛮有道理蛮有现实意味的东西。这一点我也问过SY,因为我知道他编过不少c++的程序,而且项目还不太小。他说他也没被多重继承烦恼过,也无从说起它的坏来。

再说一个更有趣的,万恶之源的goto。市面上我们接触的语言大多都有goto,但是所有技术大牛都说不要用。那是万恶之源啊。我用过,在汇编里,因为据我的水平汇编不用goto没办法。可是我的汇编程序小的可怜,根本不足以暴露goto的恶来,所以至今我也不恨它。

再说一下重量级和轻量级,太流行的两个词汇啦,或者说轻量级更流行吧。为什么,因为它轻吧。哈哈。俗话说,船小怕风浪,船大难掉头。不大不小又怕风浪有难掉头。所以不要一直不变的以为轻量级一定是发展方向。想要迎风破浪,没有大船也不行。

大家看懂我要说什么了吧。所有的技术变革都是有原因的,即使厂商们再鼓吹,都是要真的有那么回事,他们才能煞有介事。可是我们为什么会对技术变革感到迷茫,对选择感到困惑,因为我们不了解前因后果,我们没有受到上一种技术的煎熬,我们没有感受到后一种技术带来的便捷。那怎么可能不困惑呢。。。

别人的经历再丰富再有道理,但那不是你的,你依旧不会真的明了其中的道理。但话说话来,我还是不会用多重继承的,我还是不会使用goto的,我还是会命名规范的。我还是会欣然接受技术变革的。断代史的特点就是这样。

那么你现在还会为选择了python的同时ruby火了而愤怒么?还会为了选择了.NET而J2EE异常流行感到遗憾么?

其实路就在脚下,怎么走看你自己,结果也只有你自己知道。如鱼饮水啊。去经历那些困难和麻烦,才会知道简单快捷的好处。去经历迷惑才能体味清醒的快乐。还要去看技术大牛们的吹嘘和感叹。还是要自己一行一行的敲打垃圾程序。给你十年。够不够?

程序员的路是一行一行打出来的。

本文摘自博客园 作者:YITIAN Studio [