我們是如何一步步走到今天,來自一個小團隊的成立,沒有資本、沒有資源、沒有高手,三年前的我,以 iOS 開發的角色,剛剛加入這間剛成立、剛轉型的公司,沒有敏捷開發觀念、沒有任何專案管理的方法論、沒有任何交付與部署的概念、沒有 Cloud 的觀念,土法煉鋼,接近隕石式開發。

時至今日,我們有了最基礎的 DevOps 開發平台適用前端、後端、手機端等各大平台的解決方案。開發工程師夥伴無需再關心部署與維運細節,可以非常專注在開發技術與商業業務邏輯上,實現真正的 Commit 即交付。

起點

現況

九月的台北悶悶熱熱的,每天往返那紅色的圓山與信義,新生活使得我有點興奮。作為一個喜歡多面向的事物,我鮮少說明自己是「非本科轉職」。喜歡的事情太多,找一個當職業好像也是理所當然。

當初那個「iOS 軟體工程師」的身份,現在看起來確實離我太遠。不過那也是我非常重要的經歷,形象點來說可以說是「Base Image Layer」吧。

初入工程師的我並沒有太多妄念,只覺得自己還不夠,還缺乏那個這個,一不小心就是一串「出師表」。但他們也逃不過被推遲的命運,在時間的閣樓上腐爛。人通常會高估自己一年內能做到的事情,卻又太小看自己十年能夠完成的事情。

做自己做的事情之前,是不是要先完成其他人想做的

我遇到的狀況也可以被稱作是大坑吧,要是放到現在,可以拿出那個「快逃」的著名梗圖,作為開頭,一笑置之吧。 玩笑終歸是玩笑,但他卻是實實在在發生的扎扎實實現實人生。

秉持著理想主義精神,「解決問題,並交付價值」的精神,我以「iOS 軟體工程師」的身份,接下了「Android 專案開發」。這鮮明的對比像極了我矛盾的旅程。呵呵一笑,或許挺適合我的吧。這段經歷我也分享在從 0 到 1 的 DevOps 文化建立-我們是如何在兩年半的時間建立 DevOps 文化(上) 一文中。

理想主義之後往往帶來的是一連串的辛苦,但這辛苦卻不痛苦,甚至有點愉悅。我沈浸在遇到問題,學習問題,解決問題的循環中。現在看起來那些問題可能很簡單,但他確實是我繼續往前走的動力之一。或許就是那無理的相信與信念,感受到自己可能可以改變一些東西的時候,我就能無所畏懼地往前。

逃走會不會比較快?

當時的條件或許確實可以找到一個真正的「iOS 軟體開發」工作。但在這邊真的不行嗎?那時候我常常跟自己討論。真正問自己想要什麼,我知道我的目標是可以創造一些東西,創造環境、創造價值,如同我開始決定做軟體那樣,創造一些東西。

我感受到這邊的環境我是有可能去創造一些東西的,雖然現在一團糟,什麼都沒有。但就是因為什麼都沒有,才需要創造啊!在第一個案子之後,我決定要從自身開始,然後去帶動公司整個體系的建置與改變。當時想像或許真的很難,但大不了就再重來一次吧!我不怕重來,我怕沒去試過。

心若沒有棲息的地方,到哪都是流浪。心之所向,便去之。

改變

這段期間大量接觸了現代軟體開發的種種事物,從敏捷開發、專案管理,到後端、容器、容器編排、自動化,到大前端,我瘋狂地吸收與思考,以在旁人覺得在唬爛的速度學習。當時除了學習,幾乎沒有其他娛樂了,或許最大的娛樂對我來說就是學習吧。

學無止境,我喜歡學習。當時理解了一點之後,就覺得現在我需要的是實踐,讓大家看到,真的能改變。

不過,現實與理想總是有巨大的鴻溝,現實很快就朝我打過來。當時秉持著人人都可以學習的心情,招募了一些也是自學或是新手,但對於程式有期望與熱情的一些人。也準備好引入敏捷開發、用戶故事這種開發模式。

沒有熱情不行,但只有熱情是不夠的。在這種建設的狀態,我需要的可能是可以一起領會與一起變得更好的夥伴。當時候我才發現,有時候對一些人來說,學習是痛苦的。這種痛苦,是無法堅持太久做這件事情的。

絕望

這段期間我費盡所有心思的期望新夥伴能夠獨當一面,從手把手教學,到求好心切的言論,到失望的逃避。

很多時候影響了團隊的氣氛,(主管在唸人,氣氛總不會好吧)。我願意負重一切,我願意不被理解,只願能夠有個機會,展現這一切的成長與成果。

沒有人天然需要理解我,即使我渴望。但那些我都可以承擔,只要我做的一切努力,都能看到一點成果。

我的時間有限,不要在意那些沒有實質益處的抱怨,不需要照顧那些玻璃心,我需要勇敢追隨自己的理想環境。

那時候的想法,可能大部分是對的,但我忽略,我需要照顧自己的心。

在一連串的時程壓力之後,我絕望了,我放棄這些當初在我看來有機會的夥伴了。那種絕望是沒有時間傷心難過的,時程緊迫,沒時間難過了。

但我依然決定實踐,我決定對自己實踐。

我自己實踐敏捷開發準則、實踐需求會議、回顧會議、每日站會,即使知道其他人報告的東西毫無意義。但現階段我需要的是,自己先實踐,我沒有精力管其他人了。

