這是對我們全球 Java 社區的成功故事的翻譯。Danil 在俄語版課程中學習了 Java,您可以在 CodeGym 上用英語學習該課程。願它成為您進一步學習的靈感,也許有一天您會想與我們分享您自己的故事 :) 好吧,我想用一些鼓舞人心且易於理解的東西來開始我的故事……但這又一次歸結為每個人都在談論但你從未親身感受到的典型年齡刻板印象。你好,同事們。我叫丹尼爾。我今年 35 歲,是一名程序員。我職業生涯的背景故事與我國乃至全世界成千上萬的人的職業生涯相似。我長大了,參加了派對,並沒有想太多。有些東西會引起我的興趣。我會讀一些東西。我以為我明白了什麼。然後我在某個地方註冊學習。因為我沒有被其他地方錄取。現在想想,我想成為嗎?那時我真的明白我想要什麼了嗎?我有真正的夢想嗎?不只是賺一大筆錢,而是我真正想做的事?!不,當然不。在高中,我的學習方法是隨意的。自從我在 6 年級被介紹到一門計算機科學課後,我就一直對計算機情有獨鍾……甚至對編程感興趣,想深入了解事物的工作原理。但是現在,這麼多年過去了,我當時並沒有深入挖掘的慾望,這似乎很奇怪。為了理解、調查和感受......早在 1995 年,我們就在 QBasic 中編程,並夢想在 VGA 模式下發布“我們自己的 Windows 版本”(我們甚至沒有親眼見過):) ,或者我們夢想創造一款電腦遊戲,例如命令與征服或當時流行的類似任務的遊戲,但以比爾·蓋茨為主角。噓!我們研究了 Pascal,但那裡太複雜了…… 我們聽說過 C,但無法運行單個程序。我們在第一個 x386s 上學習和玩耍,使用 MS DOS 的黑色窗口,同時舉著裝滿軟盤的盒子,並拿 TB 硬盤開玩笑。有這一切,但我沒有慾望或理解我可以更深入地研究這一切。說實話,後來的幾年裡,也有編程給我發洩的機會,甚至賺到一點錢。在我的一生中,我為我的論文編寫了 1 個程序,為課程作業編寫了一些程序,儘管我從未將這個領域作為我研究的重點 :) 所有這一切都沒有沉浸,僅憑純粹的熱情。當然,我現在不想使用該代碼:DI 註冊了一個土木工程項目並且在學習如何構建東西方面做得很好,但是,幸運的是,我沒有收到工作分配。我在找工作時相當被動。結果,我在一家維護區域供熱網的公司找到了一份機械師的工作。然後,再次感謝熟人,我找到了一份家庭服務工作,在接下來的 12 年裡,我一直很髒。現在我是一名手機維修技師!當然,這不是一件壞事。它似乎提供了不錯的收入以及增長空間……但是有些地方不對勁。我開始覺得到處都是業餘愛好者。有很多工作和常客,但有些地方不對勁。我有一種感覺,我並不完全理解這一切是如何運作的。同時,我也明白,支付5年的教育費也不會有任何結果。五六年後,我已經厭倦了修手機。如果我沒有 不換職業,至少想“自己出門”。但是,當然,這些被動的願望注定不會實現。幾年過去了,我 33 歲了。比我小 10 歲的人可能會說這幾乎是老年,但比我大 10 歲的人肯定不同意,就像我不同意 :) 然而,手機維修的無聊和單調促使我參與其中各種創意活動。現在我正在想像一份設計工作,或者最壞的情況是網站開發、3D 建模或視頻編輯!幸運的是,我的這種熱情確實改變了我的生活。幾年來,我參加了一些兼職,並在創意比賽中贏得了一些重要獎項。然後我被聘為一個不同的角色,在當地一家製作公司擔任設計師。突然間,改變之風吹進了我的生活,就像著名的蝎子樂隊的歌曲一樣。很長一段時間以來第一次,通過換工作,我突然覺得如果我願意,我可以改變任何事情。我意識到,當我的生活沒有被拆開某人的電話或與朋友的朋友的朋友的朋友的朋友談論如何使他們的手機正常工作,或毫無意義地玩坦克世界,或坐在充滿恐懼的工作中時一些粗心的舉動會迫使我花費本已微薄的薪水來更換損壞的零件,我意識到我可以改變。改變真正做我想做的事。當我開始做設計師時,我發現我不想做設計工作。當然,繪圖、設計、網站管理、建模和視頻編輯都是有趣的職業。 當我看到“Java 課程”的廣告和他們承諾的培訓完成後的薪水時,我意識到那是什麼:) 是的,當然!我一生夢想成為一名程序員!比我高三四倍的工資,而且是需要思考的工作!一份除了你的大腦之外什麼都不會束縛你的工作!那是我一直夢想的,但天啊,有太多我不明白的地方! 我問我老婆,你說,如果我成為程序員呢?他們賺 100-20 萬。“當然,”她說,“合二為一。然後我們就搬到巴西去。”但這不是一個月就能完成的事情。需要一年的時間!而且我晚上會很忙!” “好吧,你能做什麼?” 事情就這樣開始了,但是…… 不知為何,銀行沒有批准貸款3萬來培養一個新近出現在職場上的設計師。而且,事實證明,沒有白費:) 正如老烏龜對師傅大師所說的那樣,沒有意外。我想快速加入程序員行列的願望可能會不幸地發生。事實上,在教育中,重要的不是你付出了多少,而是你獲得的知識。儘管我沒有報名昂貴的課程,但我並沒有放棄成為一名程序員的願望。情況有所幫助。平靜、安撫的環境使反思和放鬆成為可能。工資!在接下來的一個月裡,我搜索了整個 Internet,尋找成為 Java 程序員的最佳(當然是免費的!)途徑。為什麼選擇Java?因為Java程序員的薪水最高!這就是我的結局代碼健身房. 當時它的設計很舊,讓人想起曾經深受喜愛的 Futurama 卡通片。我立即被 CodeGym 的 10 個免費關卡和大膽多彩的“技術人員”氛圍所吸引。我懷著極大的熱情投入到學習中。我想在 10 級之後,如果我同時使用 YouTube 上的免費課程、各種 GeekBrains 網絡研討會和 SoloLearn 應用程序學習,我可能會非常熟練,我的職業生涯肯定會起飛!我記得,我在一周或更短的時間內完成了前 10 個級別。它是如此簡單、有趣、困難,同時又令人著迷——我無法用語言表達。當然,我也有一些很深的誤解。想像一下,在將近 20 年的時間裡,您都非常了解程序是一個從上到下執行的文件,這是一種怎樣的感覺…… 然後你會遇到這樣一個事實,一個程序根本不是一個文件,而是一個完整的項目,一個項目有很多文件,當你點擊“運行”按鈕時(在 IntelliJ IDEA 中,這在當時是陌生的時間),您在屏幕上看到的文件不一定是正在運行的文件……這令人痛苦地無法理解。事實上,在網站上的舊討論層的某個地方,你仍然可以找到我對創作者短視的憤怒和辱罵的評論,他們認為他們的用戶可能是全新的並且對這些新事物一無所知-奇特的 IDE =) 所以我很快就完成了 10 個級別,一口氣完成。太好了,我幾乎立即購買了 1 個月的延期。這對我來說是一次重大的購買。一開始一切都很順利,但隨後的關卡就困難多了。更重要的是,我意識到直到 Level 10 的任務都比較簡單,我對“現代編程”的理解仍然不深。一個月過去了,但我並沒有取得明顯的進步。我可能接近 20 級或類似水平。但是每天我都覺得我沒有削減它。我投資了錢,但我無法證明它是合理的。在我的弱點的重壓下,我放棄了一兩個月的學習。我只是偶爾觀看有關該主題的任何有趣視頻,而且它們缺乏細節。2017年新年臨近。有了它,一份送給所有 CodeGym 學生的大禮 — 比正常價格低 50% 的巨大折扣。自我折磨平息了,夢想繼續存在。我支付了訂閱費。這不是天文數字,但它是實質性的,必須證明其合理性。元旦假期剛過,我就重新投入工作。我記得一切都很順利,直到我遇到了一個看似簡單的任務,但對於我這樣的背景的初學者來說卻非常困難。我相信它被稱為“餐廳”。它不會屈服於洗滌或擦洗。它不會屈服於長時間的學習或上下跳躍。類和方法在我的腦海中浮現,彼此糾纏在一起,我當然分不清彼此。我可能與它搏鬥了一個星期。舊日的恐懼已經在我的腦海中浮現,只有我已經投入的 6,000 盧布才阻止我放棄我已經開始的遊戲......然後我的家庭發生了一場巨大的悲劇......巨大而且,一如既往,出乎意料.. . 整整一個星期,我無法專心做任何事情。我什麼都不能做,什麼也不能想,不能活著……我只是在宇宙的某個地方停下來,然後飛向我們都飛翔的地方……我很高興,親愛的讀者,你能走到這一步。因為這是我故事中最重要的部分。這就是為什麼我現在可以說我活著而不是存在的主要原因。儘管很悲傷,但每一個結束都是一個開始。這是我的開始。我真正的開始。經過一周的麻木和冷漠,我的憂鬱被活下去的渴望所取代。一個念頭進入了我的腦海。每個父母都希望自己的孩子能活下去。讓孩子們在力所能及的情況下生活。這樣做,我們的父母就活在我們身上了……當我回到“餐廳”任務時,我突然感到非常輕鬆。使用實例化類和實現接口的類的類突然看起來就像解開打結的繩索一樣簡單。你拉一個,看看有什麼在動——它就在那裡!問題是由於一個錯字!:) 我建議大家解開這個“滋補”的結。後來,這個過程變得越來越難,越來越難。但它不再像世界末日或監禁。每個謎題都有解決方案。如果長時間解決不了,我可以把它擱置一旁,然後重新振作起來。然後它就承受不住我了!當然,我與驗證者進行了鬥爭,我的腦袋因這一切的不可理解而沸騰,但一切都開始適應某種結構。好像一切都變了:堅固的花崗岩變成了砂岩。任何一塊砂岩都會被磨損——這只是時間問題。又過了四五個月。現在我感覺很堅強。我已經完成了對我的 Java Core 知識的大量測試、腦筋急轉彎和大量關於各種編程主題的視頻(現在有互聯網真是太好了 - 你可以在網上找到一切!)我已經閱讀了成功的故事,有些令人鼓舞,有些則不那麼令人鼓舞,但它們都很有趣,並拉開了神秘 IT 領域的帷幕。也許我現在也能成功?在某個時候,我真的被所有這些故事弄得頭暈目眩。聽取了眾多建議,我決定去面試。幾乎每一個成功的故事都建議在找到你的命運之前至少經歷一打。我看了一個知名的求職網站。我不認為在我的伊熱夫斯克這個小城市對程序員有很高的需求。但是在看到一個相當有趣的初級開發人員職位列表後,我決定冒險一試。我在簡歷中註明了適度的薪水要求併申請了該職位。週一(如果我沒記錯的話,我周五提交了簡歷),招聘人員開始給我打電話,這讓我感到多麼驚訝!什麼' 更重要的是,他們甚至不是我投遞簡歷的那家公司的。當然,我假設有人可能會發現我的簡歷並認為它很有趣,但我已經做好了每月最多參加一次面試的心理準備。突如其來的關注把我嚇得趕緊把簡歷藏了起來。但我很好奇,所以我決定參加我設法安排的兩次面試。對於第一次面試,我在技術上完全沒有準備。成功案例說面試是分階段的:第一階段通常只是了解對方,沒有測試。儘管如此,我並沒有期待成功,並且最重要的是讓我的思想做好準備,不要因為拒絕或者可能是困惑的“以你的經驗,你怎麼敢?!”而感到沮喪。我從未去過任何 IT 公司的辦公室。我只看到過谷歌、Facebook 等擁有的“童話建築”的照片,當然,我沒想到會看到這樣的東西。在我偏遠的樹林裡,似乎有些受壓迫的戴眼鏡的傢伙坐在木椅上,埋在帶有防眩光屏幕保護膜的 CRT 顯示器後面。但不是。當然,我在那裡沒有看到谷歌的輝煌和魅力,但辦公室裡的桌上足球確實給我留下了深刻的印象。從某種意義上說,它挑戰了我之前的整個工作生活,工作時間的長短直接關係到我能拿到多少錢。與 HR 的快速面試,然後是用顫抖的手完成的問卷——我還沒有準備好接受測試。然後與部門負責人進行了簡短的交談,突然他們給了我一份工作。哦是的!儘管我沒有回答所有的問題,但我對 Java 的整體知識還是不錯的,所以我很快就得到了一份工作。提供的薪水比我在簡歷中要求的要多一點。此外,在試用期之後,它將會上升。然後加薪會累積起來,導致工資增長更快!這個誘人的想法讓我有點瘋狂。但這也讓我有了底氣。我沒有為下一次面試做任何刻意的準備。但成功的故事也告訴我們,我們不能馬上接受第一份工作機會。這有一些道理。所以,當然,我沒有取消與第二位招聘人員的約會。我帶著一份工作機會去了第二次面試。但我為自己在這次採訪中的自信感到有些慚愧。最簡單的問題,現在對我來說這似乎完全是微不足道的,完全混淆了我的頭腦。我被壓垮了,筋疲力盡,而且(天哪!)在與潛在客戶交談時甚至混淆了 HTML 和 HTTP!在這樣的崩潰和燃燒之後,我不再確定自己是否已準備好成為一名程序員。我去參加第一次面試的公司的人力資源部堅持要求答复,並以書面形式向我發送了錄取通知書。他們甚至願意等我結束一個計劃已久的假期回來,但我仍然猶豫不決。畢竟,我仍然必須通知我的新前任老闆他的新任前任設計師要離開他,這對我和他來說都是完全出乎意料的。但我還是不能讓自己拒絕這個提議。我接受了,並與我的新前任老闆談過,一切都很順利。這就是我成為一名初級測試自動化工程師的方式。或許有人會說,測試自動化工程師根本不是程序員,他們的工作一定很枯燥。但我必須完全不同意這一點。我自己曾經認為測試人員是不具備成為“成熟”程序員所需條件的程序員。我希望我的同事們看到這些文字並認出我時,不要打我!順便問一下大家好!事實證明完全不同。當我邁出這門學科的第一步並開始真正開發部分測試框架時,我找到了靈感。我覺得自己是一個不僅喜歡寫程序,而且知道其中可能隱藏關鍵錯誤的程序員。我了解 CodeGym 的驗證器是如何工作的,以及為什麼它們看起來並不總是合乎邏輯。我開始意識到編程的許多技術細微差別,與作為初級軟件開發人員立即進入 IT 相比,我更順利地投入了這個新世界。你問我現在能不能成為一個“成熟”的程序員?簡單的!但現在我有了更多的選擇:我不僅可以根據薪水選擇工作,還可以根據團隊、情況和項目來選擇工作。除了那一刻,一個完全不同的就業世界在我周圍展開。就業需要我。它想請我吃飯,招待我,讓我放鬆,同時給我發薪水。最初的六個月就像在夢中一樣。我簡直不敢相信,幾十年來,當我停滯不前地從事原來的工作時,這一切卻得到了發展和繁榮。當然,它在等我!對於任何努力到達這裡的人 :) 看到我的數十名同事出於某種原因沒有做到這一點也很令人驚訝。沒有註意到在IT世界享受的所有這些財富,這種迷人的生活就在他們面前。就好像這一切都如此司空見慣,無處不在,以至於沒有什麼值得注意的。在這個領域,你真的生活,真的工作,真的賺錢。至於你的同事,每個人都會有獨特的個性——他們將是知識分子和熱情的人。他們中的許多人都很有創意,而且絕對都是好人!我很難在這一小段中表達那種宇宙的感覺。我只是真的希望我的讀者會相信,在這個新領域,一切對我來說是如何變得真實和繁榮的。我自己來的,故意的。我在一年內掌握了所有相關技術。我再一次重新評估了我對學習一般編程,尤其是 Java 的態度。招聘人員聯繫了數十次,這在以前從未發生過!對我來說,生活開始變得令人難以置信的快樂——我從工作中獲得了真正的快樂,然後回到家,繼續愉快地學習新事物。此時,我已經34歲了。在前幾年,我有時會清楚地感覺到自己的大腦正在萎縮。我的記憶力正在下滑。我會忘詞。現在我的思想變得嚴謹和不屈不撓。但這太神奇了!當我開始研究像編程這樣廣泛的話題時,我的大腦先是收縮,好像被壓縮了,但後來似乎逐漸膨脹了。思考變得簡單快捷。近年來,如此宏大的想法湧入我的腦海,我不得不懷疑它們是我自己想出來的還是不知不覺地從某個地方撿到的。在我的新工作場所,我立即在一個空地上獲得了五十個同事。我承認,起初我很恐慌,因為我試圖記住每個人的角色和名字。但是我的大腦已經習慣了快速學習,很快我就知道了每個人的名字和各種其他細節,就像荊棘一樣,扎進了我對每個同事的心智模型(是的,OOP 很容易轉移到現實生活中,副反之亦然)。直到今天,這一切都讓我驚嘆不已。憑藉我發現難以理解的輕鬆,我編寫了一個大型的完整桌面應用程序(我以前從未完成過一個大型項目),為此我獲得了一筆可觀的獎金。我突然開始理解設計模式,甚至光看別人的代碼就能理解別人的程序。所有那些神秘而神奇的詞——Spring、JDBC、Hibernate、Git,SQL 和其他數百種語言——獲得了意義並變得清晰。任何編程語言,不僅僅是Java,也不僅僅是語法相似的語言,一下子變得清晰起來。就好像我無法閱讀,然後突然間我可以了。我感覺到自己沉浸在新世界中有多深,彷彿我已經紮根於周圍的每一個主題。由於我的工作、新知識和我自己的努力,我開始以不同的方式看待一切。我發現如果你付出非常具體和合乎邏輯的努力,實現你的計劃並實現你想要的任何事情是多麼容易。對我來說,這是我快速轉型中最令人驚奇的部分。不是拿到了高薪,也不是實現了兒時的夢想。最令人驚奇的是,這個抱負給了我巨大的力量和信心,讓我的生活在各個方面都變得更好。有時我會遇到我的老同事,他們也是很聰明的人。我說,你看,我努力六個月,比你十年得到的還多!來加入我吧!他們說,“不,你在說什麼?我沒那麼聰明。我學不會這一切。” 但我相信人,因為我相信自己,並證明這是可以做到的。我是一個完全普通的人。我做到了,其他普通人甚麼都能做到!也就是說,說服別人總是比說服別人更難 十年我得到的比你得到的還多!來加入我吧!他們說,“不,你在說什麼?我沒那麼聰明。我學不會這一切。” 但我相信人,因為我相信自己,並證明這是可以做到的。我是一個完全普通的人。我做到了,其他普通人甚麼都能做到!也就是說,說服別人總是比說服別人更難 十年我得到的比你得到的還多!來加入我吧!他們說,“不,你在說什麼?我沒那麼聰明。我學不會這一切。” 但我相信人,因為我相信自己,並證明這是可以做到的。我是一個完全普通的人。我做到了,其他普通人甚麼都能做到!也就是說,說服別人總是比說服別人更難自己,自己行動。但我相信你,親愛的讀者。你和我一樣,也許比我更好。我可以,如果你願意,你也可以!在這一點上,我希望沒有人因我冗長的介紹而睡著或死去。事實上,我只是想分享我的觀察和所有幫助我快速成長的東西,我認為,相當有效。但對我來說,沒有情感的建議似乎與生活脫節,與我個人的困難脫節。所以最後,在這裡我轉向最重要的原則,我相信這些原則將使你的學習盡可能快速和有效(我希望我不要忘記我一直試圖傳遞給我的 Padawans 的任何原則):
- 使用 CodeGym。當然,它有缺點。哪個網站沒有?在 CodeGym 上學習並不像其他迷人課程所承諾的那樣快速和神奇。但是使用 CodeGym,您將獲得最重要的東西,這是其他任何地方都無法獲得的東西:您將學習如何理解代碼。很多代碼。好,否則。回到我學習的時候,課程沒有 Java 8 和所有這些閃亮的功能,如 lambda 表達式和流。但是我1.7學的很好。
- 使用大量資源。不要將自己局限於一個來源。我對 CodeGym 贊不絕口,但這裡的許多主題都不清楚。有時一個人能理解的特定解釋在很大程度上取決於那個人。可能需要讀課文,然後讀一點 Horstmann,讀一點 Eckel,然後燈泡才亮:啊!這就是它的工作原理!或者,也許其中之一對您來說很清楚。順便說一下,在我看來,Horstmann 比 Eckel 好,而 Bloch 簡直無法比擬(原文):)
- 學習 IntelliJ IDEA 組合鍵。在我看來,這絕對是所有 IDE 中最好的。而且我承認我真的很想念 IDE 在其他程序中的快捷方式。做兩件重要的事情:Help -> Keymap reference(打印,對折,裝訂,然後放在你的桌子上)並在你的代碼中更頻繁地使用Ctrl+Alt+L =)我特別喜歡重複這個建議給我的同事們。
- 盡快開始使用 Git。這真是一項必備技能。你越早撞上它並了解它,就越好。我推薦使用 IDEA 的內置插件。我計劃製作一個詳細的視頻教程,介紹如何執行所有這些操作。更重要的是,曾經有一家非常大的公司聯繫過我,他們只是找到了我的 GitHub 個人資料,當時這只是一個使用 CodeGym 解決方案的項目。
- 不要害怕承認你不知道什麼。害怕不想知道。正如我之前所寫的,類、方法、函數、屬性和字段等相對簡單的術語在我的大腦中造成了可怕的混亂,但隨著時間的推移,一切都變得清晰起來。有時您只是需要時間來消化不清楚的事情。
- 不要害怕犯錯誤。一旦你犯了一個錯誤,就改正它,盡量不要重蹈覆轍。唯一真正的錯誤是無法修復的事情。
- 走。您可能認為您是在浪費時間,但事實並非如此。上下班步行一小時對於吸收新信息非常有效。當然,最好戴上耳塞,沿途聆聽以 IT 為主題的有聲讀物或播客。我無法想像如果我沒有聽過無與倫比的凱利的“意志力本能:自我控制的工作原理,為什麼重要,以及你可以做些什麼來獲得更多”,我能夠如此有目的地學習一些東西麥戈尼格爾在這些散步中。
- 從計算機上多休息一下。就我個人而言,我使用 WorkRave,這是一個讓我離開電腦的程序,每 25 分鐘就有 5 分鐘的休息時間。也許這太頻繁了?但是每個人的健康狀況都是獨一無二的,在某個時候您開始明白自己更看重什麼:多花一分鐘來完成循環,或者背部、手腕和頸部沒有疼痛。順便說一句,非常流行的番茄工作法提高生產力的技術正是基於這個時間。
- 經常鍛煉。對我來說,出去散步後,很高興能坐在我的筆記本電腦前,用半小時學習英語,用兩個小時學習 CodeGym 任務。遇到不懂的地方,我就看視頻,看相關文章,直到明白主題。我特別記得試圖理解泛型(當我第一次遇到泛型問題時,我什至不知道它們叫什麼)。儘管相信我了解它們是什麼以及它們是如何工作的,但一年後我意識到我沒有。總的來說,我不相信所有的細微差別都會被許多自稱理解的人理解。無論如何,這就是我平日里充滿了實現目標的願望的方式。但我發現很難計劃我的周末,不得不不斷地推動自己前進。當然,這段時間我一直在向家人借錢,幾乎沒有和他們相處過,但現在我已經收回了這些費用。我的晚上充滿了家庭時光,我什至有時間寫點東西發佈到 CodeGym =)
- 不要否定自己研究相關難懂技術的樂趣。統一語言?HTML?XML?CSS?路徑?專家?託管?碼頭工人?TCP?CPU如何加數?是的!謝謝你,先生,我可以再吃一個嗎?:)
GO TO FULL VERSION