更好的程序員(第 02 部分):停止做這 5 件事變?yōu)橐幻晒Φ慕灰壮绦騿T
概述
我在本系列文章中經(jīng)常使用?noob(菜鳥)?這個詞來描述 MQL5 編程方面經(jīng)驗較少的人(請不要因此而感到冒犯)。 它令其很容易建立聯(lián)系。 這并不意味著本文僅針對菜鳥。 絕對不是! 這適用于所有人,無論您有多少編程經(jīng)驗,因為您曾為菜鳥的原因是您的編碼習慣和行為 ……,而不是有多少年的編碼經(jīng)驗。

對于那些尚未讀過的人,第一篇文章在此,那么我來繼續(xù)推進這個任務,將菜鳥培養(yǎng)為專業(yè)人士。
01: 不要再認為您比其他人優(yōu)秀
若您已經(jīng)從事編程一段時間,并在自由職業(yè)者板塊、代碼庫或其他方面設法為您自己和您的客戶創(chuàng)建了若干個很棒的 EA 和指標,您會因此而感覺良好。 若您注意到自己的進步,并據(jù)其增強應對巨大挑戰(zhàn)的信心,從而提高更多,而不是滋生傲慢脾氣,那當然最好。 請牢記:
“傲慢之人總認為自己是完美的。 這是無知帶來的主要危害。 它會干擾一個人在生活中的主要任務 — 成為一個更好的人。”
— Leo Tolstoy(列夫·托爾斯泰)
世人很容易感覺自己超級聰明,且在沒有完全理解的情況下評判他人的代碼,或者急于以冒犯性的方式在論壇上回答他人的問題,以此來表明別人是一位多糟糕的程序員,那個剛剛在論壇上提出問題的人編程很爛。 我曾見過多次,人們在論壇上提出問題,然后他們發(fā)布代碼,并講述他們之前嘗試過的方法不起作用。 然后突然一個菜鳥蹦出來指責說這人所采取的方法是極其錯誤的,但并未提供解決方案、或其提供的解決方案(在這種情況下的代碼)還不如該話題發(fā)起者的代碼準確。?我的天??!

