心态决定命运。
我非常十分及其确定肯定赞同这个观点,无论搞技术还是为人处事,想做的好必需从心态开始。
说实在的现在回想自己的成长算是比较清晰,刚从大学出来或多或少有点留恋。

征文的主题是成长过程,指的应该就是技术层面。我认为学习与研究技术最重要的因素是心态,所以接下来讲的都不是技术上的东西,而且我现在所拥有的技术是别人几百年前早就已经会的,没什么好说的,我可以讲的是如何对空白的自己添加绚丽的色彩。成长的过程中有很多事是无法忘怀的,挑了些典型的事和大家分享,绚丽的色彩并不是一蹴而就,而是随着这些事逐渐形成的。很多都是废话,对大家没什么帮助,喜欢看的当故事看.常常都是"老王卖瓜,自卖自夸",今天难得我老北卖一次瓜,各位千万不要扔转!

很多观点我没有写的很明确,而是用了一段实例或者很多文字来说明,一则是因为时间仓促无暇细细琢磨;二来不想把话说的太绝对免的误人子弟,因为每个人的情况都不同;三是想给大家一些自己理解的空间,这样或许能够体会更深.

说的比较乱,断断续续,想到哪写到哪.但都是最真实的想法,如果能够让一些朋友少走些弯路,那么本文也就算没白写.
//////////////////////////////////////////////////////////////////////////////////////////////

高中的电脑课总是游戏的时间,玩的最多是疯狂摩托,能打能踢算是比较刺激。后来一帮子人经常偷跑出去到网吧通宵,玩红色警戒,经常一挑7疯狂电脑,很是过瘾,渐渐觉得没挑战。偶尔想看电影,不知道哪里能看,朋友告诉我在地址栏输入"www.google.com",然后输入"在线电影",我就觉得很神奇,脑子里的疑问很大“这样都行?”

高中的生活比较单调,除了些微的时间能够玩就是题海。记得比较清晰的一件事,高三下半学期6次模拟考,1、3、5次都是第一,2、4、6都是十几名,真把我郁闷死了,我对这一切都腻了,争来争去有毛意义。用点小力就第一,真没挑战。后来老师找我谈话,问我这段时间在干什么有什么想法,我说人生没目标,老师告诉我“什么叫没有目标?考重点大学就是你的目标?……”。尽管我有无数个“然后”想问,但我沉默,接着点点头表示暂时接受,毕竟高考还是要的。

对于我来说,很需要方向感,没有了方向,做什么事都没有意义。
说到这又想起一件事,高中时美术课我是基本不去上的,有一次逃课被老师抓了,训了挺长时间的,其他的记不得了,其中一句我怎么都忘不了,“你做人怎么这么功利性?喜欢的课就学的很好,不喜欢的课就不学?……”,当时把我气得一楞楞的,一则因为他是老师二来自己理亏就忍了。他爷爷的,这也叫功利性,他没功利性怎么不去扫大街,怎么不去扫WC?此刻起我也就明白了,做人做事只要对得起天地良心就行,别人怎么说都是不重要的。

到了大学,4年的生活让我有了彻底的改变。没有影视里的惊险刺激,也没有娱乐世界的轻松自在,但我从心底里感到舒畅充实。做真实的自己,展现不同层面的自己,尝试不同的经历,经受不同的考验。有些人认为我很强,居然能让校长请吃饭;有些人认为我很弱,居然开卷考也会挂;有些人认为我很成熟,衣着成熟与处事稳重且经常给他们比较可靠的建议;有些人认为比较幼稚,经常问一些无聊的问题惹来阵阵狂笑。方方面面的展现自己,这才是最真实的。

大学生活的绝大部分时间由自己安排。大一时由于不能带电脑,常去网吧聊天、电影、游戏,几乎天天都是这样的生活,不知道学校外的生活会是什么样子,没有目标,混日子。这一年接触了西方哲学,老师精彩的演讲深深地吸引了我,逐渐会去考虑人生观、世界观、价值观。定位自己很重要,自己性格如何,好静好动,喜欢说还是喜欢做。

这期间有一件比较有意思的事。就是看小说《大唐双龙传》,整本书很长,大概看了一个月左右,每天几乎都在10个小时左右,刚好是期末考试期间。非常佩服黄易的水平,能够描绘的这么细致生动的虚拟世界。看完这本书,从此以后再也不看其他武侠小说了。

我们班有个同学以前学过程序设计,当时班里算是比较牛了,偶尔听他讲起黑客技术,总觉得悬乎,当时我的感觉是“打死我都不做程序员”。

那时为了实现随机发牌的小程序,到处找人问,后来看到有人用rand/srand,佩服的不得了。

接触到看雪论坛大概已经是04年了,偶然在网上看到看雪的简介,说是坐在电脑前面看着窗外的雪所以取名“看雪”,心想这家伙还挺有意境的。不过当时也没在意,因为当时根本就不知道什么是破解什么是调试。

