當選 2010 Microsoft MVP (ASP/ASP.NET) 之 熱血回憶錄

  • 12468
  • 0
  • 2010-01-08

當選 20101 Microsoft MVP (ASP/ASP.NET) 之 熱血回憶錄

熱血回憶錄

還記得在2008年10月的時候,為了一個小問題上google查詢,
在那之前,我查東西幾乎只看中文,而且是繁體中文。

碰到問題,第一步就是先找MSDN,太客製化的問題就google,
找到解答後,就把程式碼改一改,如果程式可以動了,原本survey的過程就中斷了。

我算是一個起跑點相當相當晚的工程師,
因為2007年1月底進公司後,當時連一行程式都不會寫,
打開可以執行SQL的程式,一個select * from table,寫了一天,還不能跑!
(我還記得第二天我總算找到table在哪了,超級開心的感覺。)

也算是運氣好,我這隻瞎貓老是有死老鼠可以抓…一路跌跌撞撞的到2008年10月,
其實還算稱職,被丟進地獄裡面,都還挺好運的爬得出來。(爬不出來就得回國軍刺鎗了...)

甚至當時覺得,哈!ASP.NET不就這樣嗎?
UI上的東西變來變去的,不就這樣…

一直到那個時候,我還記得是找客製化自訂控制項GridView,找到了點部落上ASP.NET魔法學院大大的文章,
(當時大大還正在參加第一屆iT邦鐵人練成大賽咧)
看到點部落第一期期刊上面有一大堆好用的文章,
這個時候突然覺得…
我是不是也該開始把自己會的東西記錄下來?
是不是該把碰到的問題記錄下來?
是不是該有個地方記錄自己的成長?
如果下個案子要用的東西,在自己的blog都找的到,是不是可以很省時間。

從這個念頭之後,發現自己開始喜歡碰到一些問題,想辦法找到解答,並且記錄下來。
哪怕是借花獻佛,哪怕被高手們笑我的解法很笨,
只要能讓自己下次更快、更漂亮的完成一樣的目的,一切都足夠了。

要知道,這一行就是比誰先碰到問題,碰到問題時成本越低,你未來的競爭優勢就越大。
寫程式,你會碰到的問題,別人也一定會碰到。前人也一定比你早碰到過,後人也一定會碰到。
既然如此,為什麼我要等問題發生時,被deadline壓到急的要死,才開始找解答?

平時就應該從目的、從一般的網站、從開發過程中碰到的衍生問題,
去思考下個案子會不會有一樣的問題?
未來會不會有這樣的問題?
這樣的問題別人是不是碰過了?
別人是怎麼解決的?
真的是根本解嗎?
我要怎麼解?
別人的解我能不能依樣畫葫蘆把這樣的成效複製過來?
以後類似的問題,是不是可以把這樣的解法進化後就可以解決?

不斷不斷地去思考跟反問自己,
接著從Blog上的收藏文章功能,到開始使用google的書籤、FireFox的Xmark、Google Reader,
把想到的issue記錄下來,把網路上的相關解法、官方的說明記錄下來,
這些平時的survey、蒐集跟思考,就像一直在充實我的工具箱,
裡面越收越多種螺絲起子,我不確定未來會碰到哪些類型的螺絲,但是我知道可能會碰到哪一種的,
就這樣越收越多…

(小弟從2008/10,也正式的從WoW Quit了,因為我實在沒有多餘的時間浪費了,
看越多文章越覺得自己的渺小與無知。
這個時候,我把最大的娛樂戒掉了…)

在另外一次蒐集螺絲起子的機會,
找到了保哥的Blog,超級驚豔!沒想到中文的blog會有這麼完整,而且文章篇數這麼多的blog。
幾近是一天一篇,而且上面的文章跟介紹的工具,真是有夠好用!
最大最大的收穫,莫過於保哥每一篇文章裡面的Reference,
從那些Reference,可以知道保哥碰到了這樣的需求、這樣的問題,從哪邊找到相關的資訊,
如何自己消化之後,實作一段切題的sample code出來。

重點是保哥的文章,就像一個入口,
每一篇文章可能對應到的reference有3~8篇,
從這個時候,我實在愛上這種從一篇文章衍生出去找到很多寶庫的感覺。
那種豐富自己資源的速度,就像facebook上找到朋友的朋友的朋友一樣,一對多一對多的一直擴散出去。

物以類聚,高手的blog上,通常又會擺著一些他認定的高手的blog連結…
就這樣我的書籤越來越多…也越來越晚睡,
從之前晚上七點下班,變成十點下班,回到家洗完澡十一點,就繼續把沒看完的文章K完…
幾乎每天是K到早上三點…那種亢奮的感覺會讓自己忘了時間…

