Friday, December 21, 2012

被迫才是進步的原動力


昨天看到神人 vgod 寫了一篇 過早最佳化是萬惡的根源,這篇文章是不錯。但是,對於「職業」那邊實在有太多奇怪的假設。
想了一下,決定還是在 FB 寫了一下我的看法,然後再轉貼到這裡來。
===
簡單回一下好了。關於職業的部分。我本來也是覺得就如同跟 @vgod 一樣所說,在裡面可以全新鍛鍊和學習各種知識和技能。
我在大學裡面,就是抱著這樣的心態,學習各種知識。我在大學裡面最認真修的課,不是數學(唯一感興趣的是線性代數、離散數學、代數) ,而是….去修資科系基礎理論的課,什麼作業系統、計算機結構、演算法、資料結構、數位電路、etc…大概能修的我都修了。數學系最 重視的微積分、高等微積分,我沒有很喜歡。而且,我大概下課的時間都泡在系上的機房,弄網路、伺服器、寫寫簡單的網站。
而最後我也是抱著這樣的心態,選擇了第一份工作。因為我覺得大學的環境才能讓「自己有選擇想練什麼武功的自由」。 我希望一直這樣持續下去。
然而,接下來的事情。你們知道了,我被打臉了。狠狠的打了一巴掌。
那一天,我才發現我關在學校自己練的等級,跟職業的人是差上那麼多。這才是讓我選擇馬上離開那個環境的主因。
很多人以為「自己有選擇想練什麼武功的自由」,才能讓自己的 power 開到最大。我對這件事情有截然不同的感受。為什麼職業的環境會成長很快。因為上班領錢,才有限時被交出成果的壓力。而且那個壓力能造成的動力是遠比自己下定決心要練什麼技能的動力還要可怕的。上班,你會被迫限時學到跟這個領域所有「基礎」的工具。一個月「基礎的程度」,可能直接贏掉自己自由學「半年」以上的程度。
而且特別是,如果你的同事和老闆,都是佼佼者的話….。到現在我還是相當感謝曾經共事過的 @gugod, @ihower, @gslin, @hlb, @嬸嬸 XD
我學到的就是。如果你想把什麼東西學好,稍微深呼吸一下(當然就是自學一點皮毛,希望不要進去之後死太慘),就跳下去…。 害怕溺水的恐懼會被讓你瞬間就學會游泳。(如果你跳下去就死拜託不要怪我…orz)
如果你曾經看過我半年前寫過的為什麼我想創業 一文。 你就會知道,我在這四年裡面「被迫」學會了多少事。
職業工程師,並不是只有用 PHP 寫了一千個論壇和購物程式那麼無聊。老實說,寫到第二個第三個,你就會知道 Framework 的重要性。
當然,如果你之後玩到神兵級 Framework 如「Ruby on Rails」。那麼你還會更會知道,這世界不是只有 CRUD。(Ruby on Rails 本身 的架構採用了大量 Patterns of Enterprise Application Architecture 這本書裡面的實作,裡面也大量用了 Design Pattern 的技巧)。
不只如此,你還會從周遭的 ecosystem 的 plugin 中學到各種各式各樣的 pratical、theoretical 的佼佼實作。
當這些東西看多了以後你就更進一步的發現,語言根本不是重點,掌握這些「企業級理論」(註)的核心精隨,才是重點。
而當進一步又將 Ruby on Rails 玩的十分純熟之後。就會馬上意識到,用什麼語言寫,把 code 寫得多快已經完全不是重點了。
  • 如果專案控管能力不佳,需求一直在改變,那麼就算你的「架構理論」玩的再漂亮都是一樣的,結不了案就是結不了案。
  • 如果團隊協調能力不佳,那麼不管公司投再多人進來,累死的就是那幾個人而已。
  • 如果時間成本能力不佳,不是會造成公司大虧損賠本,甚至會專案進行到一半就被迫終止。
很多人以為我網站寫的很快,是因為 Framework 的關係。真的不是這麼簡單…,那是我身上擁有所有的技巧綜合出來的結果。
如果我沒有領錢「被迫」進行我很多「不喜歡」的事,我不會學到這一些東西。如果我沒有「被迫」去處在那一些環境,我能學到的東西就限於「我在學校時一開始能望過去的眼界」,而不是環繞在我周遭各個神人的眼界。
而這也是為什麼我會寫出那兩篇文章的初衷。我不是出來走這麼一遭,不會發現我當初那樣的假設,完全不堪一擊。
而再舉一個例子,曾經很多人一直對我,開口閉口就是 Ruby on Rails 值得學習,感到很不解。事實上,我也是從這個 Framework 的進化裡面, 才學到人不能把眼界只侷限在某一個端點。我個人的能力,很大的原因是跟隨這個 Framework 一起成長的。如果我當初不是碰這個 Framework 起來,我恐怕真的沒有這個能力成長的這麼迅速。因為台灣沒有太多「大型」Scale (PV 千萬以上) 的網站,可以逼迫一個工程師直接從最基礎的 Turtorial 中,自學到那麼多 optimze techniques、best practices(更何況這種等級公司的入場卷,也不是你說想要應徵就能應徵上)。
從這個 Framework ecosystem 裡面產生出來的 plugin 也是世界上各式各地的程式設計師貢獻出來的,這裡面融合了他們公司現在「最好」的 pratices,有些甚至是 future architecture。如果我在一間悶頭自幹工具的公司上班,我是沒有機會見識到這一切的。
我不認為自己一開始有多好的眼界,能有辦法看到多棒的未來,並且照著我所看到的事堅定的往前走。甚至,直到現在,我現在還是不認為自己還是具備這個能力。但我唯一知道的是,我不能把自己鎖在自己的眼界裡。
我想說的話,就只有這樣而已。
[註] :Deisgn Pattern、Agile、Testing、Scaling、Performace Tuning …
Reference:

No comments: