当我们谈编程时,我们在谈什么

图片来自网络

    当一个非程序员谈编程,他仅仅是在谈编程;当一个程序员谈编程,他谈的不仅仅是编程。

    入行程序员已经有些日子了,不知从什么时候起,总是有人会问我这样的问题:我想学编程,但是不知道如何学起,你有什么建议吗?每当遇到这样的问题,都会勾起我的一些回忆,掐指一算,已经是上个世纪的事儿了。

    我第一次接触电脑是在1996年底,那时改革开放的总设计师邓小平同志还没有去世。我的同桌撺掇我去网吧玩刚出的红色警戒,我敲的第一行电脑代码应该是:give me much money,这是用来作弊的,可以得到无限的金钱,因为是第一次接触电脑,键盘、鼠标什么的操作都不熟练,玩的很不爽,后来也就没怎么玩了。在此之前,我和电脑距离最近的应该是亲戚送的一台小霸王学习机,有一个键盘和两个游戏手柄。印象最深的是有一次我参考说明书,编了一个小程序:一个小三角按照设计的路线在屏幕上移动,最终回到原点。之所以印象如此深刻是因为全程都在父母的陪伴下,一个在左,一个在右,具体谁在左边谁在右边我记不清了,不过记得最清楚的是当时的感觉:我觉得自己像是一个黑社会的小马仔,在两位老大的注视下去设法打开一个我们不知道密码的保险柜,不但最终要打开保险柜,而且在过程中也要完美,不能出一点错,否则就会被痛打。当然这只是我的感觉,我的父母从来没有痛打过我。最终我打开了保险柜,整个过程也堪称完美,而且当那个小三角真的按照设计的路线完成了全部动作时,我的心里还是很有一种成就感的,但是从那以后我好想就再也没碰过那个学习机了,为什么呢?可能是因为当时家里只有一台电视机,如果要用学习机的话,就没法看电视,如果不能看电视的话,他们就会盯着我看,这种感觉真的很不好,为了避免这种不好的感觉,我选择再也不碰学习机了。

    小霸王学习机+红色警戒并没有让我对电脑提起情趣,而且恰恰相反,让我对电脑产生了排斥心理,转机发生在上大学以后。1997年发生了很多事情:邓小平去世,没能亲眼看到香港回归祖国;学校组织悼念活动,我们胸前带着自己制作的白花在操场上集合,那年的冬天好像格外的冷;我高考失利,考试成绩是高中三年所有考试中最低的一次,尽管如此,原始分依然超过重点线将近20分,但是我鬼使神差的选择了不服从调剂,重点和一本都走不了,如果要走的话只能是专科;我选择走,还好父母同意了我的选择;就这样我开始了大学生活。大学生活相对高中要轻松很多,这是我在上大学之前就被灌输的想法,而我在上大学的过程中也自觉不自觉的贯彻这一想法:没有高中那么用功了。虽然在第二年就开始了专升本,并且选择了计算机专业,但直到这时我对电脑还是没什么兴趣。有意思的是转折就在这个时候悄悄的发生了,这回没有小霸王学习机,只有红色警戒了。学校周围的网吧是打游戏的好场所,我也像其他同学那样,开始痴迷于电脑游戏,几乎可以说是废寝忘食,因为包宿比较划算,我经常选择在周末去包宿,虽然省了一些钱,但对身体的损害是无法避免的,这是为年少无知付出的代价。很快红警就玩腻了,接替红警的是三国群英传,这时我也发现总包宿对身体的损害太大,所以基本不包宿了,但是又很想玩游戏,就按市价在白天玩,3/小时,每次玩都要三四个小时,周末的时候甚至更多。3/小时现在觉得可能没什么,但是相对于20年前的物价比,这已经很贵了,浪费了父母很多钱,也浪费了自己很多时间,青春就在这种不负责任行为间悄悄流逝,而不自知。

    我是在大二才开始带眼镜的,高中三年沉重的课业负担并没有把我的眼睛压垮,但是电脑游戏有这个能力(或许电脑游戏只是压死骆驼的最后一根稻草?),在我痴迷于电脑游戏后不久,我的视力开始下降,很快降到不得不带眼镜的地步,从此我开始了带眼镜的生涯。这是我第一次视力下降,第二次下降也和电脑有关,不过不是电脑游戏,而是智能手机,每天睡觉前关灯看手机是很伤眼睛的,眼睛对我们很重要,大家要爱惜自己的眼睛,不要学我。

    大学时光很快过去,毕业后我被分配到了一个地级市的工程单位,报到的那天,我转了好几趟汽车才找到地方,中间还因为睡着坐过站了。接见我的是一位领导,具体职务记不清了,只记得办公室不是很大,窗子很高,领导一身朴素的服装,光脚穿了一双布鞋,可能是因为接见我太匆忙了,鞋跟儿都没来得及提。我规规矩矩地把报到证递了上去,领导拿在手里,仔细的观看,时间仿佛静止了。领导好像是很重视我嘛,仔细的阅读报到证上的每一个字,而且好像不只阅读了一遍,否则怎么会花这么长时间?这段时间我无所事事,但是也不能动,只能转动眼球儿四处瞅瞅,被领导那饱经沧桑的脚后跟儿所吸引,我很好奇领导究竟经历了什么,才让他的脚后跟儿看上去如此有内涵。终于,领导开口了:现在有班没岗,你回去先等等。好嘞,终于等到了这句话,我如释重负,高高兴兴、安安全全的回家了。这是我第一次去这里,很可能也是最后一次,因为现在我已经被这个单位除名了。

    因为没有工作,我只能自谋出路了,还好从小就被灌输了凡事靠自己的想法,所以也没什么好犹豫的,自己去找工作呗。我的第一份工作是在人才市场找的,那个时候网上找工作还不是很流行。省城的一家工程公司向我伸出了橄榄枝,当时也没什么经验,毫不犹豫的就接受了。和我一起入职的大约有20人,都是和我年龄差不多的年轻人,而且都是男的。经过了几天基本的培训,我们被派到了福建电信,帮助当地的施工队安装小灵通基站(现在还有多少人知道小灵通呢?)。本来我们就简单培训了几天,但是公司要求在工作中要表现出自己已经做了好多年、很有经验的样子,当时的我对此很不理解,但是我照做了,效果还不错,当地的施工队很配合,工作内容也很轻松,只不过要经常跑来跑去,没有坐办公室轻松。工程没有几个月就结束了,我们也回到了省城,公司的策略很明确:不养闲人,没有太多的项目,不需要这么多人了,我主动提出了辞职。一是出差了好长时间,我有点累,想好好休息一下;二是正好到年底了,快过年了,有点想家;三是我不太喜欢这样的工作方式,看到公司里前辈的状态,我觉得这里并不适合我。

    转过年,还没到正月十五,我就迫不及待的冲回了省城,继续开始找工作。这次我入职的是一家软件公司,准确点说是一个公司的软件部,公司的主营业务不是软件,是和房地产相关,因为业务发展的不错,同时领导觉得软件是不错的发展方向,所以组建了软件部,准备大干一场。那时我每天的工作就是坐在电脑前面敲键盘,不用再跑来跑去了。不过要说具体的工作内容我现在一点也说不上来,因为领导虽然有想法要把软件部搞好,但是说到具体要怎么做,她也没个准主意,所以我们每天基本都是在准备的状态,做好准备、准备大干一场。这样的工作注定不能长久,没有几个月我就失业了。留在我记忆中的有这样几件事:一是给老板交电话费,有一天她从外面进来,正好看到在电脑前面装模作样的我,就对我招了招手说:来来来,帮我把这个月的花费交了,钱你先垫着,回头找财务报,快去啊,我手机快停机了。然后找了张纸,把电话号码写在上面递给我了。我不敢怠慢,马上出门,顺利完成了领导交给我的任务,这应该是我在这家公司做的最有意义的一件事。二是有一次实在闲得无聊,我们几个人联网打游戏,被老板的弟弟看到了,其实那个时候已经快下班了,还是周末,我觉得这没有什么,但是老板的弟弟对此大为光火,很不客气的说了我一顿,我心里很不服气,因为他是公司另外一个部门的,根本管不到我们,只是因为他是领导的弟弟,我拿他也没什么办法。三是公司的领导是个女强人,有一天她突发奇想,打算给我们弄一个食堂,地点选在了大厦的地下一层,公司那个时候根本没有多少人,完全没有弄食堂的必要,但是领导想弄,没办法,食堂就这么开了起来,其实她不在时,我们从来都不去那个地方,因为那里的条件很差的,更像是一个没有施工完毕的地下仓库。有一天领导在公司,中午的时候我们大家一起去食堂吃饭,她坐在餐桌前对我们喊:我要吃黄瓜(gua一声重读),把我的黄瓜(gua一声重读)拿来!在老家一般都说黄瓜(gua轻声),所以她的两个黄瓜(gua一声重读)真的是很另类,让人印象深刻,现在她长什么样子我已经记不清了,但是黄瓜(gua一声重读)还是记忆犹新。顺便说一下,那个时候我用的最多的编程工具是记事本,编程语言是HTML

    很快我就入职了另外一家公司,这家公司的主营业务是电脑的硬件销售,软件部虽然一直有收入,但程序员的成本很高,所以好像总是不怎么盈利,我不是软件部的领导,不知道具体的情况,上述都是我的猜测。不管怎么说,这家公司都比上家要正规很多,我的程序员生涯实际上是从这里开始起步的。在这里,我主要用Delphi,我参与的主要项目是一个劳教所的管理系统,相关的硬件是西门子的4442卡。这家公司有宿舍和食堂,人际关系也很融洽,有很多同事后来都成了好朋友。每当想起这家公司,我都会默默的在心里感谢公司的大领导(创始人),虽然和他没怎么说过话、也没打过什么交道,但是他却是对我帮助很大,他撑起了公司这片天,让我有机会以程序员的身份成长。说到公司领导,有一个人要提一下,他就是我的顶头上司(软件部经理),是他面试我并把我招进了公司,算是我在程序员道路上的贵人吧。但有一件事我当时不是很理解,有一次我有个问题想问他,那个时候即时通讯软件还不是很发达,都是要面对面问的,他的座位在我的对面,我刚走到他的桌子边上,他就很慌乱的急忙把电脑显示器给关掉了,当时的我毫无反应,继续向前走,俯下身来和他讨论问题,一会儿看看他、一会儿看看电脑屏幕,心里还嘀咕:搞什么搞,把屏幕都关了,怎么工作呢?当时的我太单纯啦!现在我知道这是怎么回事儿了,这是一个悲伤的故事。

    一个很偶然的机会,我决定到大城市碰碰运气,如果当时能够预见到未来将会遇到种种问题,可能我是不会做出这个决定的,说的好听点叫初生牛犊不怕虎,其实是无知者无畏。在北京,我找的第一家公司是一个纯私企,是一个北京人开的公司,他原来在中软工作,后来和朋友合伙开了这家公司。我入职的时候,公司还没有注册成功,也没有正式的名字,到我快走的时候,公司的名字才确定下来。我是先在网上投的简历,后来接到通知去面试,面试的时候先是答了一套面试题,然后是正式的面试,面试结束后等通知,几天之后,我接到了通知,然后就高高兴兴的去上班了,现在我都忘了是什么时候谈的工资,那个时候真的是单纯啊,就是一心想把工作做好,其他的都不怎么在意。后来有一次和领导聊起了当时的面试,他说当时算我在内还有好几个人都不错,但是最后确定了我,当时我还挺高兴,觉得是因为自己比较出色,所以胜出了,后来才想明白,选择我可能只是因为我要的工资低吧。在这里我还是用Delphi编程,那个时候的我比较规律,每天就是出租屋+单位,没有什么娱乐,也没有太多的想法,在单位里也是努力的工作,算是心无旁骛吧,领导有一次还说,每天听到我敲键盘的声音就感觉特踏实。我在这家公司工作的时间并不长,前前后后加一起也就3个月左右,但是在这家公司我感受到了一样很重要的东西,那就是别人对我的认可,从此以后,我在内心中就对自己有了一个定位:我要努力成为公司的骨干,这个想法直到今天依然发挥着作用。除了这个想法之外,这家公司还带给我两样东西:一是丽华快餐+老干妈,二是蒋宅口的一家火锅店(好像叫什么仁居),在这家店里我第一次吃一人一锅的小火锅,味道很好。

    过了不久,我又入职了我来北京的第二家公司,这家公司主要做保险公司的相关项目,依然是在网上投的简历,面试的过程已经不记得了。老板是一个成功人士,有多年的海外工作经验,人脉很广,非常有亲和力,如果你看到他,一定会被他的魅力所触动。这家公司和上家公司最大的不同是工资给的很高,高到了上家公司三倍的程度(这也从侧面说明上家公司的工资之低);另外一点不同就是这家公司有点国际化,客户是一些跨国的大公司,公司的高层大多都有国际背景,培训讲师也都是从国外请过来的,我在这里拓宽了自己的视野。不过公司的办公环境我要吐槽一下,不是一般的差啊!可能是初创公司的原因吧,刚开始并没太多的工作要做,主要是接受培训,因为保险的核心业务系统使用的是专门的语言和工具,我的Delphi在这里没有了用武之地,渐渐荒废了。但是我也没闲着,先是学了微软的C#,还带着几个人做了一个公司内部用的小项目,后来又自学了一些Java,就是这一点点积累,帮助我入职了下一家公司,也正式开启了我的Java程序员生涯。

    我来北京入职的第三家公司是北京某局的两位处长开的,公司的主营业务也是和政府有关,这类软件有一个统称:电子政务。依然是在网上投的简历,部门经理面试的我(当时的前台这么介绍的),虽然这个人怎么看都不像一个部门经理,但是面试过程还算顺利,我在回去的公交车上接到了面试通过、我被录用的电话,第二天就去上班了。入职之后我才了解到,昨天面试我的人是清华的博士,这让我肃然起敬,这也能解释为什么他不像一个部门经理了。在这家公司,主要使用Java语言开发,工具是IBMWebSphere,一个超级巨大、超级慢的工具,我也逐步接触了J2EEStrutsHibernateMavenSVN等,在这家公司我完成了从一个Delphi程序员到Java程序员的转变。另一个重要的变化是我不仅仅是一个程序员了,而是作为一个副手带团队到甲方驻场做项目了。虽然在做项目的过程中,我个人能力不足的问题暴露无遗(直到很长时间以后自己才意识到),而且在项目开始的初期很不成功,几乎都要做不下去了,但是后来还是挺了过来,项目居然通过了初验,不管怎么说,这个项目的成功对我都是不小的鼓舞,我不知道如果项目失败了我会怎么样。我在这家公司工作了差不多两年的时间,和以前的公司比算是比较长的了,我也在北京进一步站稳了脚跟。后来博士从公司离职了,不久以后我也走了。这个公司给我留下深刻印象的是它的Slogan:金兰之契,利用厚生,和得天下。听起来很酷,很有中国特色。

    我在北京入职的第四家公司是博士介绍我过去的,是一家由国企和港企共同出资创办的上市公司,公司很正规,总部在金融街,有很多人都是从国外留学回来的海归,主要做和电信相关的业务。第一次HR面试的时候后我没有通过,后来博士又运作了一下,我才得以加入。因为是电信相关的项目,基本上一直处于出差的状态,和上一家公司差不多,博士是名义上的项目经理,但是他不会在甲方待太长时间,而我作为他的副手一直坚守在第一线,只是偶尔回一次北京。在这家公司的这段时间里,虽然我的技术还在成长,但是成长速度已经没有上一家那么快了。到此时我还没有完全适应转型做管理,依然是开发者思维,而不是管理者思维,所以并不是很顺利,也不是很成功,但是项目进展的比上一家要好很多。虽然我就职的公司也有很强的背景,但是我们的客户背景更深,所以也更强势,又是驻场开发,总体上我们一直是很被动的。在做完两个项目之后,我带着深深的迷茫离开了这家公司,不知道自己以后要去向何方。这家公司是我所有就职过的公司最复杂的一家,也是从这时开始,我才渐渐的意识到一个问题:我还不知道如何融入这个社会。我当时只意识到了这一点,还没有意识到自己究竟有多傻。    

    无知者无畏,我决定创业,准确点说是和朋友一起创业,我们合伙开了一家公司。直到今天我也不知道这个决定是否正确,但是有一点是毫无疑问的:这次创业对我影响很大,无论是精神还是物质。这次惨痛的失败严重地打击了我的自信,我比以前更犹豫了;自参加工作以来的物质积累几乎全部清零,用一穷二白来形容很合适。祸不单行,这时父母的身体又出了问题,情势更是雪上加霜,我跌入了有生以来的最低谷。但遗憾的是,即使是这样糟糕的处境也没有让我觉醒,我还是浑浑噩噩的按照惯性在运作,像一架没有灵魂的机器。以现在的眼光来看当年的创业,失败的原因似乎很简单:自己当时根本没有脑子。这个原因在当时自己是看不出来的,因为没有脑子的人是不知道自己没有脑子的,就像喝醉酒的人是不知道自己喝醉了一样。出现这样的情况,得到这样的结果,只能怪自己,不能怪任何人,因为怪任何人都没有用。自己的事情只能靠自己,任何人也帮不了你,如果你不自知的话。在创业的这段时间,我参加了一次在万达索菲特酒店举办的中法企业论坛,还和一个法国的企业家交谈了一会儿,当然他带了一个很有气质的女翻译。这是我第一次与法企结缘,我很佩服法国人的涵养,被一个大傻子浪费了这么多时间而没有发火,我要向他学习。

    洗心革面,重新做人,在创业失败后,我又开始了打工生涯。这次还是同事介绍,我加入了一家小外企,主要做IT设备的运维服务,公司是在新加坡注册的,老板是新加坡人,原来在惠普工作。我入职的时候,公司在广东新开了一个项目,很自然地我又开始了出差的生涯,但这次和以往不同的是:我们是以厂商的身份出现的,有一个本地的公司负责实施,虽然依然是驻场,虽然甲方依然很强势,但我们的日子要比以前好过许多。是一个电力局的项目,电力局的食堂很棒,品种多、味道好、分量足、价格低,尤其是小盅煲汤,好喝极了,我也是在这个食堂的电视上看的杨利伟走出神州五号的直播,印象很深。因为是和各种网络设备打交道比较多,所以对Linux的需求要比其他公司高很多,我也是在这个时候对Linux的使用有了更深入的了解。我入职之前,公司签了很多项目,其中包括2008北京奥运会的单,发展蒸蒸日上,但是变化说来就来,不知道是什么原因,公司的财务开始吃紧,没几个月的时间,人就走的差不多了,到最后,老板现身了,宣布公司解散,我就这样第一次干黄了一家公司。如果要说这家公司的什么让我印象深刻,可能是新加坡高层对中国管理层的不信任吧,也可能是我的判断出了问题,但是分明我的感觉是如此的清晰。中国人的劣根性表露无遗,如果一个脑子里满是西方现代理性思想的老外第一次和中国人打交道,而且用自己的思维方式理解中国人、中国人说的话和中国人做的事,他们一定会吃大亏的,中西方的文化差异真的很大。

    继续找工作,还是在网上投简历,这次向我伸出橄榄枝的是一个纯外企,法国独资初创公司。面试地点是在一个宾馆里,原因是公司刚刚组建,办公室还没有租妥。面试我的是两个法国人,一个高高瘦瘦,一个高高壮壮,全程用英语,虽然我的英语很烂,但是面试似乎很成功,我被录用了。那时我根本想不到,我会在这家公司工作超过十年。从最开始的程序员,到现在的Team Leader,改变虽然不大,但却是质变,从执行者到管理者的转变,再小的管理者也是管理者,也需要你运用管理者的思维,而不是执行者的。这个改变仅仅是一个开始,但对我而言却是一个很重要的开始,因为她给未来开启了很多可能性。按理说,我在这家公司工作了这么长时间,应该有很多的东西可以写,但是实际情况可能正相反,因为在这里很稳定,所以反而没有太多的东西可以写。稳定,或者进一步讲:确定性,是非常重要的,不论是对个人,还是对公司,都是如此,这可能也是我一直在这个公司工作的原因之一。

    让我做一个小结:先硬件,后软件;先小私企,再大私企,再国企+港企,再小外企,再大外企;先做项目,后做产品;先开发,后管理。在硬件和软件之中,我选软件;在私企和外企之中,我选外企;在项目和产品之中,我选产品,在开发和管理之中,我选管理。选择这些的原因都是相同的:可长期、可持续、可积累。

    至此,正文已经写完了,如果你从头到尾一路看到这里并且火冒三丈:这写的是什么鬼玩意?!恭喜你,这说明你具备了成为程序员的潜质:1)能从头到尾看完,说明你有耐心,这是做程序员的必备素质,能静下心,耐得住枯燥和寂寞;2)能看出这写的就是鬼玩意,说明你具备基本的逻辑判断能力,如果一个人自己的逻辑能力都不强,也就不要指望他写的程序拥有好的逻辑了。

    其实如果想当程序员,上面的所有的都不用看,从你手边最近的一本书、一个帖子开始即可。重要的是要不断的投入时间和精力去做,只要你投入的时间和精力足够多,结果自然而然就会好;如果你在一件事上投入了最多的时间和精力,那么这件事的结果必然是最好的,不管这件事是什么;如果结果不是最好的,原因只有一个:你投入的时间和精力还不够。

    如果你的一生只能干一件事,那么你一定能把这件事干好,但现在的问题是有太多的事可以选。不过,无论你怎么选,都需要并且必须牢记:为自己的选择负责。

    对于一个程序员而言,编程很可能是他全部的职业生涯。


2019-01-03
北京

Published by

刘 心泉

running in the morning