練習(xí) 1:流程
譯者:飛龍
協(xié)議:CC BY-NC-SA 4.0
自豪地采用谷歌翻譯
軟件開(kāi)發(fā)世界中有兩種類(lèi)型的流程。首先是團(tuán)隊(duì)流程,這是 Scrum甲锡,敏捷或者極限編程。這些流程旨在幫助一群人合作開(kāi)發(fā)大型代碼庫(kù),而不會(huì)相互干擾弄慰。團(tuán)隊(duì)流程指的是,每個(gè)人如何協(xié)調(diào)蝶锋,代碼行為標(biāo)準(zhǔn)陆爽,報(bào)告和管理監(jiān)督。通常這些團(tuán)隊(duì)流程歸結(jié)為:
- 制作待辦事項(xiàng)的列表
- 執(zhí)行列表上的事情
- 確認(rèn)正確完成了它們
許多團(tuán)隊(duì)流程的錯(cuò)誤就是扳缕,他們?cè)噲D控制對(duì)個(gè)人更好的個(gè)人流程慌闭。極限編程(XP)流程在這方面可能是最糟糕的,甚至指出躯舔,每個(gè)程序員都有另一個(gè)程序員觀察他們的工作驴剔,并在文本編輯器顯示一些錯(cuò)誤的時(shí)候向他們喊叫。我強(qiáng)烈反對(duì)不在某些教育背景下粥庄,將個(gè)人流程元素強(qiáng)加于人的流程丧失。它侮辱了我們的專(zhuān)業(yè)精神,創(chuàng)造一個(gè)獨(dú)斷專(zhuān)行的環(huán)境惜互,不會(huì)促進(jìn)創(chuàng)造力或質(zhì)量布讹。在教育環(huán)境中科侈,規(guī)定學(xué)生使用特定的個(gè)人流程方法是必要的,但在工作環(huán)境中不是炒事。例如臀栈,只有他們是一個(gè)初級(jí)或新手程序員,需要學(xué)習(xí)挠乳,我才強(qiáng)制某些人結(jié)對(duì)編程权薯。團(tuán)隊(duì)流程應(yīng)該是這樣,每個(gè)人都能夠工作睡扬,但他們需要在所需的質(zhì)量水平完成工作盟蚣。
另一種類(lèi)型的流程是個(gè)人流程,我從畫(huà)家卖怜,作家和音樂(lè)家那里得到這個(gè)想法屎开。作為一個(gè)專(zhuān)注質(zhì)量的創(chuàng)意人士,我正在開(kāi)發(fā)一個(gè)流程马靠,幫助你以一致的方式進(jìn)行工作奄抽。事實(shí)上,一個(gè)業(yè)余畫(huà)家甩鳄,音樂(lè)家或作家的標(biāo)志逞度,代表了這些人不解它們的流程。通常聲稱(chēng)沒(méi)有創(chuàng)意的這些人實(shí)際上相反妙啃;他們只是不知道這件事档泽,因此不斷把它弄錯(cuò)。大多數(shù)其他創(chuàng)意學(xué)科都制定策略揖赴,幫助他們從概念中創(chuàng)造完成的作品馆匿,而不會(huì)半途而廢。對(duì)于畫(huà)家來(lái)說(shuō)燥滑,這是一種方法渐北,將繪畫(huà)的問(wèn)題分解為邏輯步驟,來(lái)確保更有可能成功突倍。對(duì)音樂(lè)家來(lái)說(shuō)腔稀,這是一個(gè)類(lèi)似的流程,結(jié)合了平衡做法羽历,保持他們所選的音樂(lè)風(fēng)格的結(jié)構(gòu)焊虏。對(duì)于作家,他們的流程是構(gòu)建自己的作品的一種方式秕磷,使其自然流動(dòng)并且沒(méi)有漏洞和邏輯不一致性(大多數(shù)電視編劇似乎完全沒(méi)有做到)诵闭。
對(duì)于軟件,你的個(gè)人流程需要是某種東西,能夠完成以下任務(wù):
- 確定可行的想法疏尿。
- 讓你開(kāi)始了解這些想法瘟芝,看看他們是否會(huì)工作,并迅速改變它們褥琐。
- 在許多工作會(huì)話(huà)上逐漸優(yōu)化你的想法锌俱,來(lái)避免問(wèn)題或使你能夠輕易恢復(fù)。
- 確保你的想法的實(shí)現(xiàn)的質(zhì)量敌呈,以便你以后不會(huì)被 bug 阻礙贸宏。
- 確保你可以與他人合作(如果你愿意)。
請(qǐng)注意磕洪,我如何說(shuō)吭练,你不必與他人合作。自從開(kāi)源以來(lái)析显,創(chuàng)建軟件的概念就包括了對(duì)社區(qū)的過(guò)高要求鲫咽。如果你不想與別人分享或合作,那么你侮辱了它們的存在谷异,并且被認(rèn)為是一個(gè)反社會(huì)的家伙分尸。問(wèn)題是很少有創(chuàng)意活動(dòng)是在小組中開(kāi)始的,通常在小組中開(kāi)始的創(chuàng)意活動(dòng)最終都沒(méi)有創(chuàng)意晰绎。這種創(chuàng)意火花通常是寓落,一個(gè)或兩個(gè)人有了一個(gè)想法括丁,然后從無(wú)到有實(shí)現(xiàn)了它荞下。制造一個(gè)最終產(chǎn)品,如書(shū)籍史飞,電影和專(zhuān)輯尖昏,可能需要一個(gè)龐大的團(tuán)隊(duì)。許多其他的創(chuàng)作活動(dòng)可以獨(dú)立完成构资,如繪畫(huà)或大多數(shù)視覺(jué)藝術(shù)抽诉。
你永遠(yuǎn)不會(huì)找到一個(gè)藝術(shù)學(xué)校,它要求畫(huà)家只能在團(tuán)隊(duì)中創(chuàng)作一幅畫(huà)吐绵。軟件不像繪畫(huà)和寫(xiě)作一樣迹淌,不是獨(dú)立的創(chuàng)作流程,沒(méi)有任何理由是這樣己单。軟件是一個(gè)模塊化的學(xué)科唉窃,這意味著你可以自己創(chuàng)造一切,而其他人仍然可以使用它纹笼,即使他們永遠(yuǎn)不會(huì)和你談話(huà)纹份,永遠(yuǎn)不會(huì)寫(xiě)程序。你可以是一個(gè)十足的混蛋,人們?nèi)匀豢梢允褂媚愕能浖А?xiě)作和繪畫(huà)都是一樣的件已。有很多品行不端的作家,畫(huà)家和音樂(lè)家元暴,他們?nèi)匀皇艿綌?shù)以百萬(wàn)計(jì)的人的崇拜篷扩。
如果你按照個(gè)人流程開(kāi)始工作,有人試圖告訴你需要分享茉盏,或者你是一個(gè)反社會(huì)的混蛋瞻惋,那么他們就是在罵你。人們有權(quán)保持隱私援岩,獨(dú)自一人做自己的事情歼狼。要求你為較大項(xiàng)目做出貢獻(xiàn)的人,似乎只有那些啟動(dòng)這些較大項(xiàng)目的人享怀,似乎都在賺錢(qián)羽峰。在這一點(diǎn)上相信我,我已經(jīng)為軟件世界貢獻(xiàn)了巨額資金添瓷,我還去參加會(huì)議梅屉,但人們說(shuō)我不是一個(gè)貢獻(xiàn)者,因?yàn)槲覜](méi)有為他們的項(xiàng)目編寫(xiě)代碼(盡管他們從來(lái)沒(méi)有幫我做過(guò)一件事情)鳞贷。
在這本書(shū)中坯汤,當(dāng)我說(shuō)“流程”的時(shí)候,我的意思是個(gè)人流程搀愧。我很少涵蓋直接關(guān)于與他人合作的任何事情惰聂,因?yàn)橛幸欢褧?shū)已經(jīng)涵蓋了你應(yīng)該如何與他人合作。有很少的書(shū)籍可以幫助你按照自己的個(gè)人流程工作咱筛,并為你定義處理什么搓幌,以及為什么。對(duì)于你想要專(zhuān)注的事情迅箩,自我為中心溉愁、貪婪、反社會(huì)或者暴虐都沒(méi)有任何錯(cuò)誤饲趋,所以你可以在你所愛(ài)的東西上做得更好拐揭。
挑戰(zhàn)練習(xí)
練習(xí)實(shí)際上是寫(xiě)下你的想法,以及你似乎有什么問(wèn)題奕塑。在這個(gè)階段你可能不知道你的工作方式堂污,因?yàn)槟悴皇呛苡薪?jīng)驗(yàn)。為了幫助你爵川,我編寫(xiě)了一個(gè)問(wèn)題列表:
- 長(zhǎng)時(shí)間處理項(xiàng)目時(shí)有問(wèn)題嗎敷鸦?
- 你是否傾向于編寫(xiě)有缺陷的代碼,而不知道為什么?
- 你熱衷于編程語(yǔ)言扒披,但從來(lái)沒(méi)有實(shí)現(xiàn)過(guò)任何東西值依?
- 你不記得 API 嗎?我也是啊
- 你是否感到自卑或像會(huì)被抓住的騙子碟案?
- 你擔(dān)心自己是否是一個(gè)“真正的程序員”愿险?
- 你不知道如何選取一個(gè)想法,將其從零開(kāi)始變成代碼价说?
- 你有入門(mén)的問(wèn)題嗎辆亏?
- 你在混亂的環(huán)境中工作嗎?
- 你是否完成了你的項(xiàng)目的第一個(gè)實(shí)現(xiàn)鳖目,不知道如何更進(jìn)一步呢扮叨?
- 你是否在代碼的頂部繼續(xù)插入代碼,直到產(chǎn)生了巨大的混亂呢领迈?
想想這些問(wèn)題彻磁,然后嘗試寫(xiě)下你在處理項(xiàng)目中所做的事情。如果你沒(méi)有工作經(jīng)驗(yàn)狸捅,請(qǐng)寫(xiě)下你認(rèn)為應(yīng)該在項(xiàng)目中做什么衷蜓。
研究性學(xué)習(xí)
- 再寫(xiě)一些這樣的問(wèn)題,然后回答他們尘喝。
- 問(wèn)其他你可能知道的程序員磁浇,他們的流程是什么。你會(huì)發(fā)現(xiàn)他們可能不知道朽褪。
深入學(xué)習(xí)
要記住的是置吓,人們說(shuō)他們的流程是什么,和他們實(shí)際做什么鞍匾,可能是截然不同的交洗。我們?nèi)祟?lèi)傾向于使用一種比現(xiàn)實(shí)更積極,更合乎邏輯的方式記住事情橡淑。在這本書(shū)中,你將打破這種習(xí)慣咆爽,并使用外部記錄的指標(biāo)(可能是屏幕錄像)來(lái)確定你做什么梁棠。這不是你應(yīng)該永遠(yuǎn)做的事情,但是當(dāng)你提高編碼技能時(shí)斗埂,這是一個(gè)很大的幫助符糊。但是,當(dāng)你詢(xún)問(wèn)一些其他更成功的程序員呛凶,它們的流程是什么男娄,要記住,他們沒(méi)有這樣做,很可能他們告訴你的不是他們做的事情模闲。如果你能找到一個(gè)更有經(jīng)驗(yàn)的程序員建瘫,愿意在工作時(shí)記錄他們的屏幕,那么比起詢(xún)問(wèn)他們做什么尸折,這可能更有啟發(fā)意義啰脚。我建議去觀看其他程序員的屏幕錄像,只是看看他們?nèi)绾翁幚韱?wèn)題并記錄筆記实夹。