天天看點

《程式員的自我修養》

《程式員的自我修養》

"程式設計不僅是一項技能,更是一種生存手段,同時也可以是一部哲學,或者一門藝術,取決于開發者自身,你認為it是什麼,it就是什麼"

——希望這次分享能給大家帶來一些思考,順便祝各位程式員節日快樂。

前言&背景

各位同學大家好,近期在準備給剛入職的小夥伴做教育訓練,糾結了許久,一方面不确定可以教給他們什麼,另一方面不知道他們是否會感興趣,反複思考後才有這次分享,我們今天不聊技術細節,聊聊程式員的自我修養。

程式員群體介紹

首先引用一下IDC在2014年釋出調查報告《2014 Worldwide Software Developer and ICT-Skilled Worker Estimates》

《程式員的自我修養》

在這篇報告中可以看出,2014年全球軟體開發者和ICT從業人員一共2900萬,其中專業開發者1100萬,業餘開發者750萬。在這些開發者中,排名前三的國家分别是:美國(19.2%)、中國(10.1%)、印度(9.8%),專業開發者全球分布的情況是:美洲占32.59%,歐洲+中東+非洲占30.39%,亞洲+大洋洲占37.02%。

雖然這份報告已經很久遠了,但IDC出具的調查報告還是比較權威和客觀的,能夠反應當時的實際情況,中國的開發者(程式員)人數在全世界也屬于頭部位置,我們再來看看國内的情況。

《程式員的自我修養》

根據工信部給出資訊,2020年我國軟體業從業平均人數 698 萬人,不過軟體行業的從業人員不單單隻有和程式員相關的崗位,有可能一些中背景的職能部門也計算在内了,那麼目前中國程式員數量有多少呢,看到部落格園的資料統計後我感覺200-300萬這個區間還是比較客觀的。

我們再來看看大廠的情況,中國市值最高的10大網際網路公司,有多少個程式員員工?

《程式員的自我修養》

根據網上公開資料查詢得出:阿裡 4萬+,騰訊 3萬+,百度2萬+,美團 1萬+,京東 1.8萬+,拼多多 2000+,貝殼 3000+,小米6000+,網易 1萬 +,好未來沒有查到。

但這裡沒有包含一些網際網路或者科技大廠,比如華為、中興,比如位元組跳動、螞蟻集團和滴滴打車等。粗略統計TOP 10 公司可以占據中國研發人數的5%左右。

還有《2020中國程式員調查報告》非常有必要和大家分享一下:

《程式員的自我修養》
  • 從程式員的性别上看男女比例在9:1,雖然女性從業者的占比還是非常少,不過最近些年一直在提高,這裡和大家說一下我剛工作時的情況,程式員主要分兩種,一種就叫做“程式員”,另外一種叫做“女程式員”,不是性别歧視,是女程式員真的非常稀有。
  • 程式員的平均年齡在25-29歲之間的占比最多,接近40%左右,說明程式員還是偏向年輕化的。
  • 工作年限方面1年工作經驗的同學有很多,但綜合來看2-5年工作經驗的占據了近一半人數,這部分人可能是IT公司研發序列的中流砥柱。
  • 程式員的“地獄”分布,北京的程式員集中程度還是具有壓倒性優勢的,其次是廣東省(深圳),然後才是上海,接着是浙江省(杭州)。
《程式員的自我修養》
  • 關于程式員經常被叫做“單身狗”,其實是有資料依據的,報告給出的資料是單身人群在45%。
  • 程式員的公司屬性,大多數的程式員還是在民企工作的,占比72%多,國企不到10%。
  • 程式員相比IT公司的其他崗位,個人覺得還是比較穩定的,是以跳槽率也不是很高。
  • 因為去年疫情的影響,可能有些公司會有裁員的動作,但90%的程式員認為并沒有受到影響。

下面我們來看看大衆眼中的程式員是什麼樣的,程式員的終極目标就是格子衫自由?

《程式員的自我修養》

其實程式員也可以是這樣的,本人已征求這兩位同學的同意,但自拍照不可用于其他用途。

《程式員的自我修養》

當你看一個人的言談舉止可能是搞藝術的,他可能是個程式員,當你看一個人的穿着打扮可能是玩搖滾的,他可能也是個程式員,當你再看一個人的從頭到腳都散發着程式員的氣質,那他一定是個程式員~。

多數程式員都喜歡自嘲,經常以“碼農”、“IT民工”自居,直到今年8月份到被國家人力資源和社會保障部“官宣”。

《程式員的自我修養》
關于“新生代農民工”,官方給出的明确定義為:出生于20世紀80年代以後,年齡在16周歲及以上,在異地以非農就業為主的農業戶籍人口。

換句話說,新生代農民工的定義,和你的工作性質、收入是沒有關系的。另外,農民工這類群體,一直承擔着國家城鎮的基礎設施建設,他們會比其他行業付出更多體力勞動,同樣也是值得尊敬的群體。況且,你也不一定賺的比人家多。

接下來,我們來思考兩個問題:

《程式員的自我修養》

關于第一個問題,經常在知乎能看到類似的問題,但是我們在一些招聘網站上查詢相關崗位就會發現,上面提到的大廠幾乎都在招聘,并且在這次疫情的沖擊下,這些大廠的裁員資訊并不多,反而有的公司(比如位元組跳動、華為等)仍然在大量招聘,翻看這些招聘的JD就會得出一個結論:進階程式員的數量仍然非常的緊缺。但是同樣面臨着一個問題是,現在很多剛畢業或者剛教育訓練機構出來的程式員,發現工作并不是那麼的好找?這說明一個問題:初級程式員競争比較激烈,也就說剛入門的程式員比較多,導緻競争壓力比較大。綜合來看的話,就是初級過剩,進階緊缺。

第二個問題,很多剛進入這個行業的新人,都有這樣一個疑問,會不會過上幾年整個行業就涼涼了。可以肯定的和大家說,隻要人類文明不倒退,IT和網際網路仍然是朝陽行業,并且未來10年甚至50年仍然都是。 尤其我們這一代人對此十分堅信,因為我們經曆的從電子商務、移動支付、共享經濟、生活服務,見證了人們的衣食住行等方方面面都被改變了。中國網際網路滿打滿算也不到30年,這才哪到哪呀,緊張個毛錢,未來有很多事情需要程式員去做,如果真的有志從事這個行業,隻需要加速往前沖...

程式員的自我成長

程式設計語言是程式員的“内功”,至少要掌握一門程式設計語言,從熟練使用,再到逐漸精通,最終融會貫通。

為什麼這麼說呢,因為很多程式設計語言的底層原理是想通的,掌握和精通一門程式設計語言後,學習其他語言将不再是一件難事。

TIOBE剛剛不久釋出的榜單讓我很意外,因為在大多數人的印象中也包括我自己,Java和C是常年霸榜的兩門語言,但是就在今年10月份,Python從第三名直接跳躍到第一名,成為當下最熱門的程式設計語言!TIOBE的官方發言:“20 多年來,我們又迎來了一位新的王者”,恭喜Python!

《程式員的自我修養》

很多同學可能會在一些網站會看到,程式設計語言也是有鄙視鍊的,什麼“寫彙編的看不起寫C和C++的,寫C和C++的看不起寫Java和Python的,寫Java和Python看不起寫C#和doNet的,寫C#和doNet的看不起寫Php的,而Php又說自己是世界上最好的語言”,諸如此類各種版本,奉勸大家就當做笑話,聽一聽樂一樂就可以了,因為程式設計語言本身就沒有可比性,每個程式設計語言的特性、場景、解決的問題都不一樣,隻要這門語言還存在,還有人在用,那這門語言就是有用的,“存在即合理”,如果非要比較的話,去看看哪些技術更接近基礎科學,因為越底層的技術,門檻越高,越靠近鄙視鍊的頂端,比如資料結構和算法,它們是程式員的“内功心法”,對内功心法了解的越透徹,你内功修煉的層次越高。

“工欲善其事、必先利其器”,熟練使用開發工具是程式員的基本技能。

軟體開發過程中,會用到各種各樣的工具,這裡不得不吹一下JetBrains的全家桶,真正面向程式員的IDE,非常智能和友好,建議使用正版。

《程式員的自我修養》

