工作两年(七)——进入工作的世界

我的一个越来越坚定的信念是,不想做管理,只想写写程序。但是,这并不意味着不需要去学编程以外的知识,Joel就推荐学微观经济学。我就曾经阅读过《竞争战略》一书,写下一些心得,作为“程序员,你的路好走吗?”系列的部分文章(开篇)。

这一次,我将将介绍另外两本书,它们帮助我更加清晰地意识到作为公司雇员,我是如何被管理的,以及如何保护自己,避免走弯路。

第一本叫作《组织行为学精要》(第七版),Stephen P. Robbins著,人民大学出版社。这是“双语教学丛书”中的一本,英文正文,并对部分难句做了中文翻译,特别适合我这种外行和初学者。正是从这本书上,我理解了公司某些现行政策的理论基础。然而,作为一本教科书,不可避免的具有一点学术化倾向,在某些公司根本就不适用。不过不要紧,我推荐的第二本书是《公司政治》,英文名为“The Ropes to Skip and The Ropes to know”,作者R. Richard Ritti和Steve Levy,中文版由中信出版社发行。我在读《组织行为学精要》时曾惊讶于老外如何能将一本教科书写得如此通俗易懂,但在读了《公司政治》后才明白,教科书终究是教科书,无法让人产生爱不释手的感觉。《公司政治》由许许多多个小故事组成,每个故事讲述一个道理或方法,教你如何识别、避让工作中不可避免要遇到的一些浅滩、暗礁,向你讲解一个个看似不可理解的事究竟是如何发生的。我已经在看第二遍了,第一次是在读《组织行为学精要》之前,那时只是觉得好玩,读完就忘了,而这一次,我有了更深的体会。

工作两年(六)——进入非C/C++语言的世界

大学时上过两门程序设计语言课,分别是C和C++,另外做项目用过Delphi,自学了点Pascal。后来读研的时候,正赶上C++学习热潮,跟着啃了几本名著,算是入了门,也是从那时开始,对程序设计着了迷。

工作之后,由于工作需要和个人兴趣,陆续接触了Perl、Emacs Lisp,还学了Shell编程以及一些标记语言如HTML和XML,每样都沾一点,但都学得不精,可以说这两年主要是一个开阔视野的过程。开始学HTML是为了写文档,因为不想用Word。后来还接触了一点CSS知识,才发觉网页设计也有很多变化和技巧,于是便试着美化我的blog。学Emacs Lisp是为了更好地使用、定制、甚至扩展Emacs,在05年春节利用假期时间把Introduction to Emacs Lisp和The Emacs Lisp Reference Manual通读了一遍,获得了一些感性认识,这些知识对于我后来深入学习Emacs很有帮助,虽然现在还无法做到用它来写程序,但由于能看懂一些,通过阅读代码,我就能掌握一些帮助里没有的知识。Dynamic scope的概念也是这时候碰到的,对我后面学Perl也起到了一定的作用。

学习Perl和XML则是为了做测试,由于公司QA人手不够,我就接手了部分测试工作,主要是开发测试环境,使用的语言就是Perl。想把Perl学精还是很有难度的,但上手却比较快,像Learning Perl讲授的知识有限,但也足够做些事情了。然而我感觉,越是上手快的语言越容易写出垃圾程序,因为很容易被表面现象所迷惑,不肯深入钻研这门语言的精髓。我认为,Perl的字符串处理、正则表达式和符号系统三个方面非常重要,Mastering Regular Expressions是讲正则表达式最好的一本书,到目前为止无出其右者,这在百花齐放的程序设计领域里显得很另类;而要深入理解Perl的符号系统,一定离不开Advanced Perl Programming,我还从这本书上学会了如何写Perl Module。学Perl不能光是看书写代码,Perl Cookbook要看,一些常用Module的代码也要看,对于Perl这么庞大(也很强大)、复杂的东西只是浅尝则止就有暴殄天物之嫌了。想做一个好的程序员就是要偏执,无论用什么,都要写得一手好程序,不可敷衍了事。

对语言接触得越多,越觉得自己视野狭窄、能力有限。这些工具就像软件开发的血肉,只有它们的存在,开发过程才显得丰满充实。回想起自己无知也无畏的年代,不禁汗颜。