vgod 是台湾人,在 MIT 读的计算机专业,自从他读完博士以后就很少写博客了,即便如此,我还是经常分享他写过的
「追求神乎其技的程式設計之道」
系列文章,这系列文章启发了很多台湾的软件工程师,因为网络的关系也被我发现了,其中的许多观点我都非常喜欢。
比如:
很多人都聽說過,同樣是寫程式,一個頂尖程式設計師和一個普通程式設計師之間的生產力可以有 十倍甚至百倍的差距 。這是其他行業很少見到的現象,於是不禁令人納悶,為什麼會這樣呢?
…
我後來發現,程式設計師和其他行業有個很大的不同點:一般行業只能在現有的工具上磨練自身的技術,但 程式設計師除了磨練技術外,還可以獨自創造、修改自己使用的工具;換句話說,程式設計師的能力就是在電腦上創作出更好的軟體,不但能便利他人,也同時能增進自身使用電腦的工作效率
。舉例來說,理髮師能磨練使用剪刀和設計髮型的技術,但理髮師並不知道怎麼發明及製造新的剪刀讓自己更有效率的剪頭髮;電機、化工、土木工程師要設計 IC、化學製程、建築結構,但他們得依賴電腦軟體才能設計,並且靠許多大型機器和工具才能生產,即使想提昇自身的工作效率,也不是自己一個人想做就能辦到的。但軟體工程師就不同了,我們只靠一台電腦就能工作,我們的工具是軟體,我們的產出也是軟體,我們的所依賴的一切都是軟體,只要自己願意投入心力,隨時可以修改每天使用的工具和系統讓自己更有效率的工作。 這一點可以說是程式設計師的先天優勢,也是頂尖的程式設計師和普通程式設計師的生產力差距的關鍵。
再比如:
Eat Our Own Dog Food
我發現厲害的程式設計師常有種共同特質:寫工具給自己用,解決自己日常工作碰到的問題或改善自己的工作效率。英文有句話叫 eat one’s own dog food,字面上意思是說一家公司應該要吃自己做出來的狗食,實際上是引申為一家公司應該要在內部用自己的產品解決自身的問題,才能發現真正的問題,並且說服人這東西真的很實用。Google 是奉行「吃狗食」原則的典型公司,Google 內部有一個獨立的搜尋引擎搜尋公司內部網路的資料,新技術也都能在上面先行測試;Google 內有獨立的 gmail、google docs,都在對外公開前先讓內部的人實際用上好一陣子;Google 甚至做了自己的 Linux distribution 給工程師用、自己的 compiler、自己的瀏覽器…。
…
出於「懶惰」的美德,頂尖的程式設計師工作時想的不只有產出最終產品就好,而是如何花最少力氣最少時間把產品做到最好。但這件事說來容易做來難,能不能實行往往跟程式設計師工作的系統環境有很大關係。
最近,我发现 vgod 又开始写博客了,这次他写的是 「軟體工程師的修煉與成長」
系列 ,我想必须分享给你。
程序设计和软件工程最大的不同,我想是在于协作方面,在程序设计上我们可以有自己孜孜不倦的追求,而在开发商业化软件的时候我们又需要在各方面进行妥协,软件开发便是这样一门平衡的艺术。
希望阅读我的 newsletter 的朋友可以在 vgod 那里汲取到更多的养分。
Until next week,
lcomplete