• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            coreBugZJ

            此 blog 已棄。

            為什么開發(fā)者總是選昏招 (轉(zhuǎn))

              當(dāng)前,軟件開發(fā)者在設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)時(shí)總是面臨很多選擇。我們時(shí)常被過多的選擇轟炸并習(xí)慣于應(yīng)付像NoSQL、云、REST、Map-Reduce等流行詞。然而,負(fù)責(zé)設(shè)計(jì)系統(tǒng)的開發(fā)者很容易被誘導(dǎo)而采用沒有明顯優(yōu)點(diǎn)的新技術(shù),反而忽視了那些看起來不夠現(xiàn)代和時(shí)髦的簡單方案。看來KISS原則(Keep it simple,stupid!)雖然常被提起,但在支持企業(yè)級(jí)方案時(shí)卻往往被忽略。這是為什么呢?

              原因可能有很多,下面我總結(jié)了幾條,我想能覆蓋大部分情況。作為職業(yè)開發(fā)者,我強(qiáng)烈認(rèn)為,我們有責(zé)任為雇主提供最好的、長期的解決方案,當(dāng)我們的個(gè)人喜好與此目標(biāo)沖突時(shí),我們應(yīng)該控制自己。軟件開發(fā)仍舊不同于醫(yī)藥或工程領(lǐng)域,但我想我們確實(shí)需要學(xué)習(xí)這些領(lǐng)域中的工作所帶有的專業(yè)精神、責(zé)任和義務(wù)。


              原因1-厭倦重復(fù)

              開發(fā)者經(jīng)常重復(fù)的解決同類問題。不是所有人都能一直從事新工作,就算有機(jī)會(huì),也很可能還是老環(huán)境下的;類似的問題常常已經(jīng)被全球的軟件開發(fā)者解決過成千上萬次了。

              即使之前我們能熟練的解決某一問題,我們還是想嘗試新的事物,這并不奇怪。我們是天生的難題解決者,而且有時(shí)僅僅是想嘗試下新的難題。我確信很多有幾年經(jīng)驗(yàn)的人都看到過這樣的現(xiàn)象,采用不同技術(shù)的新實(shí)現(xiàn)將原功能系統(tǒng)替換掉,而此舉除了滿足新開發(fā)者的個(gè)人喜好之外實(shí)際上沒有什么明確的原因。

              我們應(yīng)該如何處理呢?我們?cè)撊绾慰刂谱约簩?duì)新事物的渴求?比起嘗試最新的NoSQL平臺(tái)來,關(guān)系數(shù)據(jù)庫真讓人煩躁。誰在意是不是我們未能有效利用它呢?哦,我想我們還是有幾項(xiàng)可選的。比如,采取主動(dòng),找到可能受益于新技術(shù)的平臺(tái)構(gòu)建方式。為什么不利用業(yè)余時(shí)間做一些試驗(yàn)性項(xiàng)目來滿足自己對(duì)新技術(shù)的渴望呢?畢竟我們的工作是交付高質(zhì)量軟件,而非取悅自我。

              這里要說明一下,我并不是要?jiǎng)褡枞魏稳耸褂眯录夹g(shù),只是建議一定要了解技術(shù)的優(yōu)點(diǎn),并確認(rèn)這是否是你的最佳選擇;如果說離了這個(gè)新技術(shù)干不成事,那就盡情去用吧!


              原因2-簡歷加料

              這可能是使開發(fā)者選昏招的最悲哀的原因,主要會(huì)影響決策過程不良的團(tuán)隊(duì)。這個(gè)原因也是很常見的。

              目前,軟件開發(fā)中的合同和職位經(jīng)常變動(dòng)——開發(fā)者一兩年跳個(gè)槽很正常。忌諱跳槽的時(shí)代早就過去了。正因如此,開發(fā)者通過不斷的跳槽向上爬。對(duì)平均水平或者不夠熟練的開發(fā)者而言,通過跳槽獲得提升比在一家公司等晉升要容易的多。

              因此,開發(fā)者希望采用新技術(shù)并獲得一些經(jīng)驗(yàn),以此為自己的簡歷增加閃光點(diǎn)。至于新技術(shù)對(duì)平臺(tái)到底有多大用處,重要性倒在其次。通常,真正用到多少并不重要——找新工作的時(shí)候沒有人能假裝他們沒有夸大自己的技能。所以,平臺(tái)在從小變大的過程中,往往因?yàn)楦鞣N原因而死掉,比如使用了未經(jīng)測(cè)試的技術(shù),或者使用了內(nèi)部人士都沒有真正理解的技術(shù)。隨著開發(fā)人員跳到更有前景的地方,公司剩下的就只有因使用了太多技術(shù)而無人維護(hù)的系統(tǒng)了。

              我想大多數(shù)開發(fā)者不會(huì)這么做。當(dāng)面對(duì)要做出錯(cuò)誤選擇的開發(fā)者時(shí),有反對(duì)意見的人要努力阻止他們。


              原因3-同伴壓力

              同伴壓力可能是最難抵制的原因了。我們都愿意相信,我們是獨(dú)立的、可以做出明智的決策的個(gè)體,但我們都是人,即使最敏感的人也是社會(huì)性的動(dòng)物,也想有一個(gè)開心融洽的團(tuán)體。

              當(dāng)面對(duì)新的或者時(shí)髦的技術(shù)時(shí),很多人都有點(diǎn)害怕去抵制實(shí)現(xiàn)那些看起來并未必多好的想法。我們要盡量壓制這種感覺。如果在你所處的環(huán)境中,討論和爭論是重要的(就像人們所期待的那樣),你要隨意的說出你的擔(dān)憂,即使你不完全熟悉最新的和最好的技術(shù)。別忘了雖然軟件技術(shù)變化不定但基本原理幾乎保持不變。要是有些東西看起來不合理,那就說出來。即使你是初級(jí)開發(fā)者,也應(yīng)該自由的加入你的看法——有經(jīng)驗(yàn)不代表就正確。此外,在決策過程中你也可以獲得一些洞察力。


              原因4-缺乏理解

              技術(shù)選擇可能是在開發(fā)者不了解平臺(tái)如何工作,甚至他們都不想去了解的情況下做出的。

              比如,你因?yàn)闆]有高性能關(guān)系數(shù)據(jù)庫經(jīng)驗(yàn),而又擔(dān)心實(shí)現(xiàn)的東西不具有可伸縮性,所以傾向于選擇NoSQL路線。雖然往往這種擔(dān)心是沒有任何理由的。如果你錯(cuò)誤的使用了工具,當(dāng)然它就起不到好的作用。不要在缺乏理解或認(rèn)識(shí)的情況下就輕率的采取行動(dòng)。如果事實(shí)上采用關(guān)系數(shù)據(jù)庫的方案可以很好的實(shí)現(xiàn)系統(tǒng),并且你的平臺(tái)已經(jīng)在使用這種方案,那么僅僅因?yàn)槟銓?duì)當(dāng)前方案不熟悉而引入新的依賴是愚蠢的。

              為了避免這樣的問題,你需要多加閱讀和學(xué)習(xí)!如果你在做技術(shù)選擇,請(qǐng)檢查你的假設(shè)是否成立。就討論中的工具與有經(jīng)驗(yàn)的開發(fā)者溝通,并詳細(xì)咨詢工具的優(yōu)缺點(diǎn)。學(xué)習(xí)可用工具的更多信息并不是浪費(fèi),你的行動(dòng)很有可能在未來得到益處。


              原因#5-誤解或者解決不存在的問題

              這點(diǎn)與前一點(diǎn)有些聯(lián)系,但這個(gè)問題非常重要,值得單獨(dú)討論。

              當(dāng)開發(fā)者定位新技術(shù)時(shí),通常都會(huì)因?yàn)樵摷夹g(shù)可以做X和Y,還能對(duì)抗Z而選擇它。但實(shí)際上,大部分情況下X,Y和Z根本就不是問題。例如,如果我們有一個(gè)只讀的數(shù)據(jù)集需要緩存到集群中的多個(gè)節(jié)點(diǎn)上,有人可能選擇一個(gè)支持分布式數(shù)據(jù)集且每個(gè)節(jié)點(diǎn)上元素都不同的緩存技術(shù)。但是,如果數(shù)據(jù)集很小且我們不修改數(shù)據(jù)集,那分布式緩存有必要嗎?我們將為不存在的問題而引入了速度慢、可靠性差且復(fù)雜度高的新技術(shù)。

              為了預(yù)防這一點(diǎn),開發(fā)者需要確保自始至終都理解問題域,也需要反復(fù)核對(duì)假設(shè)以確保其正確性。有時(shí)我們假設(shè)的事情可能并非事實(shí),所以反復(fù)核對(duì)非常重要,從而避免覆蓋假設(shè)情況的誘惑。非必要的情況下不要增加功能。增加功能也是要耗費(fèi)力氣的,而我們把在后期做修改的代價(jià)看的過高了,卻沒有意識(shí)到我們現(xiàn)在投入相同的努力僅僅是為了避免在以后付出同樣工作進(jìn)行修改的機(jī)會(huì),其實(shí)這種機(jī)會(huì)往往很少出現(xiàn)。


              我們應(yīng)該做什么?

              當(dāng)選擇技術(shù)時(shí),怎么做才是正確的呢?首先,你需要回顧下面幾點(diǎn),盡量形成團(tuán)隊(duì)決策。投入越多,越不容易漏掉那些可能讓你改變決策的信息。

            • 復(fù)查需求——確認(rèn)一致性、容錯(cuò)、性能等需求點(diǎn)。
            • 評(píng)估一下現(xiàn)有的東西能否滿足需求,如果能,那它基本上就是最佳選擇。
            • 調(diào)查其他技術(shù)如何滿足需求,并考慮額外依賴和潛在失效點(diǎn)帶來的成本(沒有免費(fèi)的午餐,新技術(shù)可能都有較大的維護(hù)成本)。
            • 征求團(tuán)隊(duì)中的專家意見——支持你真正理解的。
            • 考察任何其他的關(guān)注點(diǎn),比如價(jià)格、時(shí)間表等。
            • 團(tuán)隊(duì)討論并列出贊成和反對(duì)的理由。

              這只是一些指導(dǎo)原則,你可以采用任何你喜歡的方式,關(guān)鍵還是仔細(xì)和理性的做出決策。

              希望不要有人把本文的意思誤解為新技術(shù)是可怕的或者說要避免新技術(shù)。其實(shí)我已經(jīng)在實(shí)際中使用過NoSQL技術(shù)。我相信它能很好的滿足既有需求,并且我之前曾經(jīng)用它來解決過具體問題。有時(shí)我想我們是糾纏于新技術(shù)里有趣的地方而忘記了我們的最終目標(biāo)。記住你的目標(biāo),盡可能做出最好的、長期的選擇。

            posted on 2012-05-27 23:18 coreBugZJ 閱讀(507) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)視野Software

            武侠古典久久婷婷狼人伊人| 亚洲人成精品久久久久| 国产午夜电影久久| 亚洲欧美一区二区三区久久| 99re久久精品国产首页2020| 国产精品九九久久精品女同亚洲欧美日韩综合区 | 欧美亚洲日本久久精品| 久久激情亚洲精品无码?V| 久久久久久久免费视频| 国产精品久久久久久久久免费| 国产呻吟久久久久久久92| 亚洲av伊人久久综合密臀性色 | 国产99久久久国产精品小说| 久久久久se色偷偷亚洲精品av | 久久精品国产99国产电影网| 久久久久亚洲AV无码专区首JN | 伊色综合久久之综合久久| 久久精品欧美日韩精品| 婷婷久久综合| 国产高潮国产高潮久久久91| 97久久国产综合精品女不卡| 国产一区二区精品久久岳| 一本色道久久88—综合亚洲精品| 大蕉久久伊人中文字幕| 亚洲va中文字幕无码久久| 国产99久久久国产精品小说| 久久九色综合九色99伊人| 久久综合九色综合久99| 色偷偷久久一区二区三区| 伊人色综合九久久天天蜜桃| 久久本道久久综合伊人| 久久精品国产免费| 久久精品国产亚洲麻豆| AV狠狠色丁香婷婷综合久久| 久久久久亚洲AV成人片| 亚洲精品国产字幕久久不卡| 久久久久亚洲国产| 亚洲av日韩精品久久久久久a| 久久久久国产精品嫩草影院| 色综合久久中文字幕无码| 亚洲AV日韩精品久久久久久|