我自己開發 iOS,Android,當然都是 Native,自己寫後端,自己串接。自己理解雲服務設計,自己理解容器,自己理解 K8s,自己設計自動化部署。沒錯,沒有人可信,我只能相信我自己。但理想主義的我還是理想的相信,我有一天可以找到交付的人。

在這段期間我把所有公司目前的基礎設施建置好了,包括前端、後端、手機端等運維端的自動化。我沒有時間去思考我會不會,我只知道現在不做,可能就沒機會了。

再次變革

刻意去找的東西,往往是找不到的。天下萬物的來和去,都有他的時間。這段時間有非常巨大的內心衝突,因為認為現在的夥伴已經不可能跟我繼續往前走了。繼續如此,只有互相傷害的餘地,你有你的人生,我有我的旅程,我們應該就此揮手。

成長是一種蛻變,失去了舊的,隨之而來的新的氣象,這就是公平。

在這段期間我沒有太多的作為,一方面是讓自己的心休息一陣子,一方面也面臨人生的重大抉擇事件,在這個人生地方做決策,是做不好的。

慶幸的是,這次有人來幫我了,有人提倡與鼓勵去繼續執行。

他們就像黑暗隧道出口的光,雖然不是萬丈光芒,但也算是能看清自己腳步與周圍了。

改變最小阻力之路

我認同萬物皆有往最小阻力之路運動的傾向,無論是萬力,還是做事的方式。

這次我開始在之前的基礎設施上,與夥伴們的幫助下,系統規劃了流程與 SOP。從需求介接、需求會議,搜集想法、Roadmap 與里程碑。系統規劃,Wireflow、互動文件、媒合需求、設計、開發等各個面向。跟各個專業領域的夥伴們討論最好的流程。

沒有夥伴的幫助與參與,這是很難推動的,而且剛推動新政策的場面,常常令人尷尬的無法直視。

這次讓大家參與進來的感覺很棒,也很感謝大家能夠一起參與進來。於是我們有了最初版的 DevOps 雛形,結合了「人」、「流程」與「技術」。技術這一塊之前在我的基礎設施已經算是有個流程了,我還是深深覺得技術是最簡單的部分,比起人來說,起初我們加強了流程,並且透過合作與討論加強了「人」的過程。

讓我深深的體會到「DevOps」,最重要的是人。要讓大家知道,要交付什麼樣的價值,大家有共同的默契。玩樂時開心,認真時使命必達。這種默契讓我覺得非常有「心流感」。這也是少數不在技術鑽研、閱讀的領域中得到的心流感。

雖然他們都是新手,卻展現出不畏懼的氣度

得到了這些幫助之後,讓我想為這個團隊做更多事情,從一個人、兩個人,到一群人的過程。開始思考大家開發中或執行專案中的痛點與難點,希望以更多教練的角度,從指導到教練,從支持到授權,就像情境領導力中所提到的一樣。

有夥伴的感覺很好,但從來是得來不易。未來的路會更加的「去中心化」,每個夥伴與節點的角色越來越鮮明,能夠討論出越來越棒的解決方案,以過往的經驗為基礎累積經驗,更加的發光發熱。

新的詩章

我們買下一張永久車票,登上一列永無終點的火車。沒有比 DevOps 更加貼切的形容了吧。

現在我們團隊有 14 個人了,也會遇到更多新的挑戰與困難。有時候過程會給你當頭棒喝,但永遠不要灰心。我希望在某些時候我的案例能夠給大家像是一盞燈,有人去實現過,或許看起來就不那麼孤單。就像當初那些為我舉燈的人們一樣,我充滿感謝,並且想成為他們。

接下來的路會更加精彩,如何進一步讓大家覺得可以為團隊做到「不僅僅是完成」、產品思維,做出屬於自己的產品!這是需要團隊成員中內心的自驅力的,外力是沒有用的。我能做的可能就是為團隊做更多,期望能不能勾起一點點漣漪吧!

願我們能像菜根譚裡面說的,「地低成海,人低成王」,保持著那種韜光養晦,虛懷若谷的人。

或許這又是理想主義者的期望,但何不常有呢?

再次感謝團隊中給予我支持的你們,與其他可能素未相識的你們,感謝你們給予我與團隊莫大的幫助與建議,未來我們並肩前行!

下一篇會為大家介紹 - 我們的執行流程。這些內容也會在 DevOps Taipei 9 月 的分享中哦,我們下次見!

澄思設計-沈思世界的解決方案
解決問題的路上,也給大家解決過的問題不同的角度思考方案,包含軟體工程、架構、使用者體驗、專案管理等方法論。澄思設計以顧問的角色,積極解決客戶的問題。理解客戶的想法,這個客戶不一定是企業,也可能是個人,解決企業問題,我們使用專案解決,解決個人問題,我們使用產品解決。我們想要找的人,是能夠解決這個世界上各種大大小小問題的人,無論是透過溝通、技術解決,同時他應該會有積極與強大的自學能力,對於解決問題充滿熱誠,與團隊、與公司共同搭上火箭成長,那你可能就是我們要找的人Klearthink Design Co., Ltd.
如果你對我們公司有興趣,歡迎參考我們的職缺,我們有機會聊聊吧 :D
職缺參考

yasuoyuhao,自認為終身學習者,對多領域都有濃厚興趣,喜歡探討各種事物。目前專職軟體開發,系統架構設計,企業解決方案。最喜歡 iOS with Swift, [email protected]
如果喜歡我的文章,可以按下喜歡或追隨讓我知道呦,拍手可以拍 50 下,更歡迎許多大神指點討論。感謝您的閱讀。
部落格:yasuoyuhao’s Area