不斷推陳出新的技術,該如何學習才能累積?

technology_1350331040_460x4601

(Source: neuresource group)

最近有一則在Swift.org上的消息,讓所有學習Swift程式語言的人都感到十分焦慮:

F94A948B-5DF3-4A7B-9536-182A2269EA67

Swift 3.0不會與Swift2.2 原始碼相容(source-compatible)。也就是說用Swift2.2所撰寫的專案,大部份將無法直接在新版的Xcode直接執行,必須改寫成Swift3.0。

但會不會是每一行都必須完全重新改寫呢?答案鐵定是否定的。目前也可以從Apple公開的資料知道,哪些東西會被變更。

那新版的Xcode會不會有一些檢查與引導的機制,轉換成Swift 3.0呢?

非常可能。像是Swift1.0到2.0的做法:(Edit -> Convert -> To Latest Swift Syntax…)

Screenshot 2016-05-10 10.47.45

然後開始幫你檢查哪邊需要變更:

Screenshot 2016-05-10 10.48.04

跟著按一按很有可能就都調整好了,但也有可能有些程式片段需要做比較大規模的改寫。

那如果我最近正剛開始學Swift,到底是要等3.0出來再學,還是現在就可以開始呢?

其實如果你是一個追隨蘋果很長時間的開發者,時間越久,你會越習慣這種半年數小改,一年一大改的狀況。開發環境、可以用的SDK、新增加的工具、圖像設計原則、甚至到程式語言,相關人員無一倖免。

我永遠忘不了2014年WWDC的Keynote,當宣布要推出Swift語言的時候,老美大聲叫好,印度工程師卻是一臉木然。

Screenshot 2016-05-10 11.03.59

右下方的這一個印度開發者,不斷搖頭,最後還嘟起了嘴。

Screenshot 2016-05-10 11.04.31

其實這樣的反應並不意外,你賴以為生、甚至引以自豪的技能,好像在一夕之間要歸零,再度回到Hello World的世界重新開始,這個手叫人怎麼拍得下去嘛。

事實上,我在2013年去參加WWDC的時候,就已經有這種無力感。Apple每年所推出的新技術,背後的團隊早己不知分頭進行了多少年,在開發者還沒有追完當年的新技術時,馬上又到了下一年。而這種感覺,更普遍存在於資訊界,請參考陳鍾誠老師的「那些年,我們還沒學會就已經過時的那些技術」。

那麼,我們到底該怎麼學,又或者,該等到什麼時候才去學呢?

maxresdefault

當然是要問自己,學的目的是什麼?

找工作

這個是最嚴肅的目的了,但既然是要當成工作,是一輩子的事情。從長期來看,既然技術持續會變化,任何時間加入都是好時間!熟悉一兩項程式語言,但更重要地,是了解撰寫程式的邏輯,並藉由一個又一個的專案磨練自己實作以及解決問題的能力。

學新知

想要看看現在有什麼新技術,瞭解一下。如果是這樣的目的,那也是日日是好日,隨時都可以加入學習的行列!因為資訊領域不斷地推陳出新,所以任何時間來,都可以接觸到許多沒學過的技術,無須等待。

想創業

創業者是不是應該投入技術研發?這是一個大哉問,我們先把問題縮小至創業團隊中的工程師。由於面臨產品即將上市的壓力,可能沒有那麼多時間研究不斷變化的技術,這個時候,可能就必須往穩定、保守的路走,不過這個答案也不是100%,如果你就是要製作一個iOS原生的APP,沒辦法,Apple怎麼變,不論是新創公司、大企業還是個人開發者,通通只能照他的規則走,什麼時候要更新至什麼版本,必須測試到哪一個作業系統版本,要依據什麼樣的設計原則。。。

練腦力

如果你只是希望體驗一下程式設計,又或者藉由這個方式讓自己變得更聰明,那當然也沒什麼好顧慮的,任何時間都是好時機。不論是透過Hour of Code或是輕鬆愉快的夏令營,都可以讓你有一些初步的邏輯概念以及享受入門的樂趣。

IMG_2278

的確,不論是什麼目的,沒有什麼好等的,任何時間都是學習的好時機!而任何過往的學習也沒有什麼好可惜的,資訊領域本來就不斷在往前,你是否在學習中,真正學會了程式設計的邏輯以及功能實現、問題解決的能力?這些知識,都將真實地累積在你身上,一點一滴成為工程師的養分,語法只是表面,看清本質,知識的學習永遠能將你推往成長的道路上。