|
改變游戲是一種心態(tài)。- 羅伯特羅德里格茲 開發(fā)軟件非常像烹飪。所有傳奇廚師必須首先掌握食物準備和廚房過程的共同基礎(chǔ)。只有這些基本原則才能發(fā)揮其獨特的個性特征。偉大的開發(fā)人員在他們來時具有創(chuàng)造性的多樣性,但他們共享一種奇怪的共同心態(tài),他們在這種心態(tài)上建立自己的技藝。 沒有想象力,我認為我是優(yōu)秀的軟件開發(fā)人員之一。但是,我確實要繼續(xù)研究優(yōu)秀軟件開發(fā)人員的有效思維模式,以便模仿它們。 您為什么要關(guān)心軟件開發(fā)人員的想法?難道他們不是一堆書呆子在鍵盤上敲擊?是的,但軟件開發(fā)人員的思維方式可以應(yīng)用于您生活的許多方面,例如,在您的業(yè)務(wù),您的喧囂,投資,愛好,運動或?qū)W習(xí)新技能。 讓我們剖析一下軟件開發(fā)人員如何思考的基石概念。使用您的抽象思維,您可以將它們用作心理藍圖,以吸引您的日常事業(yè)。 學(xué)習(xí)如何學(xué)習(xí) 如果我必須選擇一項對軟件開發(fā)人員來說絕對必要的技能,那就是自學(xué)能力。 開發(fā)人員通過閱讀書籍,使用博客,學(xué)習(xí)輔導(dǎo),參加培訓(xùn)和做迷你項目來自學(xué)。 當遇到編程問題時,開發(fā)人員會為Stack Overflow等論壇提供提示和解決方案。通常情況下,解決方案可能已被別人弄清楚了。 是的,它可以作為軟件開發(fā)人員生存,而無需學(xué)習(xí)任何新東西。這樣做的高昂代價是成為固定產(chǎn)品或技術(shù)角色。 學(xué)習(xí)新東西是消費信息和為自己嘗試的東西之間的微妙舞蹈。如果依賴于消費信息,您將無法獨立生成解決方案。如果您只是通過反復(fù)試驗來學(xué)習(xí),那么您將錯過利用現(xiàn)成的信息。例如,閱讀寫作確實會讓你成為一個更好的作家,但只有你把時間寫進去。 培養(yǎng)學(xué)習(xí)的熱情。如果你這樣做,你永遠不會停止成長。 - Anthony J. D'Angelo 除了法律或醫(yī)學(xué)領(lǐng)域之外的一些例外,自學(xué)新技能的能力可以勝利正規(guī)教育。就像軟件開發(fā)人員一樣,我們應(yīng)該不斷地教自己新技能,以保持我們的競爭意義。 面臨的挑戰(zhàn)是平衡兩種自我教育途徑:積極的信息消費和通過反復(fù)試驗的學(xué)習(xí)。 不要重新發(fā)明輪子 在開發(fā)軟件時,您幾乎不必從頭開始。您可以從眾多編程語言,框架,基礎(chǔ)架構(gòu)和工具中進行選擇。 盡管現(xiàn)有工具和其他供應(yīng)商提供的軟件可用,但軟件行業(yè)中的非發(fā)明(NIH)綜合癥描述了重新發(fā)明輪子的趨勢。很容易陷入這個陷阱,因為創(chuàng)建軟件比在其他行業(yè)中創(chuàng)建組件要便宜得多。 有充分的理由重新發(fā)明自己的車輪。一個非常有效的原因是,現(xiàn)有的解決方案不符合您的要求。 另一方面,重新發(fā)明輪子有可怕的理由,包括但不限于: 1、被自我欺騙,假設(shè)自己開發(fā)的解決方案總是更好 2、懶得弄清楚那里有什么解決方案 重用現(xiàn)有軟件具有節(jié)省時間和精力的明顯好處。從長遠來看,您將受益于軟件開發(fā)人員提供的錯誤 在進行風(fēng)險投資時,如果我們能夠采用現(xiàn)有的解決方案,那么我們應(yīng)該謹慎行事。我們可以問自己 1、那里有什么相關(guān)的想法? 3、我們可以建立任何現(xiàn)有的解決方案嗎? 5、我們可以使用任何可用的服務(wù)嗎? 小迭代 軟件開發(fā)過程是一個迭代過程。從日常編程任務(wù)到跨越數(shù)周或數(shù)月的產(chǎn)品發(fā)布,可以在多個層面上看到迭代思維。 迭代的基本思想是計劃,執(zhí)行,測試和學(xué)習(xí)。 迭代越短,反饋就越快地回到下一個開發(fā)周期。在20世紀90年代之前,通常會有更長的產(chǎn)品開發(fā)周期,在解決方案到達客戶之前最長可達6個月。目前的方法是迭代次數(shù)要短得多。一些軟件公司甚至每天多次為生產(chǎn)系統(tǒng)部署解決方案。 當我們面對那些“可能,應(yīng)該擁有,會做得更好”的時刻時,采用迭代方法可以讓我們對自己不那么苛刻。這是因為如果我們錯過了在這次迭代中做得好的事情,我們可以在下一次迭代中修復(fù)它。 知道我們不必完美,我們必須不斷改進,這是令人欣慰的。 迭代工作的另一個主要好處是,我們可以從一開始就把一切都搞清楚的心理負擔減輕。在不忽視大局的情況下,我們只需要為當前迭代提供足夠的計劃和決策。未來迭代的決定暫時可以省略,因為它們還取決于當前迭代的學(xué)習(xí)。 迭代思維模式幾乎可以應(yīng)用于任何基于項目的任務(wù)。該方法系統(tǒng),有效,實用且易于實施。 測試,測試,測試 軟件開發(fā)人員工作的一個組成部分是測試。盡管代碼通常是根據(jù)一個人的意圖編寫的,但仍然會有錯誤。由無意識錯誤或錯誤假設(shè)引起的錯誤。 一個好的軟件開發(fā)人員永遠不會認為一個軟件沒有bug。整個軟件行業(yè)都認為錯誤只是整個過程的一部分。這就是創(chuàng)建如此多的工具,框架和方法來檢測錯誤的原因。 測試的目標是盡快捕獲那些討厭的錯誤。檢測到較早的錯誤,它們要修復(fù)的成本越低。如果需要花費5分鐘來修復(fù)開發(fā)人員的計算機上的錯誤,則可能需要花費數(shù)百萬美元才能達到客戶方面。 一種有效的測試方法是在較小的范圍內(nèi)嘗試一些東西。例如,如果我們假設(shè)我們可以以全職攝影師的身份學(xué)習(xí),那么在退出我們的全職工作之前嘗試將其作為一個側(cè)面的喧囂是個好主意。 我們也有可能對自己有錯誤的假設(shè)。典型的錯誤是對我們利益的假設(shè)。通過現(xiàn)代媒體,很容易獲得浪漫的成功觀,而不會看到那些已經(jīng)實現(xiàn)它們的人投入的努力。這種傾斜的觀點可能會導(dǎo)致我們在某些領(lǐng)域假設(shè)虛假利益。找出我們是否喜歡某事的唯一方法是在全押之前測試水域。 在我們檢查它們之前,假設(shè)只不過是未經(jīng)證實的想法在我們頭腦中旋轉(zhuǎn)。測試是將假設(shè)提煉為經(jīng)過驗證的真理的好方法。測試的關(guān)鍵是盡可能少地提交資源,然后盡早發(fā)現(xiàn)錯誤。 應(yīng)用學(xué)習(xí)模式 軟件工程中的設(shè)計模式是針對重復(fù)出現(xiàn)的問題的通用,可重用的解決方案。它不是一段代碼,而是一個可以在編寫自己的代碼時應(yīng)用的構(gòu)思模板。 讓我們將Facade模式作為設(shè)計模式的具體示例。 軟件系統(tǒng)可以包含多個子系統(tǒng)的復(fù)雜混亂。如果我們在設(shè)計中不小心,那么子系統(tǒng)的組件之間將會發(fā)生混亂的通信。Facade模式告訴我們使用“facade”來隱藏子系統(tǒng)的復(fù)雜性。其他子系統(tǒng)只是與該外觀進行對話,而不是該特定子系統(tǒng)的各個組件。 Facade模式不是一種新模式。它最初是在1994年出版的題為“設(shè)計模式:可重復(fù)使用的面向?qū)ο筌浖脑亍钡臅忻枋龅摹H欢?,它今天仍然非常相關(guān)。 優(yōu)秀的軟件開發(fā)人員在軟件中研究設(shè)計模?他們理解設(shè)計模式可以提供一種結(jié)構(gòu)化的方法來解決他們遇到的問題。更重要的是,他們知道何時應(yīng)用哪種模式。 研究擺在我們面前的慷慨捐助將使我們免于因錯誤而發(fā)現(xiàn)相同想法的痛苦。應(yīng)用模式來解決問題就像解決魔方一樣。當您知道必須采取的步驟時,問題突然變得容易解決。 有明顯的方法來學(xué)習(xí)如何使用指南或課堂培訓(xùn)課程等模式。然而,模式隨處可見,有時隱藏在明顯的視線中。我最喜歡學(xué)習(xí)模式的方法之一是閱讀在各自領(lǐng)域取得成功的人的傳記。 模式絕不是可以普遍應(yīng)用的千篇一律的解決方案。它們就像棚子里的工具。經(jīng)驗和洞察力將告訴我們,并非每項任務(wù)都可以用錘子解決。 不要愛上你的工作 偉大的軟件開發(fā)人員實踐了一個非常重要的區(qū)別:他們喜歡他們所做的事情,但他們不會愛上他們所做的工作。 為了在任何事情上都要體面,包括軟件開發(fā),必須有一定的激情門檻。我們需要熱情的火力推動我們超越世俗高原的挑戰(zhàn)性駝峰。 盡管有激情,但優(yōu)秀的開發(fā)人員并不依賴于他們所創(chuàng)作的作品。這種類似禪宗的分離提供了多種祝福,特別是當我們的工作需要我們創(chuàng)新時: 1、對其他人的建設(shè)性反饋更開放 2、評估替代解決方案時更客觀 4、盡管知道他們被丟棄的風(fēng)險很高,但他們更愿意嘗試激烈的想法 沉沒成本謬誤可以解釋我們工作的依戀。這意味著我們投入的東西越多,放棄它就越難。 與我們所建造的東西脫離的概念可以在生活的各個方面都有所幫助。分遣隊阻止我們長時間保持某種東西,特別是當它不再適用于我們目前的事業(yè)時。 也許我們正在緊緊抓住那個半死不活的低利潤方面的喧囂,這已經(jīng)耗盡了我們的時間。或許是時候重新評估我們的整個投資組合。 對我們工作的依戀類似于站在森林里,緊緊抓住我們曾經(jīng)雕刻過的木偶。創(chuàng)造更美麗的木偶有無窮無盡的機會。制作新產(chǎn)品的第一步是放棄舊產(chǎn)品。 |
|
|