這個故事是關於一個名叫Yuri Sharoiko 的遊戲開發者的故事。在進入 IT 領域之前,他曾在執法部門工作並為銀行提供安全保障。很快地他就對這項工作感到厭倦,並回憶起了他年輕時的一個愛好:電腦程式設計。最終,Yuri 學習了 Java,並開始編寫瀏覽器遊戲。「在被錄用之前,我至少失敗了 10 次面試」:開發者 Yuri 的故事 - 1

“我從小就想和電腦打交道”

我今年26歲。我在新西伯利亞(俄羅斯的城市-編者註)出生長大。從我還是個孩子的時候起,我就想與電腦打交道,遊戲開發的整個想法讓我著迷。我用 C++ 和 C# 寫了一些基於文字的任務,但我的學業成績並不出色(由於我的懶惰)。我並不傻,只是沒有組織。這一切促使我在看到機會的地方報名。我曾想過在執法機構工作,所以我從西伯利亞國立鐵道工程大學(SGUPS)刑法系畢業,最終,我到達了我想去的地方。大學二年級時,我完成了調查委員會的實習,所以我留在那裡。第四年,我被錄用了。我不知道現在怎麼樣,但以前是三年級之後就可以在那裡找到工作。大學畢業六個月後,我獲得了中尉軍階。我又工作了一年,意識到我厭倦了所有的長夜、警衛職責和缺乏社交生活,所以我決定辭職。之後,我找到了銀行保全團隊的工作。這意味著我將在故事中省略一些細節:保密協議仍然有效。在那裡,我仍然保留著一些重新設計事物的願望。我改進並自動化了流程。結果,所有這些工作都演變成了一個比較大的項目,為安全部門創建一個統一的存取系統。儘管該部門只有 50 名員工,但該程式(順便說一句,它是建立在臭名昭著的 MS Access 之上的——這對於銀行來說很常見,因為銀行通常不想花錢為安全團隊開發軟體)是一堆必要的部分:有一個資料庫、自動建立Excel 和Word 檔案、Outlook 連接,甚至透過AdAdobe Acrobat Reader 對PDF 檔案進行文字辨識。由於這項工作,我獲得了很好的晉升,但由於我是安全團隊的一員,我意識到進一步晉升的選擇並不多。

“我不只是學習——我吞噬了這些資訊”

從2019年中開始,我陷入了疲勞和無聊的深淵,但女朋友提醒我一直想做的事情,並告訴我「試試看」。為什麼不?- 我想。當時,考慮到我的薪水、工作時間以及與管理層的良好關係,我可以在晚上在家寫代碼,而不是坐在辦公室直到晚上。於是這個想法再次激發了我的慾望,我決定嘗試看看。因為除了「被詛咒的」VBA 之外我已經忘記了一切(編者註:VBA 是 Microsoft Office 產品線中內建的 Visual Basic 程式語言的稍微簡化的實作)),我先觀看 YouTube 影片並閱讀 Herbert Schildt 的書《C++ for Beginners》。順便說一句,這是一本很棒的書。我把它推薦給了每一個人。在某個時候,銀行宣布了一個 Java 再培訓計劃,我成功地進入了該計劃。我在兩個多月的時間裡完成了培訓。說實話,它幾乎沒有為我帶來任何好處,因為兩個月每週兩次的時間不足以正確涵蓋所有材料。教得不錯,但題目傳得太快,幾乎沒有練習。如果我不承認這個訓練計畫主要針對已經擔任工程師或銀行 IT 部門的人員,那麼我就不是完全誠實的。由於我的零經驗,這對我來說非常困難。「再培訓」結束後,銀行進行了內部面試,期間我終於發現自己什麼都不會。如果銀行不願意從自己的團隊中僱用某人,則意味著該人幾乎一無所知。這是 2019 年 12 月。有些訪談結束後,我被告知有這個 Java 課程的存在。所以,當我最終接受了我不會休息的事實時,我註冊並開始了我的學習。我訓練的活躍階段是2020年2月至5月。正是在3月我們被隔離的時候,我才徹底扭轉了局面。因為我是遠距工作,所以不需要去辦公室。這個過程是這樣安排的,讓我可以延遲一兩天完成我的工作。我不是只學習──我日以繼夜地坐著,如飢似渴地吸收這些資訊。早上8點起床開始學習對我來說很正常。然後下午 4 點以後,當我的大腦已經燒焦的時候,我轉向遠端工作。至於動力,你知道,我只是在內心深處明白這就是我的未來。當然,我精力旺盛的女朋友的支持在很多方面幫助我開始了這條艱難的道路。所以我學習了大約2個月。我非常疲憊,但總的來說,我的大腦並沒有過度緊張。例如,如果您想烘烤一些東西,您可能會將烤箱預熱到 325 度,然後根據需要提高溫度。你不太可能立即將烤箱設定為 450 度,因為那樣你就會燒掉你所做的任何東西。同樣的原則也適用於此。我在 2-3 個月內完成了任務,之後我開始研究雇主想要的所有好東西(Spring、Hibernate、Tomcat 等)。順便看了《專業人士的Spring 5》這本書。那裡有海量的資訊:當然,有時很難掌握,但總的來說,一切都是可以消化的。即使是 YouTube 也無法比這本書更好地向我解釋 Spring。我還建議您查看 Spring 框架的網站。它有教程,非常有用。對我來說最難學習的主題是緩衝區、文件處理和按位操作,但它們在很少的地方使用,並且在 99% 的地方它們是進步所必需的。我的困難更多的是無所不在的遞歸。我只是很困惑,但這就是學習的意義:你做錯了事,然後你會發現如何做正確的事。你明白了原因和原因,然後你就不再犯這些錯誤。畢竟,你永遠無法透過無所事事來學習。

