第一篇博文
这是我的第一篇博文。写点什么呢?写写自己是怎么成为程序员的吧。
大四的那一年,我保送了研究生。因为没有考研的压力了,我也就有了一点时间可以自由支配。当时去了一家单位实习,发现那里的同事都是做Windows开发。于是我就在网上查了一下,发现大家都推荐一本关于Win32编程的书,没错,就是Petzold的《Programming Windows》。于是我也就去买了一本来看。这一看,出事了:我喜欢上编程了!
看完了Petzold的书,基本上Win32 GUI编程我知道是怎么回事了。之后又买了Prosise的《MFC Windows程序设计》来看,对MFC也有了一个基本的认识。之后,我又去买Ritcher的《Windows核心编程》来看。不过,这回卡壳了,因为里面许多OS的概念我根本不明白,所以我啃不下这本书了。
是的,因为我的专业不是CS,我是学光电的,而我研究生的方向,是数字图像处理。
但是这个时候,我已经对编程痴迷上了。所以我有了一个想法,我要用研究生的三年时间,把计算机系最重要的几门课学一遍,这包括算法和数据结构,计算机体系结构,计算机网络,还有一门编程语言。
所以,我开始了跟自己打仗的三年,一方面是完成正常的研究生学业和老板的任务,另一方面则是跟随自己内心对编程的喜爱去给自己充电。我觉得很幸运的是,因为我完全是出于自己的喜爱在学习编程,所以驱动力方面不存在问题,每天即使时间再少也要拿出时间来看CS方面的书。另一方面,因为我是靠自学,所以在选择教材上面我有了很大的自由,我给自己设定了很高的标准,就是只选最顶尖学府的最好的原版教材,所以那段时间,我让自己看了很多书,为后面自己选择程序员这个职业打下了基础。我现在都感谢当时看过的那些书,它们是:《深入理解计算机系统》,《C语言的科学与艺术》,《C程序设计中的抽象思维》,《计算机网络:系统方法》,《算法导论》。
就在这些书的陪伴下,我走过了研一,研二。到了研三,我要找工作了。这个时候,其实我已经想好了,我想当一名真正的程序员。找工作的那一年,发生了两件事,对我而言意义特别重大。第一件事,是我得到了微软亚洲工程院的面试机会。这件事对我来说,是个不小的鼓励,因为它让我相信自己过去两年的努力没有白费,自己是可以跟其他学习了CS 4年甚至7年的同学一起来同场竞技了。第二件事,是我买到了McConnell的《代码大全》。我在研三的那一年里把这本书读了好几遍,发现自己的编程功力又增进了不少,同时也发现自己还是有许多不懂的地方,因为,我确实缺少在软件公司的项目经验。
毕业了之后,我来到了上海的一家公司,成为了一名软件工程师。因为公司使用的是C++和Linux,所以在公司的这两年里,我又看了不少C++和Linux方面的书,我想这也就是这家公司带给我的东西了,从对C++半知半懂,到能熟练地使用C++进行软件开发,从对Linux完全不懂,到慢慢适应Linux环境并了解Linux文化。我在这家公司的时候,阅读范围主要集中在C++和Linux上,看过的书包括《Accelerated C++》,《Effective C++》,《More Effective C++》,《Effective STL》,《APUE》,此外也学会了Linux shell编程。
不过,因为在这家公司工作得不是太开心,我有了跳槽的打算。当下定决心跳槽之后,我开始做了些准备。我学习了一些Java和SQL方面的知识。不过最终我来到了美国国家仪器,仍是使用C++编程。不过,就像McConnell所说的,学会用多种语言编程,是一个程序员开始走向专业的标志。我对此深以为然。
来到了新的环境,再加之有了之前的一些积累,我把自己的学习范围更加扩大了。一方面,是继续扩展自己的技术视野,学习了VBScript,Perl这样的脚本语言,也打算开始学习C#和.NET;另一方面,是开始培养自己对软件流程、软件团队的理解力,目前在学习《人件》和《程序开发心理学》;第三方面,则是开始思考怎样才能让自己的程序员道路走得更稳一些,所以也看一些程序员人文方面的东西,比如《程序员修炼之道》和《理解专业程序员》。
啰里啰嗦写了这么多,回过头看看这过去的这五年多,感觉自己还是快乐的,因为找到了自己喜欢做的事,所以尽管自己的基础不是太好,可是却也一直走到了现在。这个过程中我特别庆幸的是有许多顶级的程序员给了我莫大的帮助,是的,就是上面列出书名的书籍的作者们,因为有了这样好的导引,才使我的自修道路看似艰苦,实则少走许多弯路。所以,我的这个博客,我想主要也会是用来记录下我的阅读心得和笔记,以此向这些前辈致敬,并且希望也能帮助到跟我一样的程序员们。