此篇取名極客,來源於英文的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周末愉快!
帥哥的帥讓第一眼驚豔,成了同事,看習慣了也就習以為常了。
另外也像你說的,帥哥陰鬱的氣質讓他不可愛,也就讓帥失去魅力了
帥哥情緒化可能有另外的原因,以後會寫道。不過我隻是推測,當時沒敢問
帥哥前妻多,感覺每一種程序可以對應一個前妻:)
很專業,很多術語不知道。“卡文看到一段程序,搞懂之後發現這段程序毫無用處。他就說:“刪了吧。這段程序就像我的第二任妻子,看似漂亮,毫無用處。”,這個形容,太有意思了,哈哈。亦緣好文!
多謝鼓勵!都是工作中經常提到的方式方法,寫成英文會比較容易,寫成中文就累一些,因為翻譯的緣故
你說的沒錯,我想了想以後要寫的關於卡文的幾件事,他確實沒啥心計。人帥嘛,總有人捧著,比較隨心所欲
你的癌症文很專業呢,要向你學習
是的,工作中的合拍太重要了!默契的身心愉快,不默契影響心情。跟合拍的人工作也是享受
這些專業詞中文翻譯找不到,或者很牽強,查英文就會解釋得清楚很多。
發現用中文寫作還得練翻譯水平,一些工作中的日常用語,寫成中文怪怪的:)
多謝采心鼓勵!
後半部的故事性很強。人不但是職場的人,還是社會中的人,婚姻中的人。。。緣妹把各個側麵都描繪出來,故事便越來越好看。期待,加油!
沙發沙發!