之所以写这封信,原因之一是因为你给我<java程序员面试的悖论 >的回复.说实话,看你说话的口气,我就知道应该是一个对自己的能力有点信心的人。虽然我比你大,不过我也是刚刚毕业没有多久,很多时候我的想法也倾向于在校学生。
想当初在学校的时候,出于对C语言的喜爱,没事就编一个两个小程序。对一些算法也曾经花时间去研究,现在还记得与同学为了研究“九宫图”,“十六宫图”“二十五宫图”等的普适算法花了两天时间,终于找出了这类方阵的规律,那种感觉真的是难以形容。不过我在大二的时候也因为长时间熬夜,经常吃泡面,又不锻炼身体,以至于最后居然出现失眠,呕吐,吃不下饭等症状。虽然没有生大病,不过却让我对将来是否继续干这一行产生了疑问。或者说对是否做编码产生疑问。之后的一年时间里,我开始尝试其他的东西,比如说汇编(学了三种),还玩了一段时间C51。一开始的想法是做底层的人少,工资也高。后来大三了,由于毕业的压力,不得不花时间去过四级 。也就是在那段时间(三个月左右)想法又有了新的改变,想着如果向上走也不错,做一个系统设计师什么的。于是趁着暑假有空,花点时间把以前的专业课复习了一下,十月份考了个高程证。当时(03年)几乎半年的时间里我都没有搞过任何编码的事情。大概就是这样才从编码的狂热中超脱出来——以前每月都会搞点什么。程序员的将来不能只是编码,如果你还执著简单的编码,执着与对最高执行效率,最小空间开销,最终只能做个“好学生”。真正开发的时候遇到的算法并不多,你可以与你可以联系到的,已经工作的朋友联系,询问他们遇到过什么复杂算法吗。现在我是做java方面的工作,在java方面只有复杂的架构,复杂的信息传递,控制,而这些都是必须在系统设计之初就得考虑到的,所以做系统设计的人都要求三年以上工作经验,而我这种自以为是的小兵只能去做些消息处理(session beans)数据库操作(Entity beans)之类的“简单操作”。我也不怕实话和你说,这些“简单工作”也是我好不容易争取来的——包括流露出辞职的打算。一个新人刚刚开始的时候只能做简单的工作,哪怕你认为自己有多了不起。能够把简单的工作做好就已经很不错了。任何一个“大项目”都是由很多的简单操作组合起来而成的。
之所以劝你不要再执着与算法,主要是以你现在的情况来看,再研究算法有点得不偿失了,语言方面你已经干的不错,可是很明显的是,你的基础极差。且不说操作系统,就数据结构之类的东西你都没有好好的学习过,试问将来你打算一辈子做“应用层”的开发吗?你有想过向系统底层开发前进吗?你有想过将来做系统设计师,或者项目经理吗?我不打算把自己的想法强加给你,不过请原谅,我太年轻,不知道怎么委婉的劝人。不过我也不想一个有前途的人浪费大好光阴在算法上,当你掌握了更多的东西的时候,你会发现还有很多东西要学。我走的“广”这一条路,不一定对,不过我一直在努力。你可能会说这样一辈子都得花时间去研究“新技术”,都在追逐。我只能说一开始时可能是这样,不过等你达到一定程度之后就不会了。不同层次的人看到不一样的东西,我能够感觉到,以现在的进度,30岁以前我就不必“追”它了。不过考虑随着年纪的增加,学习的能力也有下降的可能,但是30岁左右我所掌握的东西应该足够应付绝大部分设计开发工作。
20到30岁是一个人精力与创造力都处于高峰的时间段,不要让你的最好的青春去做一些低效率的事情,算法问题只能拿来“练脑”,积攒足够的知识,经验,为将来的发展打好底子才是正途。
说了这么多也不知道对你有没有帮助,又或者由于我“不正确的”说法,让你感到厌恶,那么只好说对不起了,请原谅我,我的心理年龄可能比你还小,呵呵!
看完了,大家不妨说说,这个年龄段在技术上应该着重在技术"深度",还是"广度"?