第三個從頭到尾K完Blog的是黑暗執行緒大大的Blog,除了內容很實用以外,
黑大的文筆實在是資訊界裡面幽默程度排第一的…
邊看、邊笑,還能邊充實自己的能力,偶爾也可以放鬆一下緊繃的情緒。
黑大的潛盾機理念,更是讓我佩服,怎麼這麼厲害啥都可以自己寫…

第四個從頭K完的Blog,是我第一次訂閱國外的Blog:Matt Berseth
除了他的用字遣詞,幾乎讓我光看特定term就懂以外,
他的每一個sample code都是下載下來就可以直接跑!而且線上都有直接demo的網頁,
sample code的嚴謹程度,漂亮到嚇死人...連資料來源也幫你『船便便』,
另外讓人超級佩服的一點,就是他的美工能力真是強到不行…一點都不像一般的工程師…(至少我是連吻仔魚都不太會畫的人)
從這邊下載下來的sample code,我都會想辦法掛上去眼前的專案跑跑看,客製化看看改不改的動…
在撞牆的過程中,就只好自己查相關的資源…
改成自己要的樣子時,豈止一個爽字了得!!

看著網路上一堆愛不釋手、讓我崇拜到五體投地的blog時,發現都有個共同點,幾乎都掛著MVP的標誌…
當時,深深的給自己一個期許,十年內,希望我也可以當上微軟的MVP…希望我也可以像這些掛著MVP logo的高手們這麼厲害。
我相信,或許還有很多高手不是MVP,但是他們不一定能造福這麼多無知的小書僮…
不一定可以燃起每個工程師的小宇宙…

小宇宙燃燒之後,偶然發現了MSDN magazine,哇塞!!這東西看不用錢耶!!
還從前幾年每一期的magazine都留著,
那個時候我就把MSDN magazine當小說看了…這個資源相當適合我,
因為沒人會主動教我底層的觀念,大部分的文章也都是trouble shooting或是介紹功能,
MSDN magazine有著一個很大的好處,就是我可以自己去區分自己想看的東西,用時間去區分起源在哪…
還記得當時是開始看Ajax相關的概念,一集一集翻,
有找到最前面的我記得是這一篇:http://msdn.microsoft.com/zh-tw/magazine/cc163574.aspx
從2006年7月開始看,Ajax開始夯,到後面一期一期越介紹越進階,
但是最前面的文章卻是從為什麼會有這樣的功能出來,原本沒這功能程式怎麼跑,有什麼壞處,
有了這樣的技術可以克服這樣的問題,怎麼樣包裝,怎麼樣在Web上運作,
整理完一整串的文章,我嘗試著用自己的話跟理解的部分,去整理出文章,也就是這一篇:[AJAX]AJAX與UpdatePanel簡介
這應該也是我第一篇被推薦的文章…

有人開始推薦之後,就會有動力…認定了自己這條路是對的,
也實際的得到了許多好處,不論是與別人討論、指導別人、尋找相關的reference、直接拿來在下個案子使用、

之前花了大把時間做出來的功能,透過其他高手的指導,原來只是一個屬性就可以搞定
一個是dropdownlist要動態的從config決定dropdownlist是否要有第一個選項叫做『請選擇』花了我半年,
繞了一大圈,結果只要insert item完,appenddatabounditems設定後搞定。

另一個是簡易RadioButton UserControl,為了讓RadioButtonList不斷行,花了我一兩個月硬把RadioButton搞的跟RadioButtonList一樣,
還模擬了事件…結果森老頭大回應後我才知道,原來只要RadioButtonList 的屬性設定成 RepeatLayout="Flow",就不會換行了…

被這樣指導與糾正,其實一點都不會不開心,因為他們省了我太多太多的摸索時間,
更讓我得到了未來幾十年的面子,總比我未來的日子都跟人家說錯的好…

看到越多的東西,真的越覺得自己的無知…
而且技術越用,知識卻是越反璞歸真…學的東西是越來越往基本原理走…
枉費自己都在寫Web的程式,PostBack跟http的運作方式,我也是工作快兩年才知道…
但是,不嫌晚!
既然我有這樣的遭遇,我相信一定有人更慘,

當發現__doPostBack()的原理時,超級興奮的,因為很少在網路上的文章看到這樣寫過,
卻不經意的翻到董大偉老師的黑皮書:ASP.NET程式設計徹底研究,一開始開宗明義就講了這樣的原理…
我深深的覺得自己實在太不用功了…如果我一開始就有認真去看手邊的資源,是不是就可以少繞了這麼多路…

這次以後,面對再簡單的技術實做,我也會習慣性的去確認一下底層的運作原理,
是否是可以從我已知的常識、知識去推論出來,
不想再當一個只會寫程式、卻完全不知道來龍去脈的工程師。

