成就職業(yè)理想:九十七條架構(gòu)師必知的事情
51CTO 發(fā)表于:11年06月29日 10:16 [轉(zhuǎn)載] 51CTO
60. Start with a Walking Skeletonby Clint Shank
【從可行走的骨架開始】
軟件開發(fā)中,越早發(fā)現(xiàn)問題,修改的代價(jià)越小。因此,要及早將各個(gè)部分聯(lián)接起來,形成一套可行走的骨架,按照用戶需求的優(yōu)先級,先驗(yàn)證重要的需求。驗(yàn)證一輪后,進(jìn)行下一輪開發(fā),調(diào)整骨架、補(bǔ)充肌體,實(shí)現(xiàn)生長,等待后續(xù)的驗(yàn)證。通過這種迭代、演化的方式,保證項(xiàng)目向正確的方向前進(jìn)。
61. Share your knowledge andexperiencesby Paul W. Homer
【分享你的知識和經(jīng)驗(yàn)】
軟件業(yè)是一個(gè)年輕的行業(yè),每個(gè)人都需要學(xué)習(xí)和進(jìn)步。和他人分享你的知識、經(jīng)驗(yàn),讓我們大家都發(fā)揮出全部的潛力,讓這個(gè)行業(yè)的明天更加燦爛。
62. Make sure the simple stuff issimple by Chad LaVigne
【簡單事情簡單辦】
設(shè)計(jì)人員往往會炫耀自己的知識,對簡單的問題設(shè)計(jì)復(fù)雜的解決方案。復(fù)雜的方案往往走向延期、成本超支甚至失敗。把聰明才智留著對付真正復(fù)雜的問題吧,不要再把問題復(fù)雜化。今天的事情今天辦,也不要把今天的問題拖到明天,以為和明天的問題一起解決是什么智慧。要知道,處理了今天的問題,才能通過反饋引出明天的需求。
63. If you design it, you should beable to code it. by Mike Brown
【只設(shè)計(jì)自己會編碼的架構(gòu)】
架構(gòu)師總是想創(chuàng)造精巧而新潮的設(shè)計(jì)。可是這樣的設(shè)計(jì)對項(xiàng)目其實(shí)是有影響的。如果使用了一些自己沒有動手做過的框架或者模式,不僅不能準(zhǔn)確地估計(jì)工作量,而且還帶來開發(fā)人員學(xué)習(xí)周期不明、新元素隱藏的問題不明、削弱開發(fā)人員對架構(gòu)師的信任、給項(xiàng)目帶來不必要的風(fēng)險(xiǎn)等副作用。記住:架構(gòu)師首先是開發(fā)人員。
64. The ROI variable by GeorgeMalamidis
【計(jì)算投資回報(bào)】
在軟件項(xiàng)目中的每一項(xiàng)決策,都可以視為是投資。投資是講求回報(bào)的,即便不是金錢上的回報(bào),也要給項(xiàng)目干系人帶來某種可見的好處,比如降低缺陷。把投入的成本和預(yù)期的回報(bào)相比較,計(jì)算出回報(bào)率,才能合理地確定是否要做某件事。
65. Your system is legacy, designfor it. by Dave Anderson
【系統(tǒng)即遺產(chǎn),需要精心設(shè)計(jì)】
一個(gè)系統(tǒng)即便最業(yè)務(wù)前衛(wèi)、技術(shù)先進(jìn),對于下一任負(fù)責(zé)人來說,也是一份遺產(chǎn)。當(dāng)今軟件的特點(diǎn)就是迅速淘汰。如果想自己的系統(tǒng)投入生產(chǎn),存活哪怕只是幾個(gè)月,也得接受一個(gè)現(xiàn)實(shí),那就是維護(hù)人員需要修修補(bǔ)補(bǔ)。這意味著:
清楚——各個(gè)組件和類的執(zhí)行條理清楚;
可測——系統(tǒng)各部分的特性容易驗(yàn)證;
正確——系統(tǒng)按設(shè)計(jì)或常規(guī)運(yùn)行;
追溯——為不了解系統(tǒng)內(nèi)部情況的人提供問題追溯信息,以便快速定位和修復(fù)缺陷。
要抱著為繼任者留下遺產(chǎn)的態(tài)度來設(shè)計(jì)系統(tǒng)。
66. If there is only one solution,get a second opinion by Timothy High
【只有一個(gè)對策時(shí),請教他人吧】
軟件架構(gòu)是在各種條件下對某個(gè)問題提出解決方案。如果只能想出一個(gè)對策,這個(gè)對策往往不是最佳的,因?yàn)楹茈y用一個(gè)解決方案滿足所有條件,通常有個(gè)按照需求的優(yōu)先級進(jìn)行取舍的過程。只能想出一個(gè)對策,也許是因?yàn)樽约喝狈?jīng)驗(yàn),或者自己的經(jīng)驗(yàn)不適于新的問題領(lǐng)域。比如,一個(gè)長期設(shè)計(jì)三層結(jié)構(gòu)的客戶端-服務(wù)器應(yīng)用的人,碰到的是瀏覽器-服務(wù)器領(lǐng)域的問題。去向其他處理過類似問題的人請教,才能獲得更好的意見。
67. Understand the impact of changeby Doug Crawford
【理解變化的影響】
好的架構(gòu)師能把復(fù)雜度降到最低,并能設(shè)計(jì)出通用程度足以經(jīng)受變化考驗(yàn)的解決方案。所謂變化,表現(xiàn)為:功能需求變化、規(guī)模演變、系統(tǒng)接口修改、團(tuán)隊(duì)人員進(jìn)出等等。軟件項(xiàng)目中變化的廣度和復(fù)雜度是無法預(yù)測的,不能避免前進(jìn)道路上所有的波折。但架構(gòu)師應(yīng)該識別出那些事關(guān)項(xiàng)目成敗的大波折。他不僅要管理變化,還要確保變化是可管理的。比如:一個(gè)高度分布的系統(tǒng),對流程的變化是在所難免的,可是又要承載長期運(yùn)行、有狀態(tài)的事務(wù),那么就必須要設(shè)計(jì)成能同時(shí)支持新老版本的過程。
68. You have to understand Hardwaretoo by Kamal Wickramanayake
【必須了解硬件】
架構(gòu)師不僅要關(guān)注軟件架構(gòu),也要關(guān)注硬件容量。硬件容量規(guī)劃是系統(tǒng)設(shè)計(jì)中的一個(gè)重要部分。如何準(zhǔn)確地預(yù)測用戶數(shù)量及其變化趨勢,如何評估硬件的發(fā)展,都是做容量規(guī)劃的必備知識。
69. Shortcuts now are paid backwith interest later by Scot Mcphee
【現(xiàn)在節(jié)省的,將來加倍還】
在項(xiàng)目開發(fā)階段,可能會省略哪些不產(chǎn)生直接價(jià)值的工作,比如單元測試,又比如設(shè)計(jì)優(yōu)化,F(xiàn)在節(jié)省了一點(diǎn)工作,將來系統(tǒng)進(jìn)入維護(hù)階段以后,要改正隱藏的錯誤,要花幾倍的代價(jià)。
70. "Perfect" is theEnemy of "Good Enough" by Greg Nyberg
【優(yōu)秀是良好的敵人】
作為軟件解決方案,做到良好就行了,不要為了追求優(yōu)秀而過度設(shè)計(jì)。良好的東西,在功能性、可維護(hù)性、性能指標(biāo)等方面都能滿足一般要求。如果過度追求優(yōu)秀,可能突出了某一方面,而損害了其它方面,為系統(tǒng)的長期運(yùn)行維護(hù)帶來不好的影響。
71. Avoid "Good Ideas"by Greg Nyberg
【別提“好點(diǎn)子”】
當(dāng)項(xiàng)目在按部就班地前進(jìn)的時(shí)候,大家都感覺良好。這時(shí)有人就會提出所謂的好點(diǎn)子。比如:
“如果在這里改動一下,就太酷了。”
“嗨,他們又發(fā)布那個(gè)框架的新版本了,我們得趕緊更新。”
“一邊開發(fā)新模塊,一邊重構(gòu)老模塊。”
“這項(xiàng)技術(shù)太強(qiáng)大了,可以用在我們的項(xiàng)目上。”
“我?guī)湍阆肓艘幌,發(fā)現(xiàn)一個(gè)好主意!”
這些好點(diǎn)子往往是項(xiàng)目殺手。一旦付諸實(shí)踐,對項(xiàng)目造成的改動不是當(dāng)初想象的那么簡單。除了極個(gè)別之外,大部分會把項(xiàng)目慢慢地拖入深淵,有的甚至?xí)岉?xiàng)目迅速失敗。
72. Great content creates greatsystems by Zubin Wadia
【好內(nèi)容成就好系統(tǒng)】
不管系統(tǒng)的需求分析、設(shè)計(jì)、開發(fā)、安全、維護(hù)做得多好,如果忽略了內(nèi)容建設(shè),則它都不會是一個(gè)好系統(tǒng)。對于那些以內(nèi)容為基礎(chǔ)的系統(tǒng)來說,內(nèi)容就是成功和失敗的分界線,F(xiàn)aceBook 對 Orkut, Google 對 Cuil,NetFlix 對 BlockbusterOnline,等等,都是以內(nèi)容取勝的例子。評價(jià)內(nèi)容時(shí),考慮一下幾個(gè)條件:數(shù)量是否足夠?時(shí)間上是否及時(shí)?渠道上是否豐富 (RSs、紙質(zhì)表單、電子郵件等)?
73. The Business Vs. The AngryArchitect by Chad LaVigne
【業(yè)務(wù)人員與憤怒的架構(gòu)師】
架構(gòu)師是為業(yè)務(wù)人員服務(wù)的,要忍耐,不要和業(yè)務(wù)人員爭吵。如果你和他們分歧實(shí)在太大,那就只有換個(gè)自己覺得輕松的地方了。
74. Stretch key dimensions to seewhat breaks by Stephen Jones
【撐大關(guān)鍵維度,發(fā)現(xiàn)破綻】
系統(tǒng)各方面的處理能力是有一定的前提條件的。這些前提條件在實(shí)際運(yùn)行中有可能發(fā)生變化。對于系統(tǒng)的關(guān)鍵維度,要進(jìn)行驗(yàn)證,看看如果運(yùn)行負(fù)荷超出,哪些地方會被撐破。
75. Before anything, an architectis a developer by Mike Brown
【架構(gòu)師首先是開發(fā)者】
架構(gòu)設(shè)計(jì)要落實(shí)到開發(fā)工作。如果你設(shè)計(jì)它,你就要能夠編碼它。如果連你都不知道如何編碼,別指望別人能編碼。
76. A rose by any other name willend up as a cabbage by Sam Gardiner
【玫瑰不叫玫瑰,它就淪落到白菜的地位】
如果你不知道如何稱呼一個(gè)系統(tǒng),你就不可能編寫它。如果你對一個(gè)系統(tǒng)三改其名,你最好先停下來想想到底要做什么,不要急于構(gòu)建它。
77. Stable problems get highquality solutions by Sam Gardiner
【穩(wěn)定的問題才有優(yōu)質(zhì)的解決方案】
現(xiàn)實(shí)世界的解決方案不是挑戰(zhàn)有難度的學(xué)術(shù)研究。設(shè)計(jì)現(xiàn)實(shí)的方案時(shí),要把問題劃分為穩(wěn)定、有限的小塊,再針對明確的小塊來進(jìn)行解決。穩(wěn)定的問題得到穩(wěn)定的設(shè)計(jì),穩(wěn)定的設(shè)計(jì)得到優(yōu)質(zhì)的解決方案。
78. It Takes Diligence by BrianHart
【勤勉】
一招不慎,滿盤皆輸。架構(gòu)師應(yīng)當(dāng)勤勉,認(rèn)認(rèn)真真做好每一項(xiàng)平凡的工作。
79. Take responsibility for yourdecisions by Yi Zhou
【對決策負(fù)責(zé)】
大約三分之二的項(xiàng)目是失敗的,表現(xiàn)有工期延誤、預(yù)算超支、用戶不滿等。失敗的重要原因是架構(gòu)不當(dāng)。通過以下幾條,可以做到對架構(gòu)決策負(fù)責(zé):
準(zhǔn)備決策時(shí),務(wù)必反復(fù)推敲;
進(jìn)行決策時(shí),務(wù)必決策有據(jù)(書面憑據(jù));
做出決策后,做到定期自評;
有疑難問題,請教領(lǐng)域?qū)<摇?/p>
公司簡介 | 媒體優(yōu)勢 | 廣告服務(wù) | 客戶寄語 | DOIT歷程 | 誠聘英才 | 聯(lián)系我們 | 會員注冊 | 訂閱中心
Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技術(shù)有限公司 版權(quán)所有.