PTT推薦

Re: [請益] 為什麼文組轉職主流是寫code

看板Soft_Job標題Re: [請益] 為什麼文組轉職主流是寫code作者
HenryMillion
(亨利萬世)
時間推噓36 推:37 噓:1 →:32

原文恕刪

其實這個問題還滿有趣的,最近的確是一堆文組首選都是學寫Code

我想最大的根源還是Programmer的需求缺口太大 + 程式入門的門檻降低

/*
這篇有點長,有點講古的感覺,最後會提一下學程式的兩三事,不想看講古的推薦跳最
後一Part看就好。很多是個人的經驗和感受,如有不對的地方也歡迎各位前輩多多指教。*/

// 正文開始

首先來說說Programmer的需求,主要還是隨著時代的演進,幾乎近代的產業大變革都與
程式相關,像是工業4.0 / IoT / AI / ML / 大數據等等... 這幾項帶動了科技業的大幅發展,自然也需要大量的Programmer來進行開發,但問題Programmer的產出科系CS其實是近10多年才熱門起來的,這也導致供給嚴重不足,在美國最缺人力的時期,甚至是只要有一點名氣的學校,CS還沒畢業的就一堆公司在搶。但人力還是不夠,怎麼辦呢? 既然國內填不滿,那就搶國外的吧~ 於是美國就開始狂搶海外的軟工菁英,後來中國發展起來了,自己也是狂搶人。

到後來外商又覺得把人抓到自己國內太麻煩又量少又貴,反正軟體開發的特性就是不用實體,乾脆把研發也設在台灣方便招人,此外對於很多新創來說,台灣的工程師更是配合度高又便宜好用,於是這幾年可以看到外商/新創瘋狂在台灣設點與擴編,但台灣自己產業一樣在經歷變革的浪潮(只是比較晚),自己也有很大的人力缺口,大家也知道依照台灣企業的尿性,薪水上要尬贏外商很難,就算開出差不多的薪水,也因為傳統的加班凹人得過且過的文化導致很難搶贏外商,這就導致人才外流嚴重,但缺口還是要想辦法補,怎麼辦? 於是就只能降低標準來招募,對於一些中小企業來說甚至只能找一些非本科但好歹有點經驗的慢慢去養成,這就是大家目前看到的景象。

再來程式入門門檻的降低是怎麼回事呢?

其實一開始程式語言的入門並沒有那麼簡單,像是早期一開始學C或JAVA,可能變數型態就可以讓一堆初學者像是在看天書一樣,光是一個字串切Token就可以搞爆一堆初學者,更不用說後面的控制邏輯、指標、作業系統特性再到物件導向特性等等...

但程式語言畢竟是人虛擬出來的東西,背後並沒有像是傳統電子學電路學是需要遵守許多定律或物理性質的,加上程式的人力需求大增後,為了讓程式能開發得更為迅速+擴增企業影響力,越來越多的公司投入開發Open Source的Libary、Module,同時也鼓動開發人員加入Open Source的行列,後來就演變成Framework的形式,讓程式開發人員省去大量從基礎做起的時間,同時也幫忙Handle好許多在以前需要很小心的地方(例如Thread的排程、記憶體的Locate或是Http CRUD的底層處理等等),快速就能產出對應的程式。

再加上新式程式語言的興起,像是Python,簡化了大量的複雜語法與Script式的語言特性更是讓程式入門變得更為容易,而這種類型的語言最被為詬病的效能問題也隨著同等價位的硬體效能快速提升後也慢慢變成沒那麼嚴重。

除此之外,程式碼具有非常高的可攜性與延伸性,伴隨著程式人力的擴增,網路上的教學資源豐富程度也隨之急遽提升,學習程式變得看似十分簡單。

簡而言之,程式的門檻降低就真的是因為站在巨人的肩膀上,前人種樹後人乘涼。


// 跳過上面講古的,歡迎從這邊開始看

Q. 所以學程式真的相對簡單又好找工作嗎?

我的答案是Yes,就像上面說的,程式入門已被前人簡化許多,加上大量的人力缺口,
所以學程式後轉職相較其他專業來說沒那麼難,待遇相較起來也不會太差。

Q. 那這樣學程式轉行後會有什麼問題嗎?

問題其實是中長期的職涯問題,雖然程式入門簡單,但要寫得好卻是需要大量的知識與經驗累積,這部分其實比很多專業的提升還難不少,一個經驗豐富的Programmer跟新入門的Programmer差距是誇張的大,舉例來說Programmer新人De一個bug要2周還不見得搞得定,但強者可能一小時就解決... 而在程式開發與品質更是難以估計強者與新人的差距。

