這是一個(gè) 42 歲的開發(fā)者所寫經(jīng)驗(yàn)分享文章.并且列出一些他 18 年多身為軟件開發(fā)者的經(jīng)驗(yàn)談.許多部分看完后都會(huì)希望自己當(dāng)時(shí)就能夠了解耀销,所以很推薦不論是新手或是老手都要好好閱讀這一篇文章。
1. Forget The Hype (忘記各種程序語言與架構(gòu)的炒作與熱潮)
不少的新的語言與技術(shù)來來去去,作者不是要你別去學(xué)習(xí)新事物澄干,而是不要因?yàn)橛刑嗟男率挛锒只呕蚴亲晕曳艞壒淇3掷m(xù)鉆研你目前在學(xué)習(xí)的,并且可以每年挑一些你有興趣的項(xiàng)目深入了解麸俘。
[反觀我自己]:各種后端與前端語言來來去去辩稽,我把時(shí)間花在學(xué)習(xí) Python(會(huì)持續(xù)), Ruby从媚,Scala(會(huì)持續(xù))與 Golang(會(huì)持續(xù))逞泄。透過使用 Golang 可以有更多的時(shí)間去了解系統(tǒng)架構(gòu)與直接面對(duì)問題,讓寫代碼變得更有趣拜效。
2. Choose Your Galaxy Wisely(慎選你的星系)
為了維持原文的意思喷众,我還是使用星系這個(gè)字。這邊指的是你學(xué)習(xí)跟從事的技術(shù)要慎選紧憾,舉例而言到千,微軟星系(泛指: .Net、C# ….)或是 Apple 星系(Objective C++赴穗、Swift …)憔四。慎選你喜歡的星系,因?yàn)槟菚?huì)影響你未來的發(fā)展般眉。
[反觀我自己]:過去十年主要針對(duì)微軟星系了赵,目前主要就是后端的 Ubuntu 星系 ,各種后端程序語言都是我目前主要的重點(diǎn)甸赃,當(dāng)然還有 Docker 相關(guān)技術(shù)斟览。
3. Learn About Software History(了解各種軟件的歷史)
作者認(rèn)為如果你喜歡一種程序語言、一種架構(gòu)辑奈,你就需要好好的了解它的由來與故事苛茂。
[反觀我自己]:比如說我喜歡 Golang ,我就應(yīng)該要了解以下的一些問題:
Golang 是誰發(fā)明的鸠窗?
Ans:由 Google 內(nèi)部的三位大神 Robert Griesemer妓羊,Ken Thompson(C 語言的共同發(fā)明者)與 Rob Pike(UTF-8 的共同發(fā)明者),在 2007 年于 Google 內(nèi)部共同起草發(fā)明稍计。
他主要解決什么問題躁绸?為何以前做不到?
Ans:根據(jù)第一份 Golang Talk
原因?yàn)椋?/p>
Go fast臣嚣!
Make programming fun again.
世界在變净刮,但是系統(tǒng)語言卻已經(jīng)十年沒變。
系統(tǒng)語言往往編譯過久硅则。
為何以前做不到:(在舊的程序語言上做不到)
新增函式庫不是一個(gè)正確的方向淹父。
需要從新思考整個(gè)架構(gòu)來開發(fā)新的程序語言。
目前這個(gè)技術(shù)的最新狀況如何怎虫?
Ans:Golang 目前是 1.6.2 (2016/05/03) 暑认,并且支援 HTTP2 并且可以透過 gomobile 在手機(jī)上也可以使用相關(guān)套件困介。
4. Keep on Learning (持續(xù)學(xué)習(xí)!)
不論你喜歡哪些新的技術(shù)或是新的程序語言蘸际,你都應(yīng)該持續(xù)的學(xué)習(xí)座哩,里面并且建議:
每年學(xué)習(xí)一個(gè)新的程序語言。
每年讀六本書粮彤。
5. Teach(指導(dǎo)其他人)
這邊指的不是一定要開堂授課根穷,你可以寫一篇部落格來講解你學(xué)習(xí)的新事物,因?yàn)榻虒?dǎo)是最好的學(xué)習(xí)方式导坟。
[反觀我自己]:還好部落格從來沒停過屿良,個(gè)人也認(rèn)為寫部落格的過程可以讓我不斷地檢視我了解的部分,并且弄懂所有的細(xì)節(jié)(希望U)管引,不過還是希望能夠多多指導(dǎo)其他人。
6. Workplaces Suck(工作場所糟糕透了)
不要去期望軟件公司會(huì)給你任何職涯的規(guī)劃闯两,相反的不少公司會(huì)將你認(rèn)為是另外一種的勞工褥伴,只會(huì)將你放在你擅長的位子,所以也有軟件公司變成血汗工廠的相關(guān)文章漾狼。作者同時(shí)也認(rèn)為開放性座位對(duì)于需要高度腦力工作的軟件工作者是一種最不好的設(shè)計(jì)(使用 “cancer” 這個(gè)詞)重慢。而對(duì)于工作上的指派,作者也建議大家應(yīng)該要好好了解每個(gè)任務(wù)的內(nèi)容.有任何疑問應(yīng)該要提出來討論逊躁,對(duì)于不了解的事物盲從是最不好的似踱,應(yīng)該不惜抗拒權(quán)威或是離職才是正確的選擇,不要讓這樣的工作風(fēng)氣扼殺了你的熱情稽煤。
[反觀我自己]:我一向?qū)τ谌魏巍辈缓侠怼钡娜蝿?wù)指派都會(huì)有意見核芽,甚至不斷地提出抗議。(當(dāng)然結(jié)果可能都不好=臀酢)但是如果因?yàn)檫@樣就不提出轧简,那么我們還剩下什么呢?
7. Know Your Worth(了解自我的市場價(jià)值)
這篇是要大家充分的了解自己的市場行情(也就是薪水)匾二,根據(jù)這篇文章通常一個(gè)軟件工程師應(yīng)該要能創(chuàng)造出他自己薪水等級(jí)的十倍價(jià)值哮独。事實(shí)上可能遠(yuǎn)遠(yuǎn)不止如此,所以作者建議我們要勇敢地去爭取更多的薪水察藐,甚至你可以公開你的薪水等級(jí)皮璧,讓更多人知道你是否被低估(或是高估)任何(自認(rèn)為)有你相同能力的人,都應(yīng)該拿到一樣的待遇分飞。
[反觀我自己]:這件事情還真是難做到悴务,在一間公司待久之后,最容易降低的就是薪水提升的幅度浸须。這件事情還得努力學(xué)習(xí)惨寿,讓自己的市場價(jià)值更高.同時(shí)我們也要不斷檢視邦泄,我們自己能不能創(chuàng)造出自己薪水的十倍價(jià)值删窒。
8. Send The Elevator Down (虛心地接受任何意見)
你可能會(huì)聽到許多來自于部下或是后輩的建議(或是批評(píng))裂垦,不要快速地想要反駁或是抵制,充分的了解過后肌索,或許可以坦誠自己的見解或許是有盲點(diǎn)的蕉拢,必要時(shí)甚至可以道歉并且快速修正。如同許多書上有提到的:「你雇用一個(gè)員工诚亚,一定是要比你還強(qiáng)的晕换,這樣你才能將事情交給他辦,你自己做更需要更大視野的任務(wù)站宗≌⒆迹」
[反觀我自己]:參加社群后,最容易有這種感覺:太多令人欽佩的后輩了梢灭,每個(gè)人都有著淵博而清楚的知識(shí)夷家。我們不需要否認(rèn),更不需要去挑惕或是批評(píng)敏释,我們要謙虛的接受并且吸收库快,成為我們自己的養(yǎng)分。
9. LLVM(一個(gè)自由軟件專案钥顽,是一種編譯器的基礎(chǔ)建設(shè)义屏,以 C++ 寫成)
作者認(rèn)為 LLVM 會(huì)是下一個(gè)重要的資訊業(yè)的星系(Galaxy) ,目前已經(jīng)有許多的程序語言支援 LLVM 了蜂大。所以作者建議我們可以花一些時(shí)間去了解闽铐,或許去學(xué)習(xí)相關(guān)的程序語言。
[反觀我自己]:雖然 Python 與 Swift 都有學(xué)習(xí)奶浦,但是還不是我最上手的程序語言之一兄墅。這一個(gè)部分我會(huì)好好謹(jǐn)記于心,好好學(xué)習(xí)财喳。
10. Follow Your Gut(相信你的直覺)
作者在 2000 年就覺得 .NET 會(huì)引領(lǐng)接下來的幾年察迟,在 2007 年 iPhone 的發(fā)表會(huì)就了解他的相關(guān)技術(shù)會(huì)是緊接著幾年的發(fā)展趨勢。
當(dāng)然耳高,這是作者的直覺扎瓶。但是,你也應(yīng)該充分地相信你的直覺泌枪,并且努力的去追求與學(xué)習(xí)概荷。
[反觀我自己]:我在 2014 年開始學(xué)習(xí)許多不同的程序語言, Python, Ruby碌燕, Objective C, Java, Swift, Scala 與 Rust误证。最后學(xué)習(xí)到 Golang继薛,我直覺認(rèn)為 Golang 會(huì)是 Server-side (或是說 Service-side)最重要的程序語言之一,所以我會(huì)努力學(xué)習(xí)愈捅。
11. APIs Are King(API 是王道)
這邊很推崇好的 API 設(shè)計(jì)是很重要的遏考,不僅僅影響 server 與 client 的溝通,更會(huì)影響到好的軟件品質(zhì)蓝谨。也提出 chunky is better than chatty (簡單的說:就是不要將 API 拆的太精簡灌具,使得 API call 需要往來相當(dāng)?shù)亩啻巍#?/p>
同時(shí)作者也建議不要太依賴 REST 譬巫,不彷看看 socket.io, ZeroMQ, RabbitMQ, 或是 Erlang咖楣。并且也應(yīng)該開始架設(shè)自己的機(jī)器人。
[反觀我自己]:沒有想過芦昔,原來 chunky 的設(shè)計(jì)準(zhǔn)則在某些狀況下竟然比 chatty 更好诱贿,這得好好學(xué)習(xí)。我有架設(shè)自己的機(jī)器人來幫助我處理一些日常伺服器維護(hù)的瑣碎事項(xiàng)咕缎。
12. Fight Complexity(將復(fù)雜的事情簡單化)
永遠(yuǎn)要秉持著 KISS 原則(“Keep it short and simple”)來處理任何事情. 面對(duì)困難或是負(fù)責(zé)的事情珠十,有著不少工具可以幫助你將設(shè)計(jì)簡單化。
[反觀我自己]:我一直認(rèn)為能夠越有能力的人锨阿,越能夠?qū)?fù)雜的事情簡單的講解宵睦,或是寫成一段簡單的程式碼來實(shí)現(xiàn),這個(gè)能力是我們都要不斷學(xué)習(xí)的墅诡。
Conclusion(結(jié)論)
「年齡永遠(yuǎn)不會(huì)是一個(gè)問題壳嚎,只要你的心不斷催促你持續(xù)寫代碼,持續(xù)制造新的東西末早,你永遠(yuǎn)都會(huì)是年輕的烟馅。」
這是作者給我們的結(jié)論然磷,他也希望我們能夠保持一顆年輕的心郑趁,不斷學(xué)習(xí)。 2016 是一個(gè)嶄新的一年姿搜,有著許多新奇的事件發(fā)生:微軟擁抱 Ubuntu寡润,并且讓 SQL Server 在 Linux 上執(zhí)行,人工智慧(AlphaGo)的大反攻舅柜。我們不會(huì)知道有什么將發(fā)生梭纹,但是他希望我們都記住這些精神,并且微笑向前致份。