|
本文是從 What’s Your Start-up’s “Bus Count”? 7 Myths of Entrepreneurship and Programming 這篇文章翻譯而來(lái)。
多少年來(lái),人們普遍有一種看法,認(rèn)為軟件工程應(yīng)該和其它種類的工程一樣:仔細(xì)的設(shè)計(jì),精確的規(guī)劃,然后進(jìn)行開(kāi)發(fā) —— 嚴(yán)格按照設(shè)計(jì)說(shuō)明書(shū)。就像修建一座橋梁,不是嗎?這種開(kāi)發(fā)方式的問(wèn)題在于:軟件,它是“軟”的。它可以無(wú)限的延展。任何需要的時(shí)候你都可以大幅度的修改你的軟件,人們也都是這么干的。還有,因?yàn)檐浖梢员荒脕?lái)對(duì)任何事物進(jìn)行模型造型,你能要求軟件開(kāi)發(fā)人員去實(shí)現(xiàn)的可能的東西幾乎是無(wú)窮無(wú)盡。想要在軟件里模擬集成電路嗎?干吧。想管理銀行?沒(méi)問(wèn)題。讓五億人和他們的朋友保持聯(lián)系?為什么不呢?小菜一碟。不僅如此,在開(kāi)發(fā)的中途我們還能要求程序員去做各種修改,這種事情經(jīng)常的以一種不可預(yù)期的形式出現(xiàn)。
這可不是像修橋那樣。
由于漠視這種需求不斷變化的現(xiàn)實(shí),多年來(lái),無(wú)數(shù)的項(xiàng)目要么慘遭失敗,要么巨額超出預(yù)算。所以,在各種證據(jù)面前,整個(gè)行業(yè)為什么還要堅(jiān)守這種錯(cuò)誤的認(rèn)識(shí)?很難說(shuō)為什么。不過(guò),最終,行業(yè)里開(kāi)始出現(xiàn)一種新的認(rèn)識(shí):軟件開(kāi)發(fā)工作應(yīng)該更好的響應(yīng)需求的變化。事實(shí)上,為了適應(yīng)這種需求上的變化,我們應(yīng)該改進(jìn)軟件開(kāi)發(fā)過(guò)程。沒(méi)有比如今的web創(chuàng)業(yè)開(kāi)發(fā)社區(qū)更歡迎這種趨勢(shì)的了。所謂的敏捷開(kāi)發(fā)方法已經(jīng)開(kāi)始流行,“lean start-up”運(yùn)動(dòng)號(hào)召對(duì)運(yùn)行中的系統(tǒng)進(jìn)行自動(dòng)的或依據(jù)經(jīng)驗(yàn)的超常快速變更響應(yīng)。
所以,我們都是好樣的,不是嗎?雖然行動(dòng)的不是那么快。盡管有越來(lái)越多的敏捷開(kāi)發(fā)方法被人們接受,仍然有大量的傳統(tǒng)錯(cuò)誤認(rèn)識(shí)游蕩在我們周圍…這些認(rèn)識(shí)大部分都該丟到腦后。
1. 誤解:你應(yīng)該招聘一些“日本忍者”式的程序員。
對(duì)編程超人的迷信是硅谷創(chuàng)業(yè)公司中最普遍的一種病癥:一個(gè)孤僻的程序員,以匹薩和咖啡因?yàn)槟芰浚^戴耳麥,通宵不倦的開(kāi)發(fā)一個(gè)復(fù)雜的系統(tǒng),所有的東西都自己一個(gè)人來(lái)干。時(shí)過(guò)境遷了。軟件開(kāi)發(fā)已經(jīng)發(fā)展成一種團(tuán)體運(yùn)動(dòng)。所有的創(chuàng)業(yè)公司只要獲得了任何有意義的成功,都會(huì)成長(zhǎng)起來(lái)。一個(gè)編程獨(dú)俠客能夠勝任的情況放到一個(gè)10人的公司里后就不可行了。而且,更糟糕的是,鼓勵(lì)逞英雄的行為會(huì)在開(kāi)發(fā)團(tuán)隊(duì)里產(chǎn)生腐蝕性的機(jī)能障礙。始終如一的朝九晚五、日復(fù)一日編寫(xiě)出公司賴以生存的穩(wěn)固功能代碼的程序員,輸給了能以通宵加班(通常只是一晚)來(lái)期望獲得慷慨的褒獎(jiǎng)的精明極端利己主義者。與其獎(jiǎng)勵(lì)這種英雄,不如培養(yǎng)出真正具有團(tuán)隊(duì)精神的員工。
2. 誤解: 程序員需要安靜的工作,避免打攪。
讓人們獨(dú)自的干活,這個(gè)聽(tīng)起來(lái)很有道理。每一次的打擾都是切實(shí)的中斷你的思緒,而且你需要花很久才能重新找回那種“狀態(tài)”。有些著名的軟件公司甚至堅(jiān)持要為每個(gè)程序員安排獨(dú)立的辦公室。他們這樣就不會(huì)被打攪了,是嗎?除非現(xiàn)代新形式的干擾并不會(huì)像一個(gè)真人拍你的肩頭時(shí)引起你的分心,比如即時(shí)聊天工具,移動(dòng)手機(jī),F(xiàn)acebook,Twitter,電子郵件,以及從程序員頭上戴的耳麥里傳出的用于幫助集中精神的音樂(lè)。現(xiàn)實(shí)情況是,大多數(shù)的獨(dú)自工作的程序員每天只花一小段時(shí)間用于真正的編程:各種形式的干擾事情層出不窮,整天他們都在進(jìn)入狀態(tài)和失去狀態(tài)的循環(huán)中來(lái)來(lái)回回。然而,有個(gè)辦法能解決這個(gè)問(wèn)題:結(jié)對(duì)編程。兩個(gè)程序員,一臺(tái)電腦。沒(méi)有Email,沒(méi)有Twitter,沒(méi)有手機(jī)電話(至少?zèng)]有無(wú)計(jì)劃的電話;你可以在有規(guī)律的間隔休息時(shí)間里處理這些事情)。如果按照這樣做,你會(huì)收獲一個(gè)完全編程的一天。而且,和他人一起工作,“進(jìn)入狀態(tài)”的過(guò)程幾乎完全不費(fèi)時(shí)間。這是一種完全不同的工作方式,我深信這種方式的效率遠(yuǎn)高于獨(dú)自工作的形式。事實(shí)上,針對(duì)當(dāng)前的辦公室里的這些“電子設(shè)備引起的注意力分散”情況,我認(rèn)為這是能讓軟件開(kāi)發(fā)團(tuán)隊(duì)獲得最高效率的唯一辦法。
3. 誤解: 創(chuàng)業(yè)公司競(jìng)爭(zhēng)激烈,所以每個(gè)人都該干到精疲力竭為止。
沒(méi)白沒(méi)夜的加班加點(diǎn)并不能讓你做的更多,做的更快。事實(shí)上,這會(huì)讓你適得其反。不錯(cuò),你覺(jué)得一周就能完成。但大部分的創(chuàng)業(yè)公司的開(kāi)發(fā)計(jì)劃都會(huì)比這個(gè)長(zhǎng),程序員通常需要持續(xù)幾個(gè)月的進(jìn)行開(kāi)發(fā)(如果不是幾年的話)來(lái)成功的完成一個(gè)產(chǎn)品。很多創(chuàng)業(yè)公司的行為表現(xiàn)就好象是這罐金子就放在那個(gè)墻角,只要能再努力一點(diǎn)就能拿到它。很快,開(kāi)發(fā)人員的精力就被榨干了,如僵尸一般只是做出在加班的樣子,沒(méi)有任何的工作效率。高強(qiáng)度的工作,只是從短期來(lái)看會(huì)獲得更多的工作效率。著名的開(kāi)發(fā)公司Pivotal幫助過(guò)成百上千的創(chuàng)業(yè)公司開(kāi)發(fā)過(guò)系統(tǒng),從來(lái)都是嚴(yán)格按照40小時(shí)工作日來(lái)完成任務(wù)的。
4. 誤解: 工期緊必然需要走捷徑。
很多團(tuán)隊(duì)都以市場(chǎng)壓力大、需要立即發(fā)布產(chǎn)品為由,寫(xiě)出劣質(zhì)的代碼。寫(xiě)出的測(cè)試程序繞開(kāi)問(wèn)題部位;瘋狂的攻堅(jiān)沖鋒中認(rèn)真設(shè)計(jì)原則被拋在腦后。但是,作為各個(gè)軟件開(kāi)發(fā)團(tuán)隊(duì),大家都一樣。高效能的團(tuán)隊(duì)在成功之余不失英雄本色:正相反,當(dāng)壓力出現(xiàn)時(shí),他們巋然不動(dòng),以自身深厚的功底成功化解任務(wù)。我們無(wú)數(shù)次聽(tīng)到過(guò)高壓下出高成就的傳奇故事 —— 要么是軍事行動(dòng)、專業(yè)運(yùn)動(dòng),要么是飛行員在河上強(qiáng)行降落 —— 其中的原因無(wú)非是英雄們的那句話,“我們受過(guò)專門訓(xùn)練”。
5. 誤解:開(kāi)發(fā)人員應(yīng)該全權(quán)負(fù)責(zé)自己的代碼。
負(fù)責(zé)自己的代碼,聽(tīng)起來(lái)很正確。理所當(dāng)然的。個(gè)人職責(zé)嘛。可是,開(kāi)發(fā)團(tuán)隊(duì)里在代碼上分配歸屬人就意味著每個(gè)模塊的程序只有一個(gè)開(kāi)發(fā)人員來(lái)寫(xiě),只有一個(gè)人能掌握。這會(huì)導(dǎo)致負(fù)責(zé)模塊的程序員之間產(chǎn)生“地方保護(hù)主義”。對(duì)于公司老板來(lái)說(shuō),這造成了很大的風(fēng)險(xiǎn),因?yàn)閳F(tuán)隊(duì)中損失一個(gè)人就會(huì)影響整個(gè)團(tuán)隊(duì)的進(jìn)程,如果這個(gè)人是負(fù)責(zé)系統(tǒng)的關(guān)鍵核心模塊的,那更會(huì)造成公司業(yè)務(wù)癱瘓。健康的工作方式是讓每個(gè)程序員都經(jīng)手過(guò)系統(tǒng)內(nèi)的所有代碼。結(jié)對(duì)編程能讓你實(shí)現(xiàn)這個(gè)效果,知識(shí)會(huì)從一個(gè)人傳遞到另一個(gè)人。所謂的“巴士指數(shù)”(團(tuán)隊(duì)中的多少人被車撞才會(huì)導(dǎo)致大家都無(wú)法進(jìn)行)是一個(gè)軟件創(chuàng)業(yè)公司的關(guān)鍵風(fēng)險(xiǎn)指標(biāo)。我們這里所說(shuō)的不僅僅指的是巴士在使壞,還有你的競(jìng)爭(zhēng)對(duì)手,他們樂(lè)衷于挖走你最好的程序員。理解整個(gè)系統(tǒng)的人越多,你的公司就越健壯,越有活力。
6. 誤解:你需要一個(gè)怪異的招聘過(guò)程。
你會(huì)在雇用一個(gè)演員時(shí)不進(jìn)行試鏡嗎?如果要試,你就能短暫的做一回導(dǎo)演。這正是如今幾乎所有的公司在招聘程序員時(shí)會(huì)出現(xiàn)的場(chǎng)景。通常的面試都會(huì)談?wù)搼?yīng)聘者的經(jīng)驗(yàn)。這就完了。你可以想象一下,問(wèn)一個(gè)躊躇滿志的演員是否喜歡飾演哈姆雷特這個(gè)角色。你能傳神的扮演他嗎?好的。你被雇用了!很多著名的軟件公司喜歡給應(yīng)聘者出腦筋急轉(zhuǎn)彎題。有些頂級(jí)的公司甚至給候選人進(jìn)行IQ測(cè)試。他們中最可取的是在白板上模擬軟件問(wèn)題,讓候選人解決。這些情況讓人很無(wú)奈。我要說(shuō)的是這非常明顯的道理:招到好的程序員的唯一可靠的方法就是跟他們一起編程。我對(duì)程序員的面試是跟他們進(jìn)行一個(gè)小時(shí)的快速的結(jié)對(duì)編程 —— 而且這只是面試的一個(gè)開(kāi)始。大量的篩選,把他們按滿分100打分。什么樣的會(huì)被選中?思維敏捷,抽象思考能力強(qiáng),掌握各種算法,問(wèn)題解決能力強(qiáng)。而最重要的是,領(lǐng)會(huì)能力。因?yàn)閰f(xié)作是對(duì)團(tuán)隊(duì)來(lái)說(shuō)最重要的東西,如果你不能理解其他人是如何思考的,再聰明也沒(méi)用。
7. 誤解: 專業(yè)化很重要。
非常自然的,管理者遇到問(wèn)題時(shí)習(xí)慣把問(wèn)題分解,各個(gè)擊破。在開(kāi)發(fā)團(tuán)隊(duì)里,這通常慫恿技術(shù)人員專項(xiàng)發(fā)展。前端開(kāi)發(fā),后臺(tái)開(kāi)發(fā),數(shù)據(jù)庫(kù)管理員等等。Brad Feld 在他的博客里建議說(shuō),每個(gè)團(tuán)隊(duì)里都應(yīng)該有個(gè)“全能程序員”,這個(gè)人是個(gè)真正的通才。他是對(duì)的,但他說(shuō)的還不夠。每個(gè)團(tuán)隊(duì)里的每個(gè)成員都應(yīng)該是通才全才。為什么?因?yàn)閷2艑?dǎo)致團(tuán)隊(duì)脆弱。還記得“巴士指數(shù)”嗎?每個(gè)專才都是一個(gè)弱點(diǎn);如果他離開(kāi)了,你找不到替代他的人,你完了。不僅如此,它還能使團(tuán)隊(duì)機(jī)能失調(diào)。專項(xiàng)的人需要把他們負(fù)責(zé)的系統(tǒng)里相互獨(dú)立的模塊通過(guò)定義好的接口相互通信。事實(shí)上,他們每人都寫(xiě)出了各自不統(tǒng)一通信方式。這導(dǎo)致了大量的額外開(kāi)銷,經(jīng)常會(huì)出現(xiàn)“地方保護(hù)主義”或相互指責(zé)。而在著名的Pivotal公司,每個(gè)程序員都要接觸到系統(tǒng)的各個(gè)層面,從HTML和JavaScript到Ruby,到數(shù)據(jù)庫(kù)。而有些人認(rèn)為專才會(huì)在系統(tǒng)的某個(gè)層面上更專業(yè)的,這種說(shuō)法未必站得住腳。如今的軟件技術(shù)變得已經(jīng)不是那么復(fù)雜了。程序員能更容易的掌握各個(gè)層面上的知識(shí)以及如何操作它們。順便說(shuō)一下,這暗示出了另外一個(gè)非常重要的信息:你不再需要為某個(gè)特殊的技術(shù)而招聘人才了。缺少Ruby程序員?好,招一個(gè)Java程序員,培訓(xùn)他使用Ruby(這里使用結(jié)對(duì)編程格外的有效)。有些人稱自己為“服務(wù)器端”程序員?沒(méi)問(wèn)題,讓他們寫(xiě)JavaScript程序,他們很快就能學(xué)會(huì)。
如果他們是人才,那就體現(xiàn)在這里。
it知識(shí)庫(kù):創(chuàng)業(yè)編程七個(gè)錯(cuò)誤認(rèn)識(shí),轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。