在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上。 無論如何,我需要學習一門新語言和新框架。
你需要記住2001年是微軟統治的年代。 大型的網站是由Linux和JAVA構建開發的。 如果你那時在矽谷,並且和別人說你是一個微軟開發者,你會被嘲笑的。 (現在嘲笑的人更多了)
出了矽谷,對於任何企業,微軟就是答案。 這些公司已經購買了微軟的Window和Office,而他們現在要網站。 微軟是他們想當然的選擇。
不幸的是,(我的諮詢公司在IT泡沫事件破產)我去了一家」The Valley「的初創企業。 這家企業的架構是由開源/JAVA/Emacs/Eclipse組成的。 我是唯一一個微軟程式師,服務一個全部採用微軟技術的重要客戶。
其他開發團隊需要數周來完成在客戶網站上的一個小改動。 而我僅要幾個時辰就可以用SQL伺服器和Classic ASP達到。 對於他們本打算放棄的任務,我總能給客戶滿意的結果。
這就是我選擇成為一個微軟專家和一個. NET的開發者的原因。 除此之外,我曾拼命地去成為一個微軟認證工程師。 (我曾經做到了!) 最終,我貌似成為了一個微軟方面的MVP。 或者說,我認為我成為了。
現在看來這實在很愚蠢,但如果你是當時的我,在那種工作環境之下,MVP的頭銜意味著一切。 去問問你的. NET朋友,他們會告訴你這些。
接下來的事
因為物件資料來源不能同資料清單綁定,所以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的一句話:
要不是因為我的馬,我才不花時間上大學呢!
我的馬就是 ASP.NET。