Posts Tagged ‘programming’

程式不只是技能,更是滿滿的人生道理

December 7th, 2016

Kids using iPad

大多數人印象中「寫程式」是只有電腦工程師才懂的專業,但隨著科技的進步,透過視覺化的塊狀模組即可完成程式設計,大幅降低寫程式的入門門檻。程式設計如同閱讀,能讓我們獲得更多知識,並培養國際思考以及解決問題的能力,透過鍵盤與滑鼠自信地面對數位創新的世界。

─ 蔡總統於「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 個小時。

團隊合作的重要

無論一個工程師再強,也無法一個人完成一個大系統。與其他人組織、協做、發揮整體戰力,是工程師必修的功課,也是所有人一生中必修的功課。

__

想轉職工程師、加入網路公司、獲得更好待遇與工作環境,在實作程式中領悟更多人生智慧的朋友,歡迎加入 AppWorks School/ iOS Class

(Photo via Kentucky Country Day, CC License)

現在開始的社會,懂程式是基本技能

June 1st, 2016

Hacking

雖然並非一夜之間,但一步步的,網路與科技正在改變全球人類的生活型態、重新定義企業運作的方式,也改寫工作的內涵。

在這每天更數位化的世界,懂程式正在變成基本技能 ─ 就如同在國際化世界,懂英文是基本技能一樣。事實上,十年之後,不懂英文應該會隨著翻譯工具成熟而問題變小,但懂程式的重要性恐怕只會日益增高。

加速自動化的世界

人類社會長期以來最核心的發展主軸之一,就是自動化。最早我們利用牛、馬等動物來幫助我們更輕鬆的耕作、運輸,而後我們學會了用水車、風車、電力等更持久、更低成本的動力來源去加速生產。由於背後是人類對勞動的逃避 (懶惰) 與對經濟利益的追逐 (貪婪) 等永不滿足的天性所驅使,自動化的發展就像水往低處流,從無止境的在追求更神奇的明天。

而隨著近 30 年來電腦軟硬體與機器人科技的進步,以及網路作為主要使用者介面的普及,讓製造、服務、零售、運輸、教育、醫療、法律、財務、會計等各行業工作的自動化,一個個接近或跨越臨界點,從想像變成實務上的可能。換言之,現在開始的社會,我們將目睹自動化的加速發生。在這樣的世界裡面,被自動化的職業,需要的人類工作者數量將會日益減少,另一方面,各行各業對於自動化人才的需求,則會大幅增加。自動化需要利用程式語言,去設計、精進各種軟硬體的工作邏輯,因此,在這樣的世界裡面,懂程式將變成基本技能,也變成把想法落實成價值的最基本功夫。

樂當被服侍的主人?

有些人會說,在這樣的新世界裡,我不需要懂程式,只要當一個被照顧得服服貼貼的主人,每天隨心所欲的活著就好。這的確是一個可能的結果,但我擔心它發生的機率極低。

首先,自動化恐怕還要再二十、三十年的發展,才能達到方方面面照顧每個人需求的境界,在這個發展過程中,參與設計自動化科技的人,會得到主要的經濟報酬,而在「被自動化」行業服務的人,則會感到就業機會與收入的擠壓。

這個現象其實已經在發生,以媒體業為例,隨著廣告預算往數位、網路,與程式自動化投放移動,傳統廣告 AE (業務) 的需求正在減少,而網路廣告系統開發者的數量與薪水卻是水漲船高。電子商務又是另一個例子,它減少傳統「櫃姐」的需求,取而代之的是開發電子商務網站與 App 等「自動化商店」的工作。

所以在現在開始的數十年,自動化加速發展,進而帶動的 21 世紀工作大洗牌的過程中,留在傳統陣營非常危險,相對的,加入「自動化」陣營,我認為是機會較好的生涯路徑。

另一方面,當自動化全面成熟的那天到來,僅僅當一個一般人,恐怕也不會如想像中自由自在。總體來說,人們慾望無窮,但世界資源有限,所以人類社會分配資源的方式,一直是基於每個人創造的價值。假設在未來的世界,你因為不懂程式,無法參與自動化的發展去創造價值,又不會做其他機器做不到的事情,那麼你恐怕只能被分配到最基本的資源,無法真正隨心所欲的享受生活。

最後,更遠的未來,假設我們透過核融合、星際採礦等先進技術,讓近乎無窮的資源變得可能,這時每個人可以配給到的「點數」的確會大幅增加。但即便如此,你還是要考慮到人天生是比較的動物,永遠想追逐比昨天更好的生活。如果你沒有創造能力,最終還是會有瓶頸。所以,擁有程式這個核心能力,還是你可以幫未來的自己買的最基本保險。

學會基本技能

從小我們學數學、中、英文,不是因為它們是知識,而是因為它們是在這個世界生存、創造價值,最基本的技能。但當產業快速變遷,程式變成更重要核心能力的現在,我們的教育體系卻沒辦法迅速跟上,已經結束學業的人也無法重來一次。但好在免費線上教學服務 (所謂 MOOC) 已經相當普及,你不用回去學校、也不用報名補習班,只要一個點擊,就可以開始自主學習程式。

各位,世界真的在加速變化,你必須看清這個現象,主動出擊,才能為自己爭取更好的明天。