接触多了,逐渐对破解产生了兴趣,那年暑假就开始玩起了破解。买了本《加密与解密(二)》,颠来倒去地看了4遍,还是看不太懂。当时为了能够看懂反汇编代码,花了将近一个星期的时间把汇遍基本语法搞清楚,当时由于没有基础连个基本的程序都写不好,因而对自己的要求比较低,能看懂能分析就行。找了个简单的练练手,分析了几天,把算法都分析清楚了,于是想写个注册机,这时才意识到自己的基础不行。一边写一边翻书,短短的几十行代码写了4天,不断写,不断改,不断删,最终成功,虽然晕头转向地,但很有成就感。这也是我第一次确定目标,经过努力,最后成功。虽然这个目标很小,意义却是不小,感觉比较过瘾。

暑假很快就在自娱自乐中过去了,升级为大二了。

有一天,室友吃饭回来带来一张纸,说是从地上捡来的,关于学校举行程序设计竞赛的通知。大家一冲动都去凑热闹报名了,后来不小心让我拿了一等奖,吓死了一堆人,他们都说我强,其实我心理明白他们肯定在想这家伙走狗屎运。他们好多人C/C++的成绩都是90多,而我70左右。当时自己也觉得惊讶,我真有这个水平吗?还是我运气好?那些大三大四的学长是吃蔬的?

从此我走上了ACM的路。这是我的一个人生转折点,也是起点。以后就进入了学校的实验基地,说白了就是机房,不过设备真是不错,20台电脑是全新液晶,以后这里就成了我的窝,再后来就成我的天下了:)

说实在的,在没有基础的情况下去学习破解确实是事倍功半,好不容易学了几招,过阵子又忘了,拿起放下来回折腾好几下,没什么耐心了,琢磨着等学好基础再来。

接近大半年的程序设计训练,让我对程序设计非常熟悉了,这东西完全靠多练,没什么捷径。就像学习打字一样,如果对键盘布局不熟悉,永远只能看着键盘打字,而我从一开始就盲打,尽管很慢,练习多了,要打什么字就根本不用想,手指就过去了,写程序也是如此。

经常有朋友问我,你是怎么学习程序设计的,有什么方法?
通常我都会反问:你有没有耐心把课本后的几百的基础题都做一遍?
无论写程序、开发软件都是一样,如果在开始的时候没有这个经历,写出来的代码风格、质量都比较低,事实上现在很多已经在工作的程序员都有这样的毛病。

这个阶段不应该浮躁也不能浮躁。过了这个阶段就如到达另外一个层次,因为此时已经具有了坚实的基础,从ACM方面来说,可以进入更高的算法设计与分析阶段,从软件开发角度来说,可以用程序来搭建软件了。

后来MFC/WIN32基本的知识都是比较轻松的搞定,当时觉得用WIN32写软件非常有劲,看不起用MFC的,觉得用MFC开发不需要什么能力。不过后来逐渐发现,每次用WIN32这东西比较麻烦,由于对那些控件不熟悉,怎么用,参数怎么设置都挺废时间的,常常搞的我忘记目标是做软件。其实每个人的喜好都是不同的,很多人或许会一点一点地把这些问题搞定,在我看来,这些都是弯路。我们在出发的时候都是有目标的,然而一旦遇上什么就会停滞走弯路,虽然弯路不可避免,但我们总是可以从比较快捷的方式去达到目标,不应该把所有的弯路走遍,最后终于蹒跚地到了终点说“爽”。因为把弯路走遍了,觉得很过瘾。如果有更快的方式去实现我是不会犹豫的。

到了大三,买了本《Windows核心编程》,开始系统的学习Windows操作系统原理。看书我总喜欢先浏览式的看一遍,这花不了几天的时间,又足以对整本书的结构和内容有一定的了解,接下来就是仔细的看,光看不行,还学校结合写,练了一段时间。大概半年之后,承蒙看雪老大看重荣任编程版块斑竹,开设了“Windows系统程序设计”专题,介绍一些基本东西,并设计相应的实例。

大三下半学期,让我有了次失败的经历。参加省赛没拿金牌,原本以为轻松地,后来被一个恶心小问题搞死。不过去之前确实也感觉状态不太好,这一年我太忙了,基本没有时间训练,负责协会的事务、人才的选拔、又要负责参赛的事。不过也多亏这次失败让我和队友再次反思,能够在接下来的地区赛有所发挥。

大四时有一次我去交作业,是个小软件,还有份实验报告,老师一看实验报告就说写上名字,然后我就写上了,他一看说你就是***,在***赛得**奖的吧,我说“是的,这个软件要不要检查下……”,不等我说完就说不用检查了,后来发现我的平时成绩是唯一一个满分的。当时还真是乐滋滋的,自己的名字还值几个钱。

做毕业设计的时候,好多朋友都让我帮忙做,基本都被我拒绝了,说实在的,最讨厌自己懒的做却来让我做这种情况,如果自己有心,有什么问题需要帮忙,那么我从不拒绝。刚好有个美女,向我请教,我就答应帮她。课题是聚类算法演示器,原本以为这些算法挺难的,后来一看才不是那么回事,对于ACM人员来说都是小CASE,看了半个小时,几个算法都基本清楚了,讲解算法原理,讲解程序设计思路,演示软件的结构,讲了好几天,看她似懂非懂的,后来我就干脆直接写了。没办法,谁让人家是美女呢!

