最近一直很忙,工作環境裡的一些困境一直在困擾著我,並不是沒有技術可以滿足種種需要,而是這些技術都無法被使用,猶如「被綁縛了雙手的俠客」一般,頓時失去了練在雙手上的功夫,連三歲小孩也打不過。看來,要能武功大成,無論在何種境界皆能自在充裕,還有好大好大的一段距離要努力啊。

拜讀 Jserv 的這篇《思索 C++》,裡面引的這句「just say "No" to bad old platforms」挺有意思的,可惜在軟體工程上,決定一切的通常不是技術因素,而是「錢」。「錢」最為優先,次之為「人」,最後才是「技術」。

小弟我有幸身在一個比較沒有市場壓力的研究單位,因此不需要直接面對「錢」的問題。但相對地,「人」的問題,便首當其衝。這兩年來的整理思考,讓我明瞭了,在實務工作上,除了常要 cross platforms 外,還常常需要 cross programmers,不僅 platform 要跨,連 programmer 也要跨。期待所有會使用到你的程式的 programmers 都能具有某些基本能力,就跟期待碰到的 platforms 可以支援基本的 C99/C++98 一樣,緣木求魚。

更慘的是,我們無法 just say "No" to bad old programmers,因為,不僅 team members 會碰觸到你的程式,你的 customer 也有可能會碰到你的程式。在客戶至上的大前提下,是沒有可能因為客戶不懂 template,就 just say "No" to dummy customers 的。最終,還是得弄出一套 pure C 版本朝聖才行。喔,客戶的問題可能還好解,大不了另外寫個 library 包一下就好了,更可怕的是,你完全有可能會碰到你的 mentor 這樣跟你說:「能不能不要用 C++ 寫,我看不懂。」

十八般武藝,樣樣俱全,我總是這樣地期許自己,所以自大學時代開始,便東摸摸,西摸摸,舉凡 C/C++/Java 等一拖拉庫語言,到資料庫、物件導向、軟體工程、網路應用、UNIX/Windows programming、System Administration,有機會摸的至少都摸了兩下,摸到現在,總算是混到個雖樣樣不精,但也能得過且過的樣子。但直到現在才發覺,真正的十八般武藝,根本不是這些。作為一個 programmer,我們還需要一點口才,好說服老闆,唬弄客戶,教育同事,也還需要一點行銷技能,以避免 sales 的敷衍與出賣,更需要懂些法律,以便自保也保公司。

這年頭,日子真難混。