如果有些同學對這些工具還比較陌生的話,我換個角度來講,“王者榮耀”或“英雄聯盟”大家都玩過吧,這些工具就是你在遊戲中使用的英雄,你需要熟悉這些英雄的各種技能,并且熟練使用各種快捷鍵。

“它山之石、可以攻玉”,熟練運用技術架構和中間件是程式員的必備技能。

技術架構和中間件是軟體開發中非常重要部分,簡單通俗的說:技術架構是你開發程式時所依賴和使用的第三方元件(VUE/Spring)。中間件是獨立于你的應用程式運作,但與你應用程式有互動的元件(MySQL/Redis)。

《程式員的自我修養》

或者你依然可以按照玩遊戲的思路這樣了解:

技術架構=Buff,疊了一些buff,你的移動速度變快,說明開發效率提高了,你的防禦力變強了,說明程式的健壯性提高了,但是客觀的說沒有buff也可以的。

中間件=裝備,它是一種必然的存在,如何沒有好的裝備,裝備不進行更新,就算你操作再6,走位再性感,也很難抗住敵方使用“流量暴擊”。

如何學習一門新技術

程式員是一個願意學習的群體,或者說是一個不得不學習的群體,如何去學習一門新技術,給大家一些建議:

《程式員的自我修養》

如何長期的積累技術

一個程式員的幸福是:找一個合适的環境,選擇一項可以長期積累的技術,長期積累下去。

《程式員的自我修養》

如何提升自身軟素質

程式員提升軟素質才能保持競争力,某種程度上也決定着程式員的職業生涯。

《程式員的自我修養》

程式員的職業發展

程式員這個職業,無論在企業内部還是在整個行業中發展空間還是比較大的。

程式員小白通過自己不懈的努力,“混”到了開發工程師,或者中途轉向了其他崗位(産品、需求、測試、運維崗等)。再往上晉升有可能成為技術專家(某一技術領域的資深專家,能夠解該領域的核心問題),架構師(對系統進行合理設計,提出相應的解決方案,并不斷持續的演進和優化),技術經理(主要負責研發團隊的管理工作,制定分工和工作計劃等),産品/項目經理(關注使用者、市場、營運、成本等,對團隊日常進行管理),如果有好的機會,可以成為核心管理層(企業的管理層,負責整個企業的經營管理),技術VP/SP(公司的技術副總裁,戰略規劃、體系能力搭建、人才政策等),CTO首席技術官(能力全面,突出的上司力、文化建設能力、技術實力等),或者成為技術創業者/自由開發者(通過自身的技術能力,自主創業或者未無入職任何企業,并能夠養活自己甚至達到财務自由的群體)。

《程式員的自我修養》

程式員的成長路徑也和玩遊戲很像,從青銅到王者都是需要漫長的過程,需要鍛煉你的操作,意識,戰術,團隊協作等等。當然也可以找人帶你上分,這個人就是你們在的公司裡導師,當有一天你達到了你導師現在的段位了,你也開始帶人上分了。

當然程式員的發展也不僅限于這些,每個人的成長路徑可能都不一樣,以上隻是給大家作一個參考。之前看過一個段子和大家分享一下:“一個程式員每天都繁忙于寫代碼,但他代碼寫的很有特點,形容一下就是大徹大悟,一花一世界,一行一BUG,他最終看清現實出家了,找了個香火不錯的寺廟當住持,現在年薪百萬”。

如何反内卷?總結了一下優秀程式員的13素養:

IT行業的内卷其實已經不是一天兩天了,慣性加班,末尾淘汰,KPI績效等等,這些東西在“内卷”這個詞出現之前就已經形成了。不想躺平的話,如何反内卷或者不被卷到,來看看優秀程式員的13素養:

《程式員的自我修養》

