一、學以致用

基於實踐的Java學習

有人一心愛 CodeGym,也有人一心討厭它。但即使是 CodeGym 最惡毒的批評者也會欣然同意它擁有數量驚人的任務。而之所以有這麼多,是因為所有的 CodeGym 培訓都是以實踐為基礎的

編程是一種技能。沒有人說,“我知道如何編程”。每個程序員都說,“我會編程”。這是一項動手能力,就像游泳或下棋一樣。而你只能通過不斷的練習來培養技能。

這就是為什麼整個 CodeGym 課程是一系列難度越來越大的任務。你從非常簡單、原始的任務開始,然後以最困難、最有趣的任務結束。每個級別的難度都會增加一點。這正是引導您實現成為程序員的目標的途徑。


2.任務類型

CodeGym 上有一大堆不同類型的任務等著您。讓我們列出主要的:

編寫程序的任務

這些是課程中最重要的任務。它們的難度級別差異很大:從最簡單的任務到您需要考慮很多的任務。

這些任務的目標是編寫滿足指定條件和要求的程序。大多數任務都屬於這一類。為了方便 CodeGym 學生,我們根據難度級別標記這些任務:EASYMEDIUMHARDEPIC

EPIC 任務通常基於您尚未解鎖的課程中的未來學習材料。他們很受 CodeGym 學生的歡迎,他們覺得這門課程對他們來說太簡單了。其他人可以簡單地跳過這些任務​​,等他們已經熟悉了相關理論後再回來做。

項目

普通任務的缺點是它們很小。正如他們所說,完成並被遺忘。因此,很難使它們變得非常有趣。但是大型程序很難測試:實現它的方法太多了。

這就是 CodeGym 引入項目任務的原因— 大型任務分為 5-35 個普通子任務。您按順序執行所有子任務,最終得到一個大型程序。

20級之後的每一級結束時,都有一個大項目任務,分為二十個子任務。還有另外6個遊戲任務,​​也是項目。並且有一個項目任務被接受到在線實習。整個課程總共有27個項目任務。

測驗

很長一段時間,CodeGym 沒有測試或小測驗。CodeGym 的創建者認為,通過測試會在人們中產生“知識錯覺”。人們並不真正知道如何編程,但他們完全相信否則,因為他們通過了測試。這樣的人停止學習,因為“他們已經知道一切”。

隨後,添加了測驗,讓 CodeGym 學生能夠輕鬆找出他們學習中的差距。對於程序員來說,了解他們在職業中日常工作的細微差別是很有用的。


3.任務狀態

CodeGym 上的每個任務都有一個特殊的狀態。當您解決任務時,狀態會發生變化。

每個 CodeGym 任務都與一節課相關聯。最初,您將無法訪問任何任務,這意味著您將無法解決它們。

當您打開下一課時,該課中的所有任務都可以解決,即它們的狀態變為“可用”。

如果您至少提交過一次驗證任務,則其狀態會從“可用”變為“進行中”。

最後,當您成功滿足所有要求並且驗證器接受您的提交時,任務的狀態將變為“已完成”。

訂閱 Premium Mentor 的用戶還有 3 天時間嘗試為該任務編寫其他解決方案。在這個額外的時間窗口到期後,任務將進入“已關閉”狀態,並且此狀態將不再改變。


四、要求

在 CodeGym 的早期,當您驗證每項任務時,您會得到一個簡單的結果:是或否。該程序要么通過了所有測試,要么沒有通過。超級簡單,但不是超級有用。

隨著人們的學習,了解他們做錯了什麼以及如何開始做對是非常重要的。因此,如果服務器不接受您的解決方案,那麼您會問,它有什麼問題嗎?

要得到這個問題的答案,您需要有人深入研究您的解決方案、分析它並告訴您它有什麼問題。這將花費很長時間並且成本很高。即時任務驗證的美妙之處在於,您可以在凌晨 2 點坐下來學習,一切都會像其他任何時間一樣工作。

這就是我們在 CodeGym 上重寫所有任務的原因。現在每個任務不僅有任務條件,還有 5-10 個充實條件的要求列表。最重要的是,每個需求都被單獨驗證。

這意味著當您今天提交一個任務進行驗證時,您將得到一個擴展的響應:在每個任務要求旁邊,您將看到一個特殊的圖標,指示您的程序是否滿足此要求。例子:

要求

當您處理需要編寫多個類或方法的任務時,這種方法極大地簡化了生活。您將始終能夠看到您正確編寫了哪些方法或類,哪些沒有。


五、建議

是否有可能以某種方式使任務變得更好?如果在每次檢查後,您都被告知程序中到底出了什麼問題,並得到有關如何修復它的提示,那不是很好嗎?是的,那會很酷!好吧,你猜怎麼著?我們在 CodeGym 上就是這麼做的 🙂

我們通過檢查每個任務要求來發現許多常見錯誤。如果您的程序犯了驗證器知道的錯誤,那麼它會提出建議——提示您如何修復您的解決方案,使其滿足所有要求。

想想看。現在 CodeGym 上大約有 1200 個任務,總共有大約 10,000 個需求。每個要求都有一些相關的建議。有些要求有幾十個。CodeGym 的驗證器已準備好為用戶解決方案提出超過 50,000 條建議。

