43岁,开始编程
先说一下我的背景吧。2006年硕士研究生毕业,所学的专业是热能与机械,研究生的课题是做CFD仿真。如果大家还记得16年以前的事情,那时正是中国的汽车行业开始崛起的时候,我当时也是因为机缘巧合,有机会进入到一家汽车行业的外企咨询公司,第一份工作是做内燃机的CFD仿真。2011年,我正好5年工作经验,当时汽车行业发展正是如火如荼,机会也多,就跳槽到了一家知名的国企。那时真是年轻呀,情商也低,很快就发现自己不是混国企的那块材料,恰好有猎头给我推荐了另外一家外企咨询公司的工作,我马上就辞职转投这家外企了。当时对自己的职业发展是没有什么清晰的想法的,也绝对没有想到在这家公司一待就是10年,直到今年母公司把 我们这块做工业仿真软件的业务给卖掉了,也算是被迫离开了工作10年的公司,当然这是另外一个话题,如有以后有机会,针对被收购这事我会详细写一篇。(Note:“工业仿真软件”这个词是最近才学到的,从前我一直很疑惑我们算是哪头的?说是做软件吧,但不算IT行业,说是做工业的,又没有实体的产品。最近因为新闻上说我们被”卡脖子“了, 我才醒悟-“哦,我们原来是做工业软件的。”)
我工作的这家公司也是一家汽车行业的咨询公司,总部在英国。我所在的部门有不到100个人,是专门做工业仿真软件的,具体地说业务就是开发汽车和内燃机设计使用的仿真软件,然后卖给用户(在国外大部分是租给用户)。刚开始,我的工作是做user support,后来(忘记是哪一年了,大约2015年吧)我们做support几个人的部门改名字叫AE,也就是application engineering的缩写,不过说实话我到现在都不理解这俩单词放到一起的含义,不如support这个词简单易懂。改成AE部门,做的事情确实也多了一点,比如我经常做的除了user support的事情,还包括软件的release testing, 软件功能的user review,写软件手册的教程部分,甚至还会做一些用户的咨询项目,等等。一件事情连续做很长时间,就会觉得疲惫。在这一点上,我觉得美国的几个同事就不一样-至少看起来他们还乐此不彼,可能是因为文化不同吧,在他们那里工作在整个的生活中的比重比我们轻得多,所以经常听他们说“it‘s just a job...”。总之呢,AE的这些工作我干够了。从2年前开始,我就跟老板(在公司叫做line manager)开始抱怨,抱怨的说辞是我好久没有学到新的东西了,要改变。在我们这里,AE工程师的职业发展下一步往往就是产品经理,我之前至少有4个同事从AE转型产品经理。但是,这条路径显然不适合我,两个原因,客观上我工作地点在中国无法对欧洲的软件开发工程师施加影响;主观上我的性格也不喜欢去做和沟通相关的事情。此路不通!我也曾经尝试过跳槽,或者在公司内部转部门去做CFD仿真工程师,但是都没有成功。在那个时候,我当时的老板(他是一个很nice的英国人,至今我都很喜欢他)给我一个建议,他说:“你可以拿一张纸和一支笔,把自己锁在房间里,认真地思考自己想做什么事情,把想到的都写到纸上,一两个小时后你就知道该往哪个方向走了”。这真是一个好主意,我听取了他的建议,在一张纸上先画了一个二维坐标系,横轴代表能力,即我擅长做什么;纵轴代表意愿,即我渴望做什么。然后把我能够想到的事情,一样一样地写到坐标系里面,这样根据不同的象限,左下的象限内都是我不擅长也不想做的事情,右上的象限都是我擅长并且想做的事情。就这样,左下的象限(不擅长不喜欢)有:管理,商务,等等;右下(擅长但不喜欢)有:客户培训,内燃机性能仿真,空气声学仿真,等等;左上(不擅长但喜欢)有:写小说,控制系统仿真,等;右上(擅长而且喜欢)有:CFD仿真,TMS(thermal management system),Programming!
然后说说我在编程方面的背景。在本科的时候,学过汇编语言和Fortran编程,当时我Fortran学的还是不错的,期末考试成绩是A。这里说一句,大家都认为Fortran语言过时了,但是我们的CFD软件的求解器内核至今仍然是用Fortran编写的,而且我听说不少历史较长的软件也是用Fortran写的。话说过来,我的Fortran知识经过这20多年没有练习过,早就忘光了,以至于同事问我是否会Fortran的时候,都不敢说自己学过。我会用Linux系统,可以写Shell脚本。我更熟悉的编程语言是Python。记得第一次知道Python是2006年刚参加工作的时候,当时一个同事用Pyhton编写了很炫的螺栓预紧力分析的小程序,他告诉我Python很有用。我也没想太多,就是抱着学点东西的想法,开始学Python。最开始用的两本书,一本是《A byte of Python》,这本书优点是很简单缺点是太简单了;另一本是《Python学习手册》,名字叫学习手册,其实这本书基本上不能当作学习参考书,更适合它的名字应该是《Python手册》。总之,直到我读了另外一本书《Python编程金典》才算是入门了。在Python从2.7升级到3的时候,为了更新自己的Python知识,我又重新学习了《Learn Python the Hard Way》- 这是一本好教材,如果现在有人让我推荐学习Python的教程的话,我首先推荐这本书。其他的,我也自学了NumPY和SciPY模块,基本上能用这两个模块。实践方面,我用Python写过CFD的前处理自动化脚本;更多的是写过不少CFD后处理脚本,包括分析流动不均匀性的脚本,转换结果文件格式的脚本,将并行计算的distributed结果整合成一个文件的程序,这些程序有的被收到了我们的CFD软件的发布包里面,作为Utility供客户使用。我记得我用Python干过的最大的一个活,是帮一个国内的汽车厂写了一个CFD流场后处理的程序,整个程序有几百行,可以自动化地按照要求生成汽车的各个位置的流场图片,这个客户至今都在用这个程序。除了仿真,我在2007年到2010年之间很迷炒股,曾经用Python写过程序,从新浪下载实时的股票报价,收盘了还用Python程序来计算移动平均线,计算股价偏离,等等。后来觉得股票技术分析太玄学了,就不继续了。
总之,我能干也有兴趣干编程,所以我终于告诉了我的老板:“I want to be a software developer.”