PHP 還是 ASP.NET:我做了正確選擇麼?

jobbole發表於2014-03-31

【伯樂線上注】:本文就是依賴 IDE 做開發,會讓你成為一名糟糕的程式設計師麼?這篇文章開頭提到的Rob Conery所寫文章的譯文。

在2001年, 我曾面臨一個選擇,去學PHP或者ASP.NET。 我最終選了後者,但我依然懷疑這個選擇其實不好。

那是2001年,我面臨一個選擇。

設想一下,如果你可以回到過去,改寫你的技術生涯。哪些重要的時刻,你會想改變?在2001年,我曾作為一家成功的網站諮詢公司的共同合夥人,去處理有關 Classic ASP的事情。當時,這些事情是很了不起的。我們是一家微軟產品的經銷商,並且為此感到自豪!但是……

我曾用過早期的.NET 並且很痛恨它。我討厭Visual Studio。我不知道 C#,而 VB.NET 看起來就像一個笑話。我記得我坐在奧克蘭到舊金山的船上,決定學習ASP.NET的基礎來應對工作,而一邊又不停的問自己一個問題。

你究竟要多努力才能搞懂這些?那天我去工作,並且和我的合作人坐在一起。我告訴他 “.NET” 已經脫軌了。他笑了笑,然後那天,我們有了一次關於我們公司和我的未來的談話。

我熟悉classic ASP,IIS SQL 伺服器,windows NT/2000 – 我知道如何處理這些事情。我並不知道 Linux 或者 MySQL, 但是我通過閱讀程式碼可以發現:新的框架其實基本上照搬Classic ASP,但有些針對MySQL和Apache的改動。

我本可以預料到這些,並且這本可能成為一個有趣的挑戰。我一直喜歡學習直到現在。我可以回去買書並且在一個月內掌握這些新技術。

但是我們有一些不能流失的顧客。我必須立刻服務他們,不能中斷。這種情況下,學習一個新技術平臺會非常困難,尤其是我們顧客找我們的理由是因為我們是微軟專家。(就像毒癮一樣,難以割捨。)

“繼續做自己熟悉的事情“是個想當然的選擇。問題是我過去的知識和經驗並不能很好應用到.NET上。無論如何,我需要學習一門新語言和新框架。

微軟統治的年代

MVP

你需要記住2001年是微軟統治的年代。大型的網站是由Linux和Java構建開發的。如果你那時在矽谷,並且和別人說你是一個微軟開發者,你會被嘲笑的。(現在嘲笑的人更多了)

出了矽谷,對於任何企業,微軟就是答案。這些公司已經購買了微軟的Window和Office,而他們現在要網站。微軟是他們想當然的選擇。

不幸的是,(我的諮詢公司在IT泡沫事件破產)我去了一家”The Valley“的初創企業。這家企業的架構是由開源/Java/Emacs/Eclipse組成的。我是唯一一個微軟程式設計師,服務一個全部採用微軟技術的重要客戶。

其他開發團隊需要數週來完成在客戶網站上的一個小改動。而我僅要幾個時辰就可以用SQL伺服器和Classic ASP達到。對於他們本打算放棄的任務,我總能給客戶滿意的結果。

這就是我選擇成為一個微軟專家和一個.NET的開發者的原因。除此之外,我曾拼命地去成為一個微軟認證工程師。(我曾經做到了!)最終,我貌似成為了一個微軟方面的MVP。或者說,我認為我成為了。

現在看來這實在很愚蠢,但如果你是當時的我,在那種工作環境之下,MVP的頭銜意味著一切。去問問你的.NET朋友,他們會告訴你這些。

接下來的事

ods

BOM

因為物件資料來源不能同資料列表繫結,所以Entity Framework不能被使用。

雖然我現在發了這條Tweet,但是很多ASP.NET的程式設計師依然對這個問題很茫然。這不是惡搞,這是一個微軟官方的教程。

這就是我決定轉行之前,我職業生涯的真實寫照。