再來,程式的技術日新月異,改朝換代的速度快得嚇人,你必須要一直不斷地學習新的東西,適應新的理論甚至是新的語言,這對很多人來說其實很累。

最後則是最麻煩的,程式並非你學了就能勝任任何跟程式有關的行業,更為接近現實的是程式就只是一個工具,猶如畫畫時用的畫筆,你可以用畫筆畫出任何畫,但問題是如果你想畫出能賣的畫,就不是只有拿畫筆起來畫那麼簡單,你需要有很多的知識、理論甚至是靈感才有辦法畫出好看能賣的畫,程式也是一樣的道理,程式可以人人都會寫,但要把
程式應用在各個領域上是需要很多知識觀念與思考邏輯的結合才有辦法做得出好的成品。

一旦你沒辦法在某個領域成長或是跟上技術的腳步,那就意味著未來職涯的成長空間將會十分有限,可以預期的是也許未來有一天相關的人力需求會飽和,這時候會被淘汰的會是誰呢?

Q. 常常聽到寫程式是需要天分的,是真的嗎?

答案是Yes也是No

其實寫程式的思考邏輯和學數學不太一樣,在我看來學數學是講究因果邏輯,也就是從A導到B從而證明C,而程式的思考邏輯更偏向所謂的抽象化思考,像是資料輸入A經過流程B中的格式轉換最終產出C資料結果,這整個過程能在腦袋中構思組合出來這類的抽象化思考能力才是所謂的程式天分。

那麼寫程式到底需不需要天分呢? 一般來說程式入門時,天分只是反映在學習的速度快慢,有天分的人總是學得超快,沒天分的人就注定要花更多時間學習,但最終不論有無天分都還是能學會寫程式,時間長短而已。若是以學程式的角度來看,天分是加分但非必要,所以答案是No,當然學習時的痛苦程度也會有差XD 很多人中途放棄就是學太久太累太煩。

但若是以要把程式寫得更好,更漂亮,邁向我們口中的強者之路,那天分就非常重要,具強悍的抽象化思考能力註定天花板會更高,沒有天分的人在學到某個程度後想要再有大幅度的進步會十分的困難,所以以這角度來看答案是Yes,這同時也會反映在專業職涯發展上,當然職涯發展的因素很多,只是若是以專業為主要發展基礎,那麼有沒有天分影響程度就會很大。

// 學習雜談

最後談談常常有人在討論學習是否倚靠CSDN會快很多,我認為畢竟CSDN大多是中文,對於閱讀和學習來說會簡單很多,但CSDN有很大的問題是太過速成,裡面很多就單純是快速
翻譯原文的片段,或是東湊西湊的縫合怪,甚至是單純搬運工抄別人的加上自己一點無關緊要的註解,很多東西的原理連作者都一知半解而已。

所以如果是要追求快速做出東西,能動就好,多看點CSDN應該可以滿快就弄出來的,但如果真的認真想要學習真正的原理和完整的技術我還是建議英文學好一點,多看一下
Stack Overflow 之類的問答網站和官方的API說明文件與論壇會比較有用。

// 大概是這樣,希望以上能給對於想入門程式或是剛入門程式的人有一點幫助。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.25.158 (臺灣)
PTT 網址

t6414110/13 02:13

DrTech10/13 02:47CSDN難道沒人覺得超爛的嗎… 都是三手資訊。而且一堆垃圾

DrTech10/13 02:47

DrTech10/13 02:52不過還是感謝原文分享經驗談,謝謝。

tz551410/13 03:39推抽象化能力天份那段,真的影響蠻大的

zxcasdjason110/13 03:41推分享 ,stack要連次解也看。最佳解有時只是簡化

zxcasdjason110/13 03:41好懂反而失去學習意義。

aidansky098910/13 07:25對初學者來說越速成的東西越好,人就是要有成就感

aidansky098910/13 07:25才能走下去

我反倒覺得對初學者來說,沒把概念學懂,只求速成的成就感很沒意義

IcecreamHsu10/13 07:28推 都認同

inte629l10/13 07:42

yupog200310/13 07:53認同這篇文章的觀點

eduishappy10/13 07:53推,認同

brianhsu10/13 08:02csdn 根本就一堆機器翻譯的垃圾文章的集合體

yoshonabee10/13 08:49

wahaha27910/13 09:04純噓csdn