在毕业前一段时间,有位女生问我:大学期间其他人梦寐以求的东西你都已经得到,你接下来的目标是什么呢?当时把我问的一楞楞的,其实这些都不是我真正想要的。虽然有点小成绩,但所有的这些都是顺着形式而走,无论是竞赛也好,任职也罢从没有刻意去追求过。

事实上现在回头去看以前的很多问题,这能叫问题吗?以前需要搞个把月的东西,现在还不是几天甚至几小时的事。我们搞技术的通常有个毛病,喜欢自己去钻研,其实很多东西别人已经研究过了,可以借鉴。但非要自己搞,一点一滴,成就感有了,意义确不大。在我看来要学习某种技术,首先要获取尽量多的资料,要尽快登上前人的肩膀,才能拓宽眼界。

学习技术有很多阶段,而其中的某些阶段是需要极大的耐心。某些时候我们常常会感觉到自己的能力已经到达一个很难上升的境地,这就说明到了瓶颈,表明需要更多的耐心。而一旦过了这段时间,就将是另一翻境地。

对于我来说兴趣是大概可以说是搞技术的唯一动力,如果说要对哪个东西不感兴趣基本都不会去碰。然而兴趣有时候是盲目的,例如在刚开始的时候总会对黑客、外挂、破解之类感兴趣,不能仅仅停留的表面的操作是否成功,而是需要深入的学习理解内部原理,然而在学习这些最根本的理论性的东西时,或多或少会有点枯燥,当有这种心态时需要尽力克服。

现在的计算机领域实在太广,网络上的资料各式各样,我们往往会被这些八样的东西给吸引眼球,然后投入大量的时间去“学习”“研究”,久而久之,知识面看起来挺广,事实上没有一样是精的。这就是网络的负面作用,让人容易迷失。因而我们必须学会经常的定位自己,想想自己的目标是学习哪个方面,看看自己现在所做的跟预期的目标是否背道而驰。如果实在对其他方向感兴趣,可以把其列为下一个学习目标。这一个个目标就是我们学习的脚印。当然目标也分轻重,比如某个方向我要把它完全搞懂那么就是10成,如果是不重要的方向只是为了满足下好奇,那么学个5成玩玩即可。

学习贵在精而不在多。在大三的时候我负责学生社团软件协会的时候,常常会有朋友介绍一些网站网页建设项目让我做。由于我对网站的感觉是没技术含量又比较烦琐,比较讨厌,就会介绍下面的人员去做。ACM集训队老师曾跟我说:现在只需要精通C就可以了,其他的什么ASP不会也没什么关系,不要以为这样很没面子。那一样的几十个项目我都没参与,到期末的时候学生会需要搞个投票系统,那时找不到人做,只好自己动手,两天时间做了个有模有样的ASP站点。其实这里我想说明的是,从这个角度来说学校的氛围和网络有点类似都具有导向作用,只有明确自己的目标才能少走弯路。

前段时间有个网友问我如果才能学会编程?其实这个问题比较广。他也是刚毕业,学过C/C++的基础,准备写程序的时候总是思路很多,然而一打开IDE就成了挤牙膏,半天写不出几行代码,问题出在哪里?相信很多刚起步的朋友都会面临这样的情况。其实很简单,就是对程序本身不熟悉,不熟悉语法。而中这种不熟悉已经严重到能够阻碍思路的地步。写着写着就需要费力的去想这句语法对不对,下一 句怎么写,这样的写程序有思路才怪。我给他的建议是用两个星期的时间去做C教程的课后习题,写个百来个小程序练练手。然后我又跟他说,如果有决心的话,过了这两个星期,我可以让你在1、2天之内MFC入门。不过可惜的是后来没音训了。。

在毕业设计前我对自己的代码量进行了粗糙的统计,大概两年半的时间6/7W行,事实上在程序设计领域,代码量的多少虽不绝对的标志,但或多或少能够看出点什么。跟很多大牛相比,这个数字做零头还不够,但在本科阶段学生朋友中应该还是有一定分量的。

以前我总是很喜欢买书,买了一堆书,放一边,日子久了,看着挺爽的,似乎博览群书。后来除了绝对经典的如《Windows核心编程》《深入解析Windows操作系统》等,其他的一概不买,除非哪天口袋里钱多的放不下了再说。很多朋友也跟我聊过,说自己看了许多书,我听着都吓啥了,佩服的5体投地。但有个通病,光看不练。光看不练假把势。。。。。。。

在学校常有听说某公司需要某类技术的人才,然后就有一些人蜂拥过去,我不喜欢这个样子。货物公司需要的是骡,征战沙场需要的是马。现实社会中各类人才都是需要的,我们所要做的只需要让自己成为千里马,我们的伯乐总会出现的,总有能让我们展示自己的舞台。又何必去盲目追随瞬息万变的社会,在学校里这需要按照自己的轨迹成长即可。