從計(jì)算機(jī)科學(xué)到藍(lán)領(lǐng)技工
提綱
0. 計(jì)算機(jī)與科學(xué)的關(guān)系
1. 程序員是干什么的
2. 程序員這個(gè)職業(yè)與計(jì)算機(jī)科學(xué)的關(guān)系
3. 程序員是白領(lǐng)還是藍(lán)領(lǐng)
4. 程序員與當(dāng)代大學(xué)生的較量
5. 程序員與培訓(xùn)機(jī)構(gòu)的博弈
6. 為什么我還堅(jiān)持當(dāng)一個(gè)程序員
7. 你要不要來(lái)當(dāng)程序員
?正文
概述
這幾天心情煩悶, 壓抑的很, 今天本來(lái)打算寫(xiě)點(diǎn)技術(shù)的東西, 但是手上沒(méi)有現(xiàn)成的材料, 需要準(zhǔn)備幾天才行, 所以還打算寫(xiě)一個(gè)類(lèi)似于科普的東西, 也是我的一個(gè)從業(yè)經(jīng)驗(yàn)的總結(jié)吧. 提前聲明, 這篇帖子絕對(duì)不是 chatGPT 生成的, 因?yàn)檫@篇帖子具有相當(dāng)?shù)奈膶W(xué)性.
最近投簡(jiǎn)歷, 面試搞得我很疲勞, 雖然大部分都是未讀, 甚至是已讀不回, 讓人很焦灼, 等到真得有了面試機(jī)會(huì), 也是精神緊張, 面試上了, 去入職, 也總在瞻前顧后的擔(dān)心是否能夠勝任工作內(nèi)容.
所以, 這段事件, 真是焦灼的生活, 寫(xiě)點(diǎn)東西, 也算是放松放松心情了. 接下來(lái)工作如果還是定不了, 還是找不到, 我就必須另作打算了, 還沒(méi)想好, 不過(guò)也總得是要想個(gè)方案出來(lái)的.
今天不打算寫(xiě)臺(tái)長(zhǎng)了, 太長(zhǎng)了沒(méi)人看, 雖然我很喜歡長(zhǎng)篇大論確實(shí)是真的, 不過(guò)這種科普的以寫(xiě)的通俗易懂為重.
零 - 計(jì)算機(jī)與科學(xué)的關(guān)系
最早的時(shí)候, 大學(xué)里有一個(gè)系別, 應(yīng)該是叫計(jì)算機(jī)系, 現(xiàn)在不同的大學(xué)可能有別的名字, 這個(gè)系別里面又可能有一個(gè)專(zhuān)業(yè)的名字叫做 "計(jì)算機(jī)科學(xué)與技術(shù)", 這個(gè)專(zhuān)業(yè)現(xiàn)在還有, 同時(shí)也存在很多細(xì)分的專(zhuān)業(yè), 比如 "軟件工程" 專(zhuān)業(yè), "信息安全專(zhuān)業(yè)" 等等, 有很多.
這些其實(shí)都算是計(jì)算機(jī)類(lèi)的專(zhuān)業(yè), 學(xué)的科目大相徑庭, 多少都會(huì)有那幾本計(jì)算機(jī)的核心課程.
現(xiàn)在我想討論的主題是 "計(jì)算機(jī) 與 科學(xué) 的關(guān)系", 其實(shí)就是想討論計(jì)算機(jī)為什么是一個(gè)科學(xué)學(xué)科, 以及為什么一般大眾都認(rèn)為計(jì)算機(jī)就是 "打字快" 和 "修電腦", 以及還有一個(gè)問(wèn)題就是, 科班程序員和非科班程序員的關(guān)系.
首先是為什么計(jì)算機(jī)是一門(mén)科學(xué), 計(jì)算機(jī)來(lái)西方, 最早的電子工業(yè)也來(lái)自西方, 看過(guò)計(jì)算機(jī)史的讀者因該都知道, 最早的計(jì)算機(jī)就是純粹的數(shù)值計(jì)算器, 功能單一, 幾乎僅用于科研.
然后因?yàn)橛?jì)算效率的提升, 在科研中的應(yīng)用越來(lái)越多, 成為了一種極其基礎(chǔ)的科研工具, 雖然它最早的時(shí)候僅用于科學(xué)計(jì)算, 但是后來(lái)應(yīng)用越來(lái)越廣泛, 滲透到了各個(gè)領(lǐng)域.
而計(jì)算機(jī)的發(fā)展確實(shí)會(huì)影響到各個(gè)的應(yīng)用場(chǎng)景的發(fā)展, 所以老外就搞了單獨(dú)的學(xué)科出來(lái), 專(zhuān)門(mén)研究計(jì)算機(jī), 研究它的組成, 架構(gòu), 原理, 以及各個(gè)方面, 比如大家都熟悉的現(xiàn)代計(jì)算機(jī)的結(jié)構(gòu)來(lái)源于一個(gè)科學(xué)家, 也就是馮諾依曼, 因?yàn)樗x了現(xiàn)代計(jì)算機(jī)的基礎(chǔ)架構(gòu).
現(xiàn)代計(jì)算機(jī)如果嚴(yán)謹(jǐn)?shù)膩?lái)說(shuō)的話(huà), 應(yīng)該叫做馮諾依曼計(jì)算機(jī). 這就是計(jì)算機(jī)的研究對(duì)象其實(shí)是計(jì)算機(jī)本身, 至于大家為什么一想到學(xué)計(jì)算機(jī)的就會(huì)認(rèn)為他是 "修電腦" 的, 我能想到的一個(gè)原因, 可能是因?yàn)? 大家都把計(jì)算機(jī)當(dāng)作一個(gè) "家用電器" 而不是 "科研設(shè)備".
比如你學(xué)物理的, 研究粒子的, "粒子對(duì)撞機(jī)" 對(duì)吧, 是有這么個(gè)東西, 那么你的朋友可能覺(jué)得你會(huì)很厲害, 因?yàn)樗麄儧](méi)見(jiàn)過(guò)對(duì)撞機(jī).
你如果跟你朋友說(shuō)你學(xué)的是計(jì)算機(jī), 他們可能覺(jué)得你學(xué)的是 "計(jì)算器" 類(lèi)似的東西, 因?yàn)檫@個(gè)東西大家都見(jiàn)過(guò), 就不覺(jué)得神奇.
而且計(jì)算機(jī)這個(gè)東西不是一個(gè)硬件這么簡(jiǎn)單, 不同的架構(gòu)軟件不互通, 比如 x86 架構(gòu)的計(jì)算機(jī)系統(tǒng), 和 arm 架構(gòu)的是不同的, 如果想在計(jì)算機(jī)領(lǐng)域創(chuàng)新, 做一套東西, 那么硬件可以做出來(lái), 那么很可能以前的軟件就全不能用了, 雖然說(shuō)可以重新編譯, 不過(guò)還有操作系統(tǒng)這一關(guān), 如果用微軟的系統(tǒng), 那么還是老外的東西, 用 linux 二次開(kāi)發(fā), 也不能算全部國(guó)產(chǎn), 如果拋棄這兩樣, 編譯出來(lái)的軟件就沒(méi)有了運(yùn)行環(huán)境, 還是不行.
所以國(guó)產(chǎn)化是很難做的.
所以大學(xué)生在學(xué)校學(xué)的專(zhuān)業(yè), 是 "計(jì)算機(jī)科學(xué)與技術(shù)" 相關(guān)的課程, 核心課程包括, 微積分, 離散數(shù)學(xué), 線(xiàn)性代數(shù), 計(jì)算機(jī)組成原理, 數(shù)據(jù)結(jié)構(gòu)與算法, 計(jì)算機(jī)網(wǎng)絡(luò), 計(jì)算機(jī)操作系統(tǒng), 大概就是這幾門(mén)課.
有的學(xué)校還有匯編, 還有人工智能, 編譯原理, 等課程, 不過(guò)核心的就上面這幾門(mén).
最重要的是這幾門(mén)課程學(xué)完了, 基本可以理解計(jì)算機(jī)是個(gè)什么東西了, 但是這還不足以讓你成為一名程序員, 因?yàn)樵诖髮W(xué)里學(xué)完之后, 同學(xué)門(mén)還只是學(xué)院派.
所以這個(gè)時(shí)候就有很多培訓(xùn)公司來(lái)鉆空子, 就會(huì)告訴你來(lái)我這培訓(xùn), 學(xué)習(xí)完可以高薪就業(yè)等等.
為什么存在這樣的問(wèn)題呢, 為什么學(xué)校學(xué)習(xí)完之后, 根本成不了程序員呢? 原因我想了很久, 其實(shí)可以參考社會(huì)上軟件研發(fā)培訓(xùn)機(jī)構(gòu)的課程, 以及學(xué)校里教的課程就可以得出一個(gè)結(jié)論了.
這個(gè)結(jié)論就是, 打個(gè)比方, 你要造火箭, 火箭的理論及都學(xué)會(huì)了, 現(xiàn)在畢業(yè)了, 要去找工作, 結(jié)果找到的是在造火箭的部門(mén)負(fù)責(zé)電焊的工作.
那么學(xué)校學(xué)的就是火箭的底層原理, 而培訓(xùn)班教的就是電焊, 那么有人會(huì)問(wèn), 為什么不直接學(xué)電焊呢? 原因是認(rèn)為, 電焊是需要圖紙的, 大部分情況下, 在軟件的研發(fā)過(guò)程種沒(méi)有人會(huì)給你現(xiàn)成的圖紙.
你需要自己去畫(huà)自己的軟件的設(shè)計(jì)圖, 然后用電焊給焊接起來(lái), 這個(gè)時(shí)候如果你只懂電焊, 不懂設(shè)計(jì), 那么八成是做不好這個(gè)工作的.
最重要的原因, 補(bǔ)習(xí)班不能教原理, 因?yàn)楣?jié)奏太慢, 他沒(méi)辦法教會(huì)你, 大部分計(jì)算機(jī)的課程比較難, 比較枯燥, 同時(shí)學(xué)習(xí)的時(shí)間會(huì)非常長(zhǎng), 沒(méi)辦法在短期的比如三個(gè)月里, 讓你實(shí)現(xiàn)就業(yè).
同時(shí)如果你發(fā)現(xiàn)你根本無(wú)法理解你學(xué)的東西, 補(bǔ)習(xí)班的口碑就會(huì)嚴(yán)重下降, 再者, 補(bǔ)習(xí)班的老師其實(shí)很多根本不懂原理, 他自己都沒(méi)有本科畢業(yè)的居多, 更別說(shuō)真正有水準(zhǔn)的老師了.
那么學(xué)校是否可以教電焊, 同時(shí)教理論呢, 這樣也不行, 因?yàn)槭忻嫔系募夹g(shù), 一波一波的, 沒(méi)有嚴(yán)格的標(biāo)準(zhǔn), 今天流行 react, 明天流行 vue, 而大學(xué)課程是不可能變化如此之快的.
所以對(duì)于想當(dāng)程序員的同學(xué), 必須做好一個(gè)隨機(jī)應(yīng)變的準(zhǔn)備, 必須準(zhǔn)備, 從學(xué)校開(kāi)始, 就要追著最時(shí)髦的技術(shù)才行.
其實(shí)也存在大學(xué)教育和就業(yè)環(huán)境不匹配的一個(gè)情況, 不過(guò)我認(rèn)為這都是能夠克服的, 有心人, 不會(huì)讓自己畢業(yè)就失業(yè)這是肯定的.
一 程序員是干什么的
最簡(jiǎn)單的理解, 就是寫(xiě)程序的那個(gè)人其實(shí)就可以說(shuō)是程序員, 所以首先要理解什么是程序.
對(duì)一個(gè)非專(zhuān)業(yè)人士來(lái)說(shuō), 你可以說(shuō)軟件無(wú)處不在, 只要你拿出來(lái)手機(jī), 你手機(jī)里的屏幕里的所有的東西, 就都可以說(shuō)是程序, 當(dāng)然數(shù)據(jù)也算是程序的一部分, 畢竟 程序 = 算法 + 數(shù)據(jù)結(jié)構(gòu) 嘛.
所以程序員就是, 讓你的硬件, 比如手機(jī), 智能電視, 發(fā)揮出最大作用的一種看不見(jiàn)的機(jī)器.
所以程序有時(shí)候又被叫做軟件, 而軟件是比程序更大一點(diǎn)的概念, 比如軟件來(lái)包含一些圖像素材, 聲音素材等等.
所以放到職場(chǎng)上, 程序員其實(shí)就是寫(xiě)程序的那個(gè)人, 寫(xiě)代碼的那個(gè)人, 也可以說(shuō)是計(jì)算機(jī)軟件手工從業(yè)者.
二 程序員這個(gè)職業(yè)與計(jì)算機(jī)科學(xué)的關(guān)系
首先如果想成為優(yōu)秀的程序員, 就必須對(duì)計(jì)算機(jī)相關(guān)理論非常了解, 這樣你才能寫(xiě)出好的程序, 精致的程序, 美麗的程序, 純粹的程序.
可能我的理解比較不同, 比如很明顯的是, 有些手機(jī)的 app , bug 就很多, 甚至閃退, 有些就運(yùn)行良好, 這就是軟件編寫(xiě)者的素質(zhì)的問(wèn)題.
所以一個(gè)好的程序員, 不一定說(shuō)他是要科班出身, 不一定要大學(xué)就學(xué)的這個(gè), 但是計(jì)算機(jī)科學(xué)的相關(guān)知識(shí), 至少那幾個(gè)重點(diǎn)的科目, 是必須要懂的, 如果不懂這些知識(shí), 八成是寫(xiě)不出好軟件的.
這就是程序員和計(jì)算機(jī)科學(xué)的關(guān)系, 從另一個(gè)角度來(lái)說(shuō), 比如你說(shuō)我是寫(xiě)前端的, 我就寫(xiě)個(gè)業(yè)面, 調(diào)用接口, 然后按鈕點(diǎn)擊一下沒(méi)了, 那么我是否和計(jì)算機(jī)科學(xué)有關(guān)系呢.
答案是肯定的, 為啥呢? 因?yàn)槟銓?xiě)的網(wǎng)頁(yè)還是運(yùn)行在瀏覽器上的, 而瀏覽器運(yùn)行在計(jì)算機(jī)上, 所以如果你不懂, 寫(xiě)一些復(fù)雜的動(dòng)效, 一些復(fù)雜的網(wǎng)頁(yè), 就會(huì)有一些問(wèn)題.
典型的就是卡頓的問(wèn)題了, 不再多說(shuō).
三 程序員是白領(lǐng)還是藍(lán)領(lǐng)
其實(shí)白領(lǐng), 藍(lán)領(lǐng), 甚至金領(lǐng), 都是舶來(lái)詞, 詳細(xì)的可以去找百科看一下, 一般白領(lǐng)是指上過(guò)大學(xué), 國(guó)外就是至少讀過(guò) college 的, 在辦公室工作的人, 叫做白領(lǐng).
藍(lán)領(lǐng)其實(shí)就是指工人, 從事戶(hù)外勞動(dòng), 使用各種大型的機(jī)械, 等等.
這么說(shuō)來(lái), 其實(shí)程序員應(yīng)該算是白領(lǐng), 但是呢, 加拿大的地方規(guī)定是, 程序員其實(shí)屬于藍(lán)領(lǐng), 或者說(shuō)是新藍(lán)領(lǐng).
原因是啥呢?, 其實(shí)它和修車(chē), 沒(méi)啥區(qū)別, 你再修改一個(gè) bug 的過(guò)程, 思維上是不是和修車(chē), 修機(jī)械很像.
所以加拿大這邊把程序員定位藍(lán)領(lǐng), 所以只要上一個(gè) college, 就可以去做程序員的工作, 在國(guó)內(nèi)就相當(dāng)于大專(zhuān)院校, 其次就是, 其實(shí)培訓(xùn)班培訓(xùn)一下, 也是可以應(yīng)付部分的研發(fā)業(yè)務(wù)的.
其實(shí)不用把軟件研發(fā)想的太嚴(yán)肅, 畢竟和真正的搞科研還是不同的. 方案是很靈活的.
所以說(shuō)到最后, 程序員是白領(lǐng)還是藍(lán)領(lǐng), 或者別的顏色的領(lǐng)子, 大家就自己斟酌吧.
### 四 程序員與當(dāng)代大學(xué)生的較量
以往程序員都和高薪掛鉤, 原因無(wú)非是某些獨(dú)角獸公司, 創(chuàng)業(yè)明星公司等等給造成的幻象.
其實(shí)比如一些工業(yè)軟件, ERP, 還有很多行業(yè)軟件的研發(fā)工作, 跟互聯(lián)網(wǎng)公司的工作不太一樣.
互聯(lián)網(wǎng)的薪水高, 因?yàn)樾袠I(yè)原因, 而不是因?yàn)樗麄冊(cè)谧鲕浖邪l(fā)所以薪水高, 所以得搞清楚, 互聯(lián)網(wǎng)是互聯(lián)網(wǎng), 軟件研發(fā)是軟件研發(fā).
你在研發(fā)的軟件不一定是互聯(lián)網(wǎng)產(chǎn)品, 所以薪水也是不同的.
最重要的是, 隨著互聯(lián)網(wǎng)行業(yè)的發(fā)展, 逐漸的熱度也下降了一些, 高薪肯定還存在, 不過(guò)可能也是天花板才可能拿到高薪.
如果不是天才少年, 還是一步一個(gè)腳印的努力吧, 做一件實(shí)際一點(diǎn)的事情還是比較好的.
所以剛畢業(yè)的大學(xué)生, 找一個(gè)一般的研發(fā)工作, 還是沒(méi)問(wèn)題的, 不過(guò)就目前來(lái)看, 問(wèn)題不是大學(xué)生, 也不是程序員.
而是程序員不能干到退休, 跟國(guó)外情況還不一樣, 如果你在日本, 程序員你是一直能作的, 國(guó)內(nèi)就不行了.
不過(guò)也不用著急, 因?yàn)閲?guó)內(nèi)任何行業(yè)幾乎都是如此, 畢竟還是處在一個(gè)人口紅利的末尾的, 以后會(huì)怎樣, 那也就無(wú)法預(yù)知了, 還是要過(guò)好當(dāng)下.
五 程序員與培訓(xùn)機(jī)構(gòu)的博弈
培訓(xùn)機(jī)構(gòu), 也就是可以把一個(gè)門(mén)外漢, 三個(gè)月之內(nèi)變成一個(gè)可以上崗的程序員的這么一個(gè)神奇的機(jī)構(gòu).
它本身存在具有合理性, 尤其是在程序員被高薪鼓吹起來(lái)之后, 很多人都要轉(zhuǎn)過(guò)來(lái), 所謂三百六十行, 行行轉(zhuǎn)程序員, 所以培訓(xùn)機(jī)構(gòu)的生意也就好了.
不過(guò)我的觀察是, 培訓(xùn)機(jī)構(gòu)生意現(xiàn)在也慘淡了, 回頭我可以去做一個(gè)調(diào)查, 看一下生源情況如何.
培訓(xùn)機(jī)構(gòu)的存在以及課程, 其實(shí)對(duì)市場(chǎng)是有好處的, 其中最大的問(wèn)題, 不在于培訓(xùn)機(jī)構(gòu)的授課情況, 而在于培訓(xùn)機(jī)構(gòu)教學(xué)生 "包裝簡(jiǎn)歷" 以及 "面試話(huà)術(shù)" 的這種情況.
這兩種問(wèn)題, 導(dǎo)致了一個(gè)更大的問(wèn)題, 那就是市場(chǎng)上的人才并沒(méi)有變多, 而是 "假簡(jiǎn)歷" 的騙子變多了.
首先簡(jiǎn)歷只有名字是真的, 電話(huà)號(hào)碼是真的, 其他全假的, HR 得看清楚才行, 否則白費(fèi)功夫.
這其實(shí)對(duì)市場(chǎng)好處不大.
六 為什么我還堅(jiān)持當(dāng)一個(gè)程序員
因?yàn)槲抑粫?huì)做這一份工作呀, 其他的雖然接觸過(guò), 但是畢竟離專(zhuān)業(yè)差的還很遠(yuǎn), 最重要的是, 我現(xiàn)在對(duì)這個(gè)工作還有一點(diǎn)興趣.
另外就是, 現(xiàn)在做程序員, 需要換一種思路才行, 不能老巴望著去公司做程序員了, 公司不要你了, 你也依然可以繼續(xù)做程序員, 比如現(xiàn)在流行的 "數(shù)字游民" 對(duì)不對(duì), 只要掌握了這個(gè)技能, 其實(shí)可以做的事情還是有很多的.
不能局限在, 我必須在公司工作, 這種思維里, 當(dāng)然追求穩(wěn)定是肯定是大家都想要的, 這個(gè)完全沒(méi)問(wèn)題.
我這里也只是提出一個(gè)設(shè)想而已.
七 你要不要來(lái)當(dāng)程序員
如果有誰(shuí)想學(xué)研發(fā), 可以來(lái)找我, 真的, 我其實(shí)很樂(lè)意分想我的一些方法, 一些理念等等, 幫助大家去成為一個(gè)更好的程序員, 或者更好的一個(gè)開(kāi)發(fā)者, 這份工作我認(rèn)為現(xiàn)在來(lái)看, 還是很不錯(cuò)的.
具有挑戰(zhàn), 樂(lè)趣, 并且具有創(chuàng)造性, 雖然說(shuō)不上去改變世界之類(lèi)的, 但是能夠在工作中擁有一些積極的東西在里面, 是很難得的.
總的來(lái)說(shuō), 我還是很喜歡, 并且享受這份工作的.