【為什麼我們挑選這篇文章】當學寫程式成為在這世代生存,需具備的重要核心能力,我們不得不接觸,想躲也躲不掉。
不過學程式並非只是學習單一技能,因為在用程式設計、創作產品時,你得到的不只有技術的進步、完成工作後的快感,或最實際的金錢收入。
在這過程中,能學到最重要也最寶貴的,是豐富的人生智慧和滿滿的人生哲理。(責任編輯:張瑋倫)
大多數人印象中「寫程式」是只有電腦工程師才懂的專業,但隨著科技的進步,透過視覺化的塊狀模組即可完成程式設計,大幅降低寫程式的入門門檻。程式設計如同閱讀,能讓我們獲得更多知識,並培養國際思考以及解決問題的能力,透過鍵盤與滑鼠自信地面對數位創新的世界。
─ 蔡總統於「2016 年電腦科學教育週」啟動儀式(TechOrange)
在我們大聲疾呼多年後,政府終於漸漸睡醒,開始展現對深耕程式教育的重視。往前走,台灣的孩子們將從國小開始接觸這個在 21 世紀生存,最重要的核心能力。
但事實上,學程式遠遠超過學一種技能。實際運用程式去設計、建造產品的過程,隱含著滿滿的人生道理。
我從 10 歲開始自學程式、組電腦,21 歲與大學朋友創辦哈酷網、碩網,開始實際把程式運用在商業世界,28 歲在紐約參與社群網站 Sosauce、遊戲製作公司 Muse 的創辦,32 歲回台成立 AppWorks 幫助年輕人發展網路新創,可以說整個人生都與程式脫不了關係。
回頭看這趟旅程,程式教了我太多人生的智慧,以下是其中我認為最重要的,跟大家分享。
- 程式的目的不是程式
程式是讓使用者運用,幫助他們解決問題、滿足需求的工具。所以真正的目標是「問題被解決」、「需求被滿足」,而不是程式本身。一個工程師必須認清程式不是一件作品,而是過程中的介質,才能設計出真正增進用戶生活的好軟體。
- 困難的事不一定有價值
很多時候,工程師辛苦刻了一些功能,卻發現用戶根本沒有這樣的需求。另一些時候,我們發現按鈕的顏色、說明的文字、新手上路的引導、會員登入後體貼的問候,這些功能做起來很簡單,用戶卻非常在乎。人生也是,我們辛苦的付出,人家不一定有感受,但一句不經意的話,卻可能掀起社會運動。
- 新東西不一定好
人天生喜歡新事物,但在設計軟體產品的過程中,新技術往往不是最好的選擇。新技術通常有很酷炫的核心,但缺乏完整的周邊配套,甚至沒有太多工程師真的懂。因此實務運用上,往往帶來更高的成本與更大的風險。因此,聰明的工程師會選擇成熟或接近成熟的技術。
- 懶惰不是壞事
優秀的工程師往往是最懶惰的動物,正是因為懶惰,所以可以做出最方便好用、容易維護的軟體。
- 簡化才是王道
N 倍複雜的軟體,帶來 N 平方成長的用戶教育、團隊溝通協作、後續維護成本。因此,學程式會教你力行減法的重要,KISS everything. (Keep It Simple and Stupid)
- 系統思考
程式往往不是一個獨立存在的個體,而是由許多互相連動的模組、物件、平台所形成的體系。因此,學習設計程式的同時,也勢必會增強系統思考的能力,幫助你理解單獨模組的優化不一定能提昇整體戰力,以及找到系統內槓桿點等重要人生觀念。
- 沒有情緒、只有邏輯
人是理性與感性兼具的動物,但機器卻只有 100% 的理性。因此當你的程式無法 Compile(編譯過關),跟機器生氣、求情、說謊都是沒用的。只有學會摒棄自己的情緒,用完全合乎邏輯的方式,才能通過他們嚴格的關卡。在過程中,你也學會了如何運用 EQ。
- 問題的根源都是自己
當程式掛點、當用戶的問題沒解決、需求不滿足,你並不能怪罪用戶、也無法推卸給機器,只能怪自己沒有做出好的選擇、設計出對的架構、寫出可靠的程式。人生也是一樣,問題都根源於自己過去某個時點做出的選擇,沒什麼好責怪別人。
- 速度與債
在設計早期版本軟體時,為了求快、求提早取得市場反饋,工程師往往會用較粗魯的方式完成功能,因此欠下所謂「技術債」。而後,當產品獲得市場歡迎,用戶量持續成長,償還這個技術債所需的時間與人力就會日益膨脹,就像現實生活中的負債會生利息一樣。
因此,工程師要懂得在對的時間點,把前債還清,才不會在日後造成永不超生的後果。經歷過幾次這個過程,你將學會用成熟的態度去面對選擇、負債、償還。
- 可以一時繞過麻煩,但無法永遠逃避它
這跟技術債的概念很類似,有時候,工程師可以用 Work Around 暫時繞過問題,但它不能取代解決問題本身。遲早,你必須正面面對、解決它。
- 永遠幫自己留條後路
程式做久的工程師,往往會養成習慣在迴圈,或是需要長時間的執行程序中,幫自己留一個跳出的路徑,免得事情出狀況時,無法搶救。在人生中,永遠想好後路也是很重要的觀念。
- 用小里程碑激勵自己
在做一個大系統時,如果花數週、數月的時間埋頭苦幹,卻一直沒辦法看到成果,很難維持自己在意志高昂的狀態。厲害的工程師會把它切割成許多小片段,每個階段完成都有可運作的部份成果,利用這些小里程碑來讓自己保持熱情。
- 專注的重要
專心的設計程式 1 小時,生產力恐怕抵過邊做邊玩 10 個小時。
- 團隊合作的重要
無論一個工程師再強,也無法一個人完成一個大系統。與其他人組織、協做、發揮整體戰力,是工程師必修的功課,也是所有人一生中必修的功課。。
(本文經合作夥伴 Jamie Lin 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為〈程式不只是技能,更是滿滿的人生道理〉。)
延伸閱讀
【台大洪士灝】奏請教育部:教學生寫程式,不代表他們就有運算思維
程式自學十年心得:想吃這行飯,學好演算法與資料結構才能讓你站穩腳步
跟上全球程式教育風潮,107 學年起程式設計列為國高中必修課程
◎ TechOrange 正在招募「TechOrange 社群活動部專員/經理」唷! 如果你喜愛觀察網路社群行為,擅網路語彙溝通,文字感佳 而且希望參與活動企劃與執行工作 歡迎你提供履歷自傳寄至 jobs@fusionmedium.com 來信主旨請寫明:【應徵】TechOrange 社群活動部專員/經理:您的大名