___

想學 iOS 開發,做出影響百萬、千萬人的 Apps?AppWorks School / iOS Class #2 熱烈招生中

(本文編輯後刊登於《30》; Photo via ter-burg, CC License)

Ask Jamie #15:年輕人都該學 Code?

March 19th, 2014

Jamie Lin 林之晨

Ask Jamie: 你提出問題,我整理成文章,與所有讀者分享

大家都知道 AppWorks 每半年會辦一次大型 Demo Day,讓當屆我們輔導的創業者有一個舞台可以發表創業成果,並且取得重要夥伴、投資人、媒體等的合作機會。但很多人不知道,為了讓創業者們能夠在台上有令人印象深刻的表現,從每一屆開學到 Demo Day 之間的四個月,有很多前置工作必須發生。

其中一個重要的工作是 Insider Day,也就是俗稱的期中考。在這個小型 Demo Day 中,我們邀請到所有 AppWorks 長期合作的 Mentors 與近百位 AppWorks 校友作為貴賓,到場聆聽當屆創業者的計畫,給予他們重要的回饋,以作為他們接下來 2 個月修正的參考。另一方面,我們也讓到場的貴賓們有機會認養團隊,自願成為他們欣賞的創業者的 Mentor,給創業者們好的諮詢管道。

而每次只要是 Insider Day 或是 Demo Day 的前兩週,AppWorks 就會進入魔鬼訓練營模式。我們花很多時間陪創業者們檢視他們的 Vision、策略、商業模式、市場、Traction、團隊,不斷演練並且完善所有人的 Pitch,務求最終在貴賓前有近乎完美的呈現。

AW#8 在二月初開學,很快下週五就是他們的 Insider Day。因此本週的工作重心就是緊鑼密鼓的輔導,努力創造脫胎換骨的表現。

Ching Asked: 年輕人都該學寫 Code?

Hi Jamie,

在青年影響力論壇中,您建議所有年輕人都應該學會寫 Code。然而我有些疑問,為什麼寫程式對於我們這輩是那麼必須呢?何不找個精通 Code 的夥伴一起創業?

I really appreciated your kindness and patience on the backstage of the forum 🙂 Thanks for your every useful suggestion!

Ching

Dear Ching,

謝謝你的鼓勵。每次去這些活動,我最喜歡的部分就是留下來回答年輕人的問題。除了比較能夠真的幫上一些人,第一手聽到大家的心聲也會幫助日漸年長的我不要與年輕人脫節。

讓我們回到你的問題。首先,學 Code  不一定是要創業。一個社會裡面創業者畢竟是少數中的少數,如果只是為了創業,不應該鼓勵年輕人通通都要學 Code。

所以學 Code 是遠大過於創業的一件事情。背後的邏輯請容我這樣解釋 ── 過去人類的商業活動,是在馬路上完成的,因此多數的行業需要雇用店頭人員,由他們來服務顧客,以提昇銷售、完成交易。在「馬路業」裡面,店長與店員、店員與顧客之間,都是用中、英文等人類語言來溝通的,因此在過去的世界,人才必須精通這些語言。

但未來人類的商業活動,絕大多數將移動到網路上完成。在網路業裡面,人類店員幾乎是不需要的,取而代之的是軟體,由軟體來服務顧客、提昇銷售、完成交易。而當我們需要告訴這些「軟體店員」如何把客人服務的更好,講一般的中、英文他們是聽不懂的,因此未來的人才必須要會講程式語言,才能夠驅動軟體去完成需要的業務。

所以當所有的企業都必須成為電子商務,這個社會將需要非常非常多懂得如何驅動電腦與軟體的人類。一個企業裡的人才越懂軟體,越能設計出頂尖的網路服務、電子商務體驗,那麼它就會成為越成功的企業。Apple、Google、Facebook、Amazon、小米、阿里巴巴、騰訊、百度都是最好的例子。這些企業裡面絕大多數的人才都是懂軟體的人才,也因此他們透過網路與電子商務成為了全球頂尖的企業。

過去 30 年,台灣靠著培養出數量龐大且優質的電機工程師族群,搭上了的個人電腦這場巨大革命。未來 30 年,台灣必須靠著培養出數量龐大且優質的軟體服務人才 (懂軟體又懂服務的人才),才能夠搭上網路帶來的巨大通路革命。

因此,學軟體不是只在創業而已,它根本是個人、企業,以及國家未來競爭力的所在。

而回到你的創業問題,假設你要開一家店,店員都講俄文,但你只會講中文,所以必須找一個夥伴來當中間的翻譯。請問這樣的結構比較有效率,還是如果你自己也會講一些俄文,能夠更清楚的掌握這家店的營運與脈動?我想應該是後者。那麼也就是說,如果你的團隊是前者的組成,很容易就會被後者的組成超越。

再考慮到創業的世界,尤其是網路與電子商務,往往是贏者全拿的結構,那麼當你有能力學 Code,可以降低效率不彰帶來的劣勢時,你當然應該要把它學起來。

加油!

Jamie

___

歡迎在 Google+ 上追蹤我

©2024 MR JAMIE.
網站由 Allen Hsu 設計 | Logo 動畫由 Wen Chen 完成