如何從一個菜鳥,變成本身理想中的程序員

程序員的思考

前言

從年初的寒冬,到如今的立秋,耗時近6個多月,我終於找到了一份心儀的工做,或者說,我終於找到了工做。工做年薪翻了一倍還要多很多(我的起點過低了~)。 也有將近一個多月沒有寫博客了,這裏就把本身這段時間的感悟以及如何去學習的,與你們分享一下,可能摻雜了不少我的感想,因此廢話可能會有些多,望你們見諒!!!程序員

下面分幾個階段來描述一下筆者的心理歷程經歷

第一階段 自我認識、危機感來襲

筆者16年畢業,畢業後便入坑,第一家公司iOS開發也就我一人,徹底靠自學(我的感受啥都沒學到,成天上班就是網上找資料狀態),終於成功的在16年11月份倒閉了,而後我就失業了。面試

歷時幾個月筆者都沒有找到工做,而後本身就買了本《Object-C高級編程》來學習,當時看這本書,實際上是至關於天書同樣,看不懂,但仍是強迫本身看了。算法

終於在17年的2月份找到了一家公司,也是一家小公司。過後才知道本身被面上的緣由是由於面試的時候,還在看上面說的那本書,而後面試官感受筆者學習的態度能夠,因此就打算讓我嘗試一下,有些尷尬。 不過也沒有讓公司失望,安全的度過了實習期,而且一直就任到如今,公司也快速的發展了起來,很爲公司感受到開心。編程

在18年年中,筆者開始接觸了Flutter,那個時候的Flutter並無如今這樣火,自學了一段時間,感受本身的理解仍是僅僅存在簡單的使用層面,並無大佬們說的那種語言都是相通的感受。彷彿意識到了,我連本身賴以生存的語言都沒有學會,就想着擴展本身的知識層面,因而自嘲了本身一段時間。設計模式

上面事件以後,也是筆者學習的開始吧,後來,我停下了任何娛樂,好比小說、遊戲和鍛鍊,開始自我認識,實際上指的是iOS開發本身所擁有的技能的梳理,大體是這樣的:安全

  • 簡單UI界面沒問題
  • 對於什麼設計模式,徹底不懂,甚至單例我都沒有搞清楚怎麼用的
  • 底層,我靠,底層怎麼實現的我怎麼知道?
  • 數據結構、算法?我作移動端的要知道這些東西幹嗎?

好吧,筆者不想描述的更清晰了,相信就單純的上面幾條,相信你們應該都知道,菜到什麼程度。markdown

此時,甚至一段時間,筆者都很是的迷茫,感受到了深深的危機,我該怎麼辦,我能作什麼?那段時間,一直在問本身這些問題。數據結構

第二階段 學習

通過一段時間調整後,放棄了Flutter,拿起了大學的數據結構的課本,開始認識啥是鏈表、哈希表等一些簡單的數據結構,此時的學習也就是簡單的知道這玩意究竟是啥,由於iOS的封裝,平常開發根本用不到這些東西,可是你們都說這個基礎,因此筆者就開始學這些。多線程

與此同時,筆者也購買了《Effective Objective-C 2.0》學習,這些書籍也是大佬們在網上極力推薦的,因此我就買。oop

當認識了簡單的數據結構以及讀完上面那本書以後,就有點自我感受良好的感受,而後就在我老婆面前show一下個人成果(我老婆也是程序員,後臺,比我優秀),而後她就問了我一些關於簡單數據結構的實現方法,以及一些簡單的底層問題。 啊~,被虐的體無完膚,甚至感受到了羞愧。由於不懂,沒法組織語言描述出來,她還問我,可否用OC去實現一個簡單的鏈表和hash表,啪啪啪,臉很疼。

男人能夠認慫,可是在本身女人面前認慫,是絕對不可能的。在這種羞愧感之下,我認真的去了解鏈表、hash表以及簡單的二叉樹。同時用OC語言去實現它,其實關於hash表的實現,筆者也以博客的形式分享給你們了筆記-數據結構之 Hash(OC的粗略實現)

瞭解相關的數據結構以後,我就帶着個人理解,去看我上面所提到的兩本書,關於數據結構,在iOS中的利用,也已博客的形式分享給你們了筆記-集合NSSet、字典NSDictionary的底層實現原理。 固然這些都是淺顯的瞭解,不過正是由於這些簡單的瞭解,激發了我對底層方面研究的興趣。

這個階段的學習,持續了近半年的時間,工做中要求作視頻相關的播放,而後我一人「獨挽狂瀾」的接下了這個模塊的任務(實際上也就是利用第三方庫ZFPlayer去作視頻的播放),而後本身利用空餘時間去研究數據結構,感受學到了不少。因而又出現了自我膨脹的感受,因此就牛逼哄哄的出去找工做,恰好處於18年年末,行情仍是能夠的。

第三階段 谷底,完全的谷底

18年年末的時候,出去面了一家公司,屬於小公司,須要作視頻相關的App。先給我來了一個簡單的電話面試,問了工做中作了些什麼,以及遇到了什麼樣的困難,而後怎麼解決掉的,正常回答以後,電話面試過了。

