早在10月份我就来到了德国汉堡市实习。选择这个城市完全是因为、不想在上海挤地铁、想出国、而国外只有这一个公司和同济进行合作。

来到这边第一天的感觉:累死爹了,而且天气也不好,阴沉沉的。之后汉堡的冬天一直是这样,根据同事Holger(此人是公司的技术总监,之后说)所说,今年的冬天令他很是愉悦;以前的冬天基本上没有见到太阳的时候,一个月里能见到四五次太阳就算不错了。当时心想我靠,这尼玛如何过活,我这么崇尚阳光的人。。不过我也活过来了,到现在汉堡的天气还是不错的,基本上每天都能看到阳光。据说夏天晚上十点多才会黑天;不过我是经历不到啦,就要撤退了。

刚到这里由陈彬学长给我指了路如何去住的地方,这个家是彬哥之前住的,他要换房子正好我要来,于是did me a favor,把这个地方留给我了。虽说居住条件很差,但是住个半年没有问题,而且汉堡最近的房价涨得厉害,你不提前一两个月找房子根本找不到,这也算是我人品小爆发一下吧。还是很感激。彬哥后来跟我说看了《教父》有感:放债不要借钱,要放人情。这样的处世哲学值得深思。

来工作第一天老板给我介绍了一下公司主要在编写什么东西。给我讲了半个小时我就只明白了他说的第一句话:我们是给航运公司编写软件的。之后神马都没听懂。不是说他的英语我听不懂,是他的逻辑思路有点问题。。这个老板话说人还是不错的,但是可能就是因为人太nice,平时会有种不庄重的感觉,不像一个老板的样子。不过可能是德国公司和我们的理念不同吧,总比不懂装懂架子超大的“经理”们好一些。

来到这感觉学到最多的是如何做群体决策。大约一周一度的Coding Conventions 会议,每一次都听取着在座几位员工的不同意见,之后筛选到两个到三个左右的决定之后投票,自然是票数最多的决策写入文档。我想这才是一个真正的“民主公司”,居然连Coding Conventions这种仁者见仁智者见智的东西都需要做群体决策。看来真的是挺有意思。

公司给航运公司编写管理软件,包括船员管理、航行路线管理等等一切事物。据说公司有两大客户:CPO、EMA;还有Dohele,Opielok等等这些比较小的客户,每个客户的需求都不尽相同,所以我们要在代码当中控制每一个客户所需要的功能。这毕竟是我第一次工作,能够直接接触到代码的编写我已经非常幸运了。第一天来的时候被Holger指导了一番:各种考我网站编写都需要什么技术我就胡诌八扯了一番C# JavaScript Html Css(其实公司在用.less)。之后给了我一堆教程让我看两天,第三天我就正式上岗了。

正式开始编写之后就在利用MVC以及NHibernate架构把从前的一个页面从Webform版本和纯SQL语句搬运到MVC架构下。代码编写的速度还算可以,一周之内完成了这个工作;但是经过了Holger的第一次review,让我去做的TODO能有50多个。代码架构方面的问题还是欠缺考虑,这也是我来这里的主要收获之一(Holger同学还借了我一本Head First Design Patterns,看了之后收获颇丰啊,虽说看完之后忘了一大半了现在。。)。

学习的道路永远是曲折的,每一天的实习应该说我都学习了一些新的东西。之前完全没有接触过的比如说NHibernate,MVC,还有之前不是很熟的SQL在这里都经常用到。正因为是小公司,所以每个员工都有接触所有内容的机会,并不会有一些大公司里独有的完善的权限控制系统。master SQL每个人都可以用,所以也经常发生某个实习生弄坏了database之后全公司帮忙restore的闹剧。不过工作环境甚好,不会经常有人因为某人犯了错就去责怪另外一个员工,更多的则是给予一些指导。

技术性方面我觉得我最大的长进是了解了javascript…以前一直当js是个非常乱的,没法学的语言。不过公司用的就是js,jquery,没办法只好硬着头皮学了,话说某大神说过:js就是网络时代的汇编语言,我特么的觉得说得太对了,因为看到这句话之前我就有种想自己编写一个浏览器的想法:我觉得在网络时代编写一个浏览器就像是20年前自己写一个操作系统一样。从这个角度来讲说JS是web的汇编,我感觉简直就是找到了知音啊。话说回来,公司的JS总是出错,其实是因为Holger同学总是改一些共用代码。没办法,有代码洁癖的人看着代码不爽就想重构,然后一不小心就会break一些东西。此乃程序员之通病矣。js的学习真的是更上一层楼啊,我感觉很开心啊,不仅学会了js而且还学会了怎么调试。

今天公司开会,财政方面遇到了巨大问题。主要客户CPO由于公司业务下降,需要卖掉许多船只,由此对我们公司的影响也是非常大的:目前公司财政收入缩水,不得不让一些员工离开公司。

公司加上老板一共有10个人,但是目前的状况让我们措手不及。这故事还要从头道来:我在公司内部只是一个小实习生而已,但是应该说我见识了很多;不仅是因为出国实习,更多的则是对这个小公司的责任感。每次会议上我都会提出一些建议,针对公司的问题提出改进的解决方案。Holger在我来之前是一个很牛很牛的人(当然目前也是最牛的人),已经在这个公司工作了8年整;在这其间他也就是公司所有代码的看门人。在代码库当中所有未经过他批准的code都是不可以合并进入master分支的,于是也就出现了瓶颈问题:由于此人太牛逼了所以也有很多工作要做,也就导致了平时我们所写的代码速度超过他的时候,他本人会没有时间进行review。由此造成的问题就是我们不断的rebase,他不断的merge,但是新的分支产生数目总是比被merge进入master分支的数目多得多,游离在master外的分支也就越来越多,对公司的开发周期造成了很不好的影响。

作为一个实习生,我提出了一个可能的解决方案,把权力从Holger同学手里拿出来分散到整个开发队伍之上;也就是说:每个人都应该有合并分支的权力。这个提议竟然得到了整个队伍的采纳,包括Holger!他甚至还感谢了我,让他的工作量减少了很多;这让我对公司的民主制有了更深的认识。

而在我做了这最后的一件事之后,Holger对整个队伍所拥有的最后一点控制权也就消失殆尽了。用他自己的话说:他终于可以做自己想做的事情,不用为了公司的代码发展而苦恼,不必拴在这里,可以去追逐自己的梦想。他的梦想是去国外工作(和我颇为类似啊),体验异域风情,可能还有一些其他原因吧。

10个人在会议室的聚首次数本身就不是很多,今天大家都谈了谈自己对公司财务危机以及Holger要离开公司这件事情的感触,由此带来的伤感也就越来越多。我在公司的这段时间应该说是公司正在从低谷往高峰发展的时间段,所有人都在奋进全力为了公司有一个更美好的未来去努力;就在我们即将看到曙光的到来的时候,传来这样的噩耗;这让所有人都有一种无以言表的情怀。世事难料,这种事的发生也没有办法避免。只是,当所有人都认为我们正在奔着一个更好的目标前进的时候,突然再次跌落谷底;很难接受。

世界就是这样吧。我即将离去,送给公司的也只能是我最美好的祝愿而已。我本欲留于此一载,奈何最好的员工都因财务问题而将离去,我还有何可能呢。

希望一同度过这些时光的人都能追到自己想要的未来,Holger, Manfred, Frank, Nieves, Bin, Wenhao, Ioannis, Mengyi, Yousra.

MOAA 2013-2014

谨以此日志纪念在汉堡MoAA度过的难忘的日子吧。