給大家簡單展開一下:

  • 0.紮實的基本功和專業技能:這個不用多說了,大家的共識
  • 1.良好的編碼習慣、文檔習慣、測試習慣:關注代碼的規範性,健壯性,可讀性,運作效率,有沒有寫注釋,readme,有沒單元測試,甚至格式化
  • 2.團隊精神和協作能力:不同崗位之間是否有效溝通,同崗位之間有沒有知識分享
  • 3.需求了解能力:有沒有get到使用者真正的訴求
  • 4.子產品化思維能力:你的代碼有沒有合理的抽象、封裝和複用
  • 5.學習、總結、分享的能力 + 6. 解決問題的能力:上一part有提到過,核心軟素質
  • 7.不斷學習的精神 + 8.追求極緻的精神 + 9.保持程式設計思維和頭腦靈活:大多程式員會展現一種工匠精神,追求極緻,精益求精
  • 10.充足的睡眠和持之以恒的鍛煉 + 11.保持良好的心态:這兩點是程式員要關注身心健康,養成自律習慣
  • 12.時正常劃自己的人生:在忙碌的工作中,時常關注一下行業動态,為自己努力定好方向,“低頭趕路的同時,也要擡頭看看天”。

發量和技術成反比?變秃就會變強?

經常有人說程式員的發量和技術成反比,變秃就會變強?其實不是的,科學證明大多數脫發是和基因遺傳有很大關系的,而頸椎病才是困擾程式員健康的第一問題,是以從現在開始,保護好你們的頸椎。

《程式員的自我修養》

再補充說兩點,經常會看到有些同學會把IDE的背景色調成黑色或者深色,有可能是為了炫酷,但是深色的背景确實對眼睛的傷害小一些;還有些同學會去跟風買機械鍵盤,建議青軸和黑軸就不要考慮了,還有帶背光的,除了好看沒什麼用,如果真的感興趣建議看看靜電容的鍵盤。

我們再來思考一個問題:

《程式員的自我修養》

這是一個很有争議的問題啊,有人管這個叫程式員的35歲魔咒,分析一下原因主要有兩方面:一方面是大多公司對于大齡程式員是有顧慮的,另一方面大齡程式員自己也很迷茫。。。其實不光是程式員,工作十來年的職場人士,這時30-40歲,上有老下有小,各種房貸車貸信用卡,職業生涯可能并不盡如人意,這是個社會現象,一般我們叫這個事兒“中年危機”。也就是說其實這個問題在讨論的是“程式員的中年危機”。

為什麼造成這種危機現象,因為每年還有幾十萬以上程式員湧入這個行業。也就是你們同學們,你們大多數是初級和中級崗位占了絕大部分,這些崗位不需要多高深的技能,也不需要付特别高的薪水,是以如果一些還在從事着基礎工作的老大哥們,就沒有核心競争力,沒有不可代替性。這些人一直呆在舒适區,不管技術還是管理的,技能都沒有提升。而且随着年頭增長,他們的對新知識和對工作都沒有你們有熱情。這些都導緻了,這個層級的大齡程式員的職場競争力不如每年加入到程式員大軍的小年輕。這樣就是所謂的35歲程式員被淘汰的真相。

怎麼打破這種危機,就是盡快的随着年紀的增長,不斷上升到上一個層次,那個層次上競争的人更少,被替代的可能性也更小。剛畢業的程式員,需要跟200萬的同行競争,雖然崗位多,但是競争大,甚至過飽和了。工作了3-5年,成為進階程式員,隻需要跟50-80萬同行競争了,競争壓力小了,議價能力強了,薪水就上來了。如果能努力一把,跳出進階程式員的瓶頸,成為核心開發或者技術專家/架構師,隻需要跟8-10萬人競争了,這時你的對手少了很多,這個層級現在市面上還是緊缺資源,能力夠了,會有很多機會,高薪水也是必然了。再往上,除了不但努力,還需要好的機會,但是不努力,有機會來了也抓不住。

其實最終發現,限制程式員的根本不是年齡,而是圈層。打破魔咒的辦法,隻有不斷學習,提升能力,到下一個層級。

以前有同學跟我說平時工作上太忙了,天天加班,增删改查做不完,不是再改BUG就是在寫BUG,根本沒時間學習,怎麼辦,“種一棵樹,最好的時機是十年前,其次是現在”,意識到自己要學習了,永遠不晚。這個世界上有一樣東西可以做到絕對的公平,就是時間,無論你是誰你一天就隻有24小時,取決于你用它來做什麼。

代碼天堂

