原文為「Being A Developer After 40」,經(jīng)Evan Lin翻譯后,INSIDE 獲同意轉載。 Evan Lin 目前是 Linker Networks 的 Cloud Architect ,也是 Golang 臺灣社群的 co-organizer。
故事很長(cháng),一切從 1997 年開(kāi)始講起. 那是一個(gè)令人懷念的年代(FF7 發(fā)售,微軟入股蘋(píng)果,鐵達尼號電影上映),那是作者第一年身為軟件開(kāi)發(fā)者的年份。 當時(shí)他的第一份工作是從事 ASP 并且在微軟的平臺上面使用 EditPlus。 十八年過(guò)去,作者一共做過(guò)六份工作,其中被炒魷魚(yú)兩次,出過(guò)兩本書(shū),從事過(guò)不少演講。 他整理了他的一些心得,希望年輕的開(kāi)發(fā)者(或是有志將軟件開(kāi)發(fā)作為終生志業(yè)的人)一些建議,條列如下:
不少的新的語(yǔ)言與技術(shù)來(lái)來(lái)去去,作者不是要你別去學(xué)習新事物,而是不要因為有太多的新事物而恐慌或是自我放棄。 持續鉆研你目前在學(xué)習的,并且可以每年挑一些你有興趣的項目深入了解。
[反觀(guān)我自己]:各種后端與前端語(yǔ)言來(lái)來(lái)去去,我把時(shí)間花在學(xué)習 Python(會(huì )持續), Ruby,Scala(會(huì )持續)與 Golang(會(huì )持續)。 透過(guò)使用 Golang 可以有更多的時(shí)間去了解系統架構與直接面對問(wèn)題,讓寫(xiě)程序變得更有趣。
為了維持原文的意思,我還是使用星系這個(gè)字。 這邊指的是你學(xué)習跟從事的技術(shù)要慎選,舉例而言,微軟星系(泛指: .Net、C# ....)或是 Apple 星系(Objective C++、Swift ... )。 慎選你喜歡的星系,因為那會(huì )影響你未來(lái)的發(fā)展。
[反觀(guān)我自己]:過(guò)去十年主要針對微軟星系,目前主要就是后端的 Ubuntu 星系 ,各種后端程序語(yǔ)言都是我目前主要的重點(diǎn),當然還有 Docker 相關(guān)技術(shù)。
作者認為如果你喜歡一種程序語(yǔ)言、一種架構,你就需要好好的了解它的由來(lái)與故事。
[反觀(guān)我自己]:比如說(shuō)我喜歡 Golang ,我就應該要了解以下的一些問(wèn)題:
Golang 是誰(shuí)發(fā)明的?
Ans:由 Google 內部的三位大神 Robert Griesemer,Ken Thompson(C 語(yǔ)言的共同發(fā)明者)與 Rob Pike(UTF-8 的共同發(fā)明者),在 2007 年于 Google 內部共同起草發(fā)明。
他主要解決什么問(wèn)題? 為何以前做不到?
新增函式庫不是一個(gè)正確的方向。
需要從新思考整個(gè)架構來(lái)開(kāi)發(fā)新的程序語(yǔ)言。
Go fast!
Make programming fun again.
世界在變,但是系統語(yǔ)言卻已經(jīng)十年沒(méi)變。
系統語(yǔ)言往往編譯過(guò)久。
Ans:根據第一份Golang Talk
原因為:
為何以前做不到:(在舊的程序語(yǔ)言上做不到)
目前這個(gè)技術(shù)的最新?tīng)顩r如何?
Ans:Golang 目前是 1.6.2 (2016/05/03) ,并且支持 HTTP2 并且可以透過(guò) gomobile 在手機上也可以使用相關(guān)套件。
不論你喜歡哪些新的技術(shù)或是新的程序語(yǔ)言,你都應該持續的學(xué)習,里面并且建議:
每年學(xué)習一個(gè)新的程序語(yǔ)言。
每年讀六本書(shū)。 (作者推薦 Peopleware、The Psychology of Software Programming、Facts and Fallacies of Software Engineering、Agile!: The Good, the Hype and the Ugly、Rework 跟 Geekonomics,都是好書(shū)。 )
[反觀(guān)我自己]:
程序語(yǔ)言部分: 2014 (Ruby, Scala) 2015 (Go, Swift) 2016 還沒(méi)有決定.
讀書(shū)部分:每年讀沒(méi)有超過(guò)六本書(shū),但是讀過(guò)不少論文并且有上過(guò)一些MOOCs。
這邊指的不是一定要開(kāi)堂授課,你可以寫(xiě)一篇部落格來(lái)講解你學(xué)習的新事物,因為教導是最好的學(xué)習方式。
[反觀(guān)我自己]:還好部落格從來(lái)沒(méi)停過(guò),個(gè)人也認為寫(xiě)部落格的過(guò)程可以讓我不斷地檢視我了解的部分,并且弄懂所有的細節(希望! ),不過(guò)還是希望能夠多多指導其他人(比如說(shuō) meetup 或是 talk)。
不要去期望軟件公司會(huì )給你任何職涯的規劃,相反的不少公司會(huì )將你認為是另外一種的勞工,只會(huì )將你放在你擅長(cháng)的位子,所以也有軟件公司變成血汗工廠(chǎng)的相關(guān)文章。 作者同時(shí)也認為開(kāi)放性座位對于需要高度腦力工作的軟件工作者是一種最不好的設計(使用 “cancer” 這個(gè)詞)。 而對于工作上的指派,作者也建議大家應該要好好了解每個(gè)任務(wù)的內容. 有任何疑問(wèn)應該要提出來(lái)討論,對于不了解的事物盲從是最不好的,應該不惜抗拒權威或是離職才是正確的選擇,不要讓這樣的工作風(fēng)氣扼殺了你的熱情。
Myth: Open offices result in massive collaboration.
Reality: 2 people loudly collaborate; 30 must wear headphones to get any work done.
— Jochen Wolters (@jochenWolters) 2016 年 4 月 7 日
[反觀(guān)我自己]:我一向對于任何”不合理”的任務(wù)指派都會(huì )有意見(jiàn),甚至不斷地提出抗議。 (當然結果可能都不好! )但是如果因為這樣就不提出,那么我們還剩下什么呢?
這篇是要大家充分的了解自己的市場(chǎng)行情(也就是薪水),根據這篇文章通常一個(gè)軟件工程師應該要能創(chuàng )造出他自己薪水等級的十倍價(jià)值。 事實(shí)上可能遠遠不止如此,所以作者建議我們要勇敢地去爭取更多的薪水,甚至你可以公開(kāi)你的薪水等級,讓更多人知道你是否被低估(或是高估)任何(自認為)有你相同能力的人,都應該拿到一樣的待遇。
[反觀(guān)我自己]:這件事情還真是難做到,在一間公司待久之后,最容易降低的就是薪水提升的幅度。 這件事情還得努力學(xué)習,讓自己的市場(chǎng)價(jià)值更高. 同時(shí)我們也要不斷檢視,我們自己能不能創(chuàng )造出自己薪水的十倍價(jià)值。
這邊我的解讀可能跟作者原先的不同。 他有提到膚色與種族的優(yōu)勢,但是我想到的卻是你的職位,你可能會(huì )聽(tīng)到許多來(lái)自于部下或是后輩的建議(或是批評)。 不要快速地想要反駁或是抵制,充分的了解過(guò)后,或許可以坦誠自己的見(jiàn)解或許是有盲點(diǎn)的,必要時(shí)甚至可以道歉并且快速修正。 如同許多書(shū)上有提到的:「你雇用一個(gè)員工,一定是要比你還強的,這樣你才能將事情交給他辦,你自己做更需要更大視野的任務(wù)。 」
[反觀(guān)我自己]: 參加社群後,最容易有這種感覺(jué):太多令人欽佩的後輩了,每個(gè)人都有著(zhù)淵博而清楚的知識。我們不需要否認,更不需要去挑惕或是批評,我們要謙虛的接受並且吸收,成為我們自己的養分。
作者認為 LLVM 會(huì )是下一個(gè)重要的資訊業(yè)的星系(Galaxy),目前已經(jīng)有許多的程式語(yǔ)言支援 LLVM 了。所以作者建議我們可以花一些時(shí)間去了解,或許去學(xué)習相關(guān)的程式語(yǔ)言。
[反觀(guān)我自己]: 雖然 Python 與 Swift 都有學(xué)習,但是還不是我最上手的程式語(yǔ)言之一。這一個(gè)部分我會(huì )好好謹記於心,好好學(xué)習。
作者在 2000 年就覺(jué)得 .NET 會(huì )引領(lǐng)接下來(lái)的幾年,在 2007 年 iPhone 的發(fā)表會(huì ) 就了解他的相關(guān)技術(shù)會(huì )是緊接著(zhù)幾年的發(fā)展趨勢。
當然,這是作者的直覺(jué)。但是,你也應該充分地相信你的直覺(jué),並且努力的去追求與學(xué)習。
[反觀(guān)我自己]: 我在 2014 年開(kāi)始學(xué)習許多不同的程式語(yǔ)言, Python, Ruby, Objective C, Java, Swift, Scala 與 Rust。最後學(xué)習到 Golang,我直覺(jué)認為 Golang 會(huì )是 Server-side(或是說(shuō) Service-side)最重要的程式語(yǔ)言之一,所以我會(huì )努力學(xué)習。
這邊很推崇好的 API 設計是很重要的,不僅僅影響 server 與 client 的溝通,更會(huì )影響到好的軟件質(zhì)量。 也提出chunky is better than chatty(簡(jiǎn)單的說(shuō):就是不要將 API 拆的太精簡(jiǎn),使得 API call 需要往來(lái)相當的多次。 )
同時(shí)作者也建議不要太依賴(lài) REST ,不仿看看socket.io, ZeroMQ, RabbitMQ, 或是 Erlang。 并且也應該開(kāi)始架設自己的機器人。
[反觀(guān)我自己]:沒(méi)有想過(guò),原來(lái) chunky 的設計準則在某些狀況下竟然比 chatty 更好,這得好好學(xué)習。 我有架設自己的機器人來(lái)幫助我處理一些日常服務(wù)器維護的瑣碎事項。
永遠要秉持著(zhù) KISS 原則(“Keep it short and simple”)來(lái)處理任何事情. 面對困難或是負責的事情,有著(zhù)不少工具可以幫助你將設計簡(jiǎn)單化。
[反觀(guān)我自己]:我一直認為能夠越有能力的人,越能夠將復雜的事情簡(jiǎn)單的講解,或是寫(xiě)成一段簡(jiǎn)單的程序代碼來(lái)實(shí)現,這個(gè)能力是我們都要不斷學(xué)習的。
「年齡永遠不會(huì )是一個(gè)問(wèn)題,只要你的心不斷催促你持續寫(xiě)程序,持續制造新的東西,你永遠都會(huì )是年輕的。 」
這是作者給我們的結論,他也希望我們能夠保持一顆年輕的心,不斷學(xué)習。 2016 是一個(gè)嶄新的一年,有著(zhù)許多新奇的事件發(fā)生:微軟擁抱 Ubuntu,并且讓 SQL Server 在 Linux 上執行,人工智能(AlphaGo)的大反攻。 我們不會(huì )知道有什么將發(fā)生,但是他希望我們都記住這些精神,并且微笑向前。
編者:非常季節
如果你喜歡這篇文章,那就轉發(fā)吧!
聯(lián)系客服