每位開發者都該看:如何在四十歲後還能繼續從事軟體開發?

年齡永遠不會是一個問題,只要你的心不斷催促你持續寫程式,持續製造新的東西,你永遠都會是年輕的。
評論
評論

原文為「Being A Developer After 40」,經 Evan Lin 翻譯後,INSIDE 獲同意轉載。Evan Lin 目前是 Linker Networks 的 Cloud Architect ,也是 Golang 台灣社群的 co-organizer。

導讀:

這是一個 42 歲的開發者所寫經驗分享文章.並且列出一些他 18 年多身為軟體開發者的經驗談.許多部分看完後都會希望自己當時就能夠了解,所以很推薦不論是新手或是老手都要好好閱讀這一篇文章。

故事很長,一切從 1997 年開始講起.那是一個令人懷念的年代(FF7 發售,微軟入股蘋果,鐵達尼號電影上映),那是作者第一年身為軟體開發者的年份。當時他的第一份工作是從事 ASP 並且在微軟的平台上面使用 EditPlus。十八年過去,作者一共做過六份工作,其中被炒魷魚兩次,出過兩本書,從事過不少演講。他整理了他的一些心得,希望年輕的開發者(或是有志將軟體開發作為終生志業的人)一些建議,條列如下:

1. Forget The Hype(忘記各種程式語言與架構的炒作與熱潮)

不少的新的語言與技術來來去去,作者不是要你別去學習新事物,而是不要因為有太多的新事物而恐慌或是自我放棄。持續鑽研你目前在學習的,並且可以每年挑一些你有興趣的項目深入了解。

[反觀我自己]: 各種後端與前端語言來來去去,我把時間花在學習 Python(會持續), Ruby,Scala(會持續)與 Golang(會持續)。透過使用 Golang 可以有更多的時間去了解系統架構與直接面對問題,讓寫程式變得更有趣。

2. Choose Your Galaxy Wisely(慎選你的星系)