“你不需要成為天才才能在 IT 行業中佔據一席之地”

我從28級開始找工作,但我很快就意識到我的知識還不夠。然後我休息了一下,五月份,當我完成任務並閱讀了有關框架的內容後,我再次開始找工作。我認為在我被錄用之前至少進行了 10 次面試。現在IT業的人才很多,但招募瓶頸卻越來越難突破。我想說十分之三的人通常會在 1-2 個月內就業。其餘的需要更長的時間,有時甚至更長。但這並不意味著您應該放棄此資源。當我第四次面試失敗時,他們告訴我,“繼續參加面試。你最終會記住一切,你將能夠通過面試並找到工作。你會在工作中很快學到東西。” 大多數情況下,你在面試時會被問到同樣的問題。也就是說,面試官可能開始談論演算法時也存在極少數例外。例如,我試圖在一家為政府實施社會計畫的公司找到一份工作。那天,有人問我一個關於演算法的問題。我回答得很糟糕,但仍然提出了我自己的問題:“我真的會被允許使用演算法嗎?” 對此,他們表示:“當然不是。我們為此有一個由中高級開發人員組成的特殊團隊。” 我的興趣被激起了,所以我要求進一步澄清他們為什麼要費心去問。事實證明,這只是管理層設定的要求之一:你不能使用演算法,但在被雇用之前你必須了解它們。在面試過程中,展示 Spring、Hibernate 和 SQL 的知識尤其重要。這是一小部分技術,但如果你缺乏足夠的理解,你就會開始胡言亂語。因此,如果你不知道自己在說什麼,更好的答案是這樣的:“我不知道你問我的問題的確切答案,但我確實知道關於 Spring 的這個和這個”,等等。如果你這樣做,那麼你的知識,無論多麼少,都會被注意到。我在一家製作瀏覽器遊戲的遊戲工作室找到了一份工作(為了避免給管理帶來麻煩,我不會提及公司的名稱)。我開發遊戲的後端部分。換句話說,我使用資料庫、編寫瀏覽器插件、添加功能以及連接後端和前端。我也處理演算法。我使用 Spring(一切都是標準的:標記、bean、解析器)。我使用 Tomcat、PostgreSQL 和 Hibernate。一般來說,我會執行分配的任務,盡我最大的能力維護和改進專案。目前,我是一名初級開發人員。剛入職的前兩個月,我什麼都不懂。隨著最後期限的臨近,我自己決定每天工作 12 到 14 個小時,並且取得了成果。確實,我有一位可靠的導師(一位擁有十五年經驗的很酷的高級開發人員)。他說,“你自己想辦法。看看它是如何運作的。” 也就是說,他不會介入提供幫助,即使他提供幫助,也很少。你知道嗎?強迫程式設計師獨立思考是正確的。如果我從一開始就沒有透過幾天的辛苦工作來付出代價,而是在所有事情上都尋求幫助,那麼我就不會走上職業成長的道路。現在我可以自信地說我正在執行初級開發人員級別的任務,最近我發現我被指派的任務要高出一個數量級。現在我只關心自我發展和自我提升。程式設計是一種驅動力。這是新的挑戰。一開始不用擔心工資。六個月後,就會變得像樣,一年後,一般都會很優秀。如果我們談論的是前景,那麼你可以坐在一個地方賺可觀的錢,感覺它不適合你,害怕改變任何事情,或者你可以冒險。我很高興我沒有害怕並開始為我的未來而努力。畢竟,我本來可以繼續以前的辦公室苦差事。最終,在我看來,每個人都可以在 IT 領域佔有一席之地。你不需要是天才、科學家或偉大的數學家。如果你有毅力,渴望前沿,那麼一切皆有可能。

給初學者開發者的提示:

  1. 觀看影片並閱讀。如果您在 YouTube 上觀看大量劇集以了解某些內容,請嘗試選擇一位內容創作者,因為每個內容創作者傳達的想法和訊息都不同。如果您從一位 YouTuber 切換到另一位 YouTuber,您可能會對同一主題感到困惑。
  2. 不要試圖一次做完所有事情。尤其是當您不遠端工作並且需要專注於工作時。每天學習幾個小時。如果週末有空閒時間,不要過度勞累。你已經學習了一整週了,你最好休息一下。
  3. 嘗試在履歷中描述具體技能。例如,不要在簡歷上寫“我懂Java”。這太模糊了。如果你被問到一些你根本不知道的問題,面試問題可能會難倒你。你了解Java核心嗎?太棒了——寫“Core Java”,然後寫一些你非常熟悉的東西。