我很愛舉一個例子(後來發現跟OO不謀而合啊...),
就是當這次被賦予的任務,是要做一台腳踏車出來時,
你得先知道你要做的是腳踏車,User要的是腳踏車,你做一台太空梭出來,再好也沒用…
當知道要做腳踏車時,要去思考為什麼要做這台腳踏車,是想要解決什麼樣的問題?
有沒可能可以做成別的更便宜、更好用、更快可以做好的替代工具?
在開始進行設計腳踏車時,我們被問題卡住的地方,往往都是某個零件不會做、沒做過…
這時候就得知道,這個零件用來幹嘛,以前有沒做過類似的零件,能不能拿來改一改?
如果沒有以往的經驗可以使用,那這個問題就相當的有價值,因為以後一定還會遇到類似的問題。
現在設計齒輪、皮帶、輪胎、踏板,是為了透過人的腳製造動力後,連帶著讓輪胎滾動,達到移動的目的。

當在做腳踏車時,有經過這樣的思考與消化後,
下個案子可能就是做摩托車、做汽車,
摩托車與腳踏車,一樣都有輪子、齒輪、皮帶,但是沒有了踏板,多了油門跟汽油缸、化油器…
當有了之前的經驗,就會知道輪胎是為了什麼,腳踏車的輪胎可不可以拿來用?不行,那改成怎樣就可以用?
遇到了新的任務的時候,可以快速的把任務拆解成一塊一塊的部分,
每一塊都會有以前的一點影子,即使碰到這次完全未知的領域,請放心,它將會解決你下個案子相當多的難題。

不斷的撞牆,就像超級賽亞人一直快死快死又偷吃仙豆一樣,
刺客聯盟裡面還不是一直被打到快死了,再浸進去療傷池…
只要活過來,你的戰鬥力就可以讓史考特爆掉…

怎麼樣可以避免死掉的風險太高?
就是平時就該一直撞牆(話不是這麼說的吧...),就如同前面說的,這一行就看誰先碰到問題,碰到時成本是低的,
而且當你可以解決時,因為你比別人早碰到這問題,你也會解決方案了。
等別人頭在燒時,你就可以像觀世音菩薩的甘露一樣解救他們,這就是價值!

就算,你先碰到了問題,你解決不了…
寶貝,別怕,會害怕的80%原因是因為未知。
跟別人還在安逸過日子比,你已經贏在起跑點了,
當下次你們一起碰到這個問題,你的恐慌程度不會比他高,你也已經偷跑了,
就算主管問起這問題怎麼解決,你的競爭對手說:『這問題以前沒碰過,要花時間瞭解跟解決』
你卻可以跟主管說:『這問題真的很棘手,方式A不行、方式B不行、方式C不行…』
如同愛迪生所說,每次實驗材料的失敗,都是一種成功,因為讓他知道哪一種材料不能當燈絲!

有了正確的學習態度後,
我實在還是想在感謝一下Dotjum給我這麼好的一個學習、紀錄與分享的平台,
舉辦了這麼多好的比賽,提供了這麼多好的資源,給了我這麼多的機會,
讓我可以看到更多前輩遠遠的背影…
有些前輩的能力跟努力的程度,如果自己不住精神時光屋,根本就一輩子無法拉近彼此的距離…

參加了點部落舉辦的修練營,擁有了學習的資源、分享的動力、督促自己的壓力,
最後自己都是最大最大的受益者…

也感謝Dotjum鼓勵我去參加微軟的TechDays,為我介紹了這麼多仰慕已久的前輩,
還鼓勵我去上了UML的課程,
連MVP的報名表都是您幫忙foward給我的…
承蒙您看得起,願意推薦我的blog到微軟的社群專家,讓我心裡真的受到莫大的鼓勵跟肯定…
你真的是我人生中的貴人啦…(相信這時候讀者如果沒按END,應該是要大喊著在一起 在一起了..)

去年最大的收穫,還有在plurk上認識許多偶像,小的就是看著他們書長大的…
我真的很珍惜各位前輩可以很真心、直接的指導我各個方面,
不論是個性、職場心態、技術能力、基本觀念…
我相信,你們都是我的貴人,是我的寶藏。
我也會很努力很努力的不辜負你們的期望。

最後,
今年新的一年開始,
馬克在blog上引用了星爺講的一段話,讓我很有感覺,我也想拿來當作這一年勉勵自己的座右銘:
『要很努力,很努力,才能做到一點點成功』

『work happy, work smart, work hard』,這三項在我心中,其實是一套的,
得要不斷的study hard,運用辛苦學習來的知識,來work smart,從聰明的作法來降低辛苦的成本,來讓自己工作的更快樂。
雖然英文很破,不過我還是想寫一下『Keep studying hard, then work happily by smart working』!


PS:按END的,記得按個推!


blog 與課程更新內容,請前往新站位置:http://tdd.best/