[轉錄]被ASP.NET 2.0搶走飯碗的Programmer?

摘要:[轉錄]被ASP.NET 2.0搶走飯碗的Programmer?

  VS2005已經正式推出,很多人都看過ASP.NET 2.0的華麗外表!那些可以自
由在頁面上拖曳的WebPart,可以套用版型的MasterPage,可以為頁面穿戴炫華
麗衣裳的Theme和skin…。不只如此,大幅節省程式碼的登入控制項群組(包含完
整的Forms認證機制、MemberShip和Role類別),把過去UI(使用者介面)和資料庫
存取機制徹底簡化的資料存取控制項(DataSource、和xxxxView字尾的超強控制項
),這些東西讓頁面上的表單維護(master-Detail或電子表單)機制變的幾乎不用寫程
式。

  再加上VS2005對開發環境的大幅改善(SmartTag、程式碼片段、到處都出現的
精靈…),總之,開發人員需要作的事情相對的減少,很多朋友看到之後,第一個問
題都是,那…以後程式設計師要做什麼???會不會一堆初學者,做出來的網站,
都要比累積了很多年的開發老手來的好?難道,很多人就這樣要失業了嗎?或者,
又得要放棄才剛學好的ASP.NET 1.1,重新投入2.0的懷抱?(知道嗎?很多公司才
剛擬定從ASP轉換到ASP.NET的計劃…)

  現在台灣市場上,還有為數不少的產品都以ASP來開發,過去在筆者很『熱心
的推廣』ASP.NET 1.1的那個時代,已經討論過這個問題。當您(ASP開發人員),
看到其他剛畢業的年輕小夥子,隨手寫出的系統,都比自己用ASP開發了三天三夜
的功能還強,這時候情何以堪?這個問題,到了ASP.NET 2.0將會更加明顯。過去
ASP.NET 1.1要開發很久(甚至做不出來)的功能,現在到了ASP.NET 2.0很可能已
經是基本功能了!相較之下,ASP與ASP.NET 2.0之間的差異則是月來越大,因此
對於在業界開發的朋友們,相信很多人早已經自動歸入轉換的跑道了…

  另外則是採用ASP.NET 1.1作為專案開發的人員(類似筆者這種)。過去我們花了
很多心思從ASP轉換到ASP.NET 1.1,沒想到在ASP.NET 1.1才辛苦開發完成的函
式庫,到了ASP.NET 2.0後,某些變成基本功能,我要說,心裡除了很X之外,實在
也有點佩服微軟,畢竟這是一種進步,過去ASP.NET 1.1上要花長時間才能完成的東
西,現在微軟則幫你做好擺在眼前等你享用…

  有人會說,ASP.NET 2.0這樣的改版,讓很多開發人員越來越不知道系統內部的
運作…,我要說的則是,現在很多開發人員,其實從很早以前就已經不知道系統內部
的運作了,現在的問題是,開發人員目前所扮演的角色以及他究竟該不該知道系統內
部的運作?

  從不知道什麼時代開始,很多從事軟體開發的社會新鮮人,早已經不知道(也不需
要知道)DOS的存在(和它輝煌歷史),也不知道0與1的意義,但是他們開始會物件導向
,開始知道SOA架構,可是卻從沒寫過Client-Server的程式,他們生來系統就已經是
那個樣子,程式在Web上面跑的很自然,至於瀏覽器怎麼處理HTML,IIS怎麼處理
CodeBehind程式碼,他都覺得這應該不是他的問題…

  如果你對照ASP.NET 2.0的很多功能,你會發現這個現象異常明顯,從很多角度來
看ASP.NET 2.0+VS2005這樣的組合,已經有點像『整合了程式產生器的程式語言』,
而新增的很多炫麗套件,則根本有點像是網路上的網站樣板或是模組…,不知道這個現
象是否是微軟衝著網路上越來越多的免費資源而來,但是不可否認的,這樣的組合,確
實會為很多初階開發人員節省不少時間。

  回到前面的那個問題,當我們討論到這樣的改變對於程式設計師來說,究竟好不好
?筆者除了建議採用其他開發工具(ASP、JSP、PHP…)程式設計師,一定要花點時間
來了解ASP.NET 2.0之外(根據筆者的經驗,同時會去涉獵兩種以上開發工具的人真的不
多…),也建議從ASP或是ASP.NET 1.1轉換到ASP.NET 2.0的開發人員必須深思一個問
題:『你認為自己未來的角色是什麼?』(是寫程式的人?還是開發系統的人?)

  根據不知道哪裡的DM,據稱ASP.NET 2.0開發一套系統,比ASP.NET 1.1約減少
