對編程感興趣,自學.Net會Winform和WPF,面試時被嘲笑只入門水平,感到很迷茫,該不該繼續?

我是一個普通二本高校今年畢業的畢業生,畢業之後找到了一份工作(不是編程的)做了一陣子感覺很迷茫,發現自己還是對編程感興趣(我是一個理想型的人),因為自己在讀大學的時候就對編程很感興趣那種,我的專業是通信類的,在學校里也學的是C、C++和數據結構之類的,但是我又對C#感興趣,於是開始接觸.Net(自學),到現在不能說精通但是一些.Net的特性面向對象、多態、介面、繼承、事件、委託、泛型、多線程、非同步、動態類型之類的我都會,不能說多強但是能運用去解決一些問題,Winform能自己使用GDI+定製自定義控制項和事件,WPF也能做一些基礎的界面,其他的.Net技術諸如http://Asp.Net、.Net Core、.Net.ML、Unity 3D也有一些基本的了解甚至上手(比如我最近開始接觸ML項目),後來聽朋友介紹幫我內推一下他們公司的開發崗位,後來對方技術Leader打電話過來面試,一開始和他聊了一些工作的基本情況和轉行原因,後來他開始問我最近乾的一項項目,我想了一下和他講之前做的一個多線程的Spider,可能講的比較膚淺他於是問我有沒有遇到什麼問題,我當時一下子就懵住了,不知道怎麼講,確實也遇到了一些問題怕他覺得這些問題太膚淺。後來隨便聊了一些其他東西,最後我朋友發來一個截圖,裡面是他和喔朋友聊的一些話,說我是不是他的什麼親戚,技術只有入門水平之類云云...我是一個自尊心很強的人,當時覺得很受傷,甚至懷疑我還有沒有必要繼續堅持學.Net,我到底適不適合.Net?還是我到底該要怎麼去表達?我現在很迷茫,感覺.Net是一條很昏暗的道路,我也知道我確實技術水平有限,又不知道怎麼去提高,因為我確實對編程很感興趣,很想去試一試(問題是我現在連入行的機會都沒有),聽說現在前端很火我是不是應該也轉向Js和Java呢?求大神門給我解答。


有哪個不是從菜鳥過來的?別在意別人的嘲笑。

小平同志說過:發展是硬道理。

過去中國貧弱,別人欺負到家門口也只能忍氣吞聲,現在國力增強,也敢和燈塔國互懟了。

所以,對於個人來說,努力學習,不斷提升技術能力是硬道理。

不過你需要注意一下努力方向。

如果要做東西,.NET(尤其是.NET Core)真的很棒,是幹活的利器,但如果是以求職為目的的,你需要學習就業機會最多的技術,很遺憾,.NET顯然不是。

目的決定手段。


我最開始還停留在控制台程序的時候,老師課堂上講到了隨機數,Random這個類,當時下課我就給老師說,我要寫一個控制台的老虎機出來。第二天我寫出來了。那個代碼大概是什麼樣子的呢,那個時候我根本對類,線程這些幾乎一竅不通,甚至對連方法也搞不懂,你能想像一個人用面向對象的語言(C#)來寫出了一大段面向過程的代碼嗎?為什麼我要說是面相過程,我這樣說吧,整個實現,只有一個類,記事本敲出來,csc編譯,這個類一共兩個方法,一個是Main,還有一個叫aaa,代碼大概1500行,goto大概用了十來個(因為不會用方法和類來抽象)。最後還有bug,我在上下做了跑馬燈,大概是上面一行全是&<下面一行全是&>,最後發現有些時候下面會顯示&<上面會顯示&>,就是顯示會錯亂,有些時候顏色也會錯亂。因為我純用循環來寫的。當時我的老師給我說是線程不同步的問題,我去百度搜了很多次,依然沒有解決。我大概畫一下這個老虎機的樣子吧,因為實在太久遠了,代碼找不到了。

說了這麼多,這個事情你覺得牛嗎?我自己是覺得在那個時候,純靠goto去把一大串邏輯(上分,中獎,下分等等)串起來還沒出問題,我覺得是挺牛的。但是如果是這種東西放在實際應用中呢?牛嗎?我如果是自己接手到這種代碼,我可能會用盡一切言語去問候他。

也就是說,你,在你現在所在的層次,或者說現在所接觸到的東西,你挺牛的,或者說在正常水準。但是你要知道一個事情,小打小鬧,寫demo,誰都能做,包括說稍微懂一點TCP或者UDP,寫一個區域網的即時通訊都很簡單,倒是這個你能說你去到騰訊不算菜鳥嗎?就光說一個微信的消息ID生成,把這個搞定的人,就能夠站在中國技術頂尖的層次了。所以按照應用層面來說,你就是一個菜鳥。

也就是為啥找工作都有要求工作經驗。沒有工作經驗,你理論再好,都只能算菜鳥。放好心態一步一步來。


題主的問題,並不是沒有項目經驗,而是缺乏系統的學習作為一個程序員應該掌握的知識。每年畢業季我們看到一線互聯網公司招應屆生,所謂的白菜價大概是20萬~30萬,難道這些應屆生有豐富的項目經驗嗎,其實不然,只不過好學校的應屆生掌握基礎知識非常紮實。

其實這和科班不科班也沒有太大的關係。科班生在大學裡系統學習,非科班在工作後自己系統的學習,比如很多數學專業的人,最後也成了優秀的程序員。

所以題主要做的,並不能僅僅停留在c#或者. Net全家桶這些應用層面的東西之上,而是要系統的從底層和基礎開始學習,或者說複習。

我以互聯網程序員為例子,大概列一下需要掌握的基礎知識

計算機原理,

操作系統,

編譯原理,

演算法數據結構,

語言和框架本身,

中間件和web伺服器,

分散式和微服務,


如果第一個工作不是編程的工作,想進入這行,無論你研究的多深,多半還是會被說做的東西太簡單。畢竟你再怎麼說也是一個人弄,而現在程序軟體動輒就是幾十個人的團隊,一個人能弄出來的當然有限。

對於之前不是編程的情況轉編程開發,肯定要被壓工資的;之前非互聯網的進互聯網,肯定也要被壓工資的。畢竟面試的人這麼多,如果你沒有成本優勢,人家憑什麼不找個經驗背景一致,更加穩妥的人呢?

當然要想快速找工作,對著招人崗位上面出現數量最多的那個語言學,還是相對高效的……(當然戰線別拖得太長了,否則這語言不火了就又不好找工作了)


你這種換那個語言也是一樣,不考慮你那朋友的與面試官的素質,你就是個入門水平,極度缺乏項目經驗,那java也改變不了什麼,你得解決自己的問題


推薦閱讀:

TAG:編程 | NET | WindowsPresentationFoundationWPF | WindowsFormsWinForms |