bbs上写了下,直接z过来。在这之前,先提两篇文章
对于一个人的成长,因素大概有两个,个人和环境,从环境上来看se相对务实一些,做的项目可能多一些。个人的因素是最重要的,环境则是次要的,回过头来再看,开始发现se课程中也存在一些不足,当然相比较而言有一定的先进性,这类似于瘸子里拔将军下产生的一个结果。
简短的反思一下,可能跑题了,主要还是从技术方面稍微反思下。从现在来看,可能做的那些项目实际上深度是不够的,对计算机科学基础性原理性的学习不够。具体来说,算法,语言之类的作为基础,基础要打好,当然最基础的还是分析问题解决问题的能力,要真的在技术上有所深入,这些基础是不够的,还要在良好的基础上,选择一个较窄的方向,比如网络安全,数据库,os内核,然后深入进去(os 编译 网络 数据库 基本原理也可以看做基础,但更高阶的部分完全可以作为深入的一个方向)。而应用性的项目,在培养对系统的概念上有些显得不足,好处可能就是动手能力比没有多少动手的人强,但这也不是训练技术的一个最佳途径。
最近偶尔看到<<程序员的自我修养>>(书没看,所以不好评论)这本书的作者其中提到的一个经历比较吸引我。摘录出来:
“记者:甲子,你好!能否向读者介绍你是如何对操作系统的底层机制和运行原理产生兴趣的?
俞甲子:很大程度上是因为性格决定的吧,因为我是一个喜欢对技术问题寻根究底的人,不满足于仅仅了解一个技术的表面,而是希望能通过层层深入地挖掘,找出它背后最关键最核心的机理。我相信很多计算机技术都是相通的,它们的核心思想相对是稳定不变的。经常听很多人谈起,IT技术日新月异,其实真正核心的东西数十年都没怎么变化,变化的仅仅是它们外在的表现,大体也是换汤不换药吧。
为了了解操作系统内核及装载、链接等这些关键的技术,我曾经自己从头写了一个很小的内核、装载器及一个简单的运行库,它们组成了一个可以完整运行在PC上的支持多进程、多线程的操作系统环境,并且支持虚拟存储、简单的文件系统、网络、鼠标键盘等,前后加起来花了两年多时间,大约有数万行代码,编译器和链接器使用的是GCC和LD。当然,如果继续写下去,可以让它的功能变得更加完整,但是我停止了对它的继续维护,因为我认为通过这个雏形系统,我已经了解了其背后的机理,如果再继续写下去更多的只是重复性的工作,因为现在已经有了很多很优秀的内核、装载和链接的相关软件和标准。
虽然我在这个系统上花费了很多时间和精力,却没有获得什么直接的收益,也没有让我跟上最新的技术潮流,但是它带给我的间接收获却是无法言表的,它使我在后来学习其他技术的时候能够很快地触类旁通、自下而上地去理解整个系统,往往能够理解得更加深刻更加透彻。”
看完之后我在想,其实重要的就是这种能够深入研究问题,思考问题的意识,如果这样一步一步坐下来,那将是对个人的一个质的提升。
其实很多技术专家,都是经过几年的钻研才逐渐成熟起来。所以个人的因素是最重要的,如果能够花上几年的时间去研究某个领域,最后成为专家不是问题。而开始钻研的时间越早越好,如果se的同学们,可以尽早的认识到这点,从大一就能够深入下去,以后前途是光明的。经历了几年的时间,才慢慢地认识到一些问题,走过了很多道路,有些感慨以往没有这样的意识。