GitHub(

https://github.com)

全球最大的社交程式設計及代碼托管網站,沒有之一。

看看資料就知道為什麼這麼牛了,6500萬開發者,300萬組織機構,2億多代碼倉庫,财富50強有72%在用。

《程式員的自我修養》

因為某些不可描述的原因,國内通路GitHub經常逾時,考慮要科學上網,才能流暢的使用它。國内對标它的産品是Gitee(

https://gitee.com

),中文名叫“碼雲”,建議大家多關注一下,國産開源托管平台~

關于GitHub和Gitee的使用,給大家幾點建議:

《程式員的自我修養》

開源文化

整個IT行業能夠高速的發展,很大程度要歸功于開源技術。全球來看97%的軟體開發者和99%的企業都在使用開源軟體,整個産業的供應鍊中有80%-90%的代碼來源于開源。

我們所使用的作業系統,SDK是開源的,我們使用的技術架構是開源的,我們使用的中間件和資料庫也開源的,我們使用容器雲都是開源的。

《程式員的自我修養》

聊到開源,不得不提一下Apache軟體基金會(Apache Software Foundation),簡稱ASF,有些同學可能會問,apache不是一個web伺服器嗎,和這個有關系,apache伺服器(基于HTTPd)在建設的時候就是由一群熱愛技術的程式員,完全自發的以開放共享的方式,把代碼重寫與維護的工作有效組織起來,然後這些OG開發者們逐漸地把他們這個群體稱為“Apache組織”,就是ASF的前身,他們把這種開發模式叫做The Apache Way:可持續開源之路。

國内的開源文化最近幾年才開始逐漸成型,一線網際網路公司貢獻了一些自主開源的技術,但是整個開源生态還處在起步階段。2020年9月,中國首個開源基金會“開放原子開源基金會”成立了!

《程式員的自我修養》

基金會由華為、阿裡、騰訊、百度、浪潮、招商銀行、360等十家網際網路企業共同發起組建,對開源項目進行孵化和資助,為開源項目找到更多的應用場景和生态合作。

CCTV-2《經濟半小時》的一期節目

軟體開源裡的中國聲音

對開源進行了深度的分析,建議大家去看一看國家對開源是怎麼說的。

開源的意義與價值

《程式員的自我修養》

也談談我對開源的了解:開源是在整個行業和社會體系算得上是真正的“共産主義”,我們的核心技術可能取之于開源,是以我們也應該回饋開源,給開源社群貢獻不單單隻是代碼,也可以是文檔、注釋、給開源提issue、修bug、甚至寫些技術部落格幫助開源推廣。很多人參與開源,可能是因為興趣愛好、對技術有熱情,或者是一種使命感和存在感,這些都是開源精神的展現。在這個過程中,你也會有一些收獲,比如成就感,知名度,還有就是你會遇到很多志同道合的小夥伴,你們一起成長和提高,未來這些人和資源都是你一生中寶貴的财富。往大了講開源是貢獻給全世界,往小一點說開源是給自己的一份肯定,大仲馬的《三個火槍手》裡面有句slogan:“人人為我,我為人人(All for one, one for all)”,這就是開源文化和開源精神的核心。

GitHub Archive計劃

《程式員的自我修養》

GitHub要把開源軟體代碼歸檔到Arctic Code Vault(北極代碼庫),這裡給大家科普一下,GitHub北極代碼庫是儲存在北極世界檔案館(AWA)中,位于北極圈,一個遠離戰争、政治和自然災害的小島上,而檔案館建設在這個小島地下250米深的永久凍土中,我們今天所使用的大多數資料存儲和硬體裝置都有使用壽命,随着時間以及存儲資料量越來越大,充其量也隻有幾十年,而他們将代碼儲存到特殊材質的膠片上,可以儲存至少2000年以上。同學們,這是在延續人類的文明啊!就算哪天爆發世界大戰,或者出現生化危機,隻要地球不毀滅,我們的代碼就還在!!!

結束語

最後我想問大家一個問題:“有沒有哪位同學,想要一輩子寫代碼?”,如果有的話,真的很感謝你的這份勇氣,希望你能多年後還能記住今天,記住這個moment,也祝願你的理想能夠實作,終身程式設計,終身受益。

《程式員的自我修養》