70%的程式碼,有沒有很誇張?筆者要說,根據我自己測試的結果,雖然不敢說到70%
,但是節省的時間絕對超過一半!

  一半!一半的意思是什麼?一半的意思是,過去老闆要請兩個人,現在只需要請一
個!那理論上,ASP.NET 2.0的開發人員應該要比ASP.NET 1.1或ASP要值錢一點,但
是,以後當大家都使用這個開發工具,那還玩什麼?我要說的是,程式設計師要注意自
己的『Value』!

  我們回憶一下,當開發一套系統的時候,開發人員花了多少的時間在做商業核心的
部分?我們所謂的核心,不是資料庫的基本存取、不是畫面的調整與呈現、不是那些寫
過一次之後,另外一隻程式只需要小改一下就可以用了的部分。而是這套系統的核心,
例如MRP的物料相關運算,例如CRM的客戶評等運算…等。一套系統裡面,一定有一些
商業邏輯,是這個系統裡面最重要的部分,是這個系統要達成的『目的』,其他的環節
則都是配合著這個『目的』而來的。資料庫,只是為了存放資料,UI,只是為了讓使用
者有個操作環境…,這些其他的東西不是不重要,而是因為模式固定,所以開發的成本
越低越好(也就是花的時間和錢越少越好)!

  從ASP到ASP.NET 2.0的轉變就是這樣(事實上所有開發工具的改版目的都是這樣,
從Windows到Java亦是,從VB到VB.NET又何嘗不是!),請不要忘記,開發一套系統的
目的不是要來『讓程式設計師寫程式』,開發一套系統的目的是要來『解決一個問題』
。因此系統的重點是能否解決問題,而不是這套系統宣稱花了幾萬個工時,內含幾千隻
程式,包含上百個模組…。一個CRM系統畫面做的再漂亮,記憶體使用再精簡,資料庫
運算再迅速,找出的目標客戶永遠無效(不購買)那要系統又有何用?

  時至今日,開發工具已經可以為我們節省絕大部分的時間(特別是花在與程式核心運
算無關的開發時間),因此我們回顧從ASP到ASP.NET 2.0,我們越來越不需要花時間在
調整UI、在寫前端JavaScript、版型和版面可以透過MasterPage和Theme快速完成,資
料庫存取可以利用DataSource大幅減少程式碼,WebPart可以幫助我們迅速做出一個炫
麗的Portal,Login控制項可以讓我們使用現成的會員管理機制…這一切的一切,都只有
一個目的,縮短開發人員花在系統『非核心程式碼』的開發時間。

  整個物件導向程式設計的目的也是,希望程式碼『可重用』,縮短開發時程,讓開
發人員專注在開發系統的核心,最理想的狀況或許是,開發人員不要管與系統核心無關
的程式,而多花點時間在核心的運算邏輯。回顧一些專案,您會發現,很多時候我們花
在『主要目的』的時間遠低於『次要目的』 。舉例來說,一套薪資處理系統,計算薪資
的程式碼數量(核心功能),遠低於系統內『產生報表、資料庫存取、使用者介面的調整
和控制』(次要功能)的程式碼數量。當然,這些附屬或次要功能不是不重要(當產品的主
要功能沒啥特色,人人都可以開發的時候,就會開始比較次要功能,例如我比其他競爭
對手多了兩支報表~~哪怕這兩支報表一年只用一次,也會變成產品『特色』),但是別忘
記,從過去的例子我們可以發現,一套系統能構脫穎而出,絕大部分的原因都不是因為
次要功能特別強,而是主要功能與眾不同。

  也因此,開發工具一直在致力做一件事情(事實上,整個軟體工程也一直在做這件事
情),就是讓開發人員花少一點時間在次要功能上,而能夠把省下來的時間,多開發(或研
發)一些具有真正價值或與眾不同的主要功能!可能是更強的運算邏輯、更搶眼的創意、
更體貼的設計…等。至於只需要花苦工就可以完成的部分,還是交給開發工具(或程式產
生器)吧。ASP.NET 2.0所有的新功能,幾乎都是針對這些部分而來,我們期待開發人員
,能夠把省下來的時間,投資在更有創意和價值的事情上。

  甚至,哪怕是把省下來的時間花在多陪陪家人都好~老實說,在台灣寫程式其實真的
挺辛苦的,賺的錢不多,工時卻很長,又不受重視,也因此開發人員自我價值的提昇和成
長,是很重要的,如果新開發工具的出現,能夠有效的節省我們的時間,那是令人興奮的
,但若開發工具的出現,卻取代了你的價值,則是令人感到遺憾的,學習和成長,加上一
點點的創意,依舊是奠定自己不變價值的基礎。
文章來源:http://book.studyhost.com