此篇取名极客,来源于英文的geek一词。相比于nerd(书呆子),geek的意义稍微正面一点。特别是IT行业兴起以来,人们对许多热爱并擅长计算机科学的人以极客称之,强化了极客一词中聪明,专业的意思,淡化了其不善言辞,不合群的意思。
这里来写一群这样的人。
那一年我因为家庭原因搬到一个城市,重新找工作。找着找着,同时来了两个Offer,一个是大公司A的合同工,一个是大学IT部门的正式工。两个职位工资差不多,但大学福利好很多,就毫不犹豫地选择了正式工。
在大学工作了一段时间,发现公司A在这个城市的影响力很大。如果碰到一个老中,说在IT行业工作,别人就会问:“在公司A工作吗?”回答不外乎这几种:(1)是的;(2)我以前在A工作过;(3)我不是,但我的先生/太太在A工作。公司A的福利非常好,本地一些博物馆的年费,旅游景点的门票,餐馆账单,健身房费用,公司A都有折扣。逢年过节,公司A会给员工家属组织活动。公司A的医疗保险也非常好。对有小孩的家庭,在公司A工作是有很多实惠和便利的。
要通过公司A正式工的面试不容易,有好几轮,哪一个环节出一点错,就被刷下来了。有些人面试弱一些,可以做合同工,一年半载地也许有机会转为正式工。还有些别的渠道,我不十分清楚。
摸清情况后,我有些后悔当初的选择。后来去公司A面试了一次正式工,失败了,需要过半年才能再面试。这期间认识了一些在公司A工作的朋友,才知道面试需要刷题。
这期间又面试了公司B。面试过程中得知B刚被公司A收购。虽然面试不出色,公司B还是给了Offer。工资只涨一点点,可见B对我不是很满意,大概有点“食之无味,弃之可惜”的味道。因为想着B被A收购了,B的员工迟早会成为A的员工,我就曲线救国,签下了Offer。
上班后,发现公司B的工作方式非常前卫,大部分组采用敏捷式(Agile)方式。那时候,敏捷式方式刚在IT行业推广起来。我们组更是采用其中难度颇高的结对编程(Pair programming)方法。
软件开发行业以前采用瀑布式(Waterfall)。软件组从用户那里取得对软件的要求,然后设计软件,开发,测试,移交。因为市场瞬息万变,软件从给出要求到移交的过程中,要求可能已经改变,导致编成的软件失去实际应用价值。
后来软件开发出现了一种新的方式,称为敏捷式(Agile),逐渐取代传统的瀑布式。敏捷式通过项目经理,不断从客户那里更新软件要求。软件组也响应需求变化作出调整。敏捷式软件开发一般采用周期制。周期可长可短。每个周期中,设计,开发,测试,演示,循环往复,逐渐完成一个个软件功能。
敏捷式软件开发有好几种方法,一般公司采用 Scrum。而我去的公司B的这个组,采用极限编程(Extreme Programming)这种方法。极限编程的一个特点是结对编程。
结对编程理论上是这样的:两个程序员面对同一台计算机一起编程, 一个人写代码(写手),而另一个人思考和检查代码(思考者)。严格意义上的结对编程,两个程序员一起编码四个小时。然后写手升为思考者,新加入的程序员成为写手。好像有研究,两个程序员一起编程若干时间达到最佳状态,然后状态开始下降,四个小时就要换对子了。
结对编程的好处有好几个。比如,新来的人容易上手,很快熟悉程序。程序在两个人的反复斟酌讨论中完成,因而程序质量高。程序员搭子达到最佳状态时,编程效率非常高。
实际工作中,结对编程往往会走样。一是两个人达到最佳状态时非常兴奋,但是脑子也很累,换了对子之后很难再达到最佳状态了。二是两个人的默契度。有些对子总是无法配合默契。三是人的趋利性。结对编程有利于资历浅的程序员迅速提升,但资历深的程序员受益不多,所以资历深的程序员喜欢找同等水平的搭子,四个小时后不会主动换对子。还有结对编程让个人的时间很不自由,除非有人监督,一般员工不愿主动结对。
我在别的公司很少看到结对编程。一般在两种情况下,程序员会短暂结对。一是让新程序员迅速上手,二是编一段很难的程序。
我的经理非常推崇结对编程,可以说痴迷到狂热。他一走出办公室,只要看到有人没结对,就会问为什么,驱使人结对编程。如果看到一对搭子很长时间结对编程,就要促使他们换对子。
经理还请来了敏捷式软件开发的创始人之一Martin Fowler到我们组,用了一周时间,一起编程,一起重构优化程序(refactory)。那段时间大家整日里就是结对,重构,重构,结对。组里像是上足了马达,拼了命地往前冲。
我到公司没多久,工作的方向是我以前从未接触过的,大家的编程水平也很高。因此结对编程时,我经常有力不从心的感觉。
本故事其他章节 -
【职场故事】极客(1)- 结对编程
程序员因为要学算法,也要会写程序,所以是同时拥有这两种能力的。结对编程的两个程序员虽然有分工,但两个人的两种能力是同时发挥的。写手要考虑思考者的算法,思考者要监督程序的正确性和效率,就像一个人在同时做multiple tasks, 所以人会比较累。
换作你们专业,如果同时用两个设计师兼绘图员做同一个设计,中间如有不同,需要随时讨论出最佳方案,最后设计的图纸应该质量很高。
我是做IT的但不是搞软件。以前是做机械设计的。最早是徒手绘图。后来机械软件出来了,2D到3D。特别是3D,很多软件不容易上手,结果人脑设计与电脑表达之间就有了隔阂。最早的时候好的机械设计师都配有3D绘图员的。设计师出草图和参数,绘图员在3D软件上实现,测试并优化。这和现在软件设计是类似的。后来的大学生从大学开始就上手3D软件,这种隔阂小多了。但是最好的设计思路还来自人脑,电脑就是个高级工具。如果二者能合二为一就最好了。
你的解读好专业啊!应该是IT大牛吧。
我那时候结对编程时觉得很累,如果一直focus两三个小时,就非得休息一下了。
可能水平不够,无法在两者之间自由切换。
祝HBW周末愉快!
帅哥的帅让第一眼惊艳,成了同事,看习惯了也就习以为常了。
另外也像你说的,帅哥阴郁的气质让他不可爱,也就让帅失去魅力了
帅哥情绪化可能有另外的原因,以后会写道。不过我只是推测,当时没敢问
帅哥前妻多,感觉每一种程序可以对应一个前妻:)
很专业,很多术语不知道。“卡文看到一段程序,搞懂之后发现这段程序毫无用处。他就说:“删了吧。这段程序就像我的第二任妻子,看似漂亮,毫无用处。”,这个形容,太有意思了,哈哈。亦缘好文!
多谢鼓励!都是工作中经常提到的方式方法,写成英文会比较容易,写成中文就累一些,因为翻译的缘故
你说的没错,我想了想以后要写的关于卡文的几件事,他确实没啥心计。人帅嘛,总有人捧着,比较随心所欲
你的癌症文很专业呢,要向你学习
是的,工作中的合拍太重要了!默契的身心愉快,不默契影响心情。跟合拍的人工作也是享受
这些专业词中文翻译找不到,或者很牵强,查英文就会解释得清楚很多。
发现用中文写作还得练翻译水平,一些工作中的日常用语,写成中文怪怪的:)
多谢采心鼓励!
后半部的故事性很强。人不但是职场的人,还是社会中的人,婚姻中的人。。。缘妹把各个侧面都描绘出来,故事便越来越好看。期待,加油!
沙发沙发!