與其直接蹦出來指責主題發(fā)起者大錯特錯,甚至之后提供格式不正確的代碼,為什么不一開始先解釋為何會出現(xiàn)問題,然后再詳細解釋需要做什么,以及指出清晰的途徑嗎?
在論壇發(fā)起新主題其實并無樂趣。 我確信任何在論壇上發(fā)起話題的人都已經(jīng)明白他們在某種程度上是錯誤的,這也是為什么他們沒有得到預期的結果。 話題的發(fā)起者很可能是個菜鳥,他們已經(jīng)在該問題上掙扎了幾個小時甚至幾天(我清楚那是什么感覺)。
即使直接蹦出來,并拋出一段未加解釋或不清楚的代碼,從長遠來看,也無法解決發(fā)起者的問題。 這就像給需要手術的人服用止痛藥一樣。 這樣做的后果,終將把菜鳥養(yǎng)成我在本系列第一篇文章中首次講述的最壞習慣—?復制和粘貼?— 讓他們的思維像“所以它在這里以這種方式工作,我有問題就在論壇上發(fā)布代碼,然后我就會得到想要的代碼來替換不起作用的代碼......這很酷呀!”
始終確保以清晰、詳細、友好的方式解釋解決方案,因為大多數(shù)都是初學者。 還要記住,有很多菜鳥未來會偶然發(fā)現(xiàn)同樣的問題,故他們可能需要從該主題中尋找解決方案。?
除了那個例子,認為我們比其他人更好,會導致論壇中的錯誤答案,以及代碼庫上的虛假評價。 僅僅因為您認為代碼沒有像您想象的那樣復雜、或不符合您喜歡和熟悉的方式,從而認為您比該特定系統(tǒng)的作者更好,由于下意識拒絕深入理解如何以及為什么發(fā)起者如此編寫代碼,就會因此而導致無知。
02: 避免固化思維?
不要再認為您不可能在某個特定領域變?yōu)閺娬摺?/p>
"瘋狂就是一遍又一遍地做同樣的事情,并期待不同的結果。"
—Albert Einstein(艾爾伯特·愛因斯坦)
不要拘泥于制作相同類型的智能交易系統(tǒng)、指標、腳本或其他任何東西。 這會破壞您的創(chuàng)造力,并一直停留在同一個地方。 只因為太復雜或太難、或是觸及自身限制,就認為您并非天生擅長某個特定的編程領域。 要知道您的大腦是靈活的。 它可針對新的刺激來適應和改變。 您越是挑戰(zhàn)它,您就會在某個特定主題上變得越加強悍。 您可以變得更加擅長:
數(shù)學
復雜的智能交易系統(tǒng)和指標
機器學習和自適應算法
以及您能想到的一切。 但您必須付出足夠的努力才能將其兌現(xiàn)。
當然了,到目前為止還沒有圣杯 EA(我自己不曾見過)或指標,但這不應阻擋您通過修改相應方法,將系統(tǒng)提升到最佳狀態(tài)。
在 MQL5 編程的早期,當我從代碼庫下載諸如簡單移動平均線之類的東西,并發(fā)現(xiàn)其代碼超過了 1000 行或更多時?,我感到異??謶?,因為這是我在代碼中看到的第一件事。 我認為這太復雜了。 我認為這與菜鳥面臨的問題相同。
現(xiàn)在,我已經(jīng)有點經(jīng)驗了。 而目前我只能說可能有點難,但無大礙。 生活中的一切一開始都是如此,但會越來越很容易,只有時間和努力才能證明。
03: 不要編寫以后有一天才會用到的代碼
好吧,您曾為您的項目創(chuàng)建 EA 或指標。 您現(xiàn)在有太多的代碼行了。 如果沒有太多注意和仔細檢閱您的代碼,很可能存在當前不需要和未用到的代碼。
"知識豐富的人不會去預測。 試圖預測的人則毫無常識。"
— Lao Tzu(老子)
更少的代碼總是意味著?
更少的漏洞
更少的時間閱讀?
易編譯?
快速審查?
快速交付
易維護?
易調(diào)試
不要花太多時間編寫現(xiàn)在還不需要的代碼。
我希望您在 MQL5 編程中至少見識過一次這樣的事情,當然是從別人的代碼中
示例圖像太小 — 我看到超過 200 行代碼已被注釋掉(隱藏),且在程序中是根本不必要的。
MetaEditor?在函數(shù)級別檢測到不必要的變量,并警告您有未使用的變量,如此,若您喜歡,您可以選擇保留它們,并同時忍受警告,亦或刪除它們。
但對于其余的代碼,我們必須自己檢查,以確保我們沒有這些不需要的代碼。
如果您并未用到它 — 您不需要它 — 那么刪除它。
未用到的代碼會導致混亂,更不用說當它們位于程序代碼的中間時,它們也會增加您滾動到必要代碼的時間。
04: 您未必總是正確的。
"一個人犯了錯誤而不改正,就是在犯另一個錯誤。"?
— Confucius(孔子)
菜鳥為什么會立即跑到論壇拋出他們的代碼,且只提供少量他們?yōu)楹稳绱俗龅牟幻鞔_描述,究其主要原因,是因為他們害怕會讓自己面臨更多的問題。 這極不明智,我親愛的菜鳥們!
編碼職業(yè)充滿了問題和永無止境的挑戰(zhàn),如果不去盡可能多地解決暴漏出的問題,就沒有比這更好的方式來變得更加出色了。 我并不是說您不應該在論壇上發(fā)布您的問題(不要誤會我的意思)。 但請確保您已經(jīng)嘗試過自行解決它,這是一個很好的做法,因為在您發(fā)起主題之時,描述的是自己嘗試過的事情。 這背后的原因會讓您的注意力集中在它上面,通過不同的方法挑戰(zhàn)自己,不僅可以解決這個難題,而且您也許會發(fā)現(xiàn)您開始不知道的東西,并學到更多。
一旦錯誤被修復,確保您理解它,以及下次如何避免它。
05: 放棄一夜成名的想法
"如果您仔細觀察,大多數(shù)的一夜成名需要很長時間。"
— Steve Jobs(史蒂夫·喬布斯)
好的,我知道您已經(jīng)從事編程一段時間了,但是您覺得自己沒有取得任何進展,您覺得自己無處可去。 是不是?
這種感覺會在菜鳥身上發(fā)生很多次,因為他們中的大多數(shù)人都希望得到立竿見影的結果,但現(xiàn)實世界并非如此。
坐下來,放松,并享受這個過程。 您實際上是在進步;您的懷疑只是旅程的一部分,但它們不應該阻礙您。 我建議您去做自己最喜歡的項目,這樣您就可以在學習的同時獲得很多樂趣,但不要被困于其中。 正如我在第二點中所解釋的那樣,確保您對新思路和可能性保持開放態(tài)度。
投入工作,進度將作為最終產(chǎn)品自動出現(xiàn)。
在代碼庫上閱讀盡可能多的源代碼。
在文獻中閱讀盡可能多的文章。
在論壇花更多時間幫助他人。
嘗試更多東西,從而找到最適合您的東西。
記住
成功不是來自您偶爾做的事情。 它來自于您一貫做的事情。
?
結束語
實話實說,我在 MQL5 編程或我的 Web 開發(fā)生涯中并不那么出色,也不完美。 我仍然是編程方面的學生,學習是無止境的,因為它永遠不會停止教訓人。 我每天都在努力提升,并變得更好。 我之所以有勇氣與您分享這一點(在學生時代教書)是為了幫助與我有同樣熱情的人成為更好的程序員。
讓我們一起踏上這段旅程吧!