新的軟件開發技術和開發工具不斷涌現,軟件開發人員如何從中分清好壞、去蕪存菁,既及時了解所出現的重要技術新動態,又不會淹沒于對自己幫助不大的開發工具和技術細節之中?
如今軟件技術的演變步伐已大大加快,你一眨眼,說不定就錯過了某項重要技術。軟件開發產業正在蓬勃發展,新的軟件產品和創新技術每天都在潮水般涌入市場。這就引發了一個問題: 技術的這種快速演變是代表著軟件開發進入到一個成熟階段?還是說我們前進的步伐實在太快了?
要準確地回答這些問題似乎是不可能的,不過有一點可以肯定,如今的軟件開發環境比過去任何時候都要龐大、都要復雜。由于同時有眾多不同軟件技術和軟件產品進入市場,再加上測試版到正式版的交付周期縮短,現在開發人員往往不知所措,覺得自己落在后面。比如,單就微軟平臺就會有成百上千種新興技術出現,而且這種演變速度之快和技術的爆炸式增長態勢并不僅僅局限于某局部領域,而是整個軟件開發領域普遍存在的現象。對軟件開發的從業者而言,想緊跟技術的最新腳步越來越困難。
那么,軟件開發人員如何及時了解這個領域所出現的重要新動態,又不會淹沒于與自身項目關系不大或幫助不大的開發工具和技術細節之中?如何分清好壞、去蕪存菁,全身心地關注確實很重要、很寶貴的那些技術?盡管沒有一個簡單的答案能解開這個謎,但有一種方法也許管用,那就是堅持主動、抽象和不斷完善自己的知識結構。
主動出擊
在.Net出現的早期,新工具和新技術的推出并不是太快。特別是最初6年到8年,這些工具和技術以合理的間隔時間推向市場,這使得軟件開發人員可以花比較長的時間來研究、審查及評估這些技術,并進行實際檢驗,最后可以準確地就這些技術對整個項目或單個目標來說是不是合適做出判斷。在個別情況下,人們甚至可以對這些產品和技術進行試用。作為開發團隊也有時間等各種開發工具的正式版出來,再進行評估。換句話說,從長遠來看,等待能收到成效。
而到了今天: 等待卻意味著失敗。如今的技術發展速度比十年前要快得多。而不斷變化的軟件領域涉及的技術面比以往任何時候都要廣,不僅涉及企業技術、互聯網技術、云計算還涉及移動技術,這就使得開發人員常常要同時學習和掌握多種平臺和多種技術軟件。
最近兩三年新的技術和更新版本涌現得更為頻繁,測試版到發行候選版的周期已大大壓縮,結果讓人覺得好像每個月都有新技術在推出。這對于普通的.Net開發人員來說,就意味著無法像過去那樣可以慢慢來,因為時不我待,如果袖手旁觀,只是等更新版本和新技術推出,那必然會落伍。
開發人員要想自己不落伍,就必須更積極主動。實際上,這意味著需要擺脫傳統的“等”的心態,而要主動迎接即將出現的變化: 明確哪些新興技術(不管熱不熱門)最能滿足項目在當前和將來的需求,向專家和項目團隊積極打探最新的演示版本和信息,在最終發行版上市之前參與討論。軟件開發人員最終是否成功,要看他能不能隨機應變、迅速適應不斷變化的形勢,如果開發人員愿意努力變得更積極主動,他們不但可以在迅速變化的時代幸存下來,還會有更大的作為。
學會抽象
要在如今的軟件開發領域取得成功,積極主動而不是消極被動是一個重要方面,不過這也帶來了一個讓人生畏的挑戰: 面對出現在市場上的眾多新技術,你該如何確定重點關注的技術?如何確定哪些技術會切實可行、經久不衰,哪些技術又會半途夭折?由于幾乎不可能預測哪些技術會是必不可少的技術,開發人員常常發現自己面臨越來越大的壓力,最后只好采取“什么都學習”的策略。然而,成為一個“樣樣都懂,樣樣不精的人”幾乎與袖手旁觀一樣,不利于最后成功。
開發人員手里沒有能夠預知未來的水晶球,這就需要有另一種辦法為未來成功做好準備。抽象就是這樣一種方法,是指減少及剔除具體細節,以便重點關注重要概念。也就是說,如果開發人員在自己與不斷變化的技術環境之間添加一層抽象,就能有效地選擇、大致了解及評估眾多相關重要的技術,又不會覺得自己被迫全面學習新出現的每一項小眾技術。
有很多方法能幫助軟件開發人員獲得所需要的信息。比如:
1. 向技術專家請教。項目或團隊負責人以及行業分析師是合適的人選,該人應該對某一項技術能夠給出有見地、冷靜而客觀的看法。確定專家之前,有必要花一些時間來真正了解這個人,就像認真審查重要的服務提供者一樣,比如會計師、律師或者甚至汽車修理工。
2. 要是找不到專家,也可以找一家值得信賴、過去已證明了其價值的廠商。如果一家公司擁有得到驗證、成熟可靠的技術,又能提供附加值,而另一家公司擁有新穎但還沒有得到證實的技術,那么選擇前者總比選擇后者來得穩妥。
3. 充分發揮工具的作用,比如對象關系映射(ORM)套件。由于ORM具有充當某種均衡器的獨特功能——讓軟件開發人員可以在多個不同環境里面高效工作,不需要在每一種數據庫系統方面都要有專門知識,所以它提供了一種行之有效的手段,不需要從頭開始學習就可以充分利用新興技術。
不用管具體是如何做到的,在開發環境里面運用抽象的藝術讓開發人員能夠“與世隔絕”,減少軟件領域的動蕩和變數對自己的不利影響。
既見樹木又見森林
俗話說“只見樹木,不見森林”,面臨如潮水般涌現的新技術時,開發人員置身其中,想看清全局異常困難,比如很難看清哪些創新可能會給現有或將來的項目帶來重大影響,哪些技術又會即將過時、湮沒于計算機歷史的長河中。而對這一切有一個比較清楚的認識,無論是對開發人員個體還是整個開發團隊來說都極其重要。想得到更準確的看法,就需要進行一番“過濾篩選”,不斷充實自己的知識面,也就是完善自己,做到既見樹木,又見森林。
盡管很多技術權威在宣講某種技術時總是講其如何重要,但絕對不要相信哪一些技術是每個軟件開發人員為了成功都要非學不可的。當然,針對特定場景而言,所用的工具和技術肯定存在好壞之分,確定哪些技術最適合某個具體的項目是第一步。
如果軟件開發人員對某個開發環境的獨特要求進行全面深入的評估,就能夠確認該開發環境是否適合某項目的要求。同時,比較清楚地了解項目要求,反過來也有助于過濾篩選過程: 確定及關注那些相關重要的技術可以帶來最大的附加值,又不用理會那些基本上沒有多大實效的、炒作厲害的“熱門”技術。想親自試一下,比較全面地了解某項新技術(而不是僅僅略懂皮毛),就需要花幾個晚上來熟悉它,這離不開深入研究、實際使用演示版本,以及請教該領域的專家。軟件開發人員只有不斷充實自己的知識,才能明確應當把哪些新技術添加到最終候選名單上,從而確保擁有最新的技能組合。
今天,大量新技術涌入市場的趨勢絲毫沒有要停止的跡象,如何選擇給軟件開發人員帶來了越來越大的壓力。實際上,軟件開發人員應當少關注了解每一項新技術的細節,而多關注并弄清楚哪項技術最適合自己的軟件開發實踐和環境,以便保持足夠的靈活性。開發人員只有真正了解了這個觀念,才會發現其實可以在保持頭腦清醒的同時保持技能最新。