而後去他們公司面試,去了以後發現是一個項目負責人面我,並且這個是新項目,以前的那個電話面試個人人是兼職的,如今沒時間兼職了,因此須要找一個iOS開發,要求就是有視頻相關的經驗,而後我就把個人經驗分享了一下,固然存在了一些吹逼。而後就拿到了一個17k的offer。😁😁😁

恩,確實,拿到這個以後,徹底膨脹到了極點,由於這個薪資比我當時的工資高的太多。可是由於某些緣由,我拒絕了,由於當時某些緣由,不能換工做,並且我感受我能拿到更好的offer。

度過春節,來到金三銀四,我投了不少家大廠,好比B站、攜程、聽喜馬拉雅等等。當時簡歷寫的也確實漂亮,都成功的拿到了面試邀請,當時開心的很。

恩,後面在面試的過程當中,沒有一家的面試時間超過半小時,也沒有一家給我二面的。懷疑人生,完全的懵逼了。

其實一面都很是的簡單,簡單的羅列幾點:

  • block本質
  • ARC內存管理的原則
  • 多線程之間的通信
  • runtime、runLoop的理解和使用
  • 常見三方庫的源碼等等

說實在的,一面的這些東西,真的很是基礎,然而筆者當時僅僅停留在聽過,網上看過相關的博客,當真正須要我用本身的語言去描述的話,那就是漏洞百出。

後面不用說太多,筆者深深的陷入了懷疑自個人狀態,想過轉行,想過就呆在如今的公司挺好,後期甚至對面試產生了一種抗拒,懼怕面試。

第四階段 再次學習

在一段時間的緩衝以後,我選擇了再次學習,學習初期,比較盲目,只是經過網上資料、書籍來自學,收穫很低。

下面的描述,絕對不是廣告,確實是我的的學習之路。

在一次偶然的機會,觀看了邏輯教育的公開課的視頻,先是看了Cooci老師的公開課,後面又看了CC老師關於圖片渲染的公開課,後面幾天就一直跟着這個學,可是公開課,能學到的東西確實少,就下定決心報了一個VIP的課程。

貴,當時確實感受好貴,一個課程都要7K+,當時猶豫了幾天,後面在自我安慰的狀態下,報名了進行了系統的學習。直播課時間是每週的1、3、五晚上8點開始。 說上課時間,爲了更好的表達我本身的學習時間安排。

  • 周1、3、五晚上上直播課,每晚基本上10點後結束,上完課,我就複習總結,本身寫筆記,能忙到凌晨1~2點鐘
  • 天天的上下班的路上,就看直播課的視頻,反覆學習
  • 周2、4、六晚上沒有課,那我就總結筆記,寫博客,有疑問的直接問上課老師或者和同窗交流,真的是一點不肯意耽誤時間。
  • 週末時間,公司是大小周,小周的話,我就全天學習,去消化一週所學的知識,大周的話,我會留出半天時間陪老婆,實在忙不過來的時候,我會兩天都處在學習階段。

其實這麼的努力學習不爲別的,就爲了那昂貴的學費,就爲了可以多學點知識。

就這樣的持續學習,一直到如今,其實直播課,課堂上能學到的東西有限,畢竟你們的接受能力不同,筆者就是屬於理解能力比較差的,須要用更多的時間去總結,而後使用。

再艱難的過程,簡單的文字可以輕描淡寫的描述過去,其中的經歷體驗只有本身知道。當本身沉下去,去學習的時候,須要的就是堅持,堅持,再堅持。當你感受時間不夠用,或者感受放鬆都是在浪費時間的時候,我感受,你離成功不遠了。

第五階段 再次出發

就在2周前,我再次出發,投簡歷,反應很快,兩天時間,安排了5家公司的面試。但是內心仍然對面試有內心陰影,就把最想去的公司安排了最後。

此次面試前,沒有看任何相關的面試題,由於本身一直處於學習的過程,感受面試題對個人幫助不是很大,或者也算是一種自信吧。

黑暗以後,黎明終會到來,結果也讓筆者本身滿意,面試了5家,也成功的拿到了5個offer,最終選擇了本身最心儀的一家公司。拿到了20k+,16薪的工做。

面試中,也有一次面了5輪的,也有視頻面試的,總之面試很累,還有一家8年的老開發一塊兒交流技術,他們給了筆者不少寶貴的建議,以及學習的方向,非常感謝他們。

學習的方式不少,對於筆者這種自學能力不能太好的,或者說沒有學習方法的人來講,付費學習,也是一種捷徑。

這個過程,筆者拋去了以往容易自我膨脹的心態,讓本身時刻處於一種不知足的緊張感,時時刻刻處於學習的狀態。

以上就是筆者近一年的歷程,感受本身成功的度過了菜鳥的階段,如今已工做了3年,爭取在第5年的時候,上升一個更高的層次,但願你們也在這裏對我進行監督。

也但願這篇文章能給學途比較迷茫的小夥伴帶來一點點堅持下去的動力,要相信,熬過了最難的時間,美好便會降臨。

後面又是一個新的開始,仍然須要沉下心來,去學習,去沉澱。