所謂的CTO(Chief Technology Officer),即是技術長、首席技術官、或稱技術總監,代表的是一個組織裡技術部份的最高負責人。對於一名技術人員而言,我想應該也不少人應該視CTO這個職務做為職業生涯的期待。

最早CTO的職銜,是從一些有大型研究部門的大公司開始,而在現在,即使是很小規模的創業公司,尤其是軟體服務公司,也都有頂著這個頭銜的人。究竟CTO的責任是什麼、負責什麼樣的工作呢?我想是一個值得討論的議題。對於一位有志於成為技術領域首席人員的人員來說,究竟一位CTO 應該扮演什麼樣的角色、以及從事什麼工作,若想成為一位CTO應該具備什麼能力,也應該是他會感興趣的主題。

負責訂定長短期技術發展的方向

事實上,在一家公司裡,一位CTO的職責不盡相同。在不同的產業、不同規模的公司裡,CTO負責的事務及範疇都不盡相同。例如,在大型機構的純研究部門裡,CTO的工作,可能是負責將理論研究的成果轉換成為可以投入於實際業務的產品。由於我的經驗只有在軟體產業,也只待過中小規模的軟體公司,所以或許對這個範圍內的想法會比較有參考價值。

CTO應該是負責一家公司裡技術發展藍圖的人,有的人稱之為「長期的戰略性技術方向」。也就是說,依循著公司營運的主軸,設想未來的樣貌、看出未來可能產品在技術上的需求,因而提前去了解、研究、甚至發展會需要用到的技術。

除了長期的戰略性技術方向之外,CTO也負責短期的技術方向,像是特定技術解決方案的選用。

對軟體開發來說,時常都有新的技術概念或名詞出現,CTO最起碼比較了解技術趨勢的變化,並且和公司的營運主軸相搭配,針對需要留意的技術做進一步的了解,並且納入公司在下一代產品的技術規劃中。此外,在特定產品開發之前,CTO也應該為產品決定最高階的技術解決方案,例如,採用何種技術平臺及技術架構,以使產品在技術上能有更佳的表現。

舉例來說,若公司想要發展影音串流的應用,那麼,有多種方式可以實現將影音從內容伺服器端串流至使用者端的方式,像是集中式的伺服器架構、點對點(Peer-to-Peer)的方式、或是透過內容傳遞網路(Content Delivery Network,CDN)的方式。

了解這些技術架構的差異、優缺點,並且從中選出一個最適合公司目前產品的技術,無疑地,就是CTO的責任。再者,若是選擇了CDN的技術方式,那麼因為提供CDN服務的公司眾多,甚至自己開發CDN服務也是選項之一,從諸多選項中衡量利害得失(像是價錢、速度、便利性、……等等),選出一個最適合的選項,也是CTO的責任。

負責整體開發流程的促進與掌控

對軟體公司而言,CTO也可能是負責開發流程建立、維持或精進的人。

開發是軟體公司中的重要活動,開發流程也深深的影響到開發團隊的文化、氣息,以及產品交付的速度及時間。因此,他的工作包括了打造或調整開發流程,使得此流程一方面符合團隊成員的屬性,另一方面也符合公司所交付產品的特質。

一個小型規模的團隊,其產品是不斷調整功能、頻繁發佈的,其適用的開發流程就會和規模大型、產品功能大致維持穩定的團隊有所不同。有時會因為產品特性改變成員的文化,有時也會調整產品特性,以期和團隊成員的屬性更相符,以便發揮更佳的團隊戰力。

此外,CTO也可能是管理產品開發進程的最高負責人,責任就是帶領團隊,準時遞交有品質的產品或服務。

並非是技術能力最強,才能擔任CTO的職位

所以,從上述的CTO職責來看,不難看出身為一個軟體公司的CTO應該具備那些能力。或許有人會問,一位CTO必須是公司裡技術能力最強的那一位嗎?這要看你怎麼看。

尤其是一些小型的軟體公司,可能會選擇「寫程式能力」最強的那一位來做為CTO。不過,寫程式最強,不能直接和技術能力最強畫上等號。那麼,如果是「軟體開發能力」最強呢?若是對軟體工程、軟體開發流程、專案管理、軟體架構設計都有很好的能力,適不適合擔任CTO的角色呢?

事實上,我認為CTO相較於技術專精,他更應該是一個能力廣泛的人。也就是說,基本上是個廣度優於深度的角色。

我心中理想的CTO,有足夠長的實務經驗,若對軟體開發來說,他應該要有足夠的程式設計經驗,而且最好有卓越的程式設計能力。他也應該管理過專案,知道專案進行時所會遭遇到的諸般現實問題,並且知道如何在有限的資源下,規劃取捨均衡的計畫及方案。他也應該有足夠的理論背景,對於電腦科學、資訊科技的基礎理論從演算法、資訊理論、編譯器、資訊安全、影像處理、分散式系統、資料處理……都有廣泛的一般性認識。

為什麼我認為廣度優於深度?這並不是說深度不重要,一位技術背景出身的CTO勢必有其專精、夠深的領域,但是他很難在每個領域都一樣的專精。而CTO的責任有很大一部份是要做技術決策,當你在做高階的技術決策時,你需要的是全面性的觀照。就像規畫一個系統,免不了要涉及資訊安全的議題,你不見得需要鉅細靡遺地記得加密演算法本身,但你可能得懂一個系統可能遭遇到的攻擊方式,以及在那些層面需要做安全性的防護。在技術上的廣度,可以讓你在決策時不至於遺漏或偏頗。

若是上述能力大致涵蓋技術能力的範圍,那麼一位CTO該不該是技術最好的那一位?我認為CTO 的角色即使技術能力極為吃重,但還是肩具管理的責任,因此,能否妥善的帶領技術人員完成任務,也是他的重要工作。

因此,CTO最好具備溝通協調的能力,而且,很特別的,他最好擅長和技術人員溝通。技術工作者和其他領域的工作者相比起來,還是可能會有一些不一樣特質。例如,有的技術工作者在技術的論點上需要被說服,他們並不會只是單純接受指令行事;有的技術工作者很講究工作原則,流程是怎麼規範,就必須按照流程來進行。正因為技術工作者可能有不同的特質,因此,和他們溝通也另有學問,而這正是CTO的重要工作。

基本上,具有技術魅力的CTO,在處理此類與技術人員的溝通上,會有優勢。一個被認定為「強者」、「大神」的CTO,所表達出來的觀點、看法,對於技術人員在心理上就會有先天的份量,因而容易接受。而在塑造開發文化時,CTO也勢必扮演最高層次的「傳道士」的角色,將他希望營造出來的環境樣貌,讓開發人員樂於接受並且樂在其中。

CTO應該樂於隨時關心最新的技術動態,並讓自己的技術觀念與時俱進。因為他的重要工作是制定公司的技術戰略,因此,隨時了解、知悉最新的技術就變的很重要。並且隨時思考新的技術與公司現今產品、下一代產品可能發生的關聯性,研究如何運用新的技術改進、創造新的產品及服務。

最後總結,倘若你有志成為一名CTO,在技術領域的著力因為人的心力有限,無法一一專精,可以在廣度優於深度的基礎上發展。另外,你需要的不只是技術的能力,從工程師的人際關係處理、到對於新技術的熱愛及關心,都是成為一名軟體開發團隊CTO的要素

作者簡介


Advertisement

更多 iThome相關內容