從2002到2008年,微軟網站產品曾經是(現在很大程度上依然是)“視覺化元件開發”。這意味著你只需要不斷地拖放元件,然後讓元件實現你的功能。(生成HTML,連線伺服器,CSS程式碼等等)

這項技術使得表格必須用“資料來源”這種原始方式去生成。我需要麻煩的寫出一些XML檔案去對映“資料來源”。

這事從來沒有順利過,但我還是堅持去做。請不要問我為什麼。

這些也發生了

2008年,我開始用Rails,並且立刻喜歡上了它。但這並不意味著我從此“義無反顧”的轉向了。Rails令我可以,像以前開發時一樣,擁有全面的反饋。HTML和CSS不再可怕。(它們對ASP.NET開發者而言很可怕)程式碼重新成為你的朋友。

在.NET的環境下,在某種程度上,我們處理後臺程式碼和伺服器元件,而水平最高的開發者僅用最少的程式碼來完成程式。不知何故,在這一情形的驅使下,我們背離了我們原本的目標:網站開發者。

這一切想法向我湧來。我清楚地記得我想遠離.NET的想法。但當我冷靜下來,我有了個想法:

如果我將我在Rails學到的帶回ASP.NET,那麼會發生什麼?

從此我啟動了”亞聲波“專案(受ruby的”活動記錄“啟發而寫的ORM),並且嘗試了5種不同的方法去構建一個基於.NET的MVC的框架。 我喜歡C#,而且微軟的產品市場很大。為什麼要依賴微軟的研究室來決定如何寫堆疊?這構成我接下來5年的職業生涯。我被認為是一個”麻煩製造者“,”攪罐器“,”抱怨者”,並且被認為是個“巨魔”。或許這些看法確實有點適合我。 “改革推動者”對我而言是個新角色。(Twitter也是)因此… 我覺得我的公關技巧還需要改善。

這有些跑題了(但還是有聯絡)。我真正想知道的是…

如果當時我不這麼做,會發生什麼?

今天提起這件事情是因為我有一次我被邀請去看一個”Ghost Blog“的模組。(作為一次隨意討論的一部分)而這個Node程式看起來就像用PHP寫。

這不禁讓我想到”如果我堅持用PHP,是否我會用同樣的方式寫Node程式“?我很可能通過一個指令碼開發者的角度去看網站,並且錯過了一些我從.NET開發中學到的”高階概念“。這種想法很正常,我應該會這麼寫Node。

這當然引發了另一個問題:我寫Node程式是否和.NET開發者類似?

或許有一些。我知道我寫ruby程式就是這樣…那麼這是個糟糕的事情?這些影響是否令我更容易扭曲我的Node程式碼?

我知道我將會習得很多有關Linux或MySQL的知識,並且我確定我將會參加一些有趣的開源專案,如同我寫.NET時一樣。我可能會迷上Rails,並且嘗試將一些Rails優點帶到PHP中。

好似歷史就會重新聚焦到此刻,但有一個重大的不同:我將不會陷入ASP.NET的泥潭長達五年。

我認為我應該能做到:

  • 更加了解Linux系統
  • 更加了解MySQL和其他開源伺服器。
  • 我不會像4年前一樣害怕Javascript
  • 不再依賴開發工具
  • 喜歡HTML和CSS

這裡有一個明顯的缺點:.NET阻礙我增加關於HTML/CSS/Javascript的知識。我無須告訴你這些知識是如何重要,永遠不需要。

另外,我被迫使用”Visual 工具“,而且現在每天還同它作鬥爭。在網站專案上,我習慣於用TreeView控制元件來看資料庫和檔案裡的表格。Visual開發已經被燒錄進我的大腦!啊哈!

另一方面

或許當我最終決定進入Rails的世界時,這些挫折迫使我不斷的學習。這團火始終和我在一起,鼓勵我發了這條博文。借用Lewis Black的一句話:

my favorite joke lewis black header

要不是因為我的馬,我才不花時間上大學呢!

我的馬就是 ASP.NET。

相關文章