sam9226010/13 09:20CSDN 只有一手文章有看的價值

f496328mm10/13 09:28CSDN 就是一堆垃圾,東抄西抄

f496328mm10/13 09:29看過好幾篇 CSDN 都是同樣的內容

f496328mm10/13 09:29那我還不如直接看原文 浪費時間看抄來的

jobintan10/13 10:01那個說程式人力缺口的,是不是ICC的conspiracy?

應該不是拉,人力缺口是真的很大,今年就被獵頭找很多次,明顯市場很熱

tkhan10/13 10:11高手

crazylunar10/13 10:31推,然後早就沒看CSDN了,一半以上都是抄別人的,真

crazylunar10/13 10:31不懂26心態,不是你的也在那邊偷

DCTmaybe10/13 10:32寫這麼長給個推

germun10/13 10:45推 既客觀又詳細的分析

vi00024610/13 10:47抽象化思考真的滿有用的 我記憶力很差 但靠抽象化能力補

vi00024610/13 10:47回來 也算是有點靠天份吧

vi00024610/13 10:49在重構或設計架構的時候幫助特別大

unchained10/13 11:11倚靠的倚打錯了

已修正,感謝提醒

wei11510/13 11:12寫程式真的要天份嗎?其他理工科系門檻比寫程式高的多,

wei11510/13 11:12也沒聽過他們說要有天份,

wei11510/13 11:14我認為是之前讀十幾年書,結果碰到程式這種全新的概念還

wei11510/13 11:14是要從頭學,落差太大才會覺得需要天份八

理工科系很多要天分~ 像是物理、數學都是要有天分才比較容易學會的,至少我是聽滿多 理工同學都曾說過有天分和沒天分的差異很大

housewenwend10/13 11:17推分析

ttsung210/13 11:24推推

Chen33410/13 11:52

raincole10/13 12:13其他理工科系沒人說要天份?你聽誰說啊

raincole10/13 12:14數學幾乎是最常被講要天份才能讀的吧

a198221310/13 12:42對岸教學文章可以速成,但最後還是去看 stack overflow

a198221310/13 12:42 和官網文件 +1

asd12315910/13 15:00推畫筆這個比喻

Ekmund10/13 17:03CSDN我是覺得還好 抄歸抄 起步時找中文資訊不是在這就是

Ekmund10/13 17:03個人部落格 在習慣StackOverflow和原廠文件前 能下對關鍵

Ekmund10/13 17:03字找到自己能吸收的東西比較重要

Ekmund10/13 17:04是說最近教人也是 99乘法或遞迴寫費布納希都還好

Ekmund10/13 17:05但講到call by value/ref 很容易炸...

Ekmund10/13 17:06如果寫過幾次code 會看記憶體還是對這沒感覺

Ekmund10/13 17:07我就會歸類成天賦問題了...

這純粹是對記憶體運作不瞭解吧... 用實物(例如積木)仿記憶體的環境,讓他當電腦實際 動手操作也許會比較易懂。

viper970910/13 18:20推這篇

※ 編輯: HenryMillion (118.167.102.122 臺灣), 10/13/2021 23:09:51

unicornGL10/14 00:29推抽象化思考,我們主管這個能力超強

shownlin10/14 01:42我倒是覺得csdn不錯 先快速有個overall的概念 細部原理

shownlin10/14 01:42再用其他原文資料下去延伸 效率好很多

shownlin10/14 01:43就像維基百科 有中文頁面我一定也會先看 再去看英文的

godsparticle10/14 08:07軟體很多是舉例大概就懂了

godsparticle10/14 08:08現在物理跟數學對我來說比較是外星語言等級了

shou5010/14 11:01

leejiaming10/14 11:24推 感謝分享

Ekmund10/14 21:13我只能說 有的人是真的不會就是不會..w

popcool10/14 22:30不是都找 stack overflow 嗎

uopsdod10/15 00:44

SONGya16810/16 13:30只用stackflow, CSDN在新人時期就覺得爛爛的

shashayou10/16 22:39

tsairay10/18 11:10寫程式天份並不是很稀有,但就是有人沒有

tsairay10/18 11:11這跟音樂美術其實很類似,音樂美術基本學科訓練學了後

tsairay10/18 11:12多少都會一點,但是要靠這行當飯吃,就不是每個人都行

hjwing28010/18 11:52

fgkor12310/22 01:20CSDN一手的都會收錢 蠻貴的

fgkor12310/22 01:21之前查to毫米波晶片的時候有想買過

fgkor12310/22 01:21ti