此外,所有這一切都是在您的解決方案得到驗證時發生的,在大多數情況下,這需要不到一秒鐘的時間。沒有人能做到這一點。這是一個真正的虛擬導師。

建議

6.社區

CodeGym 專注於大量練習,佔整個學習過程的80%以上。我們將學習變成了一項引人入勝的大探索(實際上是一系列探索)。

但每個人都不一樣:有人學得快,有人學得慢。有些人覺得新材料很容易,而另一些人則覺得更難。但我們的工作是讓每個學生都能到達終點。至少這是我們正在努力的目標。

在這個世界上,程序員不僅僅是幾百萬在空閒時間用各種語言編寫代碼並創建初創公司的人。他們形成了一個全球網絡,不斷與他人分享他們的知識,隨時準備回答問題並幫助您理解複雜的主題。

世界上最大的開發人員社區——StackOverflow 網站——誕生於程序員相互學習的需要。它的概念很簡單:你提出一個問題,世界上任何程序員都可以回答。方便吧?🙂

在 CodeGym,我們相信學生之間的知識交流非常有價值。當程序員幫助別人時,他們自己也會成長。沒有比向別人解釋某件事更好的方法來讓自己理解它了。這就是為什麼我們在我們的網站上創建了專門的部分,旨在讓我們所有的學生有機會分享他們的知識並幫助彼此學習。

那麼如果你在最新的任務上卡住了怎麼辦?在 Internet 上搜索現成的解決方案不是一個好主意。當然,如果您只是複制別人的解決方案或使用我們的正確解決方案,您將獲得任務的榮譽。但是你不會縮小你的知識差距,這肯定會在未來回來咬你的屁股。


7.關於任務的問題

要求建議虛擬導師非常酷。但是,如果驗證器仍然不接受您的解決方案並且您不確定問題出在哪裡怎麼辦?

即使在這種情況下,還是有退路的。認識幫助部分。在網站的這一部分,CodeGym 學生可以提出有關任務的問題,探索彼此的解決方案,還可以提供建議和提示。不允許發布完整的解決方案!

這聽起來非常簡單和基本,但實際上非常複雜。

首先,每個問題都可以有一個關聯的任務。這意味著如果您對有關特定任務的問題感興趣,則沒有必要費力地回答所有問題。您始終可以使用過濾器輕鬆地僅查看與您感興趣的任務相關的問題。只需在搜索欄中輸入任務名稱:

關於任務的問題

其次,如果您在解決任務時單擊“社區幫助”按鈕,您將立即被帶到“幫助”部分,在那裡您只會看到有關您正在處理的任務的問題。如果您的解決方案未能通過任務驗證,那麼問題將以一種有用的方式進行排序:最重要的問題將與導致解決方案失敗的未滿足要求有關。

幫助按鈕

第三,IntelliJ IDEA插件提供了類似的功能。您可以單擊“幫助”按鈕或按組合鍵 Ctrl+Alt+W,這將立即在您的瀏覽器中打開“幫助”部分。當然,過濾器將僅顯示有關您在IntelliJ IDEA中解決的任務的問題。

IntelliJ IDEA 幫助

8. 創建一個問題

如果您在“幫助”部分找不到對您的錯誤的良好分析,那麼您可以隨時創建自己的問題。這很容易做到——您只需單擊“提問”按鈕並填寫必填字段:

創建一個問題

與許多其他服務(例如 StackOverflow、Code Ranch 等)不同,CodeGym 不需要您將所有重要信息塞入問題的標題中。隨心所欲地寫下你的問題。

順便說一句,您不需要從WebIDEIntelliJ IDEA複製代碼並將其添加到您的問題中。當您創建有關任務的問題時,您的解決方案的代碼以及各種任務要求的狀態會自動添加到其中,即您的解決方案當前滿足哪些要求,不滿足哪些要求。

創建問題 2

這意味著其他 CodeGym 學生可以立即看到有關提問者解決方案的所有相關信息,從而更容易提供好的建議。


9.解法代碼

在許多站點上,當創建有關代碼的問題時,您需要將帶有程序文件的存檔附加到問題,或者將所有這些文件添加到問題本身的文本中。結果是一團糟,人們要么不願意,要么不能深究。

快速有效地提出問題是一種完整的藝術形式。在常規網站上,您將不得不花半個小時來闡述您的問題,或者接受沒有人會回答您的事實。一個關於任務的好問題絕對必須包含以下信息:

  • 鏈接到提問者正在解決的任務
  • 任務條件讓其他人不需要去任何地方追捕他們
  • 解決方案代碼——這可能包括許多文件
  • 每個任務要求的狀態,即當前有效的和無效的。
  • 問題的文本:這通常很清楚——我的解決方案不起作用,我不確定為什麼。

CodeGym 使用與WebIDE小部件非常相似的特殊小部件顯示此信息。畢竟,它已經設計用於顯示所有這些信息。好吧,也許問題本身除外。

解決方案代碼

事實上,我們編寫了一個專門的小部件,只是為了方便您研究其他用戶的解決方案。並讓其他用戶輕鬆愉快地檢查您提出的問題的解決方案。