為了維持原文的意思,我還是使用星系這個字。這邊指的是你學習跟從事的技術要慎選,舉例而言,微軟星系(泛指: .Net、C# ….)或是 Apple 星系(Objective C++、Swift …)。慎選你喜歡的星系,因為那會影響你未來的發展。

[反觀我自己]: 過去十年主要針對微軟星系,目前主要就是後端的 Ubuntu 星系 ,各種後端程式語言都是我目前主要的重點,當然還有 Docker 相關技術。

3. Learn About Software History(了解各種軟體的歷史)

作者認為如果你喜歡一種程式語言、一種架構,你就需要好好的了解它的由來與故事。

[反觀我自己]: 比如說我喜歡 Golang ,我就應該要了解以下的一些問題:

  • Golang 是誰發明的?
    • Ans:由 Google 內部的三位大神 Robert Griesemer,Ken Thompson(C 語言的共同發明者)與 Rob Pike(UTF-8 的共同發明者),在 2007 年於 Google 內部共同起草發明。
  • 他主要解決什麼問題?為何以前做不到?
    • Ans:根據第一份 Golang Talk
    • 原因為:
      • Go fast!
      • Make programming fun again.
      • 世界在變,但是系統語言卻已經十年沒變。
      • 系統語言往往編譯過久。
    • 為何以前做不到:(在舊的程式語言上做不到)
      • 新增函式庫不是一個正確的方向。
      • 需要從新思考整個架構來開發新的程式語言。
  • 目前這個技術的最新狀況如何?
    • Ans:Golang 目前是 1.6.2 (2016/05/03) ,並且支援 HTTP2 並且可以透過 gomobile 在手機上也可以使用相關套件。

4. Keep on Learning(持續學習!)

不論你喜歡哪些新的技術或是新的程式語言,你都應該持續的學習,裡面並且建議:

  • 每年學習一個新的程式語言。
  • 每年讀六本書。(作者推薦 Peopleware、The Psychology of Software Programming、Facts and Fallacies of Software Engineering、Agile!: The Good, the Hype and the Ugly、Rework 跟 Geekonomics,都是好書。)

[反觀我自己]:

  • 程式語言部分 : 2014 (Ruby, Scala) 2015 (Go, Swift) 2016 還沒有決定.
  • 讀書部分: 每年讀沒有超過六本書,但是讀過不少論文並且有上過一些 MOOCs

5. Teach(指導其他人)

這邊指的不是一定要開堂授課,你可以寫一篇部落格來講解你學習的新事物, 因為教導是最好的學習方式。

[反觀我自己]: 還好部落格從來沒停過,個人也認為寫部落格的過程可以讓我不斷地檢視我瞭解的部分,並且弄懂所有的細節(希望!),不過還是希望能夠多多指導其他人(比如說 meetup 或是 talk)。

6. Workplaces Suck(工作場所糟糕透了)

不要去期望軟體公司會給你任何職涯的規劃,相反的不少公司會將你認為是另外一種的勞工,只會將你放在你擅長的位子,所以也有 軟體公司變成血汗工廠 的相關文章。作者同時也認為開放性座位對於需要高度腦力工作的軟體工作者是一種最不好的設計(使用 “cancer” 這個詞)。而對於工作上的指派,作者也建議大家應該要好好了解每個任務的內容.有任何疑問應該要提出來討論,對於不了解的事物盲從是最不好的,應該不惜抗拒權威或是離職才是正確的選擇,不要讓這樣的工作風氣扼殺了你的熱情。

 

[反觀我自己]: 我一向對於任何”不合理”的任務指派都會有意見,甚至不斷地提出抗議。(當然結果可能都不好!)但是如果因為這樣就不提出,那麼我們還剩下什麼呢?

7. Know Your Worth(了解自我的市場價值)

這篇是要大家充分的瞭解自己的市場行情(也就是薪水),根據 這篇文章 通常一個軟體工程師應該要能創造出他自己薪水等級的十倍價值。事實上可能遠遠不止如此,所以作者建議我們要勇敢地去爭取更多的薪水,甚至你可以公開你的薪水等級,讓更多人知道你是否被低估(或是高估)任何(自認為)有你相同能力的人,都應該拿到一樣的待遇。

[反觀我自己]: 這件事情還真是難做到,在一間公司待久之後,最容易降低的就是薪水提升的幅度。這件事情還得努力學習,讓自己的市場價值更高.同時我們也要不斷檢視,我們自己能不能創造出自己薪水的十倍價值。

8. Send The Elevator Down(虛心地接受任何意見)

這邊我的解讀可能跟作者原先的不同。他有提到膚色與種族的優勢,但是我想到的卻是你的職位,你可能會聽到許多來自於部下或是後輩的建議(或是批評)。不要快速地想要反駁或是抵制,充分的瞭解過後,或許可以坦誠自己的見解或許是有盲點的,必要時甚至可以道歉並且快速修正。如同許多書上有提到的:「你雇用一個員工,一定是要比你還強的,這樣你才能將事情交給他辦,你自己做更需要更大視野的任務。」

[反觀我自己]: 參加社群後,最容易有這種感覺:太多令人欽佩的後輩了,每個人都有著淵博而清楚的知識。我們不需要否認,更不需要去挑惕或是批評,我們要謙虛的接受並且吸收,成為我們自己的養分。

9. LLVM(一個自由軟體專案,是一種編譯器的基礎建設,以 C++ 寫成)

作者認為 LLVM 會是下一個重要的資訊業的星系(Galaxy),目前已經有許多的程式語言支援 LLVM 了。所以作者建議我們可以花一些時間去了解,或許去學習相關的程式語言。

[反觀我自己]: 雖然 Python 與 Swift 都有學習,但是還不是我最上手的程式語言之一。這一個部分我會好好謹記於心,好好學習。

10. Follow Your Gut(相信你的直覺)

作者在 2000 年就覺得 .NET 會引領接下來的幾年,在 2007 年 iPhone 的發表會 就了解他的相關技術會是緊接著幾年的發展趨勢。

當然,這是作者的直覺。但是,你也應該充分地相信你的直覺,並且努力的去追求與學習。

[反觀我自己]: 我在 2014 年開始學習許多不同的程式語言, Python, Ruby, Objective C, Java, Swift, Scala 與 Rust。最後學習到 Golang,我直覺認為 Golang 會是 Server-side(或是說 Service-side)最重要的程式語言之一,所以我會努力學習。

11. APIs Are King(API 是王道)

這邊很推崇好的 API 設計是很重要的,不僅僅影響 server 與 client 的溝通,更會影響到好的軟體品質。也提出 chunky is better than chatty(簡單的說:就是不要將 API 拆的太精簡,使得 API call 需要往來相當的多次。)

同時作者也建議不要太依賴 REST ,不仿看看 socket.io, ZeroMQ, RabbitMQ, 或是 Erlang。並且也應該開始架設自己的機器人。

[反觀我自己]: 沒有想過,原來 chunky 的設計準則在某些狀況下竟然比 chatty 更好,這得好好學習。我有架設自己的機器人來幫助我處理一些日常伺服器維護的瑣碎事項。

12. Fight Complexity(將複雜的事情簡單化)

永遠要秉持著 KISS 原則(“Keep it short and simple”)來處理任何事情. 面對困難或是負責的事情,有著不少工具可以幫助你將設計簡單化。

[反觀我自己]: 我一直認為能夠越有能力的人,越能夠將複雜的事情簡單的講解,或是寫成一段簡單的程式碼來實現,這個能力是我們都要不斷學習的。

Conclusion(結論)

「年齡永遠不會是一個問題,只要你的心不斷催促你持續寫程式,持續製造新的東西,你永遠都會是年輕的。」

這是作者給我們的結論,他也希望我們能夠保持一顆年輕的心,不斷學習。 2016 是一個嶄新的一年,有著許多新奇的事件發生:微軟擁抱 Ubuntu,並且讓 SQL Server 在 Linux 上執行,人工智慧(AlphaGo)的大反攻。我們不會知道有什麼將發生,但是他希望我們都記住這些精神,並且微笑向前。


【社會數位轉型】連假出門不塞車、推動漁港再生,經濟部打造永續交通生態圈

智慧運輸時代來臨,全球競相投入無人載具與數位交通研發,希望在未來行動力的佈局搶得先機。從陸地、海洋到空中,無人機以整合 AI、5G 技術為核心,應用場域超乎想像,不僅能帶動產業升級與經濟成長,在解決社會問題上也有許多可能性。
評論
Photo Credit:Pexels
評論

聯合國預估,2030 年全球將出現 43 個人口超過千萬的巨型城市,而 2050 年將有 7 成人口居住於都市。城市人口密度持續增加,為交通帶來更大考驗,需要用更有效率的方式來管理。而在臺灣常見因車流量過大造成塞車、事故頻傳,以及偏鄉交通不便、公共運輸使用吸引不足、燃油車輛帶來環境污染等問題,也可望透過發展智慧交通迎刃而解。雖然短時間內還無法真正落地、普及,但種種想像已顯現出智慧運輸系統(Intelligent Transport System,ITS)的重要性。

智慧運輸科技是一門跨領域的技術,包括 7 大關鍵新興科技 iABCDEF 中的i(IoT,物聯網)、A(AI,人工智慧)、D(數據科技,DataTech)、E(邊緣運算,Edge Computing),並涵蓋資通訊、能源與電子等產業。面對接踵而來的挑戰,經濟部技術處與工業局合作,配合交通部、科技部、工研院、資策會等跨部會單位,關注企業與民眾的需求缺口,擴大各項交通科技創新服務的實驗場域。希望加速資通訊及智慧交通應用落地,推動產業轉型與數位經濟發展,更處理公共議題,建立更好的居住環境。

交通車載設備一站式整合 為國內實現物物相聯

未來在 5G 環境下,物聯網能讓各種設備、軟體、網路服務等更快速的相互連結,透過虛實整合應用與民眾進行深度互動,達成高速運算、低延遲通訊、萬物聯網的目標,這也是目前持續發展如智慧交通、自駕車所必備的條件。

當交通與運輸更加智慧化,將為國內業者帶來新商機,相關產業鏈例如雲端軟體服務、影像辨識與人工智慧分析、路側設備業、道路安全警示以及周邊的系統整合、工程顧問、二輪車安全聯網等,都是發展智慧交通智慧系統重要的環節,而智慧交通控制服務也是相當重要的一環,當交通號誌的紅綠燈控制做最有效的安排時,將可使路網中的車流運行更加順暢,也能減少更多的廢氣與碳排放的產生。

資策會智慧系統研究所(系統所)組長黃暉慈指出,發展一站式整合的關鍵之一在於道路上的路側設備(Roadside Unit,RSU)與安裝在車內的車載裝置(On Board Unit,OBU)兩者間的跨設備溝通,過去常因各家技術及介面規格不一、各類型設備分屬不同廠商維護、跨部門協調等原因難以整合,若要產生對民眾更具價值的應用相對是一大難題。

以建立永續智慧交通環境為目標,經濟部技術處匯集各法人能量,致力於運輸資源、資訊的整合共享,提升協作效能。

「比方說像各縣市智慧公車站牌就都長得不一樣,以及路側設備分屬不同部門管理:如交通局的號誌、工務局路燈管理處的路燈、警察局的 CCTV 等等,設備跟服務多為各單位獨立運作,資源無法進行有效的整合」黃暉慈表示。因此,為提升協作效率最佳化,經濟部技術處與資策會系統所合作,發展多元資訊的智慧交通作業系統,以建立共通平台之概念,打破廠商之間的資訊串接藩籬並能協同合作,減少資料使用者、管理者必須面對不同格式資料的困擾,以達成資訊交流的通透性與共享目的。

黃暉慈說明,智慧交通作業系統(Transport OS,TOS)是一套能整合各項遠端設備的管理平台,透過 TOS 函式庫讓程式介接、遠端佈署與應用開發都變得更簡單。「我們希望藉由一套共通的標準格式進行資料的收集,協助業者在設備管理、資料管理、資料分析上都能更加簡易有效率。」經由系統的整合,能自動化遠端監控路側設備的運行狀態,偵測錯誤並通知管理者,並以AI感測蒐集車輛、事故等應用數據。「省下開發系統和串接的功夫,業者能專注在設備功能的強化。」經濟部計畫透過整合性資訊服務,改善當今運輸走廊壅塞問題,未來國內車廠在技術發展上也能突破國外母廠的限制,打造出門無縫、用路安全、交通順暢的智慧運輸系統。

黃暉慈舉例,假如 CCTV 的監控影像出現雜訊、模糊、被遮蔽或鏡頭偏移,或工業電腦網路斷線等異常發生,系統都能即時發現問題,發出警示,「本系統具備彈性擴充功能,可協助業者介接提供更多加值應用,例如接入 RTSP 串流影像也能做到如智慧化判斷車輛是否違停的科技執法應用。」此外,TOS 的另一特色就是會將蒐集到的數據生成可視化圖表,有效地傳遞資訊,以利使用者能迅速評估狀況、做出因應。

Photo Credit:資策會

提升船舶監測效率 給予閒置港岸新生命

除了陸地的交通,海洋也是智慧運輸科技的發展重點。資策會系統所蔡政鴻組長分析,臺灣四面環海、海岸線長達 1,000 多公里,每年海洋經濟產值高達近 6 千億,「物流、漁業之外,還有觀光娛樂,光是用漁船載客出海磯釣每年就可賺超過百億,把安全性做好會很有市場。」

資策會系統所在經濟部技術處科技專案的支持下,採納百家以上產官學研機構與專家的建議,以海港數位轉型需求的高可靠邊霧協作物聯網技術為主,規劃「近岸船舶監測系統」,與相關業者、海巡隊合作,加強港岸船舶的管理效率。

蔡政鴻說,過去在智慧漁港常常做的是智慧照明,當然智慧照明在節能與管理上有很多好處,但除了漁港好像放在其他地方也很好,對於漁港的特色比較沒有凸顯出來。現在漁港面臨的問題是利用度不高,漁港資產閒置,最主要原因是來自過度捕撈,導致海裡無魚可抓,因此產生閒置問題,海洋資源的永續是主要的解決方法,除了生態保育,另一個是漁業漁港的轉型,從過去過度捕撈的抓來吃,轉型到生態體驗的旅遊價值,傳統漁業要轉型到娛樂漁業,發揮觀光旅遊的價值,從中帶來收入,魚就不用補那麼多,海洋資源才可永續。美國的漁業統計,休閒釣魚的經濟效益是商業捕魚的九倍,因此休閒釣魚的發展,其實是可以取代商業捕魚的部分經濟能量,進而減少捕撈。

以基隆市政府為例,2017 年便率先制定娛樂漁業島礁磯釣自治條例,管理認證核發與收費標準,並陸續導入科技管理工具,以船舶自動識別系統(Automatic Identification System,AIS)對磯釣船舶實施監測,採用邊霧運算技術,藉由與鄰近船舶、衛星等設備交換資料,當磯釣船訊號消失或離岸太遠,就會發出警示,建立數位治理機制,確保磯釣活動的安全戒護工作落實,保障業者與釣客的活動安全。另外磯釣證申辦,過去都要上班時間臨櫃申辦,造成不便。現在將磯釣證上網申辦,結合磯釣船出船單,送到漁港的海巡安檢流程,到磯釣船舶的海上航跡訊號勾稽,完成一套完整的服務鏈路,讓安全與方便形成基隆磯釣發展的重要後盾。使過去出海捕魚轉變成載客釣魚,減少捕撈,生態得以生息,漁民也有生計,還帶動釣具產業的發展。

其實智慧交通早已悄悄融入在日常生活,我們對數位票證的依賴度不斷增加,新零售時代的物流配送越來越快速。然而各種進步將可能衝擊原有的就業市場,該如何引導人才轉型也是重要的社會課題。

且讓我們試著想像,在交通的流動中,有出門運動、買菜的銀髮族,有通勤的白領上班族,有趕著上學的學生與接送孩子的父母,每個人的移動需求都能被滿足。經濟部技術處期望從技術專業角度,協助打造更人性化、友善的交通環境;同時,企業也能從競爭轉為合作,共同為產業創新轉型與減少污染的社會企業責任努力,創造更多就業機會;政府也能減少治理、管理的成本,持續優化交通運輸系統,形成社會美好的循環。