- 編程原則:來自代碼大師Max Kanat-Alexander的建議
- (美)馬克斯·卡納特-亞歷山大
- 1141字
- 2021-07-09 20:27:42
第2章 工程師的態(tài)度
在每一類工程領(lǐng)域里,每一位工程師都應(yīng)該有的工作態(tài)度是:
我可以用正確的方式解決這個問題。
無論這個問題是什么,解決問題的正確方式總是存在的。它不僅觸手可及,在項目中也存在落地可能性。唯一不這么去做的正當理由只可能是缺少資源。無論如何,你應(yīng)該始終認為正確的方式是存在的,并且你也有能力用該方式應(yīng)對這個問題,在資源足夠的情況下,它還是你解決問題的首選方案。
“正確方式”通常指“在考慮到未來所有可能發(fā)生的合理情況的前提下給出的解決方案,這個前提甚至包括那些未知的和難以想象的情況”。
如果一座橋不需要人們持續(xù)地投入精力進行養(yǎng)護,但它卻可以輕松應(yīng)對正常的自然環(huán)境條件,或者是正常的運輸壓力,那么就可以說這座橋是以“正確方式”建造的。
如果軟件代碼在保持簡約的同時,也為將來可能出現(xiàn)的合理功能變更需求提供了靈活性,那么就可以說它是以“正確方式”設(shè)計的。
你可以找到很多不采用正確方式解決問題的荒唐理由:
□我不知道正確方式是什么。通常這意味著你需要學(xué)習(xí)更多的知識,或者加深對它們的理解,才能發(fā)掘出正確方式是什么。當我遇到這種情況時,我會暫停思考這個問題,而恰恰正當我要起身離開或者第二天回來繼續(xù)工作時,答案就自然而然地出現(xiàn)了。在還沒弄清楚正確方式是什么之前,我會盡量不要妥協(xié)地使用非正確的方式來解決問題。
□團隊無法對什么是正確方式達成一致。有時團隊成員們會對什么是“正確方式”進行爭論,在爭論的過程中主題會漸漸偏離初衷,變得讓人摸不著頭腦。人們并不擅長集體決策。我們也都知道軟件不是依賴某個群體的決策而設(shè)計出來的,我懷疑“依靠群體決策進行設(shè)計”在其他工程領(lǐng)域的效果也不會很理想。
這里的解決方案是,把問題分配給一位對你們的工作領(lǐng)域有所了解,同時富有經(jīng)驗并且值得信賴的工程師,也許在仔細分析了現(xiàn)有分歧并收集了相關(guān)信息之后,他或她可以依據(jù)當下的有效工作流程標準,獨立地決定正確方式是什么。
□因為現(xiàn)在我太懶/累/饑餓/無法集中精力,導(dǎo)致我無法用正確方式實現(xiàn)它。這時常發(fā)生在我們每個人身上。可能現(xiàn)在時間已經(jīng)來到了凌晨1點,你已經(jīng)在項目上馬不停蹄地工作了15個小時,你只是希望這該死的代碼能夠正常運轉(zhuǎn)起來!盡管如此,還是休息一會兒再繼續(xù)吧。世界末日沒有來臨,問題終究會得到解決。
睡一覺,吃些東西,散散步,做一些能夠改善思緒的事情,直到你想用正確方式解決問題的意愿又回來了,再嘗試繼續(xù)工作吧。如果你陷入的狀態(tài)始終無法讓你用正確方式解決問題,那就意味著你確實需要休息了。
這也算是工作內(nèi)容的一部分——勸告自己“這需要用正確方式來實現(xiàn),而現(xiàn)在實現(xiàn)它的正確方式,就是休息一會稍后再繼續(xù)”。這其實也是在正確地履行你的工作職責(zé),在將項目引向成功。
最重要的是,你需要堅定不移地相信自己有能力以正確方式解決問題。
——Max
- Flask Web全棧開發(fā)實戰(zhàn)
- Offer來了:Java面試核心知識點精講(原理篇)
- Learning SAP Analytics Cloud
- VMware vSphere 6.7虛擬化架構(gòu)實戰(zhàn)指南
- Instant Typeahead.js
- AngularJS深度剖析與最佳實踐
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- Android Wear Projects
- Programming Microsoft Dynamics? NAV 2015
- Go語言從入門到精通
- Photoshop CC移動UI設(shè)計案例教程(全彩慕課版·第2版)
- Instant GLEW
- Eclipse開發(fā)(學(xué)習(xí)筆記)
- Java EE框架開發(fā)技術(shù)與案例教